TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP
NGHIÊN CỨU XÂY DỰNG PHẦN MỀM TẠO CHỮ KÝ SỐ BẰNG
THUẬT TOÁN RSA
Sinh viên thực hiện: Phan Thị Quỳnh Mai
Giáo viên hướng dẫn: ThS. Nguyễn Văn Hách
Hà Nội, năm 2015
LỜI CAM ĐOAN
Em xin cam đoan các kết quả nghiên cứu trong đồ án này dựa trên các kết quả
thu được trong quá trình nghiên cứu của riêng em. Toàn bộ nội dung của đồ án do
em tự học tập, nghiên cứu trên Internet, sách và các tài liệu trong và ngoài nước có
liên quan. Không sao chép hay sử dụng bài làm của bất kỳ ai khác, mọi tài liệu đều
được trích dẫn cụ thể.
Em xin chịu hoàn toàn trách nhiệm về lời cam đoan của mình trước quý Thầy
Cô, Khoa và Nhà trường.
Hà Nội, tháng 6 năm 2015
Sinh viên thực hiện
Phan Thị Quỳnh Mai
LỜI CẢM ƠN
Em xin gửi lời cảm ơn sâu sắc đến thầy ThS. Nguyễn Văn Hách đã tận tình dạy
dỗ, chỉ bảo, giúp đỡ, có những lời khuyên bổ ích cho em trong suốt thời gian làm đồ
án tốt nghiệp
Em chân thành cảm ơn các thầy, cô trong khoa Công nghệ thông tin, trường đại
học Tài nguyên và Môi trường Hà Nội đã tận tình truyền đạt kiến thức trong suốt
bốn năm em học tập tại trường. Với vốn kiến thức được tiếp thu trong quá trình học
tập không chỉ là nền tảng cho quá trình thực hiện đồ án mà còn là một hành trang
quý báu để em bước ra ngoài làm việc một cách vững chắc và tự tin.
Em xin chân thành cảm ơn!
Sinh viên
Phan Thị Quỳnh Mai
DANH MỤC CÁC CHỮ VIẾT TẮT
Chữ viết
Cụm từ đầy đủ
tắt
Nghĩa tiếng Việt
ATM
Automated Teller Machine
Máy giao dịch tự động
CA
Certificate Authority
Chứng thực số
DSA
Digital Signature Algorithm
Giải thuật chữ ký điện tử
DSS
Digital Signature Standard
Chuẩn chữ ký điện tử
Elliptic Curve Digital Signature
Chữ ký số trên đường cong
Algorithm
Elliptic
European Computer Manufactures
Hiệp hội những nhà sản xuất
Association
máy tính châu Âu
GC
Garbage Collector
Trình dọn rác
GNFS
General Number Field Sieve
ECDSA
ECMA
IDE
MD5
MIT
MSIL
Integrated Development
Environment
Môi trường phát triển tích hợp
Message Digest Algorithm 5
Giải thuật tiêu hóa tin 5
Massachusetts Institute of
Viện công nghệ
Technology
Massachusetts
Microsoft Intermediate Language
National Institute of Standards and
Viện Tiêu chuẩn và Kỹ thuật
Technology
Quốc gia (Hoa Kỳ)
PC
Personal Computer
Máy tính cá nhân
PKI
Public Key Infrastructure
Hạ tầng khóa công khai
PKCS
Public Key Cryptography Standards
PSS
Probabilistic Signature Scheme
RSA
Rivest, Shamir & Adleman
SHA
Secure Hash Algorithm
NIST
Tiêu chuẩn mã hóa khóa công
khai
Giải thuật băm an toàn
SHA-1
Secure Hash Algorithm 1
UCLN
Giải thuật băm an toàn 1
Ước chung lớn nhất
DANH MỤC CÁC BẢNG
Bảng 2.1: Thử nghiệm độ bảo mật của RSA
39
DANH MỤC CÁC HÌNH
Hình 1.1: Cấu trúc chương trình C# ......................................................................... 4
Hình 1.2: Dạng mã Morse đã dùng .......................................................................... 5
Hình 1.3: Chữ ký số................................................................................................. 6
Hình 1.4: Mô tả quy trình sử dụng chữ ký số ........................................................... 9
Hình 1.5: Ví dụ về sơ đồ chữ ký RSA.................................................................... 12
Hình 2.1: Minh họa làm việc của một hàm băm ..................................................... 23
Hình 2.2: Thêm vào các bit đệm trong MD5 .......................................................... 25
Hình 2.3: Thêm vào độ dài trong MD5 .................................................................. 26
Hình 2.4: Quy trình xử lý khối dữ liệu 512 bit trong MD5 ..................................... 27
Hình 2.5: Quy trình xử lý khối dữ liệu 512 bit trong SHA-1 .................................. 29
Hình 2.6: Sơ đồ tạo chữ ký số với hàm băm .......................................................... 31
Hình 2.7: Quá trình mã hóa khóa công khai ........................................................... 32
Hình 2.8: Thuật toán mã hóa RSA ......................................................................... 35
Hình 2.9: Mô hình hệ mật mã khóa công khai RSA ............................................... 35
Hình 3.1: Biểu đồ use case tổng quát ..................................................................... 45
Hình 3.2: Biểu đồ use case phân rã tạo chữ ký ....................................................... 46
Hình 3.3: Biểu đồ use case phân rã tạo khóa .......................................................... 46
Hình 3.4: Biểu đồ tuần tự chọn số nguyên tố ......................................................... 47
Hình 3.5: Biểu đồ tuần tự tạo khóa ........................................................................ 48
Hình 3.6: Biểu đồ tuần tự lưu khóa ........................................................................ 48
Hình 3.7: Biểu đồ tuần tự chọn khóa bí mật ........................................................... 49
Hình 3.8: Biểu đồ tuần tự ký.................................................................................. 50
Hình 3.9: Biểu đồ tuần tự chọn file ........................................................................ 51
Hình 3.10: Biểu đồ tuần tự xác thực chữ ký ........................................................... 51
Hình 3.11: Biểu đồ hoạt động tạo khóa .................................................................. 52
Hình 3.12: Biểu đồ hoạt động ký ........................................................................... 53
Hình 3.13: Biểu đồ hoạt động xác thực chữ ký ...................................................... 54
Hình 3.14: Quy trình tạo chữ ký của phần mềm tạo chữ ký số ............................... 54
Hình 3.15: Quy trình xác thực chữ ký của phần mềm tạo chữ ký số....................... 55
Hình 3.16: Giao diện chính .................................................................................... 55
Hình 3.17: Giao diện tạo chữ ký khi chọn số nguyên tố ......................................... 56
Hình 3.18: Giao diện tạo chữ ký khi tạo khóa ........................................................ 56
Hình 3.19: Lưu khóa công khai ............................................................................. 57
Hình 3.20: Lưu khóa bí mật ................................................................................... 57
Hình 3.21: Giao diện tạo chữ ký khi tạo hàm băm ................................................. 58
Hình 3.22: Giao diện tạo chữ ký ............................................................................ 58
Hình 3.23: Lưu chữ ký .......................................................................................... 59
Hình 3.24: Giao diện xác thực chữ ký.................................................................... 59
MỤC LỤC
MỞ ĐẦU ................................................................................................................ 1
I.
Lí do chọn đề tài ........................................................................................... 1
II. Mục đích nghiên cứu .................................................................................... 1
III. Nhiệm vụ nghiên cứu .................................................................................... 2
IV. Phạm vi nghiên cứu ...................................................................................... 2
V. Phương pháp nghiên cứu .............................................................................. 2
CHƯƠNG 1: TỔNG QUAN VỀ NỘI DUNG NGHIÊN CỨU ................................ 3
1.1. Khái quát về ngôn ngữ lập trình C# .............................................................. 3
1.1.1. Giới thiệu về ngôn ngữ lập trình C# ....................................................... 3
1.1.2. Cấu trúc một chương trình C# ................................................................ 4
1.1.3. Đánh giá ngôn ngữ C# ........................................................................... 4
1.2. Tổng quan về chữ ký số ................................................................................ 5
1.2.1. Lịch sử ................................................................................................... 5
1.2.2. Khái niệm .............................................................................................. 6
1.2.3. Mô tả quy trình sử dụng chữ ký số ......................................................... 8
1.2.4. Một số sơ đồ chữ ký số ........................................................................ 10
1.2.5. Ưu điểm và nhược điểm của chữ ký số................................................. 15
1.2.6. Một số kiểu tấn công chữ ký số hiện nay .............................................. 16
1.2.7. Vai trò của chữ ký số trong ứng dụng hiện nay .................................... 17
1.2.8. Thực trạng ứng dụng chữ ký số hiện nay .............................................. 18
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ...................................................................... 21
HÌNH THÀNH CHỮ KÝ SỐ ................................................................................ 21
2.1. Cơ sở toán học ............................................................................................ 21
2.1.1. Sinh số nguyên tố và phân tích thừa số nguyên tố ................................ 21
2.1.2. Phép mũ hóa và khai căn module ......................................................... 22
2.2. Hàm băm .................................................................................................... 23
2.2.1. Giới thiệu về hàm băm ......................................................................... 23
2.2.2. Một số giải thuật trong hàm băm .......................................................... 25
2.2.3. Tạo chữ ký số với hàm băm ................................................................. 31
2.3. Mã hóa khóa công khai ............................................................................... 32
2.3.1. Mã hóa khóa công khai ........................................................................ 32
2.3.2. Mã hóa khóa công khai RSA ................................................................ 33
2.3.3. Mã hóa khóa công khai Elgamal .......................................................... 40
2.3.4. Mã hóa khóa công khai Rabin .............................................................. 42
2.4. Cơ sở hạ tầng khóa công khai ..................................................................... 43
2.4.1. Mô hình PKI ........................................................................................ 43
2.4.2. Chứng chỉ số X.509 ............................................................................. 43
CHƯƠNG 3: XÂY DỰNG PHẦN MỀM TẠO CHỮ KÝ SỐ BẰNG THUẬT
TOÁN RSA ........................................................................................................... 45
3.1. Phân tích thiết kế hệ thống .......................................................................... 45
3.1.1. Biểu đồ Usecase tổng quát ................................................................... 45
3.1.2. Biểu đồ Usecase phân rã ...................................................................... 46
3.1.3. Biểu đồ tuần tự..................................................................................... 47
3.1.4. Biểu đồ hoạt động ................................................................................ 52
3.2. Xây dựng giao diện phần mềm tạo chữ ký số .............................................. 54
KẾT LUẬN ........................................................................................................... 60
I.
Kết quả đạt được ......................................................................................... 60
1.
Ưu điểm ............................................................................................... 60
2.
Nhược điểm ......................................................................................... 60
II. Định hướng phát triển ................................................................................. 60
DANH MỤC TÀI LIỆU THAM KHẢO ............................................................... 61
PHỤ LỤC ............................................................................................................. 62
MỞ ĐẦU
I. Lí do chọn đề tài
Từ khi ra đời cho đến nay, công nghệ thông tin đóng vai trò vô cùng quan trọng
trong sự phát triển của xã hội. Nó đã trở thành nhân tố quan trọng, là cầu nối trao
đổi giữa các thành phần của xã hội trên toàn thế giới, giúp giải quyết nhanh chóng
mọi vấn đề. Công nghệ thông tin có các ứng dụng liên quan đến các thành phần
kinh tế, xã hội, chính trị, quân sự, văn hóa, giáo dục,…. Trong đó không thể không
nhắc đến ứng dụng của nó trong truyền thông. Ngày nay, mọi thông tin liên lạc, các
văn bản thường được trao đổi qua hệ thống mạng. Việc này rất thuận tiện và tiết
kiệm được thời gian và chi phí nhưng lại nảy sinh một vấn đề là xác thực nguồn
thông tin nhận được. Do tính chất phi vật chất của phương tiện truyền thông nên các
phương pháp truyền thống như đánh dấu bằng dấu niêm phong hay chữ ký tay đều
rất dễ bị giả mạo. Vậy làm thế nào để có thể xác thực và bảo vệ được nguồn thông
tin nhận được từ một người gửi đi hay một máy chủ và thông tin đó không bị thay
đổi cũng như bị tiết lộ cho một bên thứ 3 trong quá trình truyền đi? Giải pháp cho
các vấn đề này chính là mã hóa mà cụ thể hơn là sử dụng thuật toán mã hóa khóa
công khai. Đây là cơ sở cho “chữ ký số”, vì nếu như người dùng sắp xếp lại thông
điệp sử dụng khóa công khai của một người nào đó thì người kia sẽ phải dùng khóa
riêng của họ để làm xáo trộn thông điệp ngay từ đầu. Chỉ chủ sở hữu mới có thể sử
dụng khóa riêng của họ và thông điệp bị xáo trộn sẽ trở thành một chữ ký điện tử
hay nói cách khác là chữ ký số - một tài liệu mà không ai khác có thể tạo ra. Vì vậy,
với đề tài “Nghiên cứu xây dựng phần mềm tạo chữ ký số bằng thuật toán RSA”
sẽ giúp chúng ta hiểu rõ hơn về vấn đề này.
II. Mục đích nghiên cứu
- Tìm hiểu về chữ ký số, hàm băm, giải thuật trong hàm băm, thuật toán RSA
và nắm vững một số thuật toán tạo chữ ký số.
- Xây dựng phần mềm tạo chữ ký số.
1
III. Nhiệm vụ nghiên cứu
- Nghiên cứu tổng quan về chữ ký số.
- Tìm hiểu về hàm băm.
- Tìm hiểu thuật toán RSA và sơ đồ chữ ký số RSA.
- Phân tích thiết kế hệ thống cho phần mềm tạo chữ ký số.
- Xây dựng phần mềm tạo chữ ký số.
IV. Phạm vi nghiên cứu
Nghiên cứu tổng quan về các vấn đề liên quan đến chữ ký số, hàm băm, hệ mã
hóa công khai RSA, và xây dựng phần mềm tạo chữ ký số bằng thuật toán RSA.
V. Phương pháp nghiên cứu
- Nghiên cứu tài liệu.
- Tham khảo một số phần mềm tạo chữ ký số.
- Trao đổi với giảng viên hướng dẫn.
2