Và vấn đề được đặt ra làlàm thế nào để xác thực được một cách chính xác nguồn thông tin nhận là của mộtngười, một máy chủ hay của một thực thể nào đó gửi tin trên hệ thống mạng?Mô hình t
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TPHCM
KHOA: KHOA HỌC MÁY TÍNH CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT
BÀI THU HOẠCH
MÔN: TOÁN CHO KHOA HỌC MÁY TÍNH
Trang 2LỜI MỞ ĐẦU
Hiện nay, việc đảm bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chéphoặc mất mát dữ liệu trong các ứng dụng trên mạng luôn làvấn đề bức xúc, được nhiềungười quan tâm Trên thực tế, chữ ký điện tử (Digital Signature) đã được ứng dụng rộngrãi trong các ứng dụng trên mạng Một trong những ứng dụng quan trọng của chữ kýđiện tử là đảm bảo an toàn dữ liệu khi truyền trên mạng Tuy nhiên, khi xây dựng mộtứng dụng, các nhà phát triển thường chỉ tập trung xây dựng các chức năng của hệ thống,
ít quan tâm đến vấn đề an toàn trong quá trình truyền tin
Trên cơ sở này, em xin trình bày những cơ sở lý thuyết cơ bản về mã hóa, thuậttoán băm MD5, thuật giải RSA và chữ ký điện tử Từ đó, xây dựng một ứng dụng nhỏ
mô phỏng quy trình tạo chữ ký và xác nhận chữ ký
Em xin chân thành cảm ơn PGS.TS Đỗ Văn Nhơn đã tận tình hướng dẫn và truyềnđạt những kiến thức hữu ích giúp em hoàn thành bài thu hoạch này
Tp HCM, tháng 12 năm 2013
Phan Trọng Nghĩa
Trang 3PHỤ LỤC
LỜI MỞ ĐẦU 1
PHỤ LỤC 2
NỘI DUNG 4
A ĐẶT VẤN ĐỀ 4
B CƠ SỞ LÝ THUYẾT 5
I Tổng quan về chứng thực và an toàn thông tin 5
II Mã hóa dữ liệu và giải mã 6
II.1 Tổng quan về mã hóa dữ liệu và giải mã 6
II.2 Mã hóa bất đối xứng (asymmetric) 7
II.3 Mã hóa đối xứng (symmetric) 9
II.4 Hàm băm - Hashing 10
II.5 Hàm băm MD5 12
III Thuật toán mã hóa khóa công khai RSA 18
III.1 Lịch sử ra đời 19
III.2 Mô tả sơ lược 20
III.3 Thuật toán RSA 21
III.4 Tính bảo mật của giải thuật RSA 25
IV Chữ ký điện tử 25
IV.1 Khái niệm chữ ký điện tử 25
IV.2 Cách làm việc của chữ ký điện tử 31
C ỨNG DỤNG MÔ PHỎNG CHỮ KÝ ĐIỆN TỬ 37
I Chức năng 37
I.1 Tạo khóa 37
I.2 Tạo chữ ký 37
I.3 Kiểm tra tính hợp lệ của chữ ký 38
II Mã chương trình 39
KẾT LUẬN 43
Trang 4đó là lĩnh vực truyền thông Rất nhiều thông tin liên quan đến những công việchàng ngày đều do máy vi tính quản lý và truyền gửi đi trên hệ thống mạng, kéotheo đó là vấn đề về xác thực nguồn thông tin nhận được Và vấn đề được đặt ra làlàm thế nào để xác thực được một cách chính xác nguồn thông tin nhận là của mộtngười, một máy chủ hay của một thực thể nào đó gửi tin trên hệ thống mạng?
Mô hình trao đổi thông tin qua mạng INTERNET
Ví dụ: khi A gửi một thông tin điện tử cho D, và giả sử B “giả mạo” A cũng
gửi một thông tin cho D, hoặc một người C trên môi trường truyền bắt được và sửađổi thông tin A gửi sau đó các thông tin này được gửi lại cho D Vậy thông tin Dnhận được không chính xác và người nhận D cũng không thể xác thực được thôngtin đó là do người A gửi, hay B gửi, hay một người nào khác gửi
Vấn đề đặt ra là người D sau khi nhận được bản tin phải xác thực được rằngthông tin là của chính một đối tượng cụ thể gửi và thông tin không bị tiết lộ cũngnhư bị không thay đổi trên môi trường truyền thông
Bài thu hoạch này đề cập đến những cơ sở lý thuyết về hàm băm MD5, thuật toán mã hóa RSA, chữ ký điện tử và ứng dụng phỏng chữ ký điện tử
Trang 5B CƠ SỞ LÝ THUYẾT
I Tổng quan về chứng thực và an toàn thông tin
- Chúng ta đang sống trong một thời đại bùng nổ thông tin Nhu cầu trao đổithông tin và các phương tiện truyền đưa thông tin phát triển một cách nhanhchóng Và cùng với sự phát triển đó, đòi hỏi bảo vệ tính bí mật và chứng thựcnguồn thông tin cũng càng ngày càng to lớn và có tính phổ biến Có nhiều bàitoán khác nhau về yêu cầu an toàn thông tin tùy theo những tình huống khácnhau
- Ví dụ trong thực tế, một số bài toán chung nhất mà ta thường gặp là nhữngbài toán sau đây:
o Bảo mật: Giữ thông tin được bí mật đối với tất cả mọi người, trừ một ít
người có thẩm quyền được đọc, biết thông tin đó
o Toàn vẹn thông tin: Bảo đảm thông tin không bị thay đổi hay xuyên
tạc bởi những kẻ không có thẩm quyền hoặc bằng những phương tiệnkhông được phép
o Nhận thực một thực thể: Xác nhận danh tính của một thực thể, chẳng
hạn một người, một máy tính cuối trong mạng, một thẻ tín dụng,
o Nhận thực một thông báo: Xác nhận nguồn gốc của một thông báo
được gửi đến
o Chữ ký: Một cách để gắn kết một thông tin với một thực thể, thường
dùng trong bài toán nhận thực một thông báo cũng như trong nhiều bàitoán nhận thực khác
o Ủy quyền: Chuyển cho một thực thể khác quyền được đại diện hoặc
được làm một việc gì đó
o Cấp chứng chỉ: Cấp một sự xác nhận thông tin bởi một thực thể được
tín nhiệm
Trang 6o Báo nhận: Xác nhận một thông báo đã được nhận hay một dịch vụ đã
được thực hiện
o Làm chứng: Kiểm thử việc tồn tại một thông tin ở một thực thể khác
với người chủ sở hữu thông tin đó
o Không chối bỏ được: Ngăn ngừa việc chối bỏ trách nhiệm đối với một
cam kết đã có (thí dụ đã ký vào một văn bản)
o Ẩn danh: che giấu danh tính của một thực thể tham gia trong một tiến
trình nào đó (thường dùng trong giao dịch tiền điện tử)
o Thu hồi: Rút lại một giấy chứng chỉ hay ủy quyền đã cấp.
- Cơ sở của các giải pháp cho các bài toán kể trên là các phương pháp mật
mã, đặc biệt là mật mã khóa công khai
- Trong thế giới số, có 3 cách để xác thực một người hoặc mức độ tin cậy của
một thông tin trên máy tính Một là Thẻ thông hành (Pass Card) mà ở nước ta hiện nay chưa phổ biến Hai là Password, cách này sử dụng tên truy nhập (User
Name) và mật khẩu (Password) cung cấp cho các giao diện đăng nhập để xác
thực thông tin Thứ ba, dùng chữ ký điện tử (Digital Signature)
II Mã hóa dữ liệu và giải mã
II.1 Tổng quan về mã hóa dữ liệu và giải mã
Hình 1:Quy trình mã hóa dữ liệu
doanh và người tiêu dùng với sự hứa hẹn về việc thay đổi cách mà con ngườisống và làm việc Nhưng mối lo ngại lớn nhất được đề cập đến là việc bảo mật
Trang 7trên Internet, đặc biệt khi các thông tin mang tính nhạy cảm và riêng tư được gửi
đi trên mạng
- Mã hóa là ngành nghiên cứu các thuật toán và phương thức để đảm bảo tính
bí mật và (thường là dưới dạng các văn bản lưu trữ trên máy tính) Các sản phẩm
của lĩnh vực này là các hệ mã mật, các hàm băm, các hệ chữ ký điện tử, các cơchế phân phối, quản lý khóa và các giao thức mật mã
- Có rất nhiều thông tin mà chúng ta không muốn người khác biết khi gửi đi
như: thông tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về
tài khoản cá nhân, thông tin về cá nhân như số chứng minh thư, số thẻ
- Quá trình mã hoá trong máy tính dựa vào khoa học về mật mã
(Cryptography) đã được con người sử dụng từ lâu đời Trước thời đại số hoá,
người sử dụng mật mã nhiều nhất vẫn là chính phủ, chủ yếu trong mục đích quân
sự Hầu hết các phương pháp mã hoá được dùng hiện nay dựa vào các máy tính,đơn giản là do các mã do con người sinh ra rất dễ bị phá bởi công cụ máy tính.Các hệ thống mã hoá trong máy tính phổ biến nhất thuộc một trong hai loại sau:
o Mã hoá với khoá đối xứng (Symmetric-key Encryption)
o Mã hoá với khoá công khai (Public-key Encryption)
- Gần đây nhất là các sự kiện liên quan tới các hàm băm MD5 (một hàm băm
thuộc họ MD do Ron Rivest phát triển) và SHA Một nhóm các nhà khoa học
người Trung Quốc (Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu) đã phát triển các
phương pháp cho phép phát hiện ra các đụng độ của các hàm băm được sử dụngrộng rãi nhất trong số các hàm băm này Đây là một sự kiện lớn đối với ngànhmật mã học do sự ứng dụng rộng rãi và có thể xem là còn quan trọng hơn bảnthân các hệ mã mật của các hàm băm Do sự kiện này các hãng viết phần mềm
lớn (như Microsoft) và các nhà mật mã học đã khuyến cáo các lập trình viên sử
dụng các hàm băm mạnh hơn (như SHA-256, SHA-512) trong các ứng dụng.
II.2 Mã hóa bất đối xứng (asymmetric)
dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí
Trang 8mật trước đó Điều này được thực hiệ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).
- Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trongkhi khóa cô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óa công khai
o 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
o 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ật nào đó hay không
o 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
động giống nhau nhưng phần lớn đều gồm 2 khóa có quan hệ toán học với nhau:một cho mã hóa và một để giải mã Để thuật toán đảm bảo an toàn thì không thểtìm được khóa giải mã nếu chỉ biết khóa đã dùng mã hóa Điều này còn được gọi
là mã hóa công khai vì khóa dùng để mã hóa có thể công bố công khai mà khôngảnh hưởng đến bí mật của văn bản mã hóa
năng một người nào đó có thể tìm ra được khóa bí mật Không giống với hệ thống
mật mã sử dụng một lần (one-time pad) hoặc tương đương, chưa có thuật toán mã
hóa khóa bất đối xứng nào được chứng minh là an toàn trước các tấn công dựatrên bản chất toán học của thuật toán Khả năng một mối quan hệ nào đó giữa 2khóa hay điểm yếu của thuật toán dẫn tới cho phép giải mã không cần tới khóahay chỉ cần khóa mã hóa vẫn chưa được loại trừ An toàn của các thuật toán nàyđều dựa trên các ước lượng về khối lượng tính toán để giải các bài toán gắn vớichúng Các ước lượng này lại luôn thay đổi tùy thuộc khả năng của máy tính vàcác phát hiện toán học mới
Trang 9- Mặc dù vậy, độ an toàn của các thuật toán mật mã hóa khóa công khai cũng
tương đối đảm bảo Nếu thời gian để phá một mã (bằng phương pháp duyệt toàn
bộ) được ước lượng là 1000 năm thì thuật toán này hoàn toàn có thể dùng để mã
hóa các thông tin về thẻ tín dụng - Rõ ràng là thời gian phá mã lớn hơn nhiều lần
thời gian tồn tại của thẻ (vài năm).
II.3 Mã hóa đối xứng (symmetric).
- Trong mật mã học, các thuật toán khóa đối xứng (tiếng Anh: symmetric-key
algorithms) là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho
việc mật mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được
một khóa nếu biết khóa kia).
- Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã
có nghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biếnđổi đơn giản giữa hai khóa Trên thực tế, các khóa này đại diện cho một bí mậtđược phân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bímật trong kênh truyền thông tin
(stream ciphers) và mật mã khối (block ciphers) Mật mã luồng mã hóa từng bit
của thông điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng nhưmột đơn vị Cỡ khối được dùng thường là các khối 64 bit Thuật toán tiêu chuẩn
mã hóa tân tiến (Advanced Encryption Standard), được NIST công nhận tháng 12
năm 2001, sử dụng các khối gồm 128 bit
kế của các hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng và thuật toánđối xứng được sử dụng phối hợp để tận dụng các ưu điểm của cả hai Những hệ
thống sử dụng cả hai thuật toán bao gồm SSL (Secure Sockets Layer), PGP (Pretty Good Privacy) và GPG (GNU Privacy Guard) Các thuật toán chìa khóa
bất đối xứng được sử dụng để phân phối chìa khóa mật cho thuật toán đối xứng
có tốc độ cao hơn
- Một số ví dụ các thuật toán đối xứng nổi tiếng bao gồm Twofish, Serpent,
AES (còn được gọi là Rijndael), Blowfish, CAST5, RC4, Tam phần DES
Trang 10(Triple DES), và IDEA (International Data Encryption Algorithm - Thuật toán
mật mã hóa dữ liệu quốc tế)
- Hạn chế của các thuật toán khóa đối xứng bắt nguồn từ yêu cầu về sự phân
hưởng chìa khóa bí mật, mỗi bên phải có một bản sao của chìa Do khả năng các
chìa khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo antrong khi phân phối và trong khi dùng Hậu quả của yêu cầu về việc lựa chọn,phân phối và lưu trữ các chìa khóa một cách không có lỗi, không bị mất mát làmột việc làm khó khăn, khó có thể đạt được một cách đáng tin cậy
nhóm gồm n người, tổng số lượng chìa khóa cần phải có là n(n-1)/2.
mục đích chống thoái thác
II.4 Hàm băm - Hashing
- Hashing là một phương thức mật mã nhưng nó không phải là một thuật toán
mã hoá Đúng như vậy, hashing chỉ sử dụng một chứng chỉ số duy nhất được biếtđến với tên như "hash value – giá trị hash", "hash – băm", MessageAuthentication Code (MAC), fingerprint – vân tay, hay một đoạn message Dữliệu đầu vào của bạn có thể là một file, một ổ đĩa một quá trình truyền thông tintrên mạng, hay một bức thư điện tử Thông số hash value được sử dụng để pháthiện khi có sự thay đổi của tài nguyên Nói cách khác, hashing sử dụng nó để pháthiện ra dữ liệu có toàn vẹn trong quá trình lưu trữ hay trong khi truyền hay không
value được tạo ra trước đó một tuần Nếu hai thông số giống nhau thì dữ liệu chưa
có sự thay đổi Nếu hai thông số có sự khác nhau, thì dữ liệu đã bị thay đổi Tronghình dưới đây thể hiện cơ bản về hash hay thông số MAC
(receive) với cùng một thuật toán
Trang 11Hình 2: Thể hiện cơ bản về hash hay thông số MAC
Điều này có nghĩa không có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quátrình hash bởi nó luôn luôn thêm vào 128 bits Sức mạnh của quá trình hashing là
nó được thực hiện một chiều và không thể có phương thức nào có thể thực hiệnngược lại được để converts thông số hash thành dữ liệu ban đầu Nếu một vàingười có được các thông số hash của ta, họ không thể lấy được dữ liệu ban đầu.Tuy nhiên đó không phải là phương thức mật mã không thể tấn công Hashing cóthể bị tấn công bởi các phương thức đảo ngược hay birthday attack Phương thứctấn công bình thường sử dụng đó là sử dụng các công cụ password-cracking Hầuhết các hệ thống lưu trữ passwords trong dữ liệu accounts và được hashed (băm).Hashs không thể thực hiện ngược lại, bởi đó là một giải pháp bảo mật, có nghĩakhông có công cụ nào có thể chuyển ngược lại một password được hash thànhmột password nguyên bản chưa được hash Tuy nhiên một thuật toán nào cũng cónhững bất cập riêng, bằng việc sử dụng các phần mềm, password crackers chúng
Trang 12có thể phát hiện ra đoạn mã them vào dữ liệu ban đầu và chỉ cần xoá đoạn hashvalue đi là có thể truy cập bình thường Dữ liệu Account thường không được mãhoá, và dữ liệu password thường được hash do đó hầu hết các công cụ crackpassword chỉ có thể xoá password đã được đặt cho user đó mà không thể viewpassword đó.
Thuật toán hashing thường được sử dụng:
Secure Hash Algorithm (SHA-1) với - 160-bit hash value
Message Digest 5 (MD5) với —128-bit hash value
Message Digest 4 (MD4) với —128-bit hash value
Message Digest 2 (MD2) với —128-bit hash value
o Là hàm một chiều, không thể thực hiện phép biến đổi ngược như trong quá trình mã hóa và giải mã, nghĩa là với một message_digest cho trước, khó có thể tìm được một message nào mà có hàm băm bằng message_digest này
o Khó có thể tìm được hai message mà có cùng một message_digest.
Trong đó MD5 là giải thuật băm được sử dụng phổ biến và nó sẽ được trình bày trong phần dưới
II.5 Hàm băm MD5
- Giải thuật MD5 được phát triển bởi Ron Rivest ở MIT: nhận đầu vào là mộtkhối data (message) có chiều dài bất kỳ, xử lý nó thành các khối 512 bít, tạo đầu
ra là một message_digest 128 bít Quá trình bao gồm các bước sau:
o Bước 1: message ban đầu được thêm (padding) một số bít (bắt đầu là
bít 1, kế tiếp là các bít 0, số bít thêm vào từ 1 tới 512 bít) sao cho tổng số bít sau khi thêm vào cộng với 64 (chiềi dài của message ban đầu) là bội số của 512
Trang 13Hình 3: Tạo message_digest sử dụng MD5.
o Bước 2: khởi tạo bộ đệm MD Bộ đệm 128 bít được dùng để chứa
kết quả trung gian và cuối cùng của hàm băm Có thể xem bộ đệm như là 4thanh ghi 32 bít Các thanh ghi này được khởi tạo (dạng số hex) như sau:
A = 01234567; B = 89abcdef; C = fedcba98; D = 76543210
o Bước 3: xử lý message thành từng khối 512 bít (16 từ 32 bít) Quá
trình tính toán được chia thành từng giai đoạn, số giai đoạn bằng số chiềudài (tính theo bít) của message sau khi đã padding chia cho 512 Mỗi giaiđoạn nhận đầu vào là khối 512 bít của message đã được padding vàmessage_digest của giai đoạn trước, cho ra kết quả là message_digest mới(xem hình 1) Mỗi giai đoạn thực hiện trong 4 bước (vòng), bốn vòng cócấu trúc giống nhau nhưng mỗi vòng sử dụng một hàm luận lý khác nhau,được đặc tả là F, G, H, I Trong hình 2, bốn vòng được đặt nhãn là fF , fG ,
fH , fI , để chỉ rằng mỗi vòng có cấu trúc hàm tổng quát như nhau nhưng tùythuộc vào sự khác nhau của hàm thao tác (F, G, H, I)
Trang 14Hình 4: Xử lý MD5 của khối đơn 512 bít (HDMD5).
- Mỗi vòng được thực hiện 16 bước tuần tự trên các data A, B, C, D (hình4) Biểu thức tính toán được sử dụng trong mỗi vòng có dạng:
Trang 16Bảng T được xây dựng từ hàm sin
T1 = D76AA478 T17 = F61E2562 T33 = FFFA3942 T49 = F4292244
T9 = 698098D8 T25 = 21E1CDE6 T41 = 289B7EC6 T57 = 6FA87E4F
T10 = 8B44F7AF T26 = C33707D6 T42 = EAA127FA T58 = FE2CE6E0
T11 = FFFF5BB1 T27 = F4D50D87 T43 = D4EF3085 T59 = A3014314
T12 = 895CD7BE T28 = 455A14ED T44 = 04881D05 T60 = 4E0811A1
T13 = 6B901122 T29 = A9E3E905 T45 = D9D4D039 T61 = F7537E82
T14 = FD987193 T30 = FCEFA3F8 T46 = E6DB99E5 T62 = BD3AF235
T15 = A679438E T31 = 676F02D9 T47 = 1FA27CF8 T63 = 2AD7D2BB
T16 = 49B40281 T32 = 8D2A4C8A T48 = C4AC5665 T64 = EB86D391
Trang 17Các tác vụ [abcd k s i] trong mỗi vòng là:
Phép toán and (&): and các bít của hai toán hạng 32 bít với nhau
Phép toán or (|): or các bít của hai toán hạng 32 bít với nhau
Phép toán xor (^): xor các bít của hai toán hạng 32 bít với nhau
Vòng 4 Vòng 3
Vòng 1 Vòng 2
Trang 18 Phép toán cộng (+): cộng modulo 232 hai toán hạng 32 bít với nhau.
Phép toán dịch trái vòng (w << s): dịch trái vòng w (32 bít) với s bít
o Bước 4: xuất (output) Tất cả khối 512 bít L đã được xử lý thì đầu ra ở giai
MD: giá trị message_digest cuối cùng
III Thuật toán mã hóa khóa công khai RSA
Trong mật mã học, RSA là một thuật toán mã hóa khóa công cộng Đây là
thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mãhóa Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sửdụng khóa công cộng RSA đang được sử dụng phổ biến trong thương mại điện tử
và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn
Trang 19III.1 Lịch sử ra đời
- Khi phương pháp mã khóa công khai chưa ra đời, người ta sử dụng hầu nhưcùng một 'chìa khóa' để mã hóa cũng như giải mã chung cho cả người gửi vàngười nhận thông tin (hệ mã đối xứng) Với hệ mã này, một trong những khókhăn lớn của ngành an ninh và mã hóa lúc đó là làm sao gửi an toàn chìa khóa
bí mật trên các kênh truyền tin công khai có nhiều người tham gia
Hình 6: Ba nhà khoa học Shamir, Rivest và Adleman
Truyền Thông Chính Phủ Anh Quốc (GCHQ) đã nảy ra ý tưởng đặc sắc rằng,nếu người nhận tin đưa một nhiễu nào đó lên đường truyền công khai mà chỉriêng anh ta biết cách khử nhiễu, thì mọi thông tin mật gửi đến cho anh ta đều
có thể đưa lên kênh truyền tin công khai đó Những người khác, dù bắt được tínhiệu cũng không thể nào giải mã được tin mật
'hàm một chiều' (xem phụ lục) Theo đó, chỉ có thể tìm hàm ngược nếu biếtthông tin nào đó, giống như khôi phục tín hiệu khi biết cái nhiễu do mình tạo ra.Nhưng ông không thực hiện được điều này, do không biết liệu hàm một chiều
có tồn tại hay không
- Bốn năm sau Clifford Cocks- một nhân viên mới của GCHQ- đượcPatterson, thầy hướng dẫn, kể cho nghe ý tưởng độc đáo của James Ellis và ông
đã tìm ra hàm một chiều cần thiết chỉ trong vòng nửa giờ: đó chính là phép
Trang 20nhân! Nhân hai số nguyên tố lớn bao nhiêu cũng được là điều hết sức dễ dàng,nhưng khi biết tích của chúng, để tìm lại các thừa số thì ta cần phân tích số đãcho ra thừa số nguyên tố Điều này hầu như không thể làm được với các số đủlớn hật vậy, để phân tích n (=p*q) ra thừa số nguyên tố, cần chia lần lượt n chocác số nguyên tố nhỏ hơn Theo một định lý nổi tiếng trong số học, có khoảng(n/log n) số nguyên tố bé hơn n Nếu n có khoảng 300 chữ số thì sẽ phải làmkhoảng 10150/300 phép chia (Nếu dùng máy tính tốc độ 1 tỷ phép tính/giây, ta
sẽ mất chừng tỷ tỷ tỷ năm để phân tích số n!) Như vậy, hàm số thiết lập sựtương ứng giữa hai số p, q với tích n=pq chính là hàm một chiều Giải pháp thậtđơn giản và Cocks cũng không tự cảm nhận được đầy đủ ý nghĩa của kết quảđạt được Kết quả của Cocks được giữ tuyệt mật Nó có sức thuyết phục lớntrong nội bộ GCHQ Nhưng phương tiện tính toán thời đó không cho phép triểnkhai thuật toán Năm 1978, kết quả của Cocks được Rivest, Shamir và Adlemanphát minh lại! Đó chính là cuộc cách mạng trong lĩnh vực mật mã, cuộc cáchmạng mang tên RSA (ghép chữ đầu tên của ba nhà khoa học trên)
III.2 Mô tả sơ lược
- Thuật toán RSA có hai khóa: khóa công khai(hay khóa công cộng) và khóa
bí mật(hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá
trình mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người
và được dùng để mã hóa Những thông tin được mã hóa bằng khóa công khaichỉ có thể được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi ngườiđều có thể mã hóa nhưng chỉ có người biết khóa cá nhân mới có thể giải mãđược
muốn duy nhất Alice có thể đọc được Để làm được điều này, Alice gửi choBob một chiếc hộp có khóa đã mở và giữ lại chìa khóa Bob nhận chiếc hộp,
cho vào đó một tờ giấy viết thư bình thường và khóa lại (lúc này ngay cả Bob
cũng không thể đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi
chiếc hộp lại cho Alice Alice mở hộp với chìa khóa của mình và đọc thông tintrong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai,chiếc chìa khóa chính là khóa bí mật
Trang 21III.3 Thuật toán RSA
o Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh
không an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo
ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
1 Chọn 2 số nguyên tố lớn p và q với p≠q, lựa chọn ngẫu nhiên và độc
o Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình Ở
đây, p và q giữ vai trò rất quan trọng Chúng là các phân tố của n và cho phép tính d khi biết e Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì
p và q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa.
- Lúc này Bob có m và biết n cũng như e do Alice gửi Bob sẽ tính c là bản
mã hóa của m theo công thức: