Trong ngữ cảnh này, mã hóa khóa công khai không chỉ là một khía cạnh kỹthuật mà còn là nền tảng cơ bản đối với sự an toàn và bảo mật của thông tin... Những nghiên cứu, phát kiến trong mậ
Trang 1TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT KHOA CÔNG NGHỆ THÔNG TIN
ThS Đào Anh Thư
1 – Lê Việt Anh – 2121050504
Trang 2LỜI MỞ ĐẦU 3
ĐỀ 7: TÌM HIỂU MÃ KHÓA CÔNG KHAI 4
1 GIỚI THIỆU 4
1.1 Lịch sử phát triển 4
1.2 Khái niệm 5
2 MÃ HÓA KHÓA BÍ MẬT VÀ MÃ HÓA KHÓA CÔNG KHAI 7
2.1 So sánh 7
2.2 Ứng dụng thực tế 8
3 HỆ MÃ RSA 9
3.1 Định nghĩa 9
3.2 Phương pháp mã hóa và giải mã 9
3.3 Ví dụ 10
3.4 Đặc điểm 14
4 ĐÁNH GIÁ VỀ RSA 15
4.1 Ưu điểm 15
4.2 Nhược điểm 15
4.3 Nguyên nhân thuật toán RSA được sử dụng phổ biến 15
4.4 Một số chú ý quan trọng về RSA 16
5 CÁC VẤN ĐỀ QUẢN LÝ KHÓA 16
5.1 Các vấn đề đặt ra trong thực tế 16
5.2 Quản lý Chuỗi Chứng Thực (Cẻtificate Chain) 17
5.3 Giải pháp quản lí khóa 18
LỜI KẾT THÚC 19
6 TÀI LIỆU THAM KHẢO 19
2
Trang 3LỜI MỞ ĐẦU
Mã hóa khóa công khai, một phần quan trọng của bảo mật thông tin hiện đại, đã mở ra mộtlĩnh vực nghiên cứu và triển khai công nghệ độc đáo Khi chúng ta ngày càng trở nên phụ thuộcvào môi trường trực tuyến, nhu cầu bảo vệ thông tin cá nhân và giao tiếp an toàn trở thành mốiquan tâm hàng đầu Trong ngữ cảnh này, mã hóa khóa công khai không chỉ là một khía cạnh kỹthuật mà còn là nền tảng cơ bản đối với sự an toàn và bảo mật của thông tin
3
Trang 4ĐỀ 7: TÌM HIỂU MÃ KHÓA CÔNG KHAI
1 GIỚI THIỆU
1.1 Lịch sử phát triển
Mật mã khóa công khai được đánh giá là một bước phát triển vượt bậc đưa mật mã từ mộtnghệ thuật thành một ngành khoa học phát triển Những nghiên cứu, phát kiến trong mật mãkhóa công khai có ảnh hưởng lớn đến rất nhiều ngành khoa học khác như: làm cầu nối giữa lýthuyết số và khoa học máy tính thông qua lý thuyết số tính toán; thúc đẩy các các thuật toánxác suất phát triển…
Mã hóa công khai đã được ra đời từ khá lâu Năm 1874, nhà khoa học William StanleyJevons đã xuất bản một cuốn sách có nội dung mô tả mối quan hệ giữa các hàm một chiều vớimật mã học và đi sâu vào bài toán phân tích ra thừa số nguyên tố
Tháng 7 năm 1996, một nhà nghiên cứu khác đã bình luận về cuốn sách của nhà khoa họcnhà khoa học William Stanley Jevons như sau:
Trong cuốn sách có tựa đề The Principles of Science: A Treatise on Logic and ScientificMethod được xuất bản vào năm 1890, William S Jevons đã phát hiện ra nhiều phép toán rất dễthực hiện theo một chiều nhưng lại rất khó để thực hiện theo chiều ngược lại
Một ví dụ đã chứng minh mã hóa rất dễ dàng nhưng khi giải mã thì lại không dễ dàng Cũng trong phần nói trên ở chương 7 (Giới thiệu về phép tính ngược) tác giả đã đề cậpđến nguyên lý: Chúng ta dễ dàng nhân các số tự nhiên nhưng để phân tích kết quả ra thừa sốnguyên tố thì không đơn giản Đây chính là nguyên tắc cơ bản của mật mã hóa khóa công khai
dù tác giả không phải là người phát minh ra thuật toán này
Thuật toán mật mã hóa khóa công khai được tìm ra đầu tiên bởi James H Ellis, CliffordCocks, và Malcolm Williamson tại GCHQ (Anh) vào đầu thập kỷ 1970 Sau đó, thuật toán nàyđược phát triển và biết dưới cái tên Diffie-Hellman Tuy nhiên những thông tin về thuật toánnày chỉ chính thức được tiết lộ vào năm 1997
Năm 1976, Whitfield Diffie và Martin Hellman đã công bố một hệ thống mật mã hóakhóa bất đối xứng trong đó có nêu ra phương pháp trao đổi khóa công khai Nghiên cứu nàychịu sự ảnh hưởng của từ cuốn sách đã xuất bản của Ralph Merkle về phân phối khóa côngkhai
Nghiên cứu trao đổi khóa của Diffie-Hellman là phương pháp có khả năng áp dụng trênthực tế đầu tiên để phân phối khóa bí mật thông qua một kênh thông tin không an toàn
4
Trang 5Năm 1977, Rivest, Shamir và Adleman tìm ra thuật toán đầu tiên và công bố nó vào năm
1978 Thuật toán này được đặt tên là RSA RSA cho phép sử dụng tính toán hàm mô-đun để
mã hóa và giải mã cũng như tạo [chữ ký số]
Từ thập kỷ 1970 đã có nhiều thuật toán, tạo chữ ký số… được tìm ra và phát triển
1.2 Khái niệm
Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi cácthông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó Điều này được thựchiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa
cá nhân (hay khóa bí mật)
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật mã hóakhóa công khai mặc dù hai khái niệm không hoàn toàn tương đương Có những thuật toán mật
mã khóa bất đối xứng không có tính chất khóa công khai và bí mật như đề cập ở trên mà cả haikhóa (cho mã hóa và giải mã) đều cần phải giữ bí mật
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóacông khai được phổ biến công khai Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng
để giải mã Đ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óacông khai
5
Trang 6Hệ mã công khai sử dụng hai khóa có quan hệ toán học với nhau, tức là một khóa nàyđược hình thành từ khóa kia: Người muốn nhận bản mã (Alice) tạo ra một khóa mật (privatekey) và từ khóa mật tính ra khóa công khai (public key) với một thủ tục không phức tạp, cònviệc tìm khóa mật khi biết khóa công khai là bài toán khó giải được Khóa công khai sẽ đưa đếncho người gởi bản tin (Bob) qua kênh công cộng Và bản tin được Bob mã hóa bằng khóa côngcộng Bản mã truyền đến Alice, và nó được giải mã bằng khóa mật Anh ấy sử dụng khóa côngkhai của Alice để giải mã tin nhắn Tin nhắn được giải mã là tin nhắn ban đầu mà Alice đã gửi
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mậtnào đó hay không
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiềuhơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại khiến chochúng được áp dụng trong nhiều ứng dụng
Mã hóa khóa công khai dựa trên một cặp khóa có liên quan toán học với nhau là khóa côngkhai và khóa cá nhân
Khóa công khai có thể được chia sẻ với bất kỳ ai, trong khi khóa cá nhân phải được giữ bí mật 6
Trang 7Để mã hóa thông tin bằng mã hóa khóa công khai, người gửi sử dụng khóa công khai củangười nhận để biến thông tin thành một định dạng không thể đọc được Người nhận sau đó cóthể sử dụng khóa cá nhân của mình để giải mã thông tin trở lại dạng ban đầu
Ví dụ : Alice muốn gửi một tin nhắn bí mật cho Bob Alice sẽ sử dụng khóa công khai của B để
mã hóa tin nhắn Bob sau đó có thể sử dụng khóa cá nhân của mình để giải mã tin nhắn và đọcnội dung của nó
2 MÃ HÓA KHÓA BÍ MẬT VÀ MÃ HÓA KHÓA CÔNG KHAI
Mã hóa khóa bí mật (symmetric-key cryptography) và mã hóa khóa công khai(asymmetric-key cryptography) là hai phương pháp mã hóa chính được sử dụng trong an ninhmạng Mỗi phương pháp đều có những ưu điểm và nhược điểm riêng
2.1 So sánh
Đặcđiểm Mãhóakhóabímật Mãhóakhóacôngkhai
Sốlượngkhóa Sửdụng1khóaduynhất Sửdụnghaikhóa:khóacôngkhai
vàkhóabímật
Quảnlýkhóa Phảichiasẻkhóabímậtmộtcách
antoàn,
Khóacôngkhaicóthểđượcchiasẻmộtcáchcôngkhai,trongkhikhóabímậtphảiđượcgiữantoàn
Hiệusuất Thườngnhanhvàhiệuquảcho
việcmãhóavàgiảimãdữliệu
Thườngchậmhơnsovớimãhóađốixứng,đặcbiệtkhixửlýdữliệu7
Trang 8lớn, lớn
Bảomậtkhóa
nhưngcótháchthứckhiphảichia
sẻkhóaantoàn
Cungcấpmộtcơchếlinhhoạthơnđốivớiviệctruyềntảikhóamàkhôngcầnmôitrườngantoàn
2.2 Ứng dụng thực tế
Trên mạng, SSL /TLS Giấy chứng nhận cho HTTPS các trang web, được chia sẻ công khai,
có chứa khóa công khai Khóa riêng của cặp nằm trên máy chủ gốc của trang web Hệ thốngđược sử dụng để xác minh tính bảo mật của các trang web - một điều rất quan trọng đối với cáctrang web sử dụng thông tin thẻ tín dụng Thông qua hệ thống này, mã hóa khóa công khai cóthể thiết lập liên lạc trực tuyến an toàn Xong rồi thông qua HTTPS, là phiên bản bảo mật củagiao thức http cho phép truyền dữ liệu nhạy cảm an toàn Mặc dù internet là một mạng không
an toàn, hệ thống mật mã thiết lập một kết nối an toàn trong mạng
Các thuật toán khóa công khai cũng là các thành phần cơ bản trong lưu trữ dữ liệu và truyềnthông điện tử an toàn Chúng là các khối xây dựng cho các tiêu chuẩn internet như S/MIME(Phần mở rộng thư Internet an toàn / đa năng) cung cấp bảo mật bằng mật mã cho tin nhắn điện
tử, đảm bảo rằng các tin nhắn là xác thực, không bị giả mạo, riêng tư, an toàn và đến từ nơi màchúng tuyên bố đến từ đâu Mật mã khóa công khai cũng là cơ sở của ký mã và ký tài liệu kỹthuật sốvà có thể được sử dụng cho xác thực khách hàng và đăng nhập một lần
8
Trang 93 HỆ MÃ RSA
3.1 Định nghĩa
RSA là một thuật toán hay còn gọi là hệ mã hóa đối xứng được sử dụng cho các mục đíchbảo mật Nó cho phép mã hóa khóa công khai và được sử dụng phổ biến, rộng rãi để đảm bảo
an toàn cho các dữ liệu nhạy cảm đặc biệt là những dữ liệu gửi qua mạng Internet
Năm 1997 RSA lần đầu tiên được ra mắt bởi Ron Rivest, Adi Shamir và LeonardAdleman Cái tên RSA là bắt nguồn từ ba chữ cái đầu trong tên của ba nhà khoa học Mật mãkhóa công khai sử dụng hai key khác nhau là public key (khóa công khai) và private key (khóariêng tư) Public key có thể được chia sẻ với mọi người, riêng private key thì cần phải giữ bímật
Trong mật mã RSA, cả public key và private key đều có thể mã hóa một tin nhắn Hiểuđơn giản thì RSA hoạt động như cơ chế đóng và mở cửa, nó dùng public key và private key để
mã hóa và giải mã tin nhắn Chính thuộc tính đó đã khiến RSA trở thành thuật toán bất đốixứng được sử dụng phổ biến nhất Thế mạnh của nó chính là tính bảo mật, toàn vẹn và xác thực
mà ít thuật toán có được
Hiện tại có rất nhiều giao thức dựa vào RSA để ứng dụng trong mã hóa và chữ kỹ sốchẳng hạn như Secure Shell (SSH), OpenPGP, S / MIME, SSL/TLS Ngoài ra RSA còn đượcdùng trong các trình duyệt, phần mềm Xác minh chữ ký RSA được đánh giá là hoạt động đượcthực hiện nhiều nhất trong các hệ thống kết nối Internet
3.2 Phương pháp mã hóa và giải mã
Tạo khóa :
Người dùng tạo cặp khóa công khai/cá nhân:
Chọn 2 số nguyên tố lớn ngẫu nhiên p ≠ q (>120 chữ số thập phân) Tính số N = p × q, số φ(N)
= (p – 1) × (q – 1)
Chọn số e ngẫu nhiên 0 < e < φ(N) sao cho: (e, φ(N)) = 1 Tính số d = e mod φ(N) với 0 < d <-1
φ(N)
Mã hóa:
Sử dụng khoá công khai đã tạo ra ở trên để mã hoá thông điệp
Thông điệp cần mã hoá: M ( 0 < M < N );
Người gửi sử dụng khóa công khai của người nhận ku = {e, N} để mã hoá M;
Tính: C = M mod N, với 0 < C < N.e
Để tính giá trị C ta có thể sử dụng thuật toán bình phương và nhân
9
Trang 10C chính là bản mã sẽ được gửi đi cho người nhận
Giải mã :
Sử dụng khoá cá nhân để giải mã thông điệp
Thông điệp cần giải mã là C
Người nhận sử dụng khóa cá nhân của mình kr = {d, N} để giải mã C
Nếu (M, N) = 1 thì theo định lý Euler ta có: Mφ(N) = 1 mod N (đpcm)
Nếu (M, N) ≠ 1 thì vì N = p × q và p, q là hai số nguyên tố và 0 < M < N nên (M, N) = p hoặc(M, N) = q
Không mất tính tổng quát giả sử (M, N)= p ? p|M ? M = t × p (với t là số nguyên nào đó) và khi
đó: (q, M)=1 ? Mφ(q) = mod q (theo định lý Euler) ? Mφ(q) = 1 + c × q với c là số nguyên.
Tính cặp khóa cá nhân và công khai
Mã hóa thông điệp M = 20 và sau đó giải mã
TẠO KHOÁ: N = p × q = 7 × 17 = 119 φ(N) = (7 – 1) × (17 – 1) = 96
Dùng thuật toán Euclid kiểm tra hai số có nguyên tố cùng nhau hay không: (φ(N), e) = (96, 11)
= (11, 8) = (8, 3) = (3, 2) = (2, 1) = 1
10
Trang 11Tính d = e mod φ(N) = 11 mod 96
Khóa công khai: (e, N) = (11,119)
Khóa cá nhân: (d, N) = (35,119)
MÃ HÓA : C = M mod N = 20 mod 119e 11
Như vậy giá trị M = 20 đã được mã hoá thành C = 41GIẢI MÃ: C = 41d 35
11
Trang 12Kết quả giải mã C = 41 nhận được giá trị ban đầu M = 20
Ví dụ 2:
Alice sẽ tạo khóa RSA của mình bằng cách chọn ngẫu nhiên hai số nguyên tố là p = 11 và q =
13 Mô đun n = p x q = 11 x 13 = 143 Giá trị hàm số Ơle sẽ là n (n) = (p − 1) x (q − 1) = 120.ϕSau đó Alice sẽ chọn 7 là số tự nhiên e cho public key của mình và tính toán private key thông qua thuật toán Euclid mở rộng, kết quả mang lại là 103
Giả sử Bob muốn gửi cho Alice một đoạn thông tin M, lúc này anh ta sẽ lấy public key RSA của Alice (n, e) và trong ví dụ này là 143, 7 Thông điệp của Bob là số 9, anh ta đã biết n và e vậy m sẽ được mã hóa thành bản mã C như sau: M e mod n = 9 7 mod 143 = 48 = C Alice sẽ giải mã tin nhắn của Bob bằng cách sử dụng private key RSA (d,n) của mình như sau: C d mod
n = 48 103 mod 143 = 9 = M
12
Trang 13Trường hợp nếu Alice muốn sử dụng RSA trong chữ ký điện tử thì cô ấy phải tạo ra hash (hàm băm) – bản tóm tắt thông điệp để gửi cho Bob Sau đó Alice mã hóa giá trị hash bằng private key của cô ấy và thêm key vào tin nhắn.
Để xác nhận mình đã nhận được tin nhắn, Bob sẽ giải mã nó bằng public key của Alice Giá trịnhận được nếu khớp với hash của thông điệp gốc thì chứng tỏ dữ liệu đó đảm bảo tính toàn vẹn
và chính Alice đã gửi nó Ngoài ra để đảm bảo tính bảo mật cao Alice có thể mã hóa tin nhắnmình sắp gửi bằng public key của Bob
Ví dụ 3:
Sau đây là một ví dụ với những số cụ thể Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn
Lấy:
p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
n = pq = 3233 — môđun (công bố công khai)
e = 17 — số mũ công khai
d = 2753 — số mũ bí mật
Khóa công khai là cặp (e, n) Khóa bí mật là d Hàm mã hóa là:
encrypt(m) = me mod n = m17 mod 3233
với m là văn bản rõ Hàm giải mã là:
decrypt(c) = cd mod n = c2753 mod 3233
Trang 143.4 Đặc điểm
RSA sử dụng một cặp khóa công khai và khóa cá nhân
Mỗi người dùng có một cặp khóa công khai và khóa cá nhân Khóa công khai có thể được chia
sẻ với bất kỳ ai, trong khi khóa cá nhân phải được giữ bí mật
Cho phép người dùng trao đổi thông tin bí mật mà không cần phải trao đổi khóa chung trước
đó Điều này làm cho quá trình trao đổi thông tin trở nên an toàn hơn, vì không có khóa chungnào có thể bị đánh cắp
Tính bảo mật cao:
Mã hóa RSA dựa trên một bài toán toán học khó giải, đó là việc tìm căn nguyên modulocủa một số lớn
Cho đến nay, vẫn chưa có giải pháp hiệu quả cho bài toán này, do đó mã hóa RSA vẫn được coi
là một trong những thuật toán mã hóa an toàn nhất hiện nay đòi hỏi phải có sức mạnh tính toánkhổng lồ, vượt quá khả năng của các máy tính hiện nay
Hiệu suất tốt:
Mặc dù việc sử dụng RSA có thể tốn nhiều tài nguyên tính toán hơn so với một số phươngpháp mã hóa khóa công khai khác, nhưng hiệu suất của nó đã được cải thiện theo thời gian Các máy tính hiện nay có tốc độ xử lý nhanh hơn nhiều so với các máy tính trước đây, giúpgiảm thiểu thời gian mã hóa RSA Nó vẫn là một giải pháp bảo mật mạnh mà các tổ chức và cánhân có thể tin dùng
Tính hiệu quả: Mã hóa RSA sử dụng các phép tính số học cơ bản, có thể được thực hiện nhanhchóng và hiệu quả trên các máy tính hiện nay Giúp giảm thiểu thời gian và tài nguyên cần thiết
để mã hóa và giải mã thông tin
Tính linh hoạt:
Mã hóa RSA có thể được sử dụng trong nhiều ứng dụng khác nhau, bao gồm:
Email bảo mật: Mã hóa RSA được sử dụng để bảo vệ tính bảo mật của email
Giao thức HTTPS: Mã hóa RSA được sử dụng để bảo vệ tính bảo mật của các trang web