Hai mục tiêu trên được thực hiện cụ thể bằng các công việc sau: - Tìm hiểu những cơ sở toán học, độ phức tạp của thuật toán và các thuật toán thường được sử dụng trong các hệ mật mã kho
Trang 1Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
KHOA CÔNG NGHỆ THÔNG TIN
Nguyễn Thị Hồng Minh
CHỮ KÝ SỐ VÀ CÁC VẤN ĐỀ BẢO MẬT THÔNG TIN
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên - 2010
Trang 2Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Nguyễn Thị Hồng Minh
CHỮ KÝ SỐ VÀ CÁC VẤN ĐỀ BẢO MẬT THÔNG TIN
Chuyên ngành: Khoa học máy tính
Mã số: 604801
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Đoàn Văn Ban
Thái Nguyên - 2010
Trang 3LỜ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 10 năm 2010
Nguyễn Thị Hồng Minh
Trang 4LỜ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 khoa Công nghệ thông tin - Đạ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 11 năm 2010
Trang 5MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC TỪ VIẾT TẮT 5
DANH MỤC CÁC HÌNH 6
CÁC KÍ HIỆU DÙNG TRONG LUẬN VĂN 7
Mở đầu 8
1 Lý do chọn đề tài 8
2 Mục tiêu nghiên cứu 9
3 Phương pháp nghiên cứu 10
4 Tổng quan luận văn 10
Chương 1: Một số hệ mật mã khoá thông dụng 12
1.1 Giới thiệu 12
1.2 Hệ mã khoá bí mật 13
Hệ mã DES/ AES 13
1.3 Hệ mã hoá công khai 17
1.3.1 Các khái niệm cơ bản 17
1.3.2 Một số khái niệm toán học cơ sở 18
1.3.3 Các nguyên lý của hệ mật khoá công khai 23
1.3.4 Hệ mã logarithm rời rạc 26
1.3.5 Hệ ElGamal 28
1.3.6 Hệ RSA 29
1.4 Độ an toàn của RSA 34
1.4.1 Tạo vỏ bọc an toàn cho văn bản 35
1.4.2 Xác thực chủ thể 36
1.5 Quản lý khoá 36
1.5.1 Phân phối khoá cho giải thuật mật mã đối xứng 37
1.5.2 Phân phối khoá cho giải thuật mật mã không đối xứng 39
1.5.3 Phát sinh và lưu giữ khoá bí mật 42
Trang 61.6 Kết luận chương 45
Chương 2: Chữ ký số 48
2.1 Giới thiệu 48
2.2 Xác thực thông báo và các hàm xác thực 49
2.2.1 Xác thực thông báo 49
2.2.2 Các hàm xác thực 50
2.3 Chữ ký số 57
2.3.1 Chữ ký số dùng mật mã khoá công khai 57
2.3.2 Lược đồ chữ ký số 61
2.4 Các kiểu tấn công vào lượt đồ chữ ký 70
2.5 Kết luận chương 70
2.5.1 Tính pháp lý và ứng dụng chữ ký số trong và ngoài nước 71
Chương 3: Cài đặt demo chương trình 76
3.1 Lĩnh vực ứng dụng của chương trình 76
3.2 Chức năng của chương trình 76
3.2.1 Phần bảo mật thông tin 76
3.2.2 Phần chữ ký số 77
3.3 Một số màn hình giao diện của chương trình 77
3.4 Kết luận chương 81
Trang 7
DANH MỤC 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
FIPS Federal Information Processing Standard 46
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
NIST National Institute Of Standards And Technology
OCSP Online Certificate Status Protocol
PKI public-key infrastructures
RSA Rivest, Shamir, Adleman
TCP/IP Transfer Control Protocol/Internet Protocol
URL Uniform Resource Locator
Trang 8DANH MỤC CÁC HÌNH
Trang
Hình 1.1 Thuật toán giải mã của hệ DES 14
Hình 1.2 Sơ đồ khối nguyên lý hoạt động của mật mã khoá công khai 25 Hình 1.3 Minh hoạ quá trình mã hoá khoá công khai 31
Hình 1.4 Sơ đồ phân bố khóa của một network với một CKD 36
Hình 1.5 Sơ đồ phân bố khóa của một network với KD 49
Hình 1.6 Sơ đồ kiểm tra khoá 42
Hình 1.7 Sơ đồ bảo vệ khoá 43
Hình 2.1 (a) Lược đồ mã hoá thông báo 48
Hình 2.1(b) Mã hoá khoá công khai: xác thực và chữ ký 49
Hình 2.1(c) Mã hoá khoá công khai: Bí mật, xác thực và chữ ký 49
Hình 2.2 (a) Xác thực thông báo 50
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õ 50
Hình 2.2 (c) Xác thực đối với bản mã 50
Hình 2.3 Sơ đồ nguyên lý hoạt động của chữ ký số 56
Hình 2.4 Sơ đồ tạo và kiểm tra chữ ký số 57
Hình 2.5 Sơ đồ quy trình ký 60
Hình 2.6 Sơ đồ quy trình xác minh chữ ký 60
Hình 2.7 Tổng quan về chữ ký số với khôi phục thông điệp 62
Hình 2.8 Lược đồ tổng quan của chữ ký số với khôi phục thông điệp 62
Hình 3.1 Vấn đề chứng thực thông qua trung gian 75
Trang 9CÁC KÍ HIỆU DÙNG TRONG LUẬN VĂN
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
e, eA Số mũ mã hoá, số mũ mã hoá của cá thể A
Trang 10Mở đầu
1 Lý do chọn đề tài
Internet ngày nay đã trở thành mạng truyền dữ liệu được sử dụng phổ biến trên toàn thế giới Nó được sử dụng để truyền thư điện tử, truy cập các website, kết nối tới các trường học, công sở, giám sát hệ thống từ xa, truyền tệp Trong tương lai, Internet sẽ trở thành môi trường truyền thông phổ cập cho toàn thế giới
Rõ ràng tiềm năng của mạng Internet là rất lớn nhưng nó lại bị hạn chế bởi thiết kế mở của mình Như ta biết giao tiếp qua Internet chủ yếu sử dụng giao thức TCP/IP Các gói tin truyền từ điểm nguồn tới điểm đích sẽ đi qua rất nhiều máy tính trung gian, vì vậy nó rất dễ bị xâm phạm, can thiệp, theo dõi và giả mạo trên đường truyền và biện pháp bảo mật bằng mật khẩu là không đảm bảo
vì có thể bị nghe trộm hoặc bị dò ra nhanh chóng; vì thế đã chuyển sang xu hướng mã hoá
Nhờ thông tin được người gửi mã hoá trước khi truyền qua mạng Internet nên dù kẻ trộm có “chặn” cũng không thể đọc Khi tới đích, người nhận sẽ sử dụng một công cụ đặc biệt để giải mã Phương pháp mã hoá và bảo mật phổ biến nhất đang được thế giới áp dụng là chữ ký số (Digital signature) Với chữ
ký số, người sử dụng có thể mã hoá thông tin một cách hiệu quả, chống giả mạo, xác thực danh tính người gửi Ngoài ra chữ ký số còn là bằng chứng giúp chống chối cãi nguồn gốc, ngăn chặn người gửi chối cãi nguồn gốc tài liệu mình
đã gửi
Đối với các hoạt động trên môi trường mạng ngày càng phát triển như hiện nay, chữ ký số là một hình thức để bảo đảm tính pháp lý của các cam kết Mặt
Trang 11khác, việc giao dịch bằng các thông điệp điện tử nói chung và giao dịch ở dạng số nói riêng đã được luật hoá bằng Luật Giao dịch điện tử; Vì vậy, cần tìm hiểu, nghiên cứu về chữ ký số để tham mưu cho lãnh đạo trong việc bảo mật văn bản điện tử Nhận thấy tính thiết thực của vấn đề này và được sự gợi ý của giáo viên
hướng dẫn, em đã chọn đề tài “Chữ ký số và các vấn đề bảo mật thông tin”
2 Mục tiêu nghiên cứu
Nghiên cứu các giải pháp mã hoá để bảo mật thông tin và 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ử để xác thực nguồn gốc tài liệu hay văn bản của người gửi
Xây dựng một chương trình ứng dụng có khả năng bảo mật nội dung thông tin dưới dạng văn bản điện tử, tạo chữ ký trên văn bản điện tử cần thiết và chứng thực chữ ký số trên văn bản điện tử góp phần phục vụ những người quản
lý đơn vị trao đổi thông tin mật với các đối tác, điều hành công việc từ xa
Hai mục tiêu trên được thực hiện cụ thể bằng các công việc sau:
- Tìm hiểu những cơ sở toán học, độ phức tạp của thuật toán và các thuật toán thường được sử dụng trong các hệ mật mã khoá công khai
- Nghiên cứu tìm hiểu lý thuyết chung về nguyên lý, hoạt động và ứng dụng của hệ mật mã khoá công khai
- Nghiên cứu tìm hiểu cụ thể các hệ mật khoá công khai đang được sử dụng nhiều nhất hiện nay bao gồm các hệ sau:
+ Hệ mật mã bí mật
+ Hệ mật mã công khai RSA
- Nghiên cứu tìm hiểu mô hình chữ ký số và ứng dụng trong việc ký các tài liệu, văn bản điện tử
Trang 12- Tìm hiểu các ngôn ngữ lập trình Visual C#.net phục vụ cho công việc lập trình ứng dụng
- Trên cơ sở các nghiên cứu đó, đánh giá, so sánh độ an toàn của các hệ mật mã khoá công khai, từ đó xây dựng một chương trình ứng dụng có các chức năng tạo khóa, mã hoá hoặc tạo chữ ký, giải mã thông điệp dựa trên hệ mật mã RSA có độ an toàn và hiệu xuất thực thi cao, có khả năng ứng dụng vào thực tiễn như bảo mật nội dung thông tin thư tín điện tử, tạo chữ ký trên các tài liệu, văn bản điện tử cần thiết trao đổi thông qua mạng
- Nghiên cứu về mật mã khoá công khai RSA, chữ ký số và ứng dụng thuật toán RSA
- Luận văn sẽ tập trung nghiên cứu và làm rõ hơn về ý tưởng, cơ sở toán học, thuật toán và độ phức tạp của mã hoá nói chung và của mã hoá khoá công khai nói riêng
3 Phương pháp nghiên cứu
Nghiên cứu các tài liệu về mã hoá, hệ mật mã của các tác giả trong và ngoài nước, các bài báo, thông tin trên mạng, …
Nghiên cứu ngôn ngữ lập trình hướng đối tượng Visual C#
.net để viết một ứng dụng nhỏ về chữ ký số
4 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ố
Trang 13Luậ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
Khá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: Một số hệ mật mã khoá thông
dụng
1.1 Giới thiệu
Lý thuyết mật mã và an toàn thông tin đã và đang chiếm lĩnh sự quan tâm của nhiều người, điều đó xuất phát từ nhu cầu đảm bảo an toàn thông tin trong thời đại bùng nổ công nghệ và sự giao lưu thông tin ngày càng phát triển mạnh
mẽ như hiện nay Chương này giới thiệu một số nét cơ bản về thuật toán RSA dùng cho hệ thống mã hoá công khai và ứng dụng của nó trong chữ ký số [12] Mật mã được dùng để bảo vệ bí mật thông tin khi thông tin được truyền đi Giả sử có hai người muốn trao đổi thông tin với nhau là A và B Khi đó, chẳng hạn A muốn gửi thông tin là một văn bản nào đó dưới dạng điện tử, gọi là bản
rõ cho B, muốn được bảo mật thì A phải mã hoá cho bản rõ đó, được bản mã, và gửi cho B Như vậy, giữa A và B phải có sự thoả thuận nào đó về việc dùng khoá để A có thể mã hoá thông tin để được bản mã và B giải mã thông tin từ bản mã nhằm thu được bản rõ Khi đó, một người nào đó không có khoá thì dù
họ có lấy được bản mã trên đường truyền thì cũng không thể dịch ngược thành bản rõ
Người ta chia các hệ mã làm hai loại chính là hệ mã khoá bí mật và hệ mã khoá công khai (public-key cipher system) Các hệ mã khoá bí mật thực hiện việc bảo mật đều dựa trên cơ sở là có một khoá để dùng chung cho việc lập mã
và giải mã Các hệ mã hoá công khai là trong đó mỗi người tham gia vào quá trình truyền tin sẽ có hai khoá khác nhau, một khoá công khai (public key) dùng
để lập mã và một khoá mật (private key) dùng để giải mã Khoá công khai được công khai hoá cho mọi người, còn khoá mật của mỗi người được giữ bí mật
Trang 15Thông tin trước khi gửi đi được mã hoá bởi khoá công khai của người nhận Chỉ có người nhận mới có khả năng giải mã bản mã bằng khoá mật của mình Độ bảo mật của các hệ mã công khai rất cao vì được đảm bảo bằng độ phức tạp tính toán của thao tác tìm các số nguyên tố lớn và phân tích một số nguyên lớn thành tích các thừa số
Trang 16(Federal Information Processing Standard 46) NIST đang đề nghị thay FIPS và các mở rộng của nó bằng Trip-DES (TDES hay 3DES) với tên X9.2 trong mô tả của Viện tiêu chuẩn Quốc gia Mỹ (ANSI) [5] DES sử dụng một phép hoán vị, thay thế, và một số toán tử phi tuyến Các toán tử phi tuyến này được áp dụng (16 lần) và từng khối của thông điệp 32 bit; Bản rõ, trước hết, được chia thành các khối thông điệp 64 bit
Trang 17Hình 1.1 Thuật toán giải mã của hệ DES
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.1, trong đó, phép ký hiệu phép XOR
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
Trang 18mã 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:
Trang 19viên chính thức được gửi đến từ các nhà nghiên cứu thuộc 12 nước khác nhau Sau đó, các nhà khoa học thử tìm cách tấn công các thuật giải mã hoá này, để tìm ra điểm yếu nhất có thể có để tấn công chúng Sau đó, tại Second AES Candidate Conference,
tổ chức tại Rôma, Ý, ngày 22-23 tháng 09 năm 1999, NIST thông báo 5 ứng viên chính thức 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) và Lars Knudsen (Na-uy)
- Twofish – do Bruce Schneier, John Kelsey, Doug Whiting, David Wagner Chris Hall và Niels Ferguson (Mỹ) [5]
1.3 Hệ mã hoá công khai
1.3.1 Các khái niệm cơ bản
Trong một hệ mã hoá công khai (mã không đối xứng), khoá mã hoá ek và khoá giải mã dk khác nhau, ek ≠ dk Vì ek chỉ được sử dụng để mã hoá nên có thể được công bố; nhưng khoá giải mã dk phải giữ bí mật Để phân biệt với hệ mã bí mật, ta gọi ek là khoá công khai, và dk là khoá cá nhân; còn khoá trong hệ mã đối xứng được gọi là khoá bí mật Hệ mã khoá công khai được xây dựng trên ý tưởng hàm một chiều
Cho các tập hữu hạn S và T Hàm một chiều:
f : S → T
là hàm khả nghịch thoả:
(i) f dễ thực hiện, nghĩa là, cho x S, có thể dễ dàng tính được
y = f (x)
Trang 20(ii) f -1, hàm ngược của f, khó thực hiện, nghĩa là, cho y
T, rất khó tính được x = f -1
(y)
(iii) f -1 có thể tính được khi có thêm một số thông tin
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ỹ thừ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ụ
2^3 = 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ả
Trang 21đảo của nhau Vậy Z(11)*
là đóng với phép nhân và luỹ thừa, các phần tử đều có phần tử nghịch đảo nên nó là một nhóm
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
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
Giả 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} tính 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)*
Trang 22Dễ dàng kiểm tra đƣợc số 2 không phải là phần tử sinh theo mod 7, bởi vì
{2, 22, 23}mod 7 = {1, 2, 4} Z(7)* Nhƣng tập {1, 2, 4} là tập con của {1, 2, 3, 4, 5, 6} = Z(7)*
Vậy có thể nói 2 phần tử sinh của nhóm con của Z(3)*
theo mod 3
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à g^(p-1) = 1, và không có số luỹ thừa nào nhỏ
để bằng 1 theo mod p
1.3.2.2 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 những điều kiện sau đƣợc thoả mã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
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
Trang 23Trong 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:
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
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 24thể giao cho mỗi người một "chìa khoá" riêng [5]
Áp dụng định lý Fermat chúng ta có hệ quả là định lý Lagrange
1.3.2.4 Định lý Lagrange
Bậc q của bất kỳ phần tử nào trong nhóm nhân theo mod p đều là thừa số
của p-1 [5]
Xét ví dụ với p = 7, p - 1 = 7 - 1 = 6 Như ở trên chúng ta đã thấy, 6 là bậc của
3 và 5 trong Z(7)*, và tất nhiên 6 chia hết (7-1) Tương tự, 2 và 4 có bậc 3 mod 7,
và 3 chia hết (7-1)
1.3.2.5 Định lý Euler
Định lý Euler là mở rộng của định lý Fermat nhỏ Thực tế phép mã hoá theo định lý Fermat rất dễ bị tấn công, ngay cả khi số p rất lớn nếu đã biết số e thì có thể tìm rất nhanh số d sao cho ed ≡ 1 [mod p - 1] Định lý Euler có thể khắc phục điểm này nhờ thay số p bằng tích của 2 hay nhiều số nguyên tố Cho trước số nguyên dương n >1 Hàm φ(n) là số lượng các số nguyên dương a nhỏ hơn n mà nguyên tố cùng nhau với n Chẳng hạn số n = 12 có 4 số
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 = p11
p
1 1
1 1
1 1
2 1
(1.9)
1.3.2.6 Đị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
Trang 25Gầ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ố nguyê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:
m a
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 [12] 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ã” (new directions in cryptography) 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
Trang 26giả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 “không đố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 [1], [4], [5]
Để 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 có 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 = E k j(P)
Để giải mã thông điệp này, cá thể thứ j chỉ cần dùng khoá riêng của mình (chỉ một mình cá thể j biết khoá này) với hàm giải mã
j k
D ) là cặp khoá của cá thể j, trong đó:
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ó
Trang 27quan 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.2 mô tả rõ ràng mối quan hệ đó
Trang 28Hình 1.2 Sơ đồ khối nguyên lý hoạt động của mật mã khoá công khai
Trong đó:
Ks gọi là mầm khoá hay còn gọi là khoá khởi thảo được chọn theo
phương pháp ngẫu nhiên
Hai thuật toán F, G dùng để tính toán các khoá Bên nhận dùng hai thuật
toán F và G cùng với mầm khoá ks để tạo ra hai khoá: khoá giải mã kd bí
mật được giữ lại sử dụng riêng cho mình và khoá ke công khai gửi cho
bên gửi để mã hóa tin gửi cho mình
Mô hình này do Diffie-Hellman [5] xây dựng dựa trên bài toán logarithm
rời rạc Phương pháp có thể được tóm tắt như sau:
k s
G
D
k d
Trang 29Nghi thức truyền hóa Diffie-Hellman
Mô hình này không dùng để gửi thông điệp mật mà chỉ dùng cho các đối tác xây dựng khóa bí mật dùng chung trên mạng công cộng Nhƣ thế, có thể sử dụng Diffie-Hellman kết hợp với DES để trao đổi thông tin mật Nghi thức trao đổi khóa giữa A và B nhƣ sau:
Các thành viên trong hệ thống cùng chọn chung một số nguyên tố q và một phần tử sinh g,
- A chọn ngẫu nhiên một số a {1, 2, , q - 1} và gửi cho B kết quả của ga
Rõ ràng, nếu có g, q, ga mod q và gb mod q thì có thể tính đƣợc gab mod q
và nhƣ thế có thể hiểu đƣợc các phiên giao dịch của A và B Thực vậy, có thể dùng g, q, ga mod q và gb mod q để tính lại a, sau đó có thể dễ dàng phá đƣợc hệ thống Diffie-Hellman Vì thế, tính an toàn của hệ thống Diffie-Hellman dựa trên giả thiết rằng không thể tính gab
nếu chỉ biết ga và gb Trên lý thuyết, có thể có cách sử dụng tri thức về ga
và gb để tính gab Nhƣng hiện tại, chƣa có cách nào
Trang 30- A chọn ngẫu nhiên một số đồng dƣ x mod p, tính 7x(mod p) và gửi kết quả cho B, giữ bí mật x
- Vì A biết khóa giải mã bí mật là a, A có thể tìm lại M bằng cách tính
gab (mod q) và chia Mgab cho kết quả nhận đƣợc
Trang 311.3.6 Hệ RSA
Phương pháp bảo mật dữ liệu RSA được thành lập vào năm
1982 bởi Rivest, Shamir và Adleman , là những người phát minh
ra hệ thống mã hóa sử dụng khóa công khai RSA Ngày nay, có hơn 75 triệu bản copy của kỹ thuật xác nhận và mã hóa của RSA được cài đặt trên thế giới [4], [5], [12]
Kỹ thuật RSA bây giờ là một phần trong những tiêu chuẩn của Internet và Web, ITU (International Telecommunication Union - Hiệp hội Viễn thông Quốc tế), ISO (International Organization for Standardization - Tổ chức Tiêu chuẩn Quốc tế), ANSI (American National Standards Institute - Viện tiêu chuẩn quốc gia của Mỹ ), IEEE (Institute of Electrical and Electronic Engineers - Viện kỹ thuật của kỹ sư điện và điện tử ), cũng như các mạng máy tính dùng trong kinh doanh, tài chính , thương mại điện tử trên thế giới Năm 1996, RSA được Security Dynamics mua và sau đó phát triển nhằm mục đích thương mại hóa cho người sử dụng độc lập với hệ thống và đồng thời cung cấp dịch vụ cố vấn toàn diện về hệ thống mã hóa
Theo sơ đồ hình 1.2 với khoá công khai ke, hàm E dùng tham số đó để tạo
ra C = E (P)
e
k là một hàm công khai Nhưng phải đảm bảo yêu cầu của phép mã hoá là không thể để kẻ xâm nhập có thể tính được P từ C Vậy E phải là hàm
một chiều (hàm f được gọi là hàm một chiều nếu với mọi giá trị x việc xác định
y = f(x) là dễ dàng, nhưng nếu với một giá trị y thì việc tính nghịch đảo x = f
-1 (y) là rất khó khăn), trong khi đó thuật toán
d k
D là nghịch đảo của hàm đó Nhưng nếu không biết được khoá bí mật kd thì không thể tính được nghịch đảo của E, kd được cấu thành như là một loại “cửa sập” (trapdoor) Vì vậy hàm mã
hoá E còn được gọi là “hàm một chiều với cửa sập”
Trang 32Dựa trên việc chưa có thuật toán với thời gian đa thức phân tích một số n thành các thừa số nguyên tố Trong phương pháp mật mã RSA, việc mã hoá và giải mã dựa vào hàm lũy thừa, vào một số kiến thức toán học
Khi một hệ thống được thiết lập, đơn vị tạo khoá (Ngân hàng, khách hàng,
) sẽ sinh ra 2 số nguyên tố lớn p và q Tích n = p*q sẽ được tính theo luỹ thừa
của modulo Hàm totient của n là t(n) = t*(p*q) = (p-1)*(q-1) Cơ sở của hệ RSA là định lý Euler dựa trên các số x nguyên tố cùng nhau với n:
xt(n) = x(p-1)*(q-1) = 1 mod n
Đặt t = (p-1)*(q-1), ta có
xt = 1 mod n, nếu x không chia hết p và q
Sau đó chọn e và d sao cho e*d = 1 mod t, [nghĩa là, e*d = k*t + 1, với một
số k nguyên nào đó], trong đó, (e, n) sẽ là khoá công khai và (d, n) là khoá bí
mật Khi đó mọi bản tin x được mã hoá với e có thể giải mã bằng d
Nói chung trong hệ RSA, bản tin rõ M và bản mã tương ứng C được xác
định:
Me*d = (Me)d = (Md)e = M mod n
Mã hoá: Ee(M) = C = Me mod n
Giải mã: Dd(C) = Cd mod n = (Me)d mod n = M mod n
Trường hợp có khoá riêng là d có thể ký vào bản tin M bằng cách mã hoá
Trang 33Tính d sao cho e*d = 1 mod t
Ta muốn 7*d = 1 mod 120
Vậy d = 103, vì 7*103 = 721 = 1 mod
120
Khoa công khai: (e, n) Khoá công khai: (7, 143)
Khoá riêng: (d, n) Khoá riêng: (103, 143)
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)
Trang 34Để 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 φ(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:
Trang 35Vớ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.3 sau:
Các bước cơ bản gồm:
1 Mỗi thành viên sinh một cặp khoá (n; e; d), một khoá dùng để mã hoá và
một khoá dùng để giải mã các thông điệp
2 Mỗi thành viên công bố khoá công khai của mình (n; e) cho các thành
viên khác trong hệ thống biết Khoá cùng cặp (n; d) được giữ riêng làm khoá bí
mật (dùng để giải mã thông điệp)
3 A gửi thông điệp cho B thì A mã hoá thông điệp bằng khoá công khai (n;
eb) của B
4 Khi B nhận được thông điệp của A gửi, B giải mã thông điệp bằng khoá
riêng (n; db) của mình Không một người nào khác có thể giải mã thông điệp
ngoài B, vì chỉ có B mới biết khoá riêng của mình
Dựa vào thuật toán RSA đã mô tả trên, ta thấy, để sinh được cặp khoá và
thực hiện được các phép lập mã, giải mã ta phải giải quyết các bài toán sau đây:
Tìm các số nguyên tố lớn để lấy làm các giá trị p và q (mỗi số có độ lớn
không ít hơn 100 chữ số thập phân)
Thực hiện nhanh các phép toán số học trên các số rất lớn, đặc biệt là phép
mũ với số mũ lớn theo modulo n
Mã hoá
ebKhoá công khai
Giải mã
Khoá bí mật
d b
Hình 1.3 Minh hoạ quá trình mã hoá khoá công khai
RSA
Trang 36Độ bảo mật của RSA phụ thuộc vào mức độ khó của phân tích ra thừa số của các số lớn Ví dụ với n đủ lớn thì hoàn toàn
không dễ gì mà tìm được hai số nguyên tố n = p*q Khi đã biết p
và q, thì vấn đề tiếp theo là tìm khoá công khai e cũng như khoá
bí mật d sao cho e*d = 1 mod (p - 1)*(q - 1)
Đối với hệ mật công khai (năm 1997) người ta cho rằng với 768 bits (để tạo ra hai số nguyên tố khoảng 384 bits) đủ bảo đảm an toàn cho đến năm 2004 không ai phá được Thuật toán phân tích một số n thành hai thừa số là thuật toán sàng trường số (number field sieve) [16], có độ phức tạp cỡ
Để phân tích số n = 21024
đòi hỏi 287 phép tính Giả sử máy tính có tốc độ 1 triệu phép tính/giây, nó sẽ thực hiện 31.536.000 * 1.000.000 phép tính trong một năm, đó là khoảng 245
phép tính Vậy thời gian thực hiện sẽ là 287-45 = 242 = 4*1012 năm để phân tích n nêu trên ra hai thừa số nguyên tố
1.4 Độ an toàn của RSA
Cho đến nay vẫn chưa có một hệ thống thám mã nào có thể tấn công vào
hệ mật mã RSA Tính mật của RSA chủ yếu dựa vào việc bảo vệ khoá riêng d
và giữ bí mật các số nguyên tố p và q Tính an toàn của RSA chính là độ phức tạp của bài toán phân tích một số thành các thừa số nguyên tố Với người thám
mã có thể tấn công vào hệ mã RSA theo các hình thức
(i) Vét cạn: Không gian khoá của RSA là rất lớn vì vậy tấn công theo hướng này là không thể thực hiện được
(ii) Dùng toán học để tìm cách phân tích modulo n thành các thừa số nguyên tố
Hệ RSA chỉ có khả năng bảo mật khi p, q là các số nguyên tố lớn (khoảng hơn 100 chữ số thập phân) và như vậy thì n có khoảng hơn 200 chữ số thập
Trang 37phân Để phân tích một số nguyên cỡ lớn như thế với các thuật toán nhanh nhất hiện nay cùng với hệ thống máy tính hiện đại nhất cũng mất hàng tỷ năm
Sau khi tìm ra hệ mật mã, R.L.Rivest, A.Shamir, and L.M.Adleman đã viết một bài báo dưới dạng một thông báo khoa học của MIT, trong đó có lời thách thức bạn đọc bẻ khoá một mẫu tin nhỏ được mã hoá với: n=114381625757888676692357799761466120102182967212423625625618429357069352457338978305971235639587050589890751475992900268795435
41 và e = 9007
Mẫu tin: “first solver wins one hundred dollars” xuất hiện trong dạng mã
hoá (với a = 01, b = 02, c = 03,…) chỉ được giải mã vào ngày 26/04/1994 bằng việc sử dụng 1600 workstations, mainframes và supercomputers tấn công trong
8 tháng liên tục để phân tích số nêu trên ra thừa số nguyên tố Thực tế đó cho ta thấy RSA là an toàn, vì không mấy khi có thể huy động một lực lượng như thế vào chỉ để giải mã một mẫu tin [10]
Do tính đơn giản trong thiết kế nên RSA được ứng dụng rộng rãi và dùng nhiều nhất trong số các thuật toán với khoá công khai Và cũng chính vì thế nó
đã trải qua nhiều thử thách, xem xét, kiểm chứng của cộng đồng về độ an toàn của nó Tuy nhiên khi dùng RSA thì tốc độ mã hóa khá chậm, vì thế để mã hoá khối dữ liệu lớn là không khả thi Người ta đã tìm ra ứng dụng quan trọng độc đáo khác của RSA hơn là dùng nó để mã hóa:
1.4.1 Tạo vỏ bọc an toàn cho văn bản
Dùng RSA để mã hoá khoá bí mật (của các hệ mật mã có tốc độ mã hoá cao như DES, IDEA, …) và dùng khoá bí mật đó để mã hoá dữ liệu, bên gửi chỉ gửi đến cho bên nhận một bộ: khoá bí mật được mã hoá bằng RSA-dữ liệu được
mã hoá bằng khoá bí mật Như vậy các hệ mã đối xứng khắc phục tốc độ mã
Trang 38hoá của RSA, còn RSA khắc phục khâu yếu nhất của mã hoá đối
xứng là bảo đảm chuyển giao an toàn chìa khoá mã cho người
trách nhiệm của văn bản mình đã gửi đi (chẳng hạn như là một đơn đặt hàng với số lượng lớn), đây chính là vấn đề xác thực chủ thể trong trao đổi thông tin
số Hai chìa khoá công khai và bí mật trong hệ RSA là có vai trò “đối xứng”
nhau theo nghĩa nếu cái này được dùng để mã hoá thì cái kia được dùng để giải
mã và ngược lại Vậy nếu A dùng khoá bí mật để mã hoá văn bản gửi đi thì B dùng khoá công khai của A để giải mã văn bản, điều đó chứng tỏ A đã xác nhận
ký vào văn bản Chương 2 “chữ ký số” sẽ nói rõ hơn
1.5 Quản lý khoá
Một trong các vai trò chính của mã hoá khoá công khai là giải quyết vấn đề phân phối khoá Khi sử dụng mã hoá khoá công khai, chúng ta cần phân biệt hai khái niệm sau:
Phân phối các khoá công khai
Sử dụng mã hoá với khoá công khai để phân phối các khoá bí mật
Ta sẽ xem xét từng khái niệm một:
Trong lịch sử mật mã đã có nhiều đề xuất về việc phân phối các khoá công khai, các phương án này có thể chia thành các nhóm sau:
Trang 39Chúng ta có hai cách tiếp cận với việc phân phối khóa công khai phụ thuộc vào giải thuật ta dùng:
+ Giải thuật đối xứng (symmetric algorithm)
+ Giải thuật bất đối xứng (asymmetric algorithm)
1.5.1 Phân phối khoá cho giải thuật mật mã đối xứng
Ta giả định rằng việc phân bố khóa được thực hiện trên cùng một mạng truyền thông và các khóa đó được gửi đi dưới dạng đã mã hóa (dạng cryptogram) Việc phân bố khóa trên mạng máy tính được kiểm soát bởi hoặc một máy tính chủ (được chọn ra trong số tất cả máy tính trên mạng) và được gọi
là "Hệ phân bố khóa tập trung", hoặc bởi một nhóm các máy tính chủ, được gọi
là "Hệ phân bố khóa không tập trung" [12]
a) Hệ phân bố khóa tập trung
Hệ chỉ có một trung tâm phân phát khóa (gọi tắt là CKD) Ta giả thiết rằng mỗi user sẽ chia sẻ (dùng chung) với CKD chỉ một cặp khóa duy nhất đã định trước Và giả sử người A muốn bảo vệ thông tin gửi tới người B Trước tiên A
sẽ gửi tới CKD yêu cầu RA cùng với tên nhận diện IDA dưới dạng chưa mã hóa (clear form) Tức user_A gửi cho CKD cặp (IDA, RA ) Đáp lại CKD gửi trả user_A một message đã mã hóa bao gồm các thông tin sau :
+ Một khóa KAB mà sẽ được sử dụng để bảo mật thông tin truyền/nhận giữa A và B
+ Tên nhận diện IDA
+ Một bản copy yêu cầu của A là RA
+ Một cryptogram của cặp (KAB,IDA) được mã hóa bằng khóa KB là khóa chia sẻ giữa B và CKD, tức là EKB(KAB,IDA)
Tóm lại, CKD gửi cho A message như sau: EKA (KAB,IDA,RA,EKB) Nhận được thông báo trên, A sẽ giải mã nó bằng khóa KA, kiểm tra trên ID và bản
Trang 40copy yêu cầu R có trùng với IDA và RA của mình không ? Nếu trùng, A sẽ gửi cho B cặp EKB(KAB,IDA) B nhận được, giải mã
nó bằng khóa KB và lấy được khóa KAB và IDA ở dạng "clear text"
Hình 1.4 Sơ đồ phân bố khóa của một network với một CKD
Kết quả là A và B sẽ có chung một khóa KAB nên chúng có thể truyền nhận cho nhau bằng một kênh truyền bảo mật chung Thường thì khi nhận được khóa KAB, B phải kiểm tra tính xác thực của khóa bằng một thủ tục
"authentication procedure" Ví dụ như B gửi cho A một số random number RN
đã được mã hóa bởi khóa KAB,tức là gửi EKAB(RN) A giải mã và sau đó biến đổi RN phù hợp với hàm phụ thuộc thời gian được xác định trước đó TRt(RN) Chuỗi TRt(RN) được mã hóa bởi khóa KAB và được truyền trở lại cho B Thủ tục trên có thể làm đơn giản hơn nếu như các user có lưu trữ các khóa lấy được
từ trước vào các files riêng của họ
b) Hệ phân bố khóa không tập chung
Trong hệ phân bố này, mọi máy host đều có quyền phân bố khóa Trong trường hợp này, mỗi máy host đều có một khóa riêng chia sẻ với một máy host