LỜI CAM ĐOAN Tôi xin cam đoan bản luận văn “Chữ ký số và các vấn đề bảo mật thông tin” là công trình nghiên cứu của tôi, dưới sự hướng dẫn khoa học của PGS.TS Đoàn Văn Ban, tham khảo các
Trang 1-
NGUYỄN THỊ YẾN
ỨNG DỤNG CHỮ KÝ SỐ TRONG BẢO MẬT THÔNG TIN BƯU ĐIỆN TỈNH THÁI NGUYÊN
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 60 48 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn “Chữ ký số và các vấn đề bảo mật thông tin” là công trình nghiên cứu của tôi, dưới sự hướng dẫn khoa học của PGS.TS Đoàn Văn Ban, tham khảo các nguồn tài liệu đã được chỉ rõ trong trích dẫn và danh mục tài liệu tham khảo Các nội dung công bố và kết quả trình bày trong luận văn này là trung thực và chưa được ai công bố trong bất kỳ công trình nào
Thái nguyên, ngày 10 tháng 6 năm 2012
Nguyễn Thị Yến
Trang 3LỜI CẢM ƠN
Trước tiên tôi xin gửi lời cảm ơn chân thành nhất đến thầy PGS TS Đoàn Văn Ban đã định hướng và nhiệt tình hướng dẫn, giúp đỡ tôi rất nhiều về
mặt chuyên môn trong quá trình làm luận văn
Tôi xin gửi lời biết ơn sâu sắc đến các thầy, các cô đã dạy dỗ và truyền đạt những kinh nghiệm quý báu cho chúng tôi trong suốt hai năm học cao học tại Trường Đại học công nghệ thông tin và truyền thông - Đại học Thái Nguyên
Tôi xin cảm ơn bạn bè, đồng nghiệp và gia đình, những người luôn gần gũi động viên, chia sẻ cùng tôi trong suốt thời gian làm luận văn tốt nghiệp
Thái Nguyên, tháng 6 năm 2012
Trang 4MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC KÍ HIỆU VÀ CÁC TỪ VIẾT TẮT 6
DANH MỤC CÁC HÌNH 8
MỞ ĐẦU 10
1 Đặt vấn đề 10
2 Đối tượng và phạm vi nghiên cứu 10
3 Hướng nghiên cứu của đề tài 11
4 Những nội dung nghiên cứu chính 11
5 Tổng quan luận văn 11
CHƯƠNG 1: GIỚI THIỆU VỀ MÃ KHOÁ THÔNG DỤNG 13
1.1 Giới thiệu 13
1.2 Hệ mã khoá bí mật 13
1.3 Hệ mã khoá công khai 19
1.3.1 Các khái niệm cơ bản 19
1.3.2 Một số khái niệm toán học cơ sở 20
1.3.2.1 Modulo số học và các nhóm Z(p)*, G(p) 20
1.3.2.2 Quan hệ “đồng dư” 23
1.3.2.3.Số nguyên tố mạnh 25
1.3.2.4 Định lý Fermat nhỏ 26
1.3.2.5 Định lý Lagrange 27
1.3.2.6.Định lý Euler 27
1.3.2.7.Định lý số dư trung hoa 27
1.3.3 Các nguyên lý của hệ mật khoá công khai 28
Trang 51.3.4 Một số hệ mã khoá công khai 30
1.3.4.1 Hệ mã khoá công khai RABIN 30
1.3.4.2 Hệ mã khoá công khai ELGAML 35
1.3.4.3 Hệ mã khoá công khai RSA 37
1.4 Độ an toàn của RSA 41
1.5 Quản lý khoá 41
1.5.1 Phân phối khoá cho giải thuật mật mã đối xứng 42
1.5.2 Phân phối khoá cho giải thuật mật mã bất đối xứng 44
1.5.3 Phát sinh và lưu giữ khoá bí mật 47
1.6 Kết luận chương 50
CHƯƠNG 2: CHỮ KÝ SỐ 53
2.1 Giới thiệu 53
2.2 Xác thực thông báo và các hàm xác thực 54
2.2.1 Xác thực thông báo 54
2.2.2 Các hàm xác thực 55
2.2.2.1 Mã hoá thông báo 55
2.2.2.2 Kỹ thuật xác thực dùng khoá bí mật – MAC 56
2.2.2.3 Các hàm băm 58
2.3 Chữ ký số 61
2.3.1 Khái niệm 61
2.3.1.1 Khái niệm 61
2.3.1.2 Sơ đồ chữ ký số 62
2.3.2 Các ưu điểm của chữ ký số 62
2.3.3 Quá trình thực hiện chữ ký số khoá công khai 64
2.3.4 Thuật toán chữ ký RSA 66
2.3.4.1 Sơ đồ 66
2.3.4.2 Ví dụ minh hoạ 67
Trang 62.3.4.3 Độ an toàn của chữ ký RSA 67
2.3.5 Thuật toán chữ ký DSA/DSS 69
2.3.5.1 Sơ đồ 69
2.3.5.2 Ví dụ 70
2.3.5.3 Độ an toàn chữ ký DSA 70
2.4 Các kiểu tấn công vào lượt đồ chữ ký 77
2.5 Tính pháp lý và ứng dụng chữ ký số trong và ngoài nước 72
2.5.1 Trong nước 72
2.5.2 Ở một số nước trên thế giới 74
2.5.3 Ứng dụng trong thực tế 75
2.6 Kết luận chương 76
CHƯƠNG 3: CÀI ĐẶT DEMO CHƯƠNG TRÌNH 77
3.1 Lĩnh vực ứng dụng của chương trình 77
3.2 Chức năng của chương trình 78
3.2.1 Phần bảo mật thông tin 78
3.2.1.1 Chức năng mã hóa văn bản 78
3.2.1.2 Chức năng giải mã 79
3.2.2 Phần chữ ký số 79
3.2.2.1 Thực hiện ký văn bản 79
3.2.2.2 Kiểm tra và xác thực chữ ký 80
3.3 Một số màn hình giao diện của chương trình 81
3.3.1 Đăng nhập hệ thống 81
3.3.2 Một số menu chính 81
3.4 Kết luận chương 83
Kết quả và hướng phát triển 84
Kết quả đạt được của luận văn 84
Hướng phát triển 85
Trang 7DANH MỤC CÁC KÝ HIỆU VÀ CÁC TỪ VIẾT TẮT
AES Advance Encryption Standard
ASCII American Standard Code for Infornation Interchange ANSI American National Standards Institute
DES Data Encryption Standard
CA Certificate Authority
FIPS Federal Information Processing Standard
IDEA International Data Encryption Algorithm
IEEE Institute of Electrical and Electronic Engineers
ITU International Telecommunication Union
ISO International Organization for Standardization
MAC Message Authentication Code
MARS Multicast Address Resolution Server
MD5 Message Digest 5
NIST National Institute Of Standards And Technology OCSP Online Certificate Status Protocol
PKI public-key infrastructures
RSA Rivest, Shamir, Adleman
SHA Secure Hash Algorithm
TCP/IP Transfer Control Protocol/Internet Protocol
URL Uniform Resource Locator
X Không gian các bản mã
D, Dk Hàm giải mã, hàm giải mã với khoá k
d, dA Số mũ giải mã, số mũ giải mã của cá thể A
E, Ek Hàm mã hoá, hàm mã hoá với khoá k
Trang 8e, eA Số mũ mã hoá, số mũ mã hoá của cá thể A
Trang 9DANH MỤC CÁC HÌNH
Trang
Hình 1.1 Quá trình thực hiện cơ chế mã hoá 14
Hình 1.2 Thuật toán giải mã của hệ DES 16
Hình 1.3 Quá trình thực hiện mã hoá khoá công khai 19
Hình 1.4 Sơ đồ khối nguyên lý hoạt động của mật mã khoá công khai 29
Hình 1.5 Sơ đồ biểu diễn thuật toán mã hóa 37
Hình 1.6 Minh hoạ quá trình mã hoá khoá công khai 39
Hình 1.7 Sơ đồ phân bố khóa của một mạng với một CKD 43
Hình 1.8 Sơ đồ phân bố khóa của một network với KD 46
Hình 1.9 Sơ đồ kiểm tra khoá 49
Hình 1.10 Sơ đồ bảo vệ khoá 50
Hình 2.1 (a) Lược đồ mã hoá thông báo 55
Hình 2.1(b) Mã hoá khoá công khai: xác thực và chữ ký 55
Hình 2.1(c) Mã hoá khoá công khai: Bí mật, xác thực và chữ ký 56
Hình 2.2 (a) Xác thực thông báo 57
Hình 2.2 (b) Bí mật và xác thực thông báo:Xác thực đối với bản rõ 57
Hình 2.2 (c) Xác thực đối với bản mã 57
Hình 2.3 Sơ đồ mô tả quá trình ký và gửi các tệp văn bản 64
Hình 2.4 Sơ đồ mô tả quá trình nhận các tệp văn bản 65
Hình 3.1 Chức năng tạo cặp khoá mã hoá 78
Hình 3.2 Nội dung văn bản sau khi mã hoá 78
Hình 3.3 Nội dung văn bản sau khi giải mã 79
Hình 3.4 Chọn tệp văn bản để ký 79
Hình 3.5 Thông báo đã ký văn bản 80
Hình 3.6 Xác lập thông tin người ký 80
Trang 10Hình 3.7 Xác thực chữ ký 81
Hình 3.8 Đăng nhập hệ thống 81
Hình 3.9 Menu thao tác với tệp văn bản 81
Hình 3.10: Menu chỉnh sửa văn bản 82
Hình 3.11: Menu Định dạng văn bản 82
Hình 3.12: Menu Mã hoá và giải mã dữ liệu 82
Trang 11Hơn nữa, ngoài việc là một phương tiện điện tử được pháp luật thừa nhận về tính pháp lý, chữ ký số còn là một công nghệ mã hóa và xác thực rất mạnh Nó
có thể giúp bảo đảm an toàn, bảo mật cao cho các giao dịch trực tuyến, nhất là các giao dịch chứa các thông tin liên quan đến tài chính
Việc ứng dụng chữ ký số sẽ đem lại cho doanh nghiệp, tổ chức rất nhiều lợi ích như: Tiết kiệm chi phí giấy tờ, thời gian luân chuyển trong hoạt động quản
lý công văn, giấy tờ, thư điện tử; Giúp đẩy nhanh các giao dịch qua mạng trong khi vẫn đảm bảo độ an toàn và bảo mật thông tin…Nhận thấy sự thiết thực của chữ ký số trong ngành Bưu chính Viễn thông như chuyển công văn giấy tờ, giao dịch giữa các giao dịch viên, kiểm soát viên với Bưu điện Tỉnh, với Tập Đoàn…và được sự gợi ý của giáo viên hướng dẫn, em đã chọn đề tài “Ứng dụng chữ ký số trong bảo mật thông tin bưu điện tỉnh Thái Nguyên” làm đề tài cho luận văn thạc sỹ của mình
2 Đối tượng và phạm vi nghiên cứu:
* Đối tượng nghiên cứu:
+ Tìm hiểu về các giải pháp mã hoá để bảo mật thông tin
+ Nghiên cứu những phương pháp, kỹ thuật tạo chữ ký số trên các tài liệu, văn bản điện tử
Trang 12* Phạm vi nghiên cứu:
Luận văn tập trung nghiên cứu các kiến thức có liên quan, các cơ sở lý thuyết: về một số giải pháp mã hoá và những phương pháp, kỹ thuật tạo chữ ký
số để ứng dụng trong bảo mật thông tin Bưu điện Tỉnh
3 Hướng nghiên cứu của đề tài:
Luận văn tập trung nghiên cứu và làm rõ hơn về ý tưởng về các hệ mật mã khoá thông dụng và những phương pháp, kỹ thuật tạo chữ ký số
4 Những nội dung nghiên cứu chính:
+ Nghiên cứu về các giải pháp mã hoá để bảo mật thông tin
+ Nghiên cứu những phương pháp, kỹ thuật tạo chữ ký số trên các tài liệu, văn bản điện tử
+ Nghiên cứu về một ngôn ngữ lập trình để viết một ứng dụng nhỏ về chữ
ký số
5 Tổng quan luận văn
Luận văn được trình bày theo hình thức từ trên xuống Bắt đầu của mỗi phần đều đưa ra những khái niệm cơ bản và quy định cho phần trình bày tiếp sau nhằm mục đích giúp dễ dàng trong khi đọc, dần dần đi sâu vào để thảo luận
rõ hơn những vấn đề liên quan, bao gồm việc bảo vệ an toàn thông tin dữ liệu dùng mật mã, mật mã khoá công khai RSA và chữ ký số
Luận văn được trình bày trong 3 chương và phần kết luận
Chương 1 Một số hệ mật mã khoá thông dụng
Giới thiệu về hệ mật mã khóa công khai các nguyên lý của nó; trình bày những khái niệm cơ bản & hệ khoá công khai RSA; phương pháp xây dựng, ý tưởng, thuật toán và độ phức tạp của thuật toán
Chương 2 Chữ kí số
Trang 13Khái niệm về chữ ký số, sơ đồ chữ ký RSA; Các phương pháp xác thực và hàm băm mật mã; Chữ ký số, các hình thức ký, xác thức chữ ký số
Chương 3 Cài đặt demo chương trình
Chương này đề cập đến việc xây dựng và cài đặt ứng dụng chữ ký số và các chức năng của chương trình từ đó đưa ra các kết quả thực hiện của chương trình demo
Kết luận
Tóm tắt những kết quả đạt được đồng thời nêu ra những hạn chế của luận văn và hướng phát triển có thể được theo hướng nghiên cứu của luận văn trong tương lai
Trang 14CHƯƠNG 1: GIỚI THIỆU VỀ MÃ KHOÁ THÔNG DỤNG
1.1 Giới thiệu
Mật mã học (crypto) là một nghệ thuật nhằm giấu thông tin, bằng cách chuyển đổi (encrypt) thông tin thành dạng thông tin không đọc được (cipher text) Chỉ có những người giữ khóa (key) bí mật mới có thể giải mã (decrypt) thông tin thành dạng thông tin có thể hiểu được (plain text) Thông tin đôi khi bị giải mã mà không cần biết khóa bí mật Ngành học nghiên cứu về việc bẻ khóa (attack/crack/hack) này còn gọi là cryptanalysis [12]
Mã hoá dữ liệu là mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất cứ ai, ngoại trừ những ai được phép đọc Mã hóa sử dụng thuật toán và khóa để biến đổi dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext) sang hình thức mật mã vô nghĩa (code hay ciphertext) Chỉ có những ai có thông tin giải mã thì mới giải mã và đọc được dữ liệu
Có nhiều cách phân loại hệ mã hoá, nếu ta phân loại mã hoá theo đặc trưng của khoá thì hệ mã hoá được chia thành hai loại đó là:
- Hệ mã hóa khóa đối xứng, hay còn gọi là Hệ mã khoá bí mật (có khoá riêng và khoá chung giống nhau)
- Hệ mã hóa khóa phi đối xứng, hay còn gọi là Hệ mã khoá công khai (Khóa công khai có khoá riêng và khoá chung khác nhau)
1.2 Hệ mã khoá bí mật
Hệ mã hoá bí mật hay còn gọi là Hệ mã khoá đối xứng là Hệ mã hóa mà
biết được khóa lập mã thì có thể “dễ dàng” tính được khóa giải mã và ngược lại
[4],[5]
Quá trình thực hiện cơ chế mã hoá như sau:
Trang 15Hình 1.1 Quá trình thực hiện cơ chế mã hoá
Hình 1.1 mô tả quá trình trao đổi thông tin giữa bên gửi và bên nhận thông qua việc sử dụng phương pháp mã hoá đối xứng Trong quá trình này, thì thành phần quan trọng nhất cần phải được giữ bí mật chính là khoá Việc trao đổi, thoả thuận về thuật toán được sử dụng trong việc mã hoá có thể tiến hành một cách công khai, nhưng bước thoả thuận về khoá trong việc mã hoá và giải
mã phải tiến hành bí mật Chúng ta có thể thấy rằng thuật toán mã hoá đối xứng
sẽ rất có lợi khi được áp dụng trong các cơ quan hay tổ chức đơn lẻ Nhưng nếu cần phải trao đổi thông tin với một bên thứ ba thì việc đảm bảo tính bí mật của khoá phải được đặt lên hàng đầu
Người gửi sử dụng một phép biến đổi khả nghịch:
để tạo ra văn bản mã hoá:
C = E(k, M), m M và c C (1.2) Trong đó: M là không gian bản rõ
C: Bản mã
Và truyền trên một kênh công cộng cho người nhận Khoá k cũng sẽ được truyền cho người nhận để giải mã nhưng thông qua một kênh an toàn Vì chỉ người nhận hợp lệ biết khoá k mới có thể giải mã C theo phép biến đổi:
Trang 16Mã hoá đối xứng có thể được phân thành 02 loại:
1 Loại thứ nhất tác động trên bản rõ theo từng nhóm bits Từng nhóm bits này được gọi với một cái tên khác là khối (Block) và thuật toán được áp dụng gọi là Block Cipher Theo đó, từng khối dữ liệu trong văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài Đối với các thuật toán ngày nay thì kích thước chung của một Block là 64 bits [5]
2 Loại thứ hai tác động lên bản rõ theo từng bit một Các thuật toán áp dụng được gọi là Stream Cipher Theo đó, dữ liệu của văn bản được mã hoá từng bit một Các thuật toán mã hoá dòng này có tốc độ nhanh hơn các thuật toán mã hoá khối và nó thường được áp dụng khi lượng dữ liệu cần mã hoá chưa biết trước
Một số thuật toán nổi tiếng trong mã hoá đối xứng là: DES, Triple DES(3DES), RC4, AES…
+ DES (Data Encryption Standard) Với DES, bản rõ (Plaintext) được mã hoá theo từng khối 64 bits và sử dụng một khoá là 64 bits, nhưng thực tế thì chỉ
có 56 bits là thực sự được dùng để tạo khoá, 8 bits còn lại dùng để kiểm tra tính chẵn, lẻ DES là một thuật toán được sử dụng rộng rãi nhất trên thế giới Hiện tại DES không còn được đánh giá cao do kích thước của khoá quá nhỏ 56 bits,
và dễ dàng bị phá vỡ
+ Triple DES (3DES): 3DES cải thiện độ mạnh của DES bằng việc sử dụng một quá trình mã hoá và giải mã sử dụng 3 khoá Khối 64-bits của bản rõ đầu tiên sẽ được mã hoá sử dụng khoá thứ nhất Sau đó, dữ liệu bị mã hóa được giải mã bằng việc sử dụng một khoá thứ hai Cuối cùng, sử dụng khoá thứ ba và kết quả của quá trình mã hoá trên để mã hoá
C = EK3(DK2(EK1(P)))
P = DK1(EK2(DK3(C)))
Trang 17+ AES (Advanced Encryption Standard) đƣợc sử dụng để thay thế cho DES Nó hỗ trợ độ dài của khoá từ 128 bits cho đến 256 bits
Khoá sử dụng 56 bit nhận đƣợc từ khoá bí mật 64 bit, có chứa 8 bit kiểm tra chẵn lẻ Thuật giải giải mã đƣợc thực hiện theo chiều ngƣợc lại cũng với khoá bí mật đƣợc dùng khi mã hoá Thuật giải đƣợc minh hoạ nhƣ trong hình vẽ 1.2, trong đó, phép ký hiệu phép XOR
Hình 1.2 Thuật toán giải mã của hệ DES
Trang 18Bước 2: Chia M‟ thành 2 phần: nửa trái L0 32 bit và nửa phải R0 32 bit
Bước 3: Thi hành các phép toán sau với i = 1, 2,…, 16 (có 16 vòng):
Li = Ri-1
Ri = Li-1 f (Ri-1, Ki)
Trong đó, f là hàm nhận nửa phải 32 bit và một khoá vòng 48 bit, sinh ra
một kết xuất 32 bit Mỗi khoá vòng Ki chứa một tập con các khoá 56 bit
Cuối cùng, sau 16 bước ta được C‟ = (R16 ,L16) C‟ sau đó được hoán vị tương ứng với phép hoán vị IP-1
để được bản mã cuối cùng C
Giải mã được thi hành theo trình tự ngược lại: một phép hoán vị, 16 vòng XOR sử dụng khoá vòng theo thứ tự ngược lại và phép hoán vị sau cùng phục hồi lại bản rõ Tất cả các phép khai triển bit này có thể được kết hợp vào một mạch logic chuyên dụng, vì thế DES có thể được cài đặt rất hiệu quả Tuy nhiên, theo nghiêm cứu của Electronic Frontier Foundation thì khả năng thám
mã DES 56 bit khoảng 22 giờ Vì thế, NIST khuyên nên sử dụng Triple DES (3DES) bao gồm 3 lần mã hoá DES khác nhau
Đặt E (k, M) và D(k, C) biểu diễn mã hoá và giải mã DES của M và C với khoá k Mỗi phép mã/ giải mã TDES là một phép ghép của các phép mã/giải
mã Các phép toán sau được sử dụng trong TDES:
Phép mã hoá TDES: biến đổi một khối M 64 bit thành một khối C 64 bit được xác định như sau:
C = E (K3, D (K2, E(K1, M))) (1.5)
Trang 19Phép giải mã TDES: biến đổi một khối C 64 bit thành một khối M 64 bit đƣợc xác định nhƣ sau:
- MARS – do công ty IBM phát triển (Mỹ)
- RC6 – do phòng thí nghiệm RSA tại Bedford, Masachusetts (Mỹ)
- Rijndael – do Joan Deamen và Vincent Rijmen (Bỉ)
- Serpent – do Ros Anderson (Anh), Eli Bihan (Israel) Lars Knudsen (Na-uy)
- Twofish – do Bruce Schneier, John Kelsey, Doug Whiting, David Wagner Chris Hall và Niels Ferguson (Mỹ)[5]
Hệ mã hoá khoá đối xứng có ƣu điểm và nhƣợc điểm sau:
Trang 20Ngoài ra với hệ mã hoá khoá đối xứng không thể thực hiện chữ ký điện tử (sẽ được trình bày trong chương 2) do chỉ có một khoá chung duy nhất Vì vậy, không thể dùng trong giao dịch điện tử.Chính vì lý do trên mà hệ mã hoá khoá công khai được sử dụng rộng rãi hơn hệ mã khoá đối xứng
1.3 Hệ mã khoá công khai
1.3.1 Các khái niệm cơ bản
Hệ mã hoá khoá công khai là hệ mã hoá có khoá lập mã và khoá giải mã
khác nhau, biết được khoá này “khó” mà tính được khoá kia [4],[5],[6]
Hệ mã hoá này được gọi là hệ mã hoá khoá công khai vì khoá lập mã
được công khai ( gọi là khoá công khai – Public key), Khoá giải mã giữ bí mật ( gọi là khoá riêng – Private key) Điều quan trọng đối với hệ thống là không
thể tìm ra khóa bí mật nếu chỉ biết khóa công khai
Hình 1.3 Quá trình thực hiện mã hoá khoá công khai
Trang 21Quá trình truyền và sử dụng mã hoá khoá công khai được thực hiện như sau:
Bên gửi yêu cầu cung cấp hoặc tự tìm khoá công khai của bên nhận trên một server chịu trách nhiệm quản lý khoá
Sau đó hai bên thống nhất thuật toán dùng để mã hoá dữ liệu, bên gửi sử dụng khoá công khai của bên nhận cùng với thuật toán đã thống nhất để
mã hoá thông tin được gửi đi
Khi nhận được thông tin đã mã hoá, bên nhận sử dụng khoá bí mật của mình để giải mã và lấy ra thông tin ban đầu
Vậy là với sự ra đời của Mã hoá công khai thì khoá được quản lý một cách linh hoạt và hiệu quả hơn Người sử dụng chỉ cần bảo vệ khoá bí mật
Do đó hệ mã hoá khoá công khai có ưu điểm và nhược điểm sau:
a Ưu điểm
Đơn giản trong việc lưu chuyển khóa: Chỉ cần đăng ký một khóa công khai và mọi người sẽ lấy khóa này về để trao đổi thông tin với người đăng
ký Vì vậy không cần kênh bí mật để truyền khóa
Mỗi người chỉ cần một cặp khóa công khai – khóa bí mật là có thể trao đổi thông tin với tất cả mọi người
Là tiền đề cho sự ra đời của chữ ký điện tử và các phương pháp chứng thực điện tử
b Nhược điểm
Mã hóa và giải mã chậm hơn hệ mã hóa khóa đối xứng.
1.3.2 Một số khái niệm toán học cơ sở
1.3.2.1 Modulo số học và các nhóm Z(p) * , G(q)
Phần lớn các tính toán liên quan đến hệ mật mã khoá công khai và tiền điện tử, chúng ta thường sử dụng tập các số nguyên từ 0 tới p-1, trong đó p là số nguyên tố lớn Những số này cùng với hai phép toán, phép nhân * và phép luỹ
Trang 22thừa sẽ tạo thành các cấu trúc nhóm có những tính chất quan trọng được sử dụng để mật mã và bảo mật tiền điện tử [12]
Trước tiên, chúng ta xét một số tính chất quan trọng của tập Z(p)*
= {1, 2,
3, 4, ., p-2, p-1} Dễ nhận thấy, nếu ta nhân hai số bất kỳ trong tập này với nhau, sau đó lấy số dư theo modulo p, thì kết quả là một số vẫn nằm trong tập
đó Nghĩa là Z(p) *
đóng với phép nhân Mặt khác, nếu ta lấy một số bất kỳ trong
tệp đó, ví dụ số k, khi đó sẽ tồn tại một số khác, ký hiệu là k-1, sao cho k*k-1 = 1 mod p Nghĩa là mọi số nguyên trong tập này đều có phần tử nghịch đảo bội (multiplicative inverse) Hai tính chất này khẳng định rằng Z(p)* là một nhóm với phép nhân mod p Tương tự, chúng ta có thể khẳng định nó cũng là nhóm với phép luỹ thừa, vì phép luỹ thừa thực chất là bội của các phép nhân, ví dụ 23
= 2*2*2 (Lưu ý: 0 được loại khỏi Z(p)* bởi vì nó không có phần tử nghịch đảo bội Nếu ta bổ sung 0 vào Z(p)*, thì chúng ta nhận được Z(p), chứa tất cả các số
Ta có thể khẳng định thêm, ước chung lớn nhất, ký hiệu là gcd của p và bất
kỳ số nào trong tập trên luôn là 1, nghĩa là chúng nguyên tố cùng nhau
k Z(p)*, gcd(k,p) =1, p là nguyên tố
Trên tập Z(p)*, chúng ta có thể định nghĩa thêm phép toán khác, phép chia
Chúng ta định nghĩa phép chia cho k, ký hiệu là „/‟ như là phép nhân với phần tử
nghịch đảo của k, đó là k-1 Ví dụ 8/k = 8*k-1 Nếu k = 9 trong Z(11)*, thì 8/9 = 8*9-1 = 8*5 = 40 = 7 mod 11
Tương tự, 3/10 = 3*10-1
= 3*10 = 30 = 8 mod 11
Trang 23Giả sử g là một số của Z(p)* g đƣợc gọi là phần tử sinh (generator) mod p
nếu tập tất cả các luỹ thừa của g tạo ra tập tất cả các phần tử của Z(p)* Nghĩa là {g1 mod p, g2 mod p, , gp-1 mod p} = Z(p)*
Từ đó chúng ta thấy Z(p)* = {1, 2, , p-1} biểu diễn cho một tập (đƣợc sắp xếp lại) các số g, g2, g3, , gp-1 đƣợc tính theo mod p Để cho tiện lợi chúng
ta có thể viết mod p ở bên ngoài cặp ngoặc đơn, hoặc có thể bỏ qua:
{g1 , g2, , gp-1} mod p = Z(p)* hoặc có thể viết ngắn gọn
{g1 , g2, , gp-1} = Z(p)*
Ví dụ, 3 là phần tử sinh của Z(7)*, bởi vì
31 = 3 mod 7, 32 = 2 mod 7, 33 = 6 mod 7,
34 = 4 mod 7, 35 = 5 mod 7, 36 = 1 mod 7
Hiển nhiên là {3, 32, 33, 34, 35, 36} = {1, 2, 3, 4, 5, 6} theo mod 7
Một bộ sinh theo mod p là một tập gồm k phần tử {g1, , gk}, trong đó các
gi, i = 1, 2, …, k là các phần tử sinh khác nhau
Ví dụ, {3, 5} là bộ sinh của Z(7)*, bởi vì cả 3 và 5 đều là phần tử sinh của Z(7)*
Một nhóm đƣợc sinh bởi g đƣợc gọi là nhóm có bậc q mod p nếu q là số
luỹ thừa nhỏ nhất sao cho gq = 1 mod p
Chúng ta xét lại hai phần tử sinh của Z(7)* là 3 và 5, bởi vì 6 là số luỹ thừa nhỏ nhất để 1=36=56 mod 7, nên Z(7)* là nhóm có bậc 6 mod 7 và không có số luỹ thừa nào khác có tính chất trên
Nói chung, với số nguyên tố q, 1< q < p, G(q) đƣợc xem nhƣ là một nhóm (hoặc nhóm con) bậc q mod p, nếu với phần tử sinh g, 1 < g < p, chúng ta có {g,
g2, g3, , gq} là tập con của Z(p)*
Nhận xét, giả sử g là phần tử của Z(p)* và g là phần tử sinh của Z(p)* nếu g
là phần tử có bậc là p-1, nghĩa là gp-1 = 1, và không có số luỹ thừa nào nhỏ để bằng 1 theo mod p
Trang 2417 ≡ 5 (mod 3) vì chia 17 và 5 cho 3, được cùng số dư là 2
Nhận xét: Các mệnh đề sau đây là tương đương:
3) 1): Nếu có 1), tức là tồn tại số nguyên t sao cho a = b + m t
Lấy a chia cho m, giả sử thương là qa và dư r, hay a = mqa + r (0 ≤ r <m),
do đó: b + m t = a = mqa + r hay b = m(qa - t) + r (0 ≤ r < m) Điều đó chứng
tỏ khi chia a và b cho m được cùng số dư r, hay a ≡ b (mod m)
b Các tính chất của quan hệ “đồng dư”
+) Quan hệ “đồng dư” là quan hệ tương đương trong Z:
Với mọi số nguyên dương m ta có:
a ≡ a (mod m) với mọi a Z; (tính chất phản xạ)
a ≡ b (mod m) thì b ≡ a (mod m); (tính chất đối xứng)
a ≡ b (mod m) và b ≡ c (mod m) thì a ≡ c (mod m); (tính chất bắc cầu)
+) Tổng hay hiệu các “đồng dư”:
Trang 25(a+b) (mod n) [(a mod n) + (b mod n)] (mod n)
(a- b) (mod n) [(a mod n) - (b mod n)] (mod n)
(a* b) (mod n) [(a mod n) * (b mod n)] (mod n)
* Có thể cộng hoặc trừ cùng một số vào hai vế của một đồng dư thức
* Có thể chuyển vế các số hạng của đồng dư thức bằng cách đổi dấu các số hạng đó
* Có thể cộng vào một vế của đồng dư thức một bội của modulo:
a ≡ b (mod m) → a+km ≡ b (mod m) với mọi k Z
* Có thể nhân hai vế của một đồng dư thức với cùng một số:
a ≡ b (mod m) → ac ≡ bc (mod m) với mọi c Z
* Có thể nâng lên lũy thừa bậc nguyên không âm cho 2 vế của một đồng dư
thức: a ≡ b (mod m) → an ≡ bn (mod m) với mọi n Z+
* Có thể chia 2 vế đồng dư thức cho một ước chung nguyên tố với modulo:
c\a, c\b, (c,m)=1, a ≡ b (mod m) a/c ≡ b/c (mod m)
* Có thể nhân 2 vế đồng dư thức và modulo với cùng một số nguyên dương,
Trang 26Nếu a ≡ b (mod m), c >0 ac ≡ bc (mod mc)
* Có thể chia 2 vế đồng dư thức và modulo cho cùng một số nguyên dương
là ước chung của chúng:
Nếu c \ (a, b, m) a/c ≡ b/c (mod m/c)
* a ≡ b (mod m) a ≡ b (mod k) với k \ m
* a ≡ b (mod m) gcd(a, m) = gcd(b, m)
Các lớp thặng dư
Quan hệ “đồng dư” theo modulo m trên tập Z (tập các số nguyên) là một
quan hệ tương đương (vì có tính chất phản xạ, đối xứng, bắc cầu), do đó nó tạo
ra trên tập Z một phân hoạch gồm các lớp tương đương: hai số nguyên thuộc cùng một lớp tương đương khi và chỉ khi chúng có cùng một số dư khi chia cho
m
Mỗi lớp tương đương đại diện bởi một số duy nhất trong tập Z m ={0,
1,…, m-1} là số dư khi chia các số trong lớp cho m, ký hiệu một lớp được đại diện bởi số a là [a] m
Như vậy [a]m = [b]m a ≡ b (mod m)
Vì vậy ta có thể đồng nhất Z m với tập các lớp tương đương theo modulo m
Z m ={0, 1, 2,…, m-1} được gọi là tập các “thặng dư đầy đủ” theo modulo m
Mọi số nguyên bất kỳ đều có thể tìm được trong Z m một số đồng dư với mình
theo modulo m
1.3.2.3 Số nguyên tố mạnh (strong prime)
Số nguyên tố p được gọi là số nguyên tố mạnh nếu thoả mãn những điều kiện:
p - 1 có thừa số nguyên tố lớn, đó là p = a1q1 + 1 cho a1 là số nguyên nào
đó và số nguyên tố lớn q1
q1 - 1 có thừa số nguyên tố lớn, trong đó q1 = a2q2 + 1 cho a2 là số nguyên nào đó và q2 là số nguyên tố lớn
Trang 27 p + 1 có thừa số nguyên tố lớn, p = a3q3-1 cho a3 là số nguyên nào đó, q3 là
số nguyên tố lớn
Đôi khi số nguyên tố thoả mãn một tập con của các điều kiện trên cũng được gọi là số nguyên tố mạnh
Trong lý thuyết số, một số nguyên tố mạnh là một số nguyên tố pn, với n là
chỉ số của số nguyên tố thoả mãn:
P P P
Thì pn được gọi là số nguyên tố mạnh Ví dụ, 17 là số nguyên tố thứ bảy
Số nguyên tố thứ sáu và thứ tám là 13 và 19, áp dụng công thức trên ta có:
16 2
19 13
17 Như vậy 17 là một số nguyên tố mạnh
1.3.2.4 Định lý Fermat nhỏ
Với mọi số nguyên tố dương p, và mọi số nguyên a không chia hết cho p,
ta có ap-1 ≡ 1 [mod p]
Từ định lý Fermat chúng ta suy ra, các số nguyên 1, 2, 3, , p-1 đều
không chia hết p, do vậy tất cả các luỹ thừa của chúng với p-1 đều bằng 1 mod
p Ví dụ, trong Z(11)*, chúng ta có p - 1 = 10, và
110 = 210 = 310 = 410 = 510 = 610 = 1 mod 11
710 = 810 = 910 = 1010 = 1 mod 11
Hệ quả của Định lý Fermat nhỏ: Giả sử p là số nguyên tố dương
(i) Với mọi số nguyên a ta có ap ≡ a [mod p]
(ii) Nếu e, d nguyên dương và thoả điều kiện e*d ≡ 1 [mod p - 1] thì ta có (ae)d = (ad)e ≡ a [mod p]
Nhờ hệ quả này ta có thể mã hoá nhờ số e (bằng cách nâng lên luỹ thừa e)
và giải mã bằng một số khác là d (nâng số bị mã hoá lên luỹ thừa d ta trở lại số cũ) Ngược lại cũng có thể mã hóa bằng d và giải mã bằng e, đây là tính chất
"khoá bằng chìa này nhưng mở bằng chìa khác” Nhờ tính chất này mà ta có
Trang 28thể giao cho mỗi người một "chìa khoá" riêng [15]
Áp dụng định lý Fermat chúng ta có hệ quả là định lý Lagrange
1, 5, 7, 11 thoả điều kiện này nên ta có (12) = 4 Trường hợp tổng quát nếu n phân tích thành các thừa số nguyên tố n = p1
1
p2
2 pk
k thì ta có:
p
1 1
1 1
1 1
2 1
(1.9)
1.3.2.7 Định lý số dư trung hoa
Định lý số dư trung hoa [6] là tên gọi do người phương Tây đặt cho định lý này Người Trung Hoa gọi nó là bài toán Hàn Tín điểm binh Sử ký Tư Mã Thiên viết rằng khi Hàn Tín điểm quân số, ông cho quân lính xếp hàng 3, hàng
5, hàng 7 rồi báo cáo số dư Từ đó ông tính chính xác quân số đến từng người Gần đây, định lý số dư Trung Quốc có nhiều ứng dụng trong các bài toán
về số nguyên lớn áp dụng vào lý thuyết mật mã
Định lý: Giả sử n>1 là số nguyên dương và m1, m2, , mn là n số nguyên lớn hơn 1 đôi một nguyên tố cùng nhau Đặt M = m1m2 mn Cho trước các số
Trang 29nguyên a1, a2, , an khi đó tồn tài duy nhất một số nguyên x (0x<M) thoả mãn các phương trình đồng dư sau đây:
x
m a
x
mod
mod
mod
2 2
1 1
m a
x
m a
x
mod
mod
mod
2 2
1 1
Hệ phương trình đồng dư nói trên có nghiệm duy nhất theo mođun M =
m1.m2 mk, trong đó m1, m2, ., mn đôi một nguyên tố cùng nhau Trong bài toán Hàn Tín n = 3 và m1 = 3, m2 = 5, m3 = 7
1.3.3 Các nguyên lý của hệ mật khoá công khai
Năm 1976, Diffie và Hellman công bố một phát triển mới mang tên “các
phương hướng mới trong mật mã” [1],[4],[5] Công trình đề xuất một dạng mới của hệ thống mật mã, trong đó người gửi và người nhận sử dụng các khoá mã khác nhau nhưng có mối liên hệ với nhau, và một trong hai khoá đó được giữ bí mật Bên nhận dữ liệu giữ một khoá bí mật cho phép giải mã với khoá đó, còn bên gửi sử dụng một khoá khác tương ứng với khoá bí mật trên để mã hoá dữ liệu, khoá đó gọi là khoá công khai Hệ thống dùng khoá như vậy gọi là hệ thống “bất đối xứng” bởi vì nó bảo đảm bí mật cho việc truyền tin chỉ một chiều, muốn thiết lập bí mật truyền tin theo chiều ngược lại phải sử dụng một cặp khoá khác Để dùng một hệ thống mật mã khoá công khai trong một hệ thống có n cá thể cùng trao đổi các thông tin mật Mỗi cá thể chọn cho mình một khoá lập mã ki và một hàm mã hoá
i
k
E được thông báo công khai Như vậy
Trang 30có n khoá lập mã được công khai k1, k2,…,kn Khi cá thể thứ i muốn gửi thông điệp cho cá thể thứ j: mỗi chữ trong thông điệp được số hoá, nhóm thành từng
“khối” với độ dài nào đó Mỗi khối P trong văn bản được mã hoá bằng khoá lập
mã kj của cá thể thứ j (đã được thông báo công khai) dùng hàm mã hoá Ej, và gửi đi dưới dạng: C =
D : là khoá giải mã (khoá riêng hay còn gọi là khoá bí mật)
Như vậy, các thuật toán khoá công khai sử dụng một khoá riêng để mã hoá
và một khoá chung khác để giải mã (tạo thành một cặp khoá), chúng có các tính chất và đặc điểm quan trọng sau:
(i) Không cần phải thiết lập một kênh bảo vệ với những thể thức phức tạp, rườm rà để truyền khoá như trong hệ mã bí mật (mật mã đối xứng)
(ii) Cặp khoá công khai được tạo ra theo một phương pháp đặc biệt có quan
hệ với nhau và được chọn trong nhiều khoá có thể (trong đó nếu khoá này dùng
để mã hoá thì khoá kia dùng để giải mã) Hình 1.4 mô tả rõ ràng mối quan hệ
k s
G
D
k d
Trang 31 P là bản tin rõ, C là bản mã
e
k
E : thuật toán mã hoá với khoá công khai ke, D k d : thuật toán giải mã với
khoá bí mật kd (hai thuật toán E và D là đồng nhất, sở dĩ các kết quả mà chúng đƣa ra khác nhau là vì khoá mã ke và kd khác nhau)
1.3.4 Một số hệ mã hoá khoá công khai
1.3.4.1 Hệ mã hoá khoá công khai RABIN
Trang 32Trong toán học , một số tự nhiên n là một số nguyên Blum nếu n = p × q
mà p và q là riêng biệt các số nguyên tố đồng dư với 3 mod 4 Đó là, p và q phải
có hình thức 4 t 3, đối với một số t số nguyên Số nguyên tố của hình thức này được gọi là số nguyên tố Blum Điều này có nghĩa rằng các yếu tố của một số nguyên Blum là số nguyên tố Gauss không có một phần tưởng tượng Các Blum
số nguyên đầu tiên là 21 , 33 , 57 , 69 , 77 , 93 , 129 , 133 , 141 , 161 , 177 , (Chuỗi A016105 trong OEIS ) Số nguyên Blum đã được đặt tên khoa học máy tính Manuel Blum
+ Chọn khóa công khai là n và b (0 b n-1); chọn khóa bí mật là p và q; + Chọn p và q là hai số nguyên tố lớn khác nhau có tính chất sau: p 3 mod 4;
2
b b
y (mod n)
+ Đặt z = x + b/2, ta có:
z2 = x 2 + b2/4 + 2x * b/2 = x2 + b2/4 + x*b = b2/4 + x(x + b) (mod n) Tức là z 2 = b2/4 + y (mod n)
+ Đặt T = b 2/4 +y, ta có phương trình z 2 T (mod n), n = p*q (1) Phương trình (1) tương đương với hệ phương trình (2):
2 2
Trang 33+ Từ (2), (3) ta có hệ phương trình:
(p+1)/4 2 2 (p+1)/4 2 2
Vận dụng sơ đồ mã hóa Rabin thực hiện ví dụ minh họa:
+ Hai số nguyên tố khác nhau: p = 7; q = 11;
Trang 34y = ek(x) = x(x + b) (mod n) = 44(44 + 9) mod 77 = 2.342 mod 77 = 22
Trang 35Nghiệm của hệ này là:
-11.638 + 681.352 (mod 77)
[(681.352 mod 77)] - (11.638 mod 77)] (mod 77)
(56 - 11) (mod 77) 45 (mod 77) 45
Trang 36+ Giải hệ phương trình (4)
(4)
(p 1) / 4 (q 1) / 4
+ Với z = 67 thì x = 23 - 43 mod 77 = 67 – 43 mod 77 = 24
+ Với z = 32 thì x = 23 - 43 mod 77 = 32 – 43 mod 77 = 66
+ Với z = 45 thì x = 23 - 43 mod 77 = 45 – 43 mod 77 = 2
+ Với z = 10 thì x = 23 - 43 mod 77 = 10 – 43 mod 77 = 44
Việc chọn giá trị nào trong trong 4 giá trị tìm được làm bản rõ là tùy thuộc vào những đặc trưng khác của bản rõ mà người giải mã nhận biết (thí dụ bản rõ dưới dạng số phải có biểu diễn nhị phân là mã của một văn bản tiếng Anh thông thường) Trong trường hợp này chọn bản rõ là 44
1.3.4.2 Hệ mã hóa khoá công khai ELGAML
Trang 37*Tạo cặp khóa (bí mật, công khai) (a, h) :
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Z p là “khó”
giải Chọn phần tử nguyên thuỷ g Z p * Đặt P = Z p *, C = Z p*Z p*
Chọn khóa bí mật là a Z p * Tính khóa công khai h g a mod p
Định nghĩa tập khóa: = {(p, g, a, h): h g a mod p} Các giá trị p, g,
h đƣợc công khai, phải giữ bí mật a
Với Bản rõ x P và Bản mã y C, với khóa k định nghĩa:
Trang 381.3.4.3 Hệ mã hóa khoá công khai RSA
Hệ mã hóa khóa công khai được đề xuất bởi Ron Rivest, Adi Shamir và Len Adleman (MIT) vào năm 1978 [4],[5],[12]
Hệ mã hóa sử dụng phương pháp mã hóa khối với mỗi khối là một số
nguyên < n: Thông thường kích cỡ n là 1024 bit ≈ 309 chữ số thập phân
a Sơ đồ
Hình 1.5 Sơ đồ biểu diễn thuật toán mã hóa
Giả sử khối bản gốc của người gửi là M và khối bản mã của người nhận là C,
quá trình mã hóa và giải mã RSA là: C = M e mod n và M = C d mod n
Cả người gửi và người nhận phải biết giá trị n Người gửi biết giá trị e và chỉ người nhận biết giá trị d Đây là một thuật toán mã hóa khóa công khai với khóa công khai KU = {e,n} và khóa riêng KR = {d,n}
b Ví dụ minh hoạ
* Bản rõ chữ: B A O M A T T H O N G T I N
Trang 39+ Khóa bí mật d là phần tử nghịch đảo của e theo mod (n):
d*e 1 (mod (n)) Từ d*e 1 (mod (n)), ta nhận được khóa bí mật d = 103
103
mod 143, ta nhận lại bản rõ.Trong thực tế, khóa công khai (public key) là một chuỗi bit bao gồm số n
và số mũ mã hóa e (encryption exponent), khóa bí mật (private key) là một chuỗi bit bao gồm p, q và số mũ giải mã d (decryption exponent)
Để tăng tốc quá trình giải mã (RSA Fast Decryption), trong khóa bí mật, người ta còn lưu thêm một vài thông số nữa như dp = d mod (p - 1) và dq = q mod (q - 1)
Trong hệ mã RSA, người ta công bố n và e (public key) và giữa bí mật p,
q, d (private key) Như vậy với thông điệp mã hóa, chỉ cần có d là có thể giải mã được Do ed = 1 (mod (n) ) nên nếu biết e và (n) thì ta có thể dễ dàng tìm d bằng thuật toán Euclid mở rộng Nhưng vấn đề là chỉ có n được công bố còn
Trang 40(n) thì không Ta đã biết (n) = (p-1) * (q-1) và n = p*q Vậy để tìm (n) thì ta phải tìm được p và q từ n Đây chính là bài toán phân tích thừa số nguyên tố của
số nguyên lớn
Do thám mã RSA dựa chủ yếu trên phân tích thừa số nguyên tố p, q từ n nên việc chọn các số nguyên tố p, q như thế nào để việc phân tích gặp khó khăn cũng rất quan trọng Vấn đề này đòi hỏi p, q phải là những số nguyên tố mạnh
Ta sẽ chứng tỏ rằng, nếu biết số mũ mã hoá e không thể dẫn đến việc tìm được số mũ giải mã d
Thật vậy: muốn tìm nghịch đảo d của e modulo (n) thì trước hết phải tìm được (n), nhưng việc tìm được (n) không dễ hơn với việc phân tích số n Bởi
vì một khi đã biết n và (n) thì dễ dàng tìm được p và q Thật vậy:
Với các ví dụ nêu trên, chúng ta dễ dàng đọc, hiểu được sơ đồ mã hoá khoá
công khai RSA như trong hình 1.6 sau:
Các bước cơ bản gồm:
Mã hoá
Giải mã
Khoá bí mật
d b
Hình 1.6 Minh hoạ quá trình mã hoá khoá công khai
RSA