Mã hóaKhóa mã hóa Hệ thống Qlý Dữ liệu mã hóa Giải mã Dự liệu Phần 1: MÃ HÓA VÀ CÁC VẤN ĐỀ LIÊN QUAN 1.1 Khái niệm mã hóa dữ liệu Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ li
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI
Biên Hòa , Ngày … Tháng … Năm 2013
Niên Khóa 2012 -2013
MỤC LỤC
Lời nói đầu ……….…… Phần 1: Mã hóa và các vấn đề liên quan ……….….…
Trang 21.1 Khái niệm mã hóa dữ liệu ……….……
1.2 Hàm băm ……….……
1.2.1 Hàm băm và chữ ký………
1.2.2 MD5 ……….……
1.3 Thuật toán mã hóa khóa công khai RSA ……….……
1.3.1 Mô tả sơ lược ………
1.3.2 Thuật toán RSA ……….………
1.3.3 Tính bảo mật của giải thuật RSA ……….………
1.3.4 Các vấn đề đặt ra trong thực tế……….…………
Phần 2: Chữ ký điện tử và chương trình ứng dụng ……….….
2.1 Khái niệm Chữ ký điện tử ……… ……….……
2.2 Cách thức hoạt động của chữ ký điện tử ……… ……….……
2.2.1 Quá trình ký ……….……
2.2.2 Quá trình xác nhận chữ ký trên tài liệu ……….………
Kết luận ………
Trang 3Lời nói đầ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ép hoặ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ều người quan tâm Trong bài báo này, em trình bày những vấn đề liên quan về mã hóa thông tin, thuật toán băm MD5, thuật toán mã hóa RSA và chữ ký điện tử Từ đó, ứng dụng thuật toán MD5 và RSA để phân tích quá trình hoạt động của chữ ký điện tử Trên cở sở đó, em đề ra giải pháp ứng dụng chữ ký điện tử trên cơ sở kết hợp giữa thuật toán băm MD5 và thuật toán mã hóa RSA trong quá trình gửi và nhận các tệp văn bản
Trên thực tế, chữ ký điện tử (Digital Signature) đã được ứng dụng rộng rã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ườngchỉ 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
Nhằm giải quyết vấn đề xử lý các giao dịch trao đổi văn bản trên mạng, đến nay đã có nhiềugiải pháp liên quan đến vấn đề mã hóa văn bản, nhưng em chọn và đề xuất giải pháp ứng dụngchữ ký điện tử trên cơ sở kết hợp giữa thuật toán băm MD5 và thuật toán mã hóa RSA trong quátrình gửi và nhận tệp văn bản của hệ thống phần mềm quản lý
Bảo mật thông tin là lĩnh vực rất rộng, nên đây chỉ là bước khởi đầu để em tiếp tục nghiên cứu và ứng dụng các thuật toán mã hóa trong việc xây dựng ứng dụng
Trong bài báo này, em trình bày những nội dung chính như sau: Đầu tiên em giới thiệu một
số vấn đề liên quan trong lĩnh vực mã hóa dữ liệu Tiếp theo em tập trung trình bày giải pháp ứng dụng chữ ký điện tử sử dụng MD5, RSA và đề ra cách thức vận dụng, triển khai trong quá trình gửi và nhận tệp văn bản
Trong báo cáo này do em chưa có đủ thời gian nghiên cứu sâu hơn nên còn nhiều sai sót mong thầy đóng góp ý kiến để chương trình của em được hoàn thiên hơn
Trang 4Mã hóa
Khóa mã hóa
Hệ thống Qlý
Dữ liệu mã hóa Giải mã
Dự liệu
Phần 1: MÃ HÓA VÀ CÁC VẤN ĐỀ LIÊN QUAN
1.1 Khái niệm mã hóa dữ liệu
Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang mộtdạng khác, mà một người không có thẩm quyền, không có phương tiện giải mã thì không thểđọc hiểu được Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữliệu đã được mã hóa về dạng thông tin ban đầu
Dự liệu
gốc
Hình 1:Quy trình mã hóa dữ liệu
Sau đây là một số khái niệm và kí hiệu liên quan về vấn đề mã hóa dữ liệu :
- Mã hóa (Encryption): Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao người khác không thể đọc hiểu được (kí hiệu E);
- Giải mã (Decryption): Quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã
hóa thành dạng gốc ban đầu (kí hiệu D);
- Thông điệp (Message), bản gốc (Plaintext): Tệp dữ liệu chưa mã hóa (kí hiệu M).
- Bản mã (Ciphertext): Tệp dữ liệu đã được mã hóa (kí hiệu C).
Theo quy ước, khi mã hóa thì C = E(M) và khi giải mã thì M = D(C) = D(E(M))
Theo phương pháp truy ền thống, người ta thường dùng cùng một khóa để mã hóa vàgiải mã Lúc đó, khóa phải được giữ bí mật tuyệt đối Người ta gọi đây là hệ thống mã hóa cổđiển (hay còn gọi là mã hóa đối xứng, một khóa, khóa bí mật, )
Một số phương pháp mã hóa theo hệ thống mã hóa cổ điển như :
Do độ phức tạp của các hệ mã cổ điển thấp, không đảm bảo cho dữ liệu truyền đi trên internet được
an toàn nên người ta nghiên cứu và phát triển một hệ thống mã hóa mới an toàn hơn và vẫn được
sử dụng rộng rãi là hệ mã DES Phương pháp mã hóa theo hệ thống mã hóa DES tới hiện nay vẫnđược sử dụng rộng rãi trong các hệ thống lớn do có độ an toàn khá cao
Trang 5Message MAC Value: A
Phương pháp khác sử dụng khóa công khai ( còn gọi là phương pháp mã hóa bất đối xứng,hay hệ thống hai khóa) trong đó khóa để mã hóa và khóa để giải mã là khác nhau Các khóa nàytạo thành một cặp chuyển đổi ngược nhau và không khóa nào có thể suy ra được từ khóa kia.Phần tiếp theo của bài báo sẽ đề cập đến kỹ thuật mã hóa này
1.2 Hàm băm
1.2.1 Hàm băm và chữ ký:
Để kiểm tra tính toàn vẹn của một khối data lớn, người ta sử dụng chữ ký số để đại diện chokhối data đó (giống như chữ ký trên văn bản) bằng cách dùng hàm băm: với input là một messagebất kỳ, output là một chuỗi bít có chiều dài xác định trước, chuỗi bít này được gọi là message_digest
1.2 Hashing – Hàm Băm
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á Đúngnhư 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", Message Authentication Code (MAC), fingerprint – vân tay, hay một đoạnmessage 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 tin trênmạng, hay một bức thư điện tử Thông số hash value được sử dụng để phát hiện khi có sự thay đổicủa tài nguyên Nói cách khác, hashing sử dụng nó để phát hiệ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
Ví dụ, thông số hash value được tính toán để so sánh với thông số hash value được tạo ratrướ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 Trong hình dưới đây thể hiện cơ bản về hash hay thông sốMAC
Thông số MAC value được tính toán bởi người gửi (sender) và người nhận (receive) vớicùng một thuật toán
Message( Tin Nhắn)
MAC Value: A ( MAC giá trị )
Hình 1: Thể hiện cơ bản về hash hay thông số MAC
Trang 6Không như các phương thức mật mã khác, chúng sẽ làm thay đổi dữ liệu thành một dạng mật
mã, quá trình hashing sử dụng một thông số hash value và không thay đổi dữ liệu ban đầu Bởi vìcác tính năng đặc biệt, hashing có thể sử dụng để bảo vệ và kiểm tra tính toàn vẹn của dữ liệu Nócũng có khả năng sử dụng để kiểm tra khi có một tiến trình copy được thực hiện và đảm bảo tínhchính xác của dữ liệu khi chúng được copy
Ví dụ, khi một ổ cứng được tạo ra một bản copy, một quá trình hash được thực hiện trên ổ đĩatrước khi quá trình nhân đôi được thực hiện Nếu hai thông số hash của ổ cứng mới được tạo ra vàthông số hash của ổ đĩa ban đầu thì quá trình nhân đôi dữ liệu được thực hiện chính xác và đảm bảo
dữ liệu không có sự thay đổi mất mát trong quá trình nhân bản Việc hashing sử dụng để đảm bảo dữliệu được nguyên bản giúp dữ liệu lưu ở dạng kỹ thuật số sẽ luôn dữ được nguyên bản sau vô số lầncopy – và điều này không thể thực hiện khi lưu dữ liệu các dạng khác – ví như lưu thông tin âmthanh bằng băng từ sẽ bị biến dạng sau nhiều lần copy
Ví dụ, Message Digest 5 (MD5) là một thuật toán hash với 128-bit hash Điều này có nghĩakhô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ươngthức nào có thể thực hiện ngược lại được để converts thông số hash thành dữ liệu ban đầu Nếu mộtvài ngườ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ươngthức đảo ngược hay birthday attack Phương thức tấn công bình thường sử dụng đó là sử dụng cáccông cụ password-cracking Hầu hết các hệ thống lưu trữ passwords trong dữ liệu accounts và đượchashed (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ĩa không
có công cụ nào có thể chuyển ngược lại một password được hash thành một password nguyên bảnchư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ácphần mềm, password crackers chúng có thể phát hiện ra đoạn mã them vào dữ liệu ban đầu và chỉcần xoá đoạn hash value đ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ụ crack password chỉ có thể xoápassword đã được đặt cho user đó mà không thể view password đó
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
- Các tính chất cơ bản của hàm băm:
+ 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
+ Khó có thể tìm được hai message mà có cùng một message_digest
Các giải thuật băm được sử dụng hiện nay là: MD2, MD4, MD5, SHS 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
1.2.2 MD5
Trang 7- Giải thuật MD5 được phát triển bởi Ron Rivest ở MIT: nhận đầu vào là một khố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:
* 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
Hình 2: Tạo message_digest sử dụng MD5.
* 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à 4 thanh ghi 32 bít Các thanh ghi này được khởitạo (dạng số hex) như sau:
A = 01234567; B = 89abcdef; C = fedcba98; D = 76543210
* 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 chiathành từng giai đoạn, số giai đoạn bằng số chiều dài (tính theo bít) của message sau khi đã paddingchia 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ộthà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ùy thuộc vào sự khác nhau củahàm thao tác (F, G, H, I)
Trang 8Hình 3: 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ình 3) Biểu thức tính toánđược sử dụng trong mỗi vòng có dạng:
I(b,c,d) = c ^ (b & ~d)
Trang 9CLSs: dịch vòng bên trái s bít.
X[k] = M[q*16 + k] : từ 32 bít thứ k của khối 512 bít thứ q của message T[i] = 232 * abs(sin(i)) : từ 32 bít thứ i (i tính theo radian) (xem bảng) Phép toán cộng (+) tính cho modulo 232
Trang 11+ 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
+ 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
* Bước 4: xuất (output) Tất cả khối 512 bít L đã được xử lý thì đầu ra ở giai đoạn thứ L là message_digest 128 bít
Có thể tóm tắt hoạt động của MD5 như sau:
MD0 = IVMDq+1 = MDq + fI(Yq , fH(Yq , fG(Yq ,fF(Yq ,MDq))))
MD = MDL-1Trong đó:
+ IV: giá trị khởi tạo của bộ đệm ABCD được xác định trong bước 2
+ Yq: khối message 512 bít thứ q
+ L: số khối message (đã được padding)
+ MD: giá trị message_digest cuối cùng
// Mã hóa bằng thuật toán MD5
byte[] hash;
byte[] plainBytes = Encoding.Unicode.GetBytes(document);
MD5CryptoServiceProvider md5 = newMD5CryptoServiceProvider();
hash = md5.ComputeHash(plainBytes);
md5.Clear();
Trang 12//Kết thúc mã hóa MD5
1.3 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ượtbậ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ếntrong 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
1.3.1 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ằngkhóa công khai chỉ 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
Một ví dụ trực quan: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhấtAlice có thể đọc được Để làm được điều này, Alice gửi cho Bob 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 tin trong 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
Lịch sử cuộc cách mạng toán học mã RSA và chính phủ điện tử:
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ìakhó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ã đốixứ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àmsao 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: Ba nhà khoa học Shamir, Rivest và Adleman
Đầu năm 1969, James Ellis, một chuyên gia thám mã lỗi lạc của Cơ Quan Truyền ThôngChí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ễunà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
Trang 13gử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ín hiệu cũng không thể nào giải mã được tin mật
Cuối năm 1969, James Ellis nhận ra ý tưởng trên có thể đạt được bằng 'hàm một chiều'(xem phụ lục) Theo đó, chỉ có thể tìm hàm ngược nếu biết thông tin nào đó, giống như khôi phụctí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ôngbiế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- được Patterson, thầy hướngdẫ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 nhâ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 cho các số nguyên tố nhỏ hơn Theomộ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àm khoảng 10150/300 phép chia (Nếu dùng máy tính tốc độ 1 tỷ phéptí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ũngkhô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ệtmật Nó có sức thuyết phục lớn trong nội bộ GCHQ Nhưng phương tiện tính toán thời đó khôngcho phép triển khai 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ách mạng mang tênRSA (ghép chữ đầu tên của ba nhà khoa học trên)
RSA, cuộc cách mạng của các nhà toán học.
Hệ mã RSA đã đưa đến một cuộc cách mạng thực sự Giờ đây, với hệ mã RSA, không cầnphải gửi chìa khóa giải mã cho người nhận thông tin nữa Hệ mã RSA sử dụng 2 khóa Khóa lập
mã của tôi được công khai với người ta (để người ta có thể gửi thông tin mã hóa cho tôi), cònkhóa giải mã của tôi là khóa riêng tôi giữ, do đó chỉ tôi mới có thể đọc được thông tin mã hóangười đó gửi, còn người khác không thể tìm ra khoá giải mã trong một thời gian chấp nhậnđược
Từ khi RSA ra đời đến nay, có nhiều người đưa ra nhiều hệ mã với các hàm một chiều khácnhau Tuy nhiên, chỉ có RSA và hệ mã gần với nó, hệ mã đường cong elliptic, là được sử dụngrộng rãi, vì người ta có thể tin hàm được dùng đúng là hàm một chiều
RSA và chính phủ điện tử
Trong chính phủ điện tử, có hai điều quan trọng Một là, làm thế nào để bảo đảm các vănbản trao đổi qua mạng không bị thay đổi nội dung (đảm bảo tính toàn vẹn của văn bản) Hai là,làm thế nào để xác minh người gửi văn bản đó (xác nhận chủ thể) RSA cũng như các hệ mã khóacông khai khác đã giải quyết trọn vẹn 2 vấn đề đặt ra Tuy nhiên, tốc độ mã hóa của RSA rất
Trang 14chậm (gấp chừng 1000 lần so với các hệ mã đối xứng), nên với các văn bản lớn, việc mã hoábằng RSA là không khả thi Do vậy, RSA được ứng dụng để giải quyết các vấn đề trên theo một
số phương thức độc đáo riêng Thí dụ: xác nhận 'giá trị băm'- một đặc trưng thu gọn, giống như'vân tay' của văn bản - thay vì xác nhận văn bản, dùng kết hợp mã đối xứng, như DES, IDEA( để mã hoá văn bản) và RSA (để mã hóa chìa khóa )
Ngày nay, các hệ mã khóa công khai và các tiện ích đi kèm đã được thương mại hóa Bạn
có thể mua trên thị trường hoặc tải từ Internet về để dùng (như một số người, một số công ty đãlàm) Tuy nhiên, cần nhớ rằng, độ an toàn của các sản phẩm như vậy không cao Như đã phântích trên đây, chốt của vấn đề là phải có những số nguyên tố lớn để lập khóa Không ai cho ta biếtrằng, trong hệ mã mà ta mua về, các số nguyên tố được dùng đã sinh ra như thế nào Chúng ngẫunhiên đến mức nào, hay là đã có sẵn trong một kho của người làm khóa Và nếu cần, người báncho ta có thể tìm ra khóa giải mã của bằng cách duyệt toàn bộ cái kho mà anh ta đã biết rõ Điềunày hoàn toàn tương tự như khi ta mượn khóa của hàng xóm về khóa cửa nhà mình, mà khôngbiết họ còn chìa dự trữ nào khác không Dĩ nhiên vẫn có thể làm như vậy, khi người hàng xómnày đủ tin cậy, và nhất là khi mà nhà chúng ta không có cái gì quý đến mức người ta phải lấybằng mọi giá Nhưng nếu là một chủ ngân hàng thì hãy thận trọng! Cũng như vậy, với các hệthống đòi hỏi độ an toàn cao, như chính phủ điện tử trong tương lai của Việt Nam chẳng hạn, thìkhông thể dùng những bộ khóa mua trên thị trường như vậy được Cho nên, phải tự làm lấy.Công việc như thế hiện đang được tiến hành ở một số cơ quan của Việt Nam, trong đó có ViệnToán Học (Viện Khoa Học và Công Nghệ Việt Nam)
Cho đến nay, người ta vẫn tin rằng RSA, hệ mã đường cong elliptic, là không thể pháđược Điều này không còn chính xác nữa, vì đã có một số phương pháp tấn công RSA đã đượccông bố mặc dù vẫn chưa đưa ra chương trình hoàn chỉnh
1.3.2 Thuật toán RSA
Tạo khóa RSA
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 lập
2 Tính: N=p*q.
3 Tính: Ф(N) = (p-1)(q-1)
4 Chọn một số tự nhiên e sao cho 1 < e <Ф(N) và là số nguyên tố cùng nhau với Ф(N)
5 Tính: d sao cho de ≡ 1 (mod Ф(N)) (hay d= (1 + i * Phi_N) / E) với i= 1,n