LỜI NÓI ĐẦU
Như các bạn đã biết ngay từ xa xưa con người chúng ta đã biết truyền thông
.Trong một thời đại không có điện thoại cũng chẳng có thư điện tử , bất kỳ ai
muốn truyền thông tin riêng của mình đến một người nào khác ở nơi xa chỉ có
một cách là viết nó lên mặt giấy rồi giao phó cho một người mang thư đi .Nếu
chẳng may người mang thư đó ngờ là trong thư có những thông tin quý giá ,anh
ta có thể bán đứng cho kẻ thù để kiếm được nhiều tiền hơn là đưa nó đến đúng
địa chỉ .Nhiều bộ óc trong lịch sử đã phát minh ra các phương pháp sử dụng mật
mã để giải quyết những thách thức trong việc bảo vệ dữ liệu . Jujius Caesar phát
minh ra cách viết mật mã được gọi là hộp Caesar ; Mary , Nữ hoàng Scotland đã
tạo ra mật mã thay thế và gởi đi những thông báo bí mật từ nhà tù ; nhà khoa
học xuất sắc người Arập Abu Yusuf Ismail al-Kindi đã bảo vệ được những bí
mật của mình bằng một mật mã thay thế tài tình sử dụng nhiều chữ cái khác
nhau …
Ngày nay , khi khoa học phát triển , mật mã cũng được sử dụng trong những hệ
thống cần độ bảo mật cao như : Ngân hàng , bưu chính ,…. Những thuật toán mã
hóa được phát triển ngày nhiều và có độ bảo mật cao hơn.
Giới thiệu
Mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất cứ ai,
ngoại trừ những ai được cho chép đọc. Mã hóa sử dụng thuật toán và khóa để
biến đổi dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext), làm biến dữ
liệu sang hình tức mật mã vô nghĩa (code hay ciphertext). Chỉ có những ai có
thông tin giải mã thì mới giải mã được và đọc được dữ liệu.
I. Một số khái niệm :
1) Khái niệm về mã hóa
1.1.Khái niệm:
Cryptography , được dịch là "mật mã học", là một ngành có nhiều thuật
ngữ có thể làm cho nhiều người "ngơ ngác": như "hash function", "one-time pad"
hay Rijndael
Cryptography (hay crypto) - mật mã học – ngành khoa học nghiên cứu về
việc giấu thông tin. Cụ thể hơn, mật mã học là ngành học nghiên cứu về những
Ciphertext: dữ liệu đã được mã hóa.
Lưu ý: Từ text (hay message) ở đây được dùng theo quy ước, được hiểu là
tất cả những dữ liệu được mã hóa (hay giải mã) chứ không chỉ là văn bản
chữ như nghĩa thông thường. Khi dịch ra tiếng Việt, từ "văn bản" và từ
"thông điệp" cũng tuân theo quy ước tương tự.
Cipher (hay cypher): thuật toán dùng để thực hiện quá trình mã hóa hay
giải mã. Trong bài này gọi tắt là thuật toán
Key: chìa khóa – thông tin dùng cho qui trình mã hóa và giải mã.
Code: cần phân biệt code trong mật mã học với code trong lập trình hay
code trong Zip code Trong cryptography, code (mã) có ý nghĩa gần như là
cipher (thuật toán). Chúng chỉ khác nhau ở chỗ: code biến đổi thông tin ở
tầng nghĩa (từ, cụm từ) còn cipher biến đổi thông tin ở tầng thấp hơn, ví dụ
chữ cái (hoặc cụm chữ cái) đối với các thuật toán cổ điển hay từng bit (hoặc
nhóm bit) đối với các thuật toán hiện đại.
Cryptanalysis: nếu coi mật mã học là việc cất dữ liệu của bạn vào một cái
hộp sau đó dùng chìa khóa khóa lại, thì cryptanalysis là ngành nghiên cứu
những phương pháp mở hộp để xem dữ liệu khi không có chìa khóa.
2) Khái niệm về chìa khóa :
2.1. Password: mật khẩu, là một hay nhiều từ mà người dùng phải biết để được
cấp quyền truy cập.
Trong thực tế, mật khẩu do người dùng tạo ra thường không đủ độ an toàn
để được dùng trực tiếp trong thuật toán. Vì vậy, trong bất cứ hệ thống mã hóa dữ
liệu nghiêm túc nào cũng phải có bước chuyển đổi mật khẩu ban đầu thành chìa
khóa có độ an toàn thích hợp. Bước tạo chìa khóa này thường được gọi là key
derivation, key stretching hay key initialization .
2.2. Key Derivation Function: là một hàm hash được thiết kế sao cho chìa an
toàn hơn đối với tấn công kiểu brute-force hay cổ điển. Hàm này được thực hiện
lại nhiều lần trên mật khẩu ban đầu cùng với một số ngẫu nhiên để tạo ra một
chìa khóa có độ an toàn cao hơn. Số ngẫu nhiên này gọi là salt, còn số lần lặp lại
là iteration.
Alice phải thông báo cho Bob về chìa khóa và thuật toán sử dụng tại một thời
điểm nào đó trước đấy. Alice có thể làm điều này một cách trực tiếp (mặt đối mặt)
hay gián tiếp (gửi qua email, tin nhắn ). Điều này dẫn tới khả năng bị người thứ
ba xem trộm chìa khóa và có thể giải mã được thông điệp Alice mã hóa gửi cho
Bob.
Mã hóa đối xứng có thể phân thành hai nhóm phụ:
- Block ciphers: thuật toán khối – trong đó từng khối dữ liệu trong văn bản ban
đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài. Độ dài mỗi khối gọi
là block size, thường được tính bằng đơn vị bit. Ví dụ thuật toán 3-Way có kích
thước khối bằng 96 bit.
Ví dụ: 3DES, RC5, RC6, 3-Way, CAST, Camelia, Blowfish, MARS, Serpent,
Twofish, GOST
- Stream ciphers: thuật toán dòng – trong đó dữ liệu đầu vào được mã hóa từng bit
một. Các thuật toán dòng có tốc độ nhanh hơn các thuật toán khối, được dùng khi
khối lượng dữ liệu cần mã hóa chưa được biết trước ( ví dụ trong kết nối không
dây). Có thể coi thuật toán dòng là thuật toán khối với kích thước mỗi khối là 1
bit.
Ví dụ: RC4, A5/1, A5/2, Chameleon
2.2. Asymmetric cryptography:
Mã hóa bất đối xứng, sử dụng một cặp chìa khóa có liên quan với nhau về
mặt toán học, một chìa công khai dùng để mã hoá (public key) và một chìa bí mật
dùng để giải mã (private key). Một thông điệp sau khi được mã hóa bởi chìa công
khai sẽ chỉ có thể được giải mã với chìa bí mật tương ứng. Do các thuật toán loại
này sử dụng một chìa khóa công khai (không bí mật) nên còn có tên gọi khác là
public-key cryptography (thuật toán mã hóa dùng chìa khóa công khai).
Quay lại với Alice và Bob, nếu Alice muốn gửi một thông điệp bí mật tới
Bob, cô ta sẽ tìm chìa công khai của Bob. Sau khi kiểm tra chắc chắn chìa khóa đó
chính là của Bob chứ không của ai khác (thông qua chứng chỉ điện tử – digital
certificate), Alice dùng nó để mã hóa thông điệp của mình và gửi tới Bob. Khi
Bob nhận được bức thông điệp đã mã hóa anh ta sẽ dùng chìa bí mật của mình để
Cả hai thuật toán đều đảm bảo an toàn dữ liệu. Tuy nhiên khi cần truyền dữ
liệu trên diện rộng ( qua mạng internet) thì thuật toán mã hóa bất đối xứng khó bị
lộ chìa khóa hơn. Tuy nhiên khi mã hóa thông tin người ta thường sử dụng phương
pháp lai tạp, nghĩa là kết hợp giữa đối xứng và bất đối xứng ( dùng đối xứng để
mã hóa dữ liệu và dùng bất đối xứng để mã hóa key của phép đối xứng và gởi kèm
theo dữ liệu)
4) Hàm hash :
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”, Message
Authentication Code (MAC), fingerprint – vân tay, hay một đoạn message.
Hàm hash (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu bất
kì qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra.
Ví dụ: từ "Illuminatus" đi qua hàm SHA-1 cho kết quả
E783A3AE2ACDD7DBA5E1FA0269CBC58D.
Ta chỉ cần đổi "Illuminatus" thành "Illuminati" (chuyển "us" thành "i") kết quả
sẽ trở nên hoàn toàn khác (nhưng vẫn có độ dài cố định là 160 bit)
A766F44DDEA5CACC3323CE3E7D73AE82.
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ên mạ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 đổi của dữ liệu đầu vào. 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.
Khô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 chỉ tính toán và đưa ra thông số hash value
của dữ liệu và không thay đổi dữ liệu ban đầu.
Hai tính chất quan trọng của hàm này là:
o Tính một chiều: không thể suy ra dữ liệu ban đầu từ kết quả, điều này tương
tự như việc bạn không thể chỉ dựa vào một dấu vân tay lạ mà suy ra ai là
chủ của nó được.
Người dùng bình thường cũng không cần phải hoảng sợ trước những phát
hiện này bởi vì ít nhất phải một vài năm nữa người ta mới có khả năng mang
những kết quả đó vào trong thực tế. Tuy vậy, các chuyên gia vẫn khuyên nên bắt
đầu chuyển sang các hàm hash an toàn hơn như SHA-256, SHA-384 hay SHA-
512.
III. MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG HỆ THỐNG THÔNG TIN
MÃ HÓA
Bất cứ ai cũng có thể tạo ra một hệ thống thông tin mã hóa cho riêng mình.
Nhưng để có một hệ thống an toàn và hiệu quả đòi hỏi người thiết kế phải có
kiến thức toán học sâu sắc, có kinh nghiệm về bảo mật và am hiểu các phương
pháp tấn công.
1) Brute-force attack (exhaustive key search): phương pháp tấn công
bằng cách thử tất cả những chìa khóa có thể có. Đây là phương pháp tấn công
thô sơ nhất và cũng khó khăn nhất.
Theo lý thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi
brute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời
gian hàng triệu, thậm chí hàng tỉ năm. Vì thế có thể coi một thuật toán là an toàn
nếu như không còn cách nào khác để tấn công nó dễ hơn là brute-force.
Ví dụ: Thuật toán DES có độ dài chìa khóa là 56 bit . Nếu ai đó muốn "bẻ
khoá” DES bằng cách thử hàng loạt chìa (brute-force attack) thì sẽ phải thử
khoảng hơn 70 triệu tỉ lần .
2) Frequency analysis: thống kê tần suất, chỉ có thể áp dụng được đối với
các thuật toán cổ điển dùng phương pháp thay thế, ví dụ phương pháp Caesar.
Để thực hiện phương pháp này ta cần một lượng văn bản đã mã hóa đủ lớn để
phép thống kê được chính xác. Ngoài ra còn phải biết ngôn ngữ sử dụng trong
văn bản ban đầu, nếu văn bản ban đầu là tiếng Anh thì nhiều khả năng kí tự xuất
hiện nhiều nhất trong văn bản đã mã hóa là do chữ e mã hóa thành, kí tự nhiều
thứ nhì bắt nguồn từ chữ a
3) Differential cryptanalysis: Eli Biham và Adi Shamir tìm ra phương
pháp này vào khoảng cuối những năm 1980; nó thường được sử dụng để tấn
DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa
Dữ liệu) là một phương pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý Thông tin
Liên bang Hoa Kỳ) chọn làm chuẩn chính thức vào năm 1976. Sau đó chuẩn này
được sử dụng rộng rãi trên phạm vi thế giới. Ngay từ đầu, thuật toán của nó đã gây
ra rất nhiều tranh cãi, do nó bao gồm các thành phần thiết kế mật, độ dài khóa
tương đối ngắn, và các nghi ngờ về cửa sau để Cơ quan An ninh quốc gia Hoa Kỳ
(NSA) có thể bẻ khóa. Do đó, DES đã được giới nghiên cứu xem xét rất kỹ lưỡng,
việc này đã thúc đẩy hiểu biết hiện đại về mật mã khối (block cipher) và các
phương pháp thám mã tương ứng.
Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng. Nguyên
nhân chủ yếu là độ dài 56 bit của khóa là quá nhỏ. Khóa DES đã từng bị phá trong
vòng chưa đầy 24 giờ. Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu
về mặt lý thuyết của mã hóa có thể dẫn đến phá khóa, tuy chúng không khả thi
trong thực tiễn. Thuật toán được tin tưởng là an toàn trong thực tiễn có dạng Triple
DES (thực hiện DES ba lần), mặc dù trên lý thuyết phương pháp này vẫn có thể bị
phá. Gần đây DES đã được thay thế bằng AES (Advanced Encryption Standard,
hay Tiêu chuẩn Mã hóa Tiên tiến).
Trong một số tài liệu, người ta phân biệt giữa DES (là một tiêu chuẩn) và
thuật toán DEA (Data Encryption Algorithm, hay Thuật toán Mã hóa Dữ liệu) -
thuật toán dùng trong chuẩn DES.
a) Lịch sử phát triển :
Khởi nguyên của thuật toán đã có từ đầu thập niên 1970. Vào năm 1972,
sau khi tiến hành nghiên cứu về nhu cầu an toàn máy tính của chính phủ Hoa Kỳ,
Cục Tiêu chuẩn Liên bang Hoa Kỳ (National Bureau of Standard - NBS), hiện
nay đã đổi tên thành Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (National
Institute of Standards and Technology - NIST), đã nhận ra nhu cầu về một tiêu
chuẩn của chính phủ dùng để mật mã hóa các thông tin mật/nhạy cảm. Vào ngày
15 tháng 5 năm 1973, sau khi tham khảo với NSA, NBS đưa ra kêu gọi thiết kế
một thuật toán mã hóa có thể đáp ứng được các tiêu chuẩn nghiêm ngặt. Tuy nhiên
không có đề xuất nào đáp ứng được yêu cầu đề ra. Ngày 27 tháng 8 năm 1974,
dụng các nhân viên của IBM. NSA đã không ép buộc bất kỳ điều gì!"
Những nghi ngờ về điểm yếu được giấu của S-box được giảm bớt trong
thập niên 1990 khi Eli Biham và Adi Shamir công bố những nghiên cứu độc lập
về thám mã vi sai (differential cryptanalysis, một trong những phương pháp phổ
biến để thám mã các dạng mật mã khối). S-box trong cấu trúc của DES có khả
năng chống lại dạng tấn công này hiệu quả hơn so với khi nó được chọn một cách
ngẫu nhiên. Điều này có thể là do IBM đã biết về dạng tấn công này từ thập niên
1970. Khả năng này một lần nữa được chứng tỏ vào năm 1994 khi Don
Coppersmith công bố những tiêu chuẩn ban đầu của việc thiết kế S-box. Sau khi
đảm bảo DES có khả năng chống lại đã được kỹ thuật thám mã vi sai, IBM đã giữ
bí mật về nó theo yêu cầu của NSA. Coppersmith cũng giải thích thêm: "Nguyên
nhân là vì thám mã vi sai là một kỹ thuật rất hiệu quả và công bố thông tin về nó
điều này có thể gây nguy hại cho an ninh quốc gia." Ngay cả Shamir cũng nhìn
nhận rằng: "Tôi có thể nói rằng, trái với suy nghĩ của nhiều người, không có bằng
chứng về sự can thiệp vào thiết kế làm giảm độ an toàn của DES."
Lý do mà NSA đưa ra để giải thích về việc giảm độ dài khóa từ 64 bit
xuống 56 bit là để dành 8 bit cho việc kiểm tra lỗi (parity checking). Những ý kiến
chỉ trích cho rằng đây chỉ là nguyên cớ chứ không phải là nguyên nhân thực sự.
Nhiều người tin rằng quyết định giảm độ dài khóa xuống 56 bit là để NSA có thể
thực hiện thám mã bằng phương pháp duyệt toàn bộ (brute force attack) trước vài
năm so với phần còn lại của thế giới.
DES với vai trò là một tiêu chuẩn :
Bất chấp những chỉ trích, DES được chọn làm tiêu chuẩn liên bang (Hoa
kỳ) vào tháng 11 năm 1976 và được công bố tại tài liệu có tên là FIPS PUB 46 vào
ngày 15 tháng 1 năm 1977 cho phép sử dụng chính thức đối với thông tin không
mật. DES tiếp tục được khẳng định là tiêu chuẩn vào các năm 1983, 1988 (với tên
FIPS-46-1), 1993 (FIPS-46-2) và 1998 (FIPS-46-3). Lần cuối cùng quy định dùng
"Triple DES" (xem thêm ở phần sau). Ngày 26 tháng 5 năm 2002, DES được thay
thế bằng AES sau một cuộc thi rộng rãi (xem thêm Quá trình AES). Tuy nhiên, tại
thời điểm năm 2004, DES vẫn còn được sử dụng khá phổ biến.
văn bản rõ (một
điều kiện không thực tế)
30/12/1993: DES được xác nhận lần ba với tên FIPS 46-2.
1994 : Thực nghiệm thám mã DES lần đầu tiên được thực hiện với kỹ thuật
thám mã tuyến tính
6/1997: Dự án DESCHALL đã phá vỡ được một bản tin mã hóa bằng DES
(lần đầu tiên trước công chúng).
7/1998 : Thiết bị thám mã Deep Crack của tổ chức Electronic Frontier
Foundation phá được một khóa của DES trong vòng 56 giờ.
1/1999 : Deep Crack cùng với distributed.net phá được một khóa của DES
trong vòng 22 giờ và 15 phút.
25/10/1999: DES được xác nhận lần thứ tư với tên FIPS 46-3. Lần này phương
pháp Triple DES được khuyến cáo sử dụng còn DES chỉ được dùng
cho các hệ thống ít quan trọng.
26/11/2001: AES được công bố trong FIPS 197
26/5/2002: AES trở thành tiêu chuẩn
26/7/2004: Việc bãi bỏ FIPS 46-3 (cùng với một số tiêu chuẩn liên quan khác)
được đăng trên công báo liên bang Hoa kỳ
19/5/2005: NIST bãi bỏ FIPS 46-3
Quá trình thay thế DES :
Từ cuối thập niên 1980, đầu thập niên 1990, xuất phát từ những lo ngại về
độ an toàn và tốc độ thấp khi áp dụng bằng phần mềm, giới nghiên cứu đã đề xuất
khá nhiều thuật toán mã hóa khối để thay thế DES. Những ví dụ tiêu biểu bao
gồm: RC5, Blowfish, IDEA (International Data Encryption Algorithm, hay Thuật
toán mã hóa dữ liệu quốc tế), NewDES, SAFER, CAST5 và FEAL. Hầu hết
những thuật toán này có thể sử dụng từ khóa 64 bit của DES mặc dù chúng thường
được thiết kế hoạt động với từ khóa 64 bit hay 128 bit.
Ngay bản thân DES cũng có thể được sử dụng một cách an toàn hơn.
Những người sử dụng DES trước đây có thể dùng Triple DES (hay TDES). Đây là
phương pháp được một trong những người phát minh ra DES miêu tả và kiểm tra .
xét về mật mã học và việc sử dụng chúng chỉ có ý nghĩa đáp ứng cho quá trình đưa
thông tin vào và lấy thông tin ra từ các khối phần cứng có từ thập niên 1970.
Trước khi đi vào 16 chu trình chính, khối thông tin 64 bit được tách làm hai phần
32 bit và mỗi phần sẽ được xử lý tuần tự (quá trình này còn được gọi là mạng
Feistel).
Cấu trúc của thuật toán (mạng Feistel) đảm bảo rằng quá trình mã hóa và giải mã
diễn ra tương tự. Điểm khác nhau chỉ ở chỗ các khóa con được sử dụng theo trình
tự ngược nhau. Điều này giúp cho việc thực hiện thuật toán trở nên đơn giản, đặc
biệt là khi thực hiện bằng phần cứng.
Ký hiệu sau: thể hiện phép toán XOR. Hàm F làm biến đổi một nửa của
khối đang xử lý với một khóa con. Đầu ra sau hàm F được kết hợp với nửa còn lại
của khối và hai phần được tráo đổi để xử lý trong chu trình kế tiếp. Sau chu trình
cuối cùng thì 2 nửa không bị tráo đổi; đây là đặc điểm của cấu trúc Feistel khiến
cho quá trình mã hóa và giải mã trở nên giống nhau.
Hàm Feistel (F) :
Hàm F, như được miêu tả ở Hình 2, hoạt động trên khối 32 bit và bao gồm bốn
giai đoạn:
Hình 2 – Hàm F (F-function) dùng trong DES
Mở rộng: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật toán
hoán vị mở rộng (expansion permutation) với việc nhân đôi một số bit. Giai
đoạn này được ký hiệu là E trong sơ đồ.
Trộn khóa: 48 bit thu được sau quá trình mở rộng được XOR với khóa con.
Mười sáu khóa con 48 bit được tạo ra từ khóa chính 56 bit theo một chu
trình tạo khóa con (key schedule) miêu tả ở phần sau.
Thay thế: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được xử lý
qua hộp thay thế S-box. Đầu ra của mỗi khối 6 bit là một khối 4 bit theo
một chuyển đổi phi tuyến được thực hiện bẳng một bảng tra. Khối S-box
đảm bảo phần quan trọng cho độ an toàn của DES. Nếu không có S-box thì
quá trình sẽ là tuyến tính và việc thám mã sẽ rất đơn giản.
Hoán vị: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại theo một
hiện và do đó thể hiện tính khả thi của phương pháp. Trong trường hợp của DES,
nghi ngờ về độ an toàn của nó đã được đặt ra ngay từ khi nó chưa trở thành tiêu
chuẩn. Người ta cho rằng chính NSA đã ủng hộ (nếu không muốn nói là thuyết
phục) IBM giảm độ dài khóa từ 128 bit xuống 64 bit và tiếp tục xuống 56 bit. Điều
này dẫn đến suy đoán rằng NSA đã có hệ thống tính toán đủ mạnh để phá vỡ khóa
56 bit ngay từ những năm 1970.
Hệ thống phá mã DES của Hiệp hội EFF được xây dựng với ngân sách
250000 đô la Mỹ. Hệ thống bao gồm 1536 bộ vi xử lý thiết kế riêng và có khả
năng tấn công kiểu duyệt toàn bộ khóa DES trong vòng vài ngày. Hình ảnh thể
hiện một phần bảng mạch của hệ thống chứa một vài bộ vi xử lý.
Trong giới nghiên cứu, nhiều đề xuất về các hệ thống phá mã DES được đề
ra. Năm 1977, Diffie và Hellman dự thảo một hệ thống có giá khoảng 20 triệu đô
la Mỹ và có khả năng phá khóa DES trong 1 ngày. Năm 1993, Wiener dự thảo một
hệ thống khác có khả năng phá mã trong vòng 7 giờ với giá 1 triệu đô la Mỹ.
Những điểm yếu của DES được thực sự chứng minh vào cuối những năm 1990.
Vào năm 1997, công ty bảo mật RSA đã tài trợ một chuỗi cuộc thi với giải
thưởng 10.000 đô la Mỹ cho đội đầu tiên phá mã được một bản tin mã hóa bằng
DES. Đội chiến thắng trong cuộc thi này là dự án DESCHALL với những người
dẫn đầu bao gồm Rocke Verser, Matt Curtin và Justin Dolske. Họ đã sử dụng hàng
nghìn máy tính nối mạng để phá mã. Khả năng phá mã DES được chứng minh
thêm lần nữa vào năm 1998 khi tổ chức Electronic Frontier Foundation (EFF), một
tổ chức hoạt động cho quyền công dân trên Internet, xây dựng một hệ thống
chuyên biệt để phá mã với giá thành 250000 đô la Mỹ . Động cơ thúc đẩy EFF
trong hành động này là nhằm chứng minh DES có thể bị phá vỡ trên lý thuyết
cũng như trên thực tế: "Nhiều người không tin vào chân lý cho đến khi họ nhìn
thấy sự việc bằng chính mắt mình. Xây dựng một bộ máy có thể phá khóa DES
trong vòng vài ngày là cách duy nhất chứng tỏ với mọi người rằng họ không thể
đảm bảo an ninh thông tin dựa vào DES." Hệ thống này đã tìm được khóa DES
bằng phương pháp duyệt toàn bộ trong thời gian hơn 2 ngày; trong khi vào khoảng
thời gian đó, một chưởng lý của Bộ Tư pháp Hoa Kỳ (DOJ) vẫn tuyên bố rằng
×2
41
.
Phá mã Davies: trong khi phá mã vi sai và phá mã tuyến tính là các kỹ
thuật phá mã tổng quát, có thể áp dụng cho các thuật toán khác nhau, phá
mã Davies là một kỹ thuật dành riêng cho DES. Dạng tấn công này được
đề xuất lần đầu bởi Davies vào cuối những năm 1980 và cải tiến bởi
Biham và Biryukov (1997). Dạng tấn công mạnh nhất đòi hỏi 2
50
văn bản
rõ, độ phức tạp là 2
50
và có tỷ lệ thành công là 51%.
Ngoài ra còn có những kiểu tấn công dựa trên bản thu gọn của DES - DES với ít
hơn 16 chu trình. Những nghiên cứu này cho chúng ta biết số lượng chu trình cần
có và ranh giới an toàn của hệ thống. Năm 1994, Langford và Hellman đề xuất phá
mã vi sai - tuyến tính (differential-linear cryptanalysis) kết hợp giữa phá mã vi sai
và tuyến tính. Một dạng cải tiến của phương pháp này có thể phá vỡ DES 9 chu
trình với 2
15.8
văn bản rõ và có độ phức tạp là 2
29.2
(Biham et al, 2002).
Một vài đặc điểm về cách giải mã :
DES có tính chất bù:
trong đó là phần bù của x theo từng bít (1 thay bằng 0 và ngược lại). E
K
là
bản mã hóa của E với khóa K. P và C là văn bản rõ (trước khi mã hóa) và văn bản
mã (sau khi mã hóa). Do tính bù, ta có thể giảm độ phức tạp của tấn công duyệt
độ an toàn của DES.
3) AES: viết tắt của Advance Encryption Standard.
Tháng 12 năm 1997, viện tiêu chuẩn và công nghệ Mỹ (NIST – National
Institute of Standard and Technology) kêu gọi phát triển một thuật toán mới thay
thế cho 3DES (một biến thể an toàn hơn của DES với chìa khóa dài 112 bit). Thuật
toán được chọn phải là thuật toán khối có kích thước khối là 128 bit, hỗ trợ chìa
khóa có kích thước 128 bit, 192 bit và 256 bit.
15 thuật toán được gửi đến từ nhiều nơi trên thế giới, 5 thuật toán lọt vào
vòng hai: Rijndael, Twofish, Serpent, RC6 và MARS. Tháng 11 năm 2001,
Rijndael đuợc chọn làm AES (một phần nhờ có tốc độ nhanh hơn so với các đối
thủ), chính thức thay thế DES trong vai trò chuẩn mã hóa dữ liệu.
4) RSA:
Trong mật mã học , RSA là một thuật toán mã hóa khóa công khai .Đâ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 diiều kiện độ dài khóa đủ lớn .
a) Lịch sử phát triển :
Thuật toán được Ron Rivest , Adi Shamir và Len Adleman mô tả lần đầu
tiên vào năm 1977 tại học viện Công nghệ Massachusetts ( MIT) . Tên của thuật
toán lấy từ 3 chữ cái đầu tiên của 3 tác giả .
Trước đó , vào năm 1973 ,Clifford Cocks , một nhà toán học người Anh
làm việc tại GCHQ đã mô tả một thuật toán tương tự . Với khả năng tính toán tại
thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực
nghiệm .Tuy nhiên , phát minh này chỉ được công bố vào năm 1997 vì được xếp
vào loại tuyệt mật .
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm
1983 .Tuy nhiên , do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên
sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ .Ngoài ra , nếu như công
trình của Clifford Cocks đã công bố trước đó thì bằng sáng chế RSA đã không thể
• Một số lưu ý:
- Các số nguyên tố thường được chọn bằng phương pháp thử xác suất.
- Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng
- Bước 5 có thể viết cách khác: Tìm số tự nhiên sao cho
cũng là số tự nhiên.
Khi đó sử dụng giá trị .
- Từ bước 3, PKCS#1 v2.1 sử dụng thay cho
.
• Khóa công khai bao gồm:
n, môđun, và
e, số mũ công khai (cũng gọi là số mũ mã hóa).
• Khóa bí mật bao gồm:
n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật, và
d, số mũ bí mật (cũng gọi là số mũ giải mã).
Một dạng khác của khóa bí mật bao gồm:
p and q, hai số nguyên tố chọn ban đầu,
d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1),
(1/q) mod p (thường được gọi là iqmp)
Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng
định lý số dư Trung Quốc (tiếng Anh: Chinese Remainder Theorem - CRT). Ở
dạng này, tất cả thành phần của khóa bí mật phải được giữ bí mật.
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.
Mã hóa :
Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M
thành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M)
được thỏa thuận trước.
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ã