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ỳ aimuốn truyền thông tin r
Trang 1LỜ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ỳ aimuố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ếuchẳ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átminh 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à khoahọ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ácnhau …
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
Trang 2I. 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ữngcách chuyển đổi thông tin từ dạng "có thể hiểu được" thành dạng "không thể hiểuđược" và ngược lại
1.2.Đặc điểm:
Cryptography giúp đảm bảo những tính chất sau cho thông tin:
Tính bí mật (confidentiality): thông tin chỉ được tiết lộ cho những ai
Tính không chối bỏ (non-repudiation): người gửi hoặc nhận sau này
không thể chối bỏ việc đã gửi hoặc nhận thông tin
Mật mã có rất nhiều ứng dụng trong thực tế như bảo vệ giao dịch tài chính(rút tiền ngân hàng, mua bán qua mạng), bảo vệ bí mật cá nhân Nếu kẻ tấn công
đã vượt qua tường lửa và các hệ thống bảo vệ khác thì mật mã chính là hàngphòng thủ cuối cùng cho dữ liệu của bạn
Cần phân biệt khái niệm cryptography với khái niệm steganography (tạmdịch là giấu thông tin) Điểm khác nhau căn bản nhất giữa hai khái niệm này là:cryptography là việc giấu nội dung của thông tin, trong khi steganography là việcgiấu sự tồn tại của thông tin đó
Trang 31.3.Các thuật ngữ cần biết khi nghiên cứu mã hóa thông tin:
Cryptosystem (viết tắt của cryptographic system): hệ thống mã hóa thông
tin, có thể là phần mềm như PGP, Ax-Crypt, Truecrypt giao thức nhưSSL, IPsec hay đơn giản là một thuật toán như DES
Encrypt (encipher): mã hóa – quá trình biến đổi thông tin từ dạng ban đầu
- có thể hiểu được thành dạng không thể hiểu được, với mục đích giữ bímật thông tin đó
Decrypt (decipher): giải mã – quá trình ngược lại với mã hóa, khôi phục
lại thông tin ban đầu từ thông tin đã được mã hóa
Plaintext (cleartext): dữ liệu gốc (chưa được mã hóa).
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ảnchữ 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ặcnhó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ứunhững phương pháp mở hộp để xem dữ liệu khi không có chìa khóa
Trang 42) 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ìakhó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à keyderivation, 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ệnlạ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ộtchì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
Ví dụ : Một mật khẩu là "pandoras B0x", cùng với salt là "230391827", đi quahàm hash SHA-1 1000 lần cho kết quả là một chìa khóa có độ dài 160 bit nhưsau: 3BD454A72E0E7CD6959DE0580E3C19F51601C359 (thể hiện dưới dạng
số thập lục phân)
2.3 Keylength (Keysize): Độ dài (hay độ lớn) của chìa khóa
Nói một chìa khóa có độ dài 128 bit có nghĩa chìa đó là một số nhị phân có
độ dài 128 chữ số Một thuật toán có chìa khóa càng dài thì càng có nhiều khảnăng chống lại tấn công kiểu brute-force
Trang 5II THUẬT TOÁN MÃ HÓA
Ở đây ta dùng hai đối tượng Alice và Bod để mô tả cho các đối tượng gởi và nhận
1) Cổ điển :
1.1 Substitution: thay thế – phương pháp mã hóa trong đó từng kí tự (hoặc từng
nhóm kí tự) của văn bản ban đầu được thay thế bằng một (hay một nhóm) kí tựkhác Tuy không còn được sử dụng nhưng ý tưởng của phương pháp này vẫnđược tiếp tục trong những thuật toán hiện đại
1.2 Transposition: hoán vị – phương pháp mã hóa trong đó các kí tự trong văn
bản ban đầu chỉ thay đổi vị trí cho nhau còn bản thân các kí tự không hề bị biếnđổi
2) Hiện đại :
2.1 Symmetric cryptography:
Mã hóa đối xứng ,tức là cả hai quá trình mã hóa và giải mã đều dùng mộtchìa khóa Để đảm bảo tính an toàn, chìa khóa này phải được giữ bí mật Vì thếcác thuật toán loại này còn có tên gọi khác là secret key cryptography (hayprivate key cryptography), tức là thuật toán mã hóa dùng chìa khóa riêng (hay
bí mật) Các thuật toán loại này lý tưởng cho mục đích mã hóa dữ liệu của cánhân hay tổ chức đơn lẻ nhưng bộc lộ hạn chế khi thông tin đó phải được chia
sẻ với một bên thứ hai
Ví dụ:
Giả sử nếu Alice chỉ gửi thông điệp đã mã hóa cho Bob mà không hề báotrước về thuật toán sử dụng, Bob sẽ chẳng hiểu Alice muốn nói gì Vì thế bắt buộcAlice 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 choBob
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
Trang 6là block size, thường được tính bằng đơn vị bit Ví dụ thuật toán 3-Way có kíchthướ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 khikhố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ôngdâ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à 1bit
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ậtdùng để giải mã (private key) Một thông điệp sau khi được mã hóa bởi chìa côngkhai 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ạinà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ớiBob, 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ử – digitalcertificate), Alice dùng nó để mã hóa thông điệp của mình và gửi tới Bob KhiBob 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 đểgiải mã nó Nếu giải mã thành công thì bức thông điệp đó đúng là dành cho Bob.Alice và Bob trong trường hợp này có thể là hai người chưa từng quen biết Một
hệ thống như vậy cho phép hai người thực hiện được giao dịch trong khi khôngchia sẻ trước một thông tin bí mật nào cả
Một trong những hạn chế của các thuật toán mã hóa bất đối xứng là tốc độchậm, do đó trong thực tế người ta thường sử dụng một hệ thống lai tạp trong đó
dữ liệu được mã hóa bởi một thuật toán đối xứng, chỉ có chìa dùng để thực hiệnviệc mã hóa này mới được mã hóa bằng thuật toán bất đối xứng
3) So sánh đối xứng và bất đối xứng:
Mã hóa đối xứng
Khóa:
Mã hóa bất đối xứng
Giải mã và mã hóa với cùng một chìa
hoặc có quan hệ rõ ràng với nhau (có
thể suy ra một chìa nếu biết chìa cònlại)
Trang 7Mã hóa bằng một chìa công khai
(Public key), giải mã bằng chìa bí
mật (Private key)
Tốc độ:
Các thuật toán đối xứng nói chung
đòi hỏi công suất tính toán ít hơn các
thuật toán khóa bất đối xứng
(asymmetric key algorithms)
Một thuật toán khóa bất đối xứng cókhối lượng tính toán nhiều hơn gấphằng trăm, hằng ngàn lần một thuậttoán khóa đối xứng có độ an toàntương đương
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
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.
Trang 8Dữ liệu đầu vào của bạn có thể là một file, một ổ đĩa một quá trình truyềnthô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 khitruyề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ànhmột dạng mật mã), quá trình hashing chỉ tính toán và đưa ra thông số hash valuecủ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
o Tính duy nhất: xác suất để có một vụ va chạm (hash collision), tức là hai
thông điệp khác nhau có cùng một kết quả hash, là cực kì nhỏ
Một số ứng dụng của hàm hash:
• Chống và phát hiện xâm nhập: chương trình chống xâm nhập so sánh giá trịhash của một file với giá trị trước đó để kiểm tra xem file đó có bị ai đó thayđổi hay không
• Bảo vệ tính toàn vẹn của thông điệp được gửi qua mạng bằng cách kiểm tragiá trị hash của thông điệp trước và sau khi gửi nhằm phát hiện những thayđổi cho dù là nhỏ nhất
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 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 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ới cùng một thuật toán.
Trang 9
• Tạo chìa khóa từ mật khẩu
• Tạo chữ kí điện tử
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
SHA-1 và MD5 là hai hàm hash thông dụng nhất và được sử dụng trong rấtnhiều hệ thống bảo mật Vào tháng 8 năm 2004, tại hội nghị Crypto 2004, người ta
đã tìm thấy va chạm đối với MD5 và SHA-0, một phiên bản yếu hơn của hàm hashSHA-1 Không bao lâu sau đó, vào khoảng giữa tháng 2 năm 2005, một nhóm banhà mật mã học người Trung Quốc đã phát hiện ra một phương pháp có thể tìmthấy va chạm đối với SHA-1 chỉ trong vòng 269 bước tính toán (tức là có thểnhanh hơn brute-force vài nghìn lần)
Người dùng bình thường cũng không cần phải hoảng sợ trước những pháthiệ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 mangnhữ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
Trang 10III 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ươngphá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ôngthô 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ởibrute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thờigian 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ànnế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 trongvă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ấthiệ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ềuthứ 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ấncông các thuật toán khối (block cipher - sẽ nói rõ hơn ở phần sau) Phương phápnày dựa trên việc phân tích những biến đổi của hai văn bản gốc có liên quan khiđược mã hóa bởi cùng một chìa
Còn rất nhiều phương pháp khác như Mod-n cryptanalysis, Linearcryptanalysis, Birthday attack, Algebraic attack mà bất cứ ai thiết kế hệ thống
mã hóa cũng phải chú ý tới
Trang 11IV MỘT SỐ THUẬT TOÁN NỔI TIẾNG :
1) One-time Pad (OTP):
Xuất hiện từ đầu thế kỉ 20 và còn có tên gọi khác là Vernam Cipher, OTP đượcmệnh danh là cái chén thánh của ngành mã hóa dữ liệu OTP là thuật toán duynhất chứng minh được về lý thuyết là không thể phá được ngay cả với tài nguyên
vô tận (tức là có thể chống lại kiểu tấn công brute-force) Để có thể đạt được mức
độ bảo mật của OTP, tất cả những điều kiện sau phải được thỏa mãn:
- Độ dài của chìa khóa phải đúng bằng độ dài văn bản cần mã hóa
- Chìa khóa chỉ được dùng một lần
- Chìa khóa phải là một số ngẫu nhiên thực
Mới nghe qua có vẻ đơn giản nhưng trong thực tế những điều kiện này khó
có thể thỏa mãn được Giả sử Alice muốn mã hóa chỉ 10MB dữ liệu bằng OTP, cô
ta phải cần một chìa khóa có độ dài 10MB Để tạo ra một số ngẫu nhiên lớn nhưvậy Alice cần một bộ tạo số ngẫu nhiên thực (TRNG - True Random NumberGenerator) Các thiết bị này sử dụng nguồn ngẫu nhiên vật lý như sự phân rã hạtnhân hay bức xạ nền vũ trụ Hơn nữa việc lưu trữ, chuyển giao và bảo vệ một chìakhóa như vậy cũng hết sức khó khăn
Dễ dàng hơn, Alice cũng có thể dùng một bộ tạo số ngẫu nhiên ảo (PRNG Pseudo Random Number Generator) nhưng khi đó mức độ bảo mật giảm xuốnggần bằng zero hay cùng lắm chỉ tương đương với một thuật toán dòng như RC4
-mà thôi
Do có những khó khăn như vậy nên việc sử dụng OTP trong thực tế làkhông khả thi
2) DES :
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 tinLiê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óatươ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
Trang 12Hiệ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á trongvò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 TripleDES (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ênkhông có đề xuất nào đáp ứng được yêu cầu đề ra Ngày 27 tháng 8 năm 1974,NBS đưa ra kêu gọi lần thứ hai Lần này công ty IBM đã đưa ra một đề xuất có thểchấp nhận được Đề xuất này được phát triển trong những năm 1973-1974 dựatrên một thuật toán đã có từ trước - thuật toán mật mã Lucifer của Horst Feistel.Đội ngũ tại công ty IBM liên quan tới quá trình thiết kế bao gồm: Feistel, WalterTuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, RoyAdler, Edna Grossman, Bill Notz, Lynn Smith và Bryant Tuckerman
Sự tham gia của Cơ quan An ninh quốc gia Hoa Kỳ trong quá trình thiết kế:
Ngày 17 tháng 3 năm 1975, đề xuất về DES được công bố trên công báo
liên bang Hoa kỳ (Federal Register) để công chúng tham gia ý kiến Trong năm
tiếp theo, hai hội thảo mở rộng được tổ chức để xem xét đề xuất này Đã có rất nhiều ý kiến chỉ trích được nêu ra, trong đó bao gồm ý kiến của các nhà khoa học
tiên phong về mật mã khóa công khai (public-key cryptography) là Martin
Hellman và Whitfield Diffie về các vấn đề như độ dài khóa và thành phần của thuật toán không được công khai: S-box Điều sau được xem như là sự can thiệp (không hợp lý) của NSA làm giảm độ an toàn của thuật toán và cho phép NSA (vàkhông ai khác) có thể dễ dàng đọc được thông tin đã được mã hóa Alan Konheim,một trong những thành viên thiết kế DES, nói rằng: "Chúng tôi đã gửi thiết kế của
Trang 13S-box tới Washington Khi trở lại thì mọi thứ đã được thay đổi." Trong một báo cáo mật của ủy ban của Thượng viện Hoa Kỳ được cử để điều tra những sửa đổi của NSA công bố năm 1978 đã viết:
"Trong quá trình phát triển DES, NSA thuyết phục IBM rằng độ dài (56 bit)của khóa là đủ an toàn; gián tiếp hỗ trợ sự phát triển cấu trúc của S-box; và chứng nhận rằng thuật toán DES không có điểm yếu về mặt thống kê và toán học."
Tuy nhiên, báo cáo cũng viết:
"NSA không can thiệp vào quá trình thiết kế thuật toán dưới bất kỳ hình thức nào IBM đã phát minh và thiết kế ra thuật toán, đưa ra các quyết định, và chorằng độ dài của khóa là nhiều hơn cần thiết cho các ứng dụng thương mại (mục tiêu của DES)."
Một thành viên khác tham gia phát triển DES là Walter Tuchman được cho
là đã phát biểu: "Chúng tôi phát triển DES hoàn toàn bên trong IBM và chỉ sử 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
Trang 14thế 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.
Năm 1994, thêm một phương pháp tấn công khác (trên lý thuyết) được công bố là thám mã tuyến tính Tuy nhiên thời điểm nhu cầu thay thế DES trở nên thực sự cấp thiết là vào năm 1998 khi một cuộc tấn công kiểu duyệt toàn bộ chứng
tỏ rằng DES có thể bị phá vỡ trên thực tế Các phương pháp thám mã này sẽ được miêu tả kỹ hơn ở phần sau
Sự xuất hiện của DES đã tạo nên một làn sóng nghiên cứu trong giới khoa học về lĩnh vực mật mã học, đặc biệt là các phương pháp thám mã mã khối Về điều này, Bruce Schneier viết:
"NSA coi DES là một trong những sai lầm lớn nhất Nếu họ biết trước rằng chi tiết của thuật toán sẽ được công bố để mọi người có thể viết chương trình phần mềm, họ sẽ không bao giờ đồng ý DES đã tạo nên nguồn cảm hứng nghiên cứu trong lĩnh vực thám mã hơn bất kỳ điều gì khác: Giới khoa học đã có một thuật toán để nghiên cứu - thuật toán mà NSA khẳng định là an toàn."
9/1976: Hội thảo lần hai ,bàn về nề tảng toán học của DES
11/1976: DES được phê chuẩn làm tiêu chuẩn chính thức
15/1/1977: DES xác nhận làm tiêu chuẩn của FIPS(FIPS PUB 46)
1983 : DES được công bố lại lần đầu
1986 : HBO phát sóng chương trình Videocipher II , một kênh TV mã hóa
dựa trên DES
22/1/1988: DES được xác nhận lần hai với tên FIPS 46-1, thay thế FIPS PUB 461992: Biham và Shamir công bố kiểu tấn công thám mã vi sai (trên lý
thuyết) với độ phức tạp thấp hơn tấn công duyệt toàn bộ Tuy nhiên,kiểu tấn công này đòi hỏi người tấn công lựa chọn 247 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ờ
Trang 151/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ùngcho 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ấtkhá nhiều thuật toán mã hóa khối để thay thế DES Những ví dụ tiêu biểu baogồ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ếtnhữ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 Triple DES sử dụng DES ba lần cho một văn bản với những khóa khác nhau Hiệnnay Triple DES được xem là an toàn mặc dù tốc độ thực hiện khá chậm Mộtphương pháp khác ít đòi hỏi khả năng tính toán hơn là DES-X với việc tăng độ dài
từ khóa bằng cách thực hiện phép XOR từ khóa với phần thêm trước và sau khithực hiện DES Một phương pháp nữa là GDES được đề xuất làm tăng tốc độ mãhóa nhưng nó được chứng tỏ là không an toàn trước tấn công vi sai (differential cryptanalysis).
Năm 2001, sau một cuộc thi quốc tế, NIST đã chọn ra một thuật toán mới,AES, để thay thế cho DES Tác giả của thuật toán được biết dưới tên là Rijndael.Những thuật toán khác có tên trong danh sách cuối cùng của cuộc thi AES baogồm: RC6, Serpent, MARS và Twofish
b) Mô tả thuật toán :
Trang 16Hình 1 – Cấu trúc thuật toán Feistel dùng trong DES
DES là thuật toán mã hóa khối: nó xử lý từng khối thông tin của bản rõ có
độ dài xác định và biến đổi theo những quá trình phức tạp để trở thành khối thôngtin của bản mã có độ dài không thay đổi Trong trường hợp của DES, độ dài mỗikhối là 64 bit DES cũng sử dụng khóa để cá biệt hóa quá trình chuyển đổi Nhờvậy, chỉ khi biết khóa mới có thể giải mã được văn bản mã Khóa dùng trong DES
Trang 17có độ dài toàn bộ là 64 bit Tuy nhiên chỉ có 56 bit thực sự được sử dụng; 8 bit cònlại chỉ dùng cho việc kiểm tra Vì thế, độ dài thực tế của khóa chỉ là 56 bit.
Giống như các thuật toán mã hóa khối khác, khi áp dụng cho các văn bảndài hơn 64 bit, DES phải được dùng theo một phương pháp nào đó Trong tài liệuFIPS-81 đã chỉ ra một số phương pháp, trong đó có một phương pháp dùng choquá trình nhận thực Một số thông tin thêm về những cách sử dụng DES đượcmiêu tả trong tài liệu FIPS-74
Tổng thể :
Cấu trúc tổng thể của thuật toán được thể hiện ở Hình 1: có 16 chu trình giống
nhau trong quá trình xử lý Ngoài ra còn có hai lần hoán vị đầu và cuối (Initial and
final permutation - IP & EP) Hai quá trình này có tính chất đối nhau (Trong quá
trình mã hóa thì IP trước EP, khi giải mã thì ngược lại) IP và EP không có vai trò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 đưathô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ạngFeistel)
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, đặcbiệ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ủakhố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ạicủa khối và hai phần được tráo đổi để xử lý trong chu trình kế tiếp Sau chu trìnhcuố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ếncho 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ốngiai đoạn: