Cho đến ngày nay với sM phát triển của công nghệ mã hóa phi đối xứng, người ta đã nghiên cứu và đưa ra nhiều kỹ thuật, nhiêu mô hình cho phép chung ta áp dJng xây dJng các ứng dJng đồi h
GIỚI THIỆU VỀ DES
GIỚI THIỆU VỀ 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 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ử dJng 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 dJng 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 thMc tiễn Thuật toán được tin tưởng là an toàn trong thMc tiễn có dạng Triple DES (thMc 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).
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ỳ, CJc 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, 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 dMa trê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, Walter Tuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith và Bryant Tuckerman
Quá trình
1 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ử dJng chính thức đối với thông tin không mật DES tiếp tJc đượ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ử dJng 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 thMc sM cấp thiết là vào năm 1998 khi một cuộc tấn công bạo lMc chứng tỏ rằng DES có thể bị phá vỡ trên thMc tế Các phương pháp thám mã này sẽ được miêu tả kỹ hơn ở phần sau.
SM 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 vMc 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."
15 tháng 5 năm 1973 NBS đưa ra lời kêu gọi đầu tiên về một thuật toán mã hóa tiêu chuẩn.
27 tháng 8 năm 1974 NBS đưa ra lời kêu gọi thứ hai.
17 tháng 3 năm 1975 DES được công bố trên công báo liên bang Hoa kỳ để công chúng đóng góp ý kiến.
Tháng 8, 1976 Hội thảo đầu tiên về DES.
Tháng 9, 1976 Hội thảo lần hai, bàn về nền tảng toán học của DES.
Tháng 11, 1976 DES được phê chuẩn làm tiêu chuẩn chính thức.
15 tháng 1 năm 1977 DES được 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 dMa trên DES.
22 tháng 1 năm 1988 DES được xác nhận lần hai với tên FIPS 46-1, thay thế FIPS
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 bạo lMc Tuy nhiên, kiểu tấn công này đòi hỏi người tấn công lMa chọn
2 47 văn bản rõ (một điều kiện không thMc tế) [1]
12 năm 1993 DES được xác nhận lần ba với tên FIPS 46-2.
1994 ThMc nghiệm thám mã DES lần đầu tiên được thMc hiện với kỹ thuật thám mã tuyến tính [2]
Tháng 6, 1997 DM á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).
Thá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ờ.
Tháng 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.
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ử dJng còn DES chỉ được dùng cho các hệ thống ít quan trọng.
11 năm 2001 AES được công bố trong FIPS 197
26 tháng 5 năm 2002 AES trở thành tiêu chuẩn
26 tháng 7 năm 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ỳ (http://edocket.access.gpo.gov/2004/04-16894.htm).
19 tháng 5 năm 2005 NIST bãi bỏ FIPS 46-3
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 dJng 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í dJ 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ử dJng 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ử dJng một cách an toàn hơn Những người sử dJng 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 (Xem thêm FIPS PUB 46-3) Triple DES sử dJng DES ba lần cho một văn bản với những khóa khác nhau Hiện nay Triple DES được xem là an toàn mặc dù tốc độ thMc hiện khá chậm Một phươ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 thMc hiện phép XOR từ khóa với phần thêm trước và sau khi thMc 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 Thuật toán được trình diện 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 bao gồm: RC6, Serpent, MARS và Twofish.
HỆ MÃ HÓA CHUẨN DES
Giới thiệu về hệ mã chuẩn
Bước sang kỷ nguyên máy tính, việc sử dJng máy tính nhanh chóng được phổ cập trong mọi hoạt động của con người, và tất nhiên việc dùng máy tính trong truyền tin bảo mật đã được hết súc chú ý Các hệ mật mã với các thuật toán lập mật mã và giải mã thMc hiện bằng máy tính được phát triển nhanh chóng, đồng thời các lĩnh vMc truyền tin cần sử dJng mật mã cũng được mở rộng sang nhiều địa hạt kinh tế và xã hội ngoài các địa hạt truyền thống Vào đầu thập niên 1970, trước tình hình phát triển đó đã nẩy sinh nhu cầu phải chuẩn hóa các giải pháp mật mã được sử dJng trong xã hội, để một mặt hướng dẫn các thành viên trong xã hội thMc hiện quyền tuyên truyền tin bảo mật hợp pháp của mình, mặt khách, bảo đảm sM quản lý và giám sát của nhà nước đối với các hoạt động bảo mật đó, Do đó, tại Hòa Kỳ, ngày 15/05/1973, Văn phòng quốc gia về Chuẩn (NBD – National Bureau of Standars) công bố một yêu cầu công khai xây dMng và đề xuất một thuật toán mật mã chuẩn, đáp ứng các đòi hỏi chủ yếu là:
- Thuật toán phải được định nghĩa đầy đủ và dễ hiểu.
- Thuật toán phải có độ an toàn cao, độ an toàn đó không phJ thuộc vào sM giữ bí mật của bản thân thuật toán, mà chỉ nằm ở sM giữ bí mật của khóa.
- Thuật toán phải được sẵn sàng cung cấp cho mọi người dùng.
- Thuật toán phải thích nghi được với việc dùng có các ứng dJng khác nhau.
- Thuật toán phải cài đặt được một cách tiết kiệm trong các thiết bị điện tử.
- Thuật toán phải sử dJng được có hiệu quả.
- Thuật toán phải có khả năng được hợp thức hóa.
- Thuật toán phải xuất khẩu được
Mô tả sơ đồ mã hóa DES
Des là thuật toán mã hóa với input là khối 64 bit, output cũng là khối 64 bit Khóa mã hóa có độ dài 56 bit, thMc ra chính xác hơn phải là 64 bit với các bit ở vị trí chia hết cho 8 có thể sử dJng là các bit kiểm tra tính chẵn lẻ Số khóa của không gian khóa K là 2 56
Hình 2.1: Chuẩn mã hóa dữ liệu DES Thuật toán thMc hiện 16 vòng Từ khóa input k, 16 khóa con 48 bit K sẽ được sinh ra, i mỗi khóa cho một vòng thMc hiện trong quá trình mã hóa Trong mỗi vòng, 8 ánh xạ thay thế 6 bit thành 4 bit S (còn gọi là hộp S ) được chọn lMa kỹ càng và cố định, ký hiệu chung là S sẽ i i được sử dJng Bản rõ 64 bit sẽ được sử dJng chia thành 2 nửa L và R Các vòng có chức 0 0 năng giống nhau, nhận input là L và R từ vòng trước và sinh ra output là các xâu 32 bit L i-1 i-1 i và R như sau:i
- Là ký hiệu của phép tuyển loại trừ (XOR) của hai xâu bit theo modulo 2.
- Hàm f là một hàm phi tuyến
- E là hoán vị mở rộng ánh xạ R từ 32 bit thành 48 bit( đôi khi tất cả các bit được sử i-1 dJng hoặc một bit sẽ được sử dJng 2 lần).
- P là hóa vị cố định khác của 32 bit.
Môt H hoán vi Hbit khởi đầu (IP) được sử dJng cho vòng đầu tiên ; sau vòng cuối cùng nửa trái và phải sẽ được đổi cho nhau và cuối cùng xâu kết quả sẽ được hoán vi Hbit lần cuối bởi hoán vi Hngược của IP (IP-1 )
Quá trình giải mã diễn ra tương tM nhưng với các khoá con ứng dJng vào các vòng trong theo thứ tM ngược lại
Có thể hình dung đơn giản là phần bên phải trong mỗi vòng (sau khi mở rộng input 32 bit thành 8 ký tM 6 bit – xâu 48 bit) sẽ thMc hiê Hn mô Ht tính toán thay thế phJ thuộc khóa trên mỗi một ký tM trong xâu 48 bit, và sau đó sử dJng mô Ht phép chuyển bit cố định để phân bố lại các bit của các ký tM kết quả hình thành nên output 32 bit
Các khoá con K (chứa 48 bit của K) được tính bằng cách sử dJng các bảng PC1 và i
PC2 (Permutation Choice 1 và 2) Trước tiên 8 bit (k , k8 16,…,k64) của K bị bỏ đi (áp dJng PC1) 56 bit còn lại được hoán vi Hvà gán cho hai biến 28 bit C và D , và sau đó trong 16 vòng lă Hp cả C và D sẽ được quay 1 hoăc H 2 bit, và các khóa con 48 bit K được choni từ kết quả của H viê Hc ghép hai xâu với nhau
Như vâ Hy, ta có thể mô tả toàn bô H thuâ Ht toán sinh mã DES dưới dạng công thức như sau:
- T mô tả phép hoán vị của các khối L (1 ≤ i ≤ 15) iRi
- f mô tả viêi c dùng hàm f với khoá K (1 ≤ i ≤ 16) H i
Input: bản rõ M = m1m …m2 64, khóa 64 bit K = k1k …k2 64 (bao gồm cả 8 bit chẵn lẻ, việc thêm bit chẵn lẻ sao cho các đoạn khóa 8 bit có số bit 1 là lẻ)
1 Sinh khóa con Tính các khóa con theo thuâ Ht toán sinh khóa con bên dưới
2 (L0,R0) IP(m1m …m2 64) (Sử dJng bảng hoán vi IP để hoán vi HH các bit , kết quả nhận được chia thành hai nửa là L = m0 58m …m50 8, R = m0 57m …m49 7.)
Tính các L và R theo các công thức (1) và (2), viêci i tínhH f(Ri-1, K ) = P( S( E(R ) K ) ) được thMc hiện như sau: i i-1 i a) Mở rộng R = ri-1 1r …r2 32 từ 32 bit thành 48 bit bằng cách sử dJng hoán vi Hmở rộng E
T E(R ) (Vì thế T = ri-1 32r r …r1 2 32r1) b) T’ T K Biểu diễn T’ như là các xâu gồm 8 ký tM 6 bit T’ = (Bi 1,…,B8) c) T’’ (S1(B1), S2(B2),…, S8(B8)) Trong đó Si(Bi) ánh xạ b1b …b2 6 thành các xâu 4 bit của phần tử thuộc hàng r và cột c của các bảng S (S box) trong đó r = 2 * b + b và c = bi 1 6 2b b b3 4 5 là mô Ht số nhị phân từ 0 tới 15 Chẳng hạn S (011011) sẽ cho r = 1 và c = 13 và kết quả là 5 1
12 biểu diễn dưới dạng nhi Hphân là 0101 d) T’’’ P(T’’) trong đó P là hoán vi Hcố định để hoán vị 32 bit của T ’’ = t1t …t2 32 sinh ra t t …t16 7 25
4 b1b …b2 64 (R , L ) (đổi vi 16 16 trícác khối cuối cùng L , R H 16 16
5 C IP (b -1 1b …b2 64) (Biến đổi sử dJng IP , C = b-1 )
Sơ đồ 16 vòng lă Hp của DES:
Hình 2.2: Sơ đồ mã hóa DES
Hoán vị IP và hoán vị ngược IP -1
Bảng hoán vị IP đưa ra trong bảng dưới đây:
Bảng 2.1: bảng hoán vị IP Bảng hoán vị ngược IP : -1
Bảng 2.2: Bảng hóa vị ngược IP -1 Hai hoán vị IP và IP không có ý nghĩa gì về mă -1 t mâ HH t mã mà hoàn toàn nhằm tạo điều kiê Hn cho viê Hc “chip hoá” thuâ Ht toán DES
Sơ đồ cấu trúc mô Ht vòng DES:
Hình 2.3: Sơ đồ một vòng DES
Thuật toán sinh khóa con
Mười sáu vòng lă Hp của DES chạy cùng thuâ Ht toán như nhau nhưng với 16 khóa con khác nhau Các khóa con đều được sinh ra từ khoá chính của DES bằng mô Ht thuâ Ht toán sinh khoá con Khoá chính K (64 bit) đi qua 16 bước biến đổi, tại mỗi bước biến đổi này mô Ht khoá con được sinh ra với đô H dài 48 bit
Có thể mô tả thuâ Ht toán sinh các khóa con chi tiết như sau:
Input: khóa 64 bit K = k1k k2 64 (bao gồm cả 8 bit kiểm tra tính chẵn lẻ)
1) Định nghĩa v , 1 i 16 như sau: v = 1 đối với i {1,2,9,16}; v = 2 cho các i i i trường hợp khác (Đây là các giá tri Hdịch trái cho các quay vòng 28 bit bên dưới)
2) T PC1(K); biểu diễn T thành các nửa 28 bit (C , D ) (Sử dJng bảng PC1 để chọn 0 0 các bit từ K: C = k0 57k k49 36, D = k0 63k k55 4.)
3) For i from 1 to 16, tính các K như sau: C (Ci i i-1 v ), Di i (Di-1 v ), K i i
PC2(Ci , D ) (Sử dJng bảng PC2 để chọn 48 bit từ xâu ghép bi 1 2b b56 của C và D : K = i i i b b b14 17 32 ‘ ’ là ký hiệu dịch vòng trái.)
Sơ đồ sinh các khóa con của DES:
Hình 2.4: Sơ đồ tạo khóa con của DES
64 bit đầu vào sẽ giảm xuống còn 56 bit bằng cách bỏ đi 8 bit (ở các vị trí chia hết cho 8), các bit này dùng để kiểm tra bit chẵn lẻ Sau đó 56 bit này lại được trích lấy 48 bit để sinh ra cho 16 vòng khoá của DES
Bảng trâ Ht tM khoá (PC1):
Bảng 2.3: Bảng PC1 Đầu tiên 56 bit khóa được chia ra thành hai nửa 28 bit Sau đó, hai nửa 28 bit này được dịch vòng trái hoă Hc 1 hoă Hc 2 bit phJ thuô Hc vào số bit dịch tương ứng với vòng đó
Số bit dịch của các vòng (LS):
Bảng 2.4: Bảng dịch bit tại các vòng lặp của DES Sau khi dịch vòng, một bảng chọn 48 bit được sử dJng Vì cách hoán vị này của các bit được chọn như mô Ht tổ hợp con của các bit nên được gọi là “hoán vị nén” hay “trâ Ht tM nén” Bảng trâ Ht tM nén(PC2):
Ví dJ như chúng ta có thể nhâ Hn thấy bit ở vị trí 33 của khoá sẽ dịch sang vị trí 35 ra ngoài, còn bit ở vị trí 18 của khóa sẽ bị bỏ qua Chính viê Hc dịch vòng này, tạo nên mô Ht tâ Hp hợp con của khoá được sử dJng trong mỗi tổ hợp khoá Mỗi bit được sử dJng khoảng 14 lần trong tổng số 16 tổ hợp khoá, dù không phải tất cả các bít được sử dJng mô Ht cách chính xác cùng mô Ht lúc trong mỗi lần sử dJng.
Mô tả hàm f
Hàm f(Ri-1,Ki) là môt hàm có hai biến vào: biến thứ nhất R là môH i-1 t xâu bit có đô HH dài 32 bit, biến thứ hai khoá K là môi t xâu bit có đô HH dài 48 bit Đầu ra của f là mô Ht xâu bit có đô H dài 32 bit Hàm f có thể là hàm bất kỳ tuy nhiên vì nguồn gốc “sức mạnh” của DES nằm trong hàm f nên viê Hc chọn hàm f phải cẩn thâ Hn để tránh bị phá mã mô Ht cách dễ dàng Thông thường hàm f được chọn thường là hàm có tính chất f = f , tức f(f(x)) = x -1
Trong sơ đồ mô tả mã hoá của DES được công bố bởi Uỷ ban Tiêu chuẩn Quốc gia Hoa
Kỳ (The Untied States Nation Bureau of Standard), hàm f thMc hiê Hn các viê Hc sau:
- Biến thứ nhất R được mở rôi-1 ng thành mô HH t xâu bit có đô H dài 48 bit theo mô Ht hàm mở rô Hng cố định E ThMc chất hàm mở rô Hng E(R ) là môi-1 t hoán vị có lă HH p trong đó lă Hp lại 16 bit của R i-1
- Tính E(Ri-1) K và viết kết quả thành 8 xâu 6 bit Bi 1B2B B3 4B B5 6B B7 8
- Đưa 8 khối B vào 8 bảng S , S , , S (được gọi là các hôi 1 2 8 p S-Box) Mỗi hô Hp S-Box là H mô Ht bảng 4*16 cố định có các cô Ht từ 0 đến 15 và các hàng từ 0 đến 3 Với mỗi xâu 6 bit B = i b b b b b b1 2 3 4 5 6, ta tính được Si(Bi) như sau: hai bit b xác định hàng r trong hô1b6 p Si, bốn bit H b b b b2 3 4 5 xác định cô Ht c trong hô Hp S Khi đó, Si i(Bi) sẽ xác định phần tử C = S (r,c), phần tử này i i viết dưới dạng nhị phân 4 bit Như vâ Hy, 8 khối 6 bit B (1 ≤ i ≤ 8) sẽ cho ra 8 khối 4 bit C với i i
- Xâu bit C = C1C C2 3C C4 5C C6 7C8 có đô dài 32 bit được hoán vị theo phép hoán vị P (hô HH p P- Box) Kết quả P(C) sẽ là kết quả của hàm f(R K ), và cũng chính là R cho vòng sau i-1, i i
Hàm f cũng có thể mô tả bằng hình vẽ sau:
Hàm ( ánh xạ) mở rộng (E)
Hàm mở rô Hng (E) sẽ tăng đô H dài của R từ 32 bit lên 48 bit bằng cách thay đổi các thứ tM i của các bit cũng như lă Hp lại các bit Viê Hc thMc hiê Hn này nhằm hai mJc đích:
- Làm đô H dài của R cùng cỡ với khoá K để thMc hiêi n viê HH c cô Hng modulo XOR
- Cho kết quả dài hơn để có thể được nén trong suốt quá trình thay thế
Tuy nhiên, cả hai mJc đích này đều nhằm mô Ht mJc tiêu chính là bảo mâ Ht dữ liê Hu Bằng cách cho phép 1 bit có thể chèn vào hai vị trí thay thế, sM phJ thuô Hc của các bit đầu ra với các bit đầu vào sẽ trải rô Hng ra DES được thiết kế với điều kiê Hn là mỗi bit của bản mã phJ thuô Hc vào mỗi bit của bản rõ và khoá
Sơ đồ hàm mở rô Hng:
Hình 2.6: Sơ đồ hàm mở rộng (E) Đôi khi nó được gọi là hàm E-Box, mỗi 4 bit của khối vào, bit thứ nhất và bit thứ tư tương ứng với 2 bit của đầu ra, trong khi bit thứ 2 và 3 tương ứng với 1 bit ở đầu ra Bảng sau đây miêu tả vị trí của bit ra so với bit vào.
Bảng mô tả hàm mở rô Hng (E):
Bảng 2.6: Bảng mô tả hàm mở rộng E
Ví dJ như bit ở vị trí số 3 của khối vào sẽ di chuyển đến vị trí số 4 của khối ra và bit ở vị trí 21 ở đầu vào sẽ di chuyển đến vị trí 30 và 32 ở đầu ra.
Mô tả hộp S-Box
Đối với sơ đồ mã hoá DES, mọi tính toán đều là tuyến tính, tức là viê Hc tính phép tuyển loại trừ XOR của hai đầu ra cũng giống với phép tuyển loại trừ XOR của hai đầu vào rồi tính toán đầu ra Chỉ duy nhất có các tính toán với hô Hp S là phi tuyến Chính vì vâ Hy các hô Hp S-Box (chứa đMng các thành phần phi tuyến của hê H mâ Ht) là quan trọng nhất đối với đô H mâ Ht của hê H mã, chính các hô Hp S tạo nên sM hỗn loạn (confusion) và sM khuếch tán (diffusion) của DES Năm
1976, NSA đã đưa ra tiêu chuẩn thiết kế hô Hp S như sau:
- Mỗi hàng trong mỗi hô Hp S là mô Ht hoán vị của các số nguyên từ 0 đến 15
- Không có hô Hp S nào là hàm Affine hay tuyến tính đối với các đầu vào của nó
- SM thay đổi của mô Ht bit đầu vào sẽ dẫn đến sM thay đổi ít nhất hai bit đầu ra
- Đối với hô Hp S bất kỳ và với đầu vào x (mô Ht xâu bit có đô H dài bằng 6) bất kỳ, thì S(x) và S(x 001100) phải khác nhau ít nhất là 2 bit
NSA cũng tiết lô H 3 thuô Hc tính của hô Hp S, những thuô Hc tính này đảm bảo tính confusion và diffusion của thuâ Ht toán:
- Các bit vào luôn phJ thuô Hc không tuyến tính với các bit ra.
- Sửa đổi ở mô Ht bit vào làm thay đổi ít nhất là hai bit ra
- Khi mô Ht bit vào được giữ cố định và 5 bit còn lại cho thay đổi thì hô Hp S thể hiê Hn mô Ht tính chất được gọi là “phân bố đồng nhất”: so sánh số lượng bit số 0 và 1 ở các đầu ra luôn ở mức cân bằng Tính chất này khiến cho viê Hc phân tích theo lý thuyết thống kê để tìm cách phá hô Hp
Sau khi cô Hng modulo với khoá K, kết quả thu được chuỗi 48 bit chia làm 8 khối đưa vào 8 hô Hp S-Box Mỗi hô Hp S-Box có 6 bit đầu vào và 4 bit đầu ra (tổng bô H nhớ yêu cầu cho 8 hô Hp S- Box chuẩn DES là 256 bytes) Kết quả thu được là mô Ht chuỗi 32 bit tiếp tJc vào hô Hp P-Box
Ta có thể xây dMng các hô Hp S của riêng mình, tuy nhiên cũng có thể dùng các hô Hp S chuẩn đã được công bố:
Ví dJ: Giả sử đầu vào của hô Hp S6 là chuỗi bit 110011 từ 31 đến 36 Bit đầu tiên và bit cuối cùng kết hợp lại thành 11 tương ứng với hàng 3 của hô Hp S Bốn bit giữa có giá trị 1001, tương6 ứng với cô Ht 9 Như vâ Hy, giá trị nhâ Hn được là 14 (số đếm của cô Ht, hàng bắt đầu từ 0) và giá trị
1110 được thay thế cho giá trị 110110 ở đầu ra.
Hộp P-Box
Viê Hc hoán vị này mang tính đơn ánh, nghĩa là mô Ht bit đầu vào sẽ cho mô Ht bit ở đầu ra, không bit nào được sử dJng hai lần hay bị bỏ qua Hô Hp P-Box thMc chất chỉ làm chức năng sắp xếp đơn thuần theo bảng sau:
Ví dJ như bit 21 sẽ dịch chuyển đến bit thứ 4, trong khi bit thứ 4 lại dịch chuyển đến bit
31 Kết quả cuối cùng của hô Hp P-Box lại đ ợc XOR với nửa trái của khối 64 bit của chính nó ƣ(tức L để tạo ra R ) và sau đó nửa trái và nửa phải đảo cho nhau và bắt đầu môi-1 i t vòng khác.H
IX Ví dụ về mã hóa DES Để có thể hiểu rõ hơn về phương pháp mã hoá DES, chúng ta hãy xét ví dJ sau:
- Mô Ht bản rõ mang nô Hi dung: “0123456789ABCDEF”
- Sử dJng khoá (ở dạng thâ Hp phân): “133457799BBCDFF1” Khoá này ở dạng nhị phân là mô Ht chuỗi bit như sau (không có bit kiểm tra):
- Chuyển đổi IP, chúng ta lấy ra L và R : 0 0
- 16 vòng mã hoá được thMc hiê Hn như sau:
Bảng 2.16: Ví dJ về các bước thMc hiê Hn của DES
CÁC ĐIỂM YẾU CỦA DES
Nếu ta ký hiê Hu là phần bù của u (ví dJ như: 0100101 là phần bù của 1011010) thì DES có tính chất sau: y = DES(x,k) → = DES( , )
Cho nên nếu ta biết mã y được mã hoá từ thông tin x với khoá K thì ta suy ra được bản mã được mã hoá từ bản rõ với khoá Tính chất này chính là mô Ht yếu điểm của DES bởi vì qua đó đối phương có thể loại bỏ đi mô Ht số khoá phải thử khi tiến hành thử giải mã theo kiểu vét cạn.
Khoá yếu là các khoá mà theo thuâ Ht toán sinh khoá con thì tất cả 16 khoá con đều như nhau:
K1 = K = = K = K 2 15 16 Điều đó khiến cho viêc H mã hóa và giải mã đối với khoá yếu là giống hê Ht nhau
Có tất cả 4 khoá yếu sau:
Bảng 3.1: Các khóa yếu của DES Đồng thời còn có 6 că Hp khoá nửa yếu (semi-weak key) khác với thuô Hc tính như sau: y = DES(x,k ) và y = DES(x,k )1 2 nghĩa là với 2 khoá khác nhau nhưng mã hoá ra cùng mô Ht bản mã từ cùng mô Ht bản
{01} 14 {01} 14 01FE 01FE 01FE 01FE FE01 FE01 FE01 FE01 {10} 14 {10} 14 {01} 14 {10} 14 1FE0 1FE0 0EF1 0EF1 E01F E01F F10E F10E {10} 14 {01} 14 {01} 14 {0} 28 01E0 01E0 01F1 01F1 E001 E001 F101 F101 {10} 14 {0} 28 {01} 14 {1} 28 1FFE 1FFE 0EFE 0EFE FE1F FE1F FE0E FE0E {10} 14 {1} 28 {0} 28 {01} 14 011F 011F 010E 010E 1F01 1F01 0E01 0E01 {0} 28 {10} 14 {1} 28 {01} 14 E0FE E0FE F1FE F1FE FEE0 FEE0 FEF1 FEF1 {1} 28 {10} 14
Bảng 3.2: Các khóa nửa yếu của DES
III DES có cấu trúc đại số
Với 64 bit khối bản rõ có thể được ánh xạ lên tất cả vị trí của 64 bit khối bản mã trong 2 cách Trong thuâ 64 t toán DES, với 56 bit khoá, có thể cho chúng ta 2 (khoảng H 56
10 17 ) vị trí ánh xạ Với viê Hc đa mã hoá thì không gian ánh xạ còn lớn hơn Tuy nhiên điều này chỉ đúng nếu viê Hc mã hoá DES là không có cấu trúc
Với DES có cấu trúc đại số thì viê Hc đa mã hoá sẽ được xem ngang bằng với viê Hc đơn mã hoá Ví dJ như có hai khoá bất kỳ K và K thì sẽ luôn được khoá thứ K như 1 2 3 sau:
EK2(EK1(x)) = EK3(x) Nói mô Ht cách khác, viê Hc mã hoá DES mang tích chất “nhóm”, đầu tiên mã hoá bản rõ bằng khoá K sau đó là khoá K sẽ giống với viê1 2 c mã hoá ở khoá K Điều này thMc H 3 sM quan trọng nếu sử dJng DES trong đa mã hoá Nếu mô Ht “nhóm” được phát với cấu trúc hàm quá nhỏ thì tính an toàn sẽ giảm.
DES có 2 = 10 khoá Nếu chúng ta biết đ ợc mô 56 17 ƣ t că HH p “tin/mã” thì chúng ta có thể thử tất cả 10 khả năng này để tìm ra khoá cho kết quả khớp nhất Giả sử nh mô 17 ƣ t H phép thử mất 10 s, thì chúng sẽ mất 10 -6 11 s, tức 7300 năm Nhưng với các máy tính được chế tạo theo xử lý song song Chẳng hạn với 10 con chipset mã DES chạy song 7 song thì bây giờ mỗi mô Ht con chipset chỉ phải chịu trách nhiê Hm tính toán với 10 phép 10 thử Chipset mã DES ngày nay có thể xử lý tốc đô H 4.5×10 bit/s tức có thể làm được 7 hơn 10 phép mã DES trong mô 5 t giây H
Vào năm 1976 và 1977, Diffie và Hellman đã ước lượng rằng có thể chế tạo được mụ Ht mỏy tớnh chuyờn dJng để vột cạn khụng gian khoỏ DES trong ẵ ngày với cỏi giỏ
20 triê Hu đô la Năm 1984, chipset mã hoá DES với tốc đô H mã hoá 256000 lần/giây Năm 1987, đã tăng lên 512000 lần/giây Vào năm 1993, Michael Wiener đã thiết kế mô Ht máy tính chuyên dJng với giá 1 triê Hu đô la sử dJng phương pháp vét cạn để giải mã DES trung bình trong vòng 3,5 giờ (và châ Hm nhất là 7 giờ) Đến năm 1990, hai nhà toán học người Do Thái - Biham và Shamir - đã phát minh ra phương pháp phá mã vi sai (diferential cryptanalyis), đây là mô Ht kỹ thuâ Ht sử dJng những phỏng đoán khác nhau trong bản rõ để đưa ra những thông tin trong bản mã Với phương pháp này, Biham và Shamir đã chứng minh rằng nó hiê Hu quả hơn cả phương pháp vét cạn
Phá mã vi sai là thuâ Ht toán xem xét những că Hp mã hoá khác nhau, đây là những că Hp mã hoá mà bản rõ của chúng là khác biê Ht Người ta sẽ phân tích tiến trình biến đổi của những că Hp mã này thông qua các vòng của DES khi chúng được mã hoá với cùng mô Ht khoá K Sau đó sẽ chọn hai bản rõ khác nhau mô Ht cách ngẫu nhiên hợp lý nhất Sử dJng sM khác nhau của kết quả mã hoá và gán cho những khoá khác nhau mô Ht cách phù hợp nhất Khi phân tích nhiều hơn những că Hp bản mã, chúng ta sẽ tìm ra mô Ht khoá được xem là đúng nhất.
Như đã trình bày ở các phần trên, hê H mã DES (hay chuẩn mã hóa dữ liêJ ) với không gian khóa vẻn vẹn có 2 khóa nên thMc tế hiện nay có thể bị thám mã trong 54
29 khoảng thời gian vài giờ đồng hồ Vì vâ Hy viê Hc tìm kiếm các hê H mã khác thay thế cho DES là mô Ht điều cần thiết Một trong những cách thức được xem xét đầu tiên là tận dugnj DES nhưng sử dJng mã hóa nhiều lần Cách thứ nhất là sử dJng hai khóa để mã hóa hai lần như sau:
Cách này gọi là double DES hay 2DES, khóa của hê H mã theo mô hình này là 112 bit, có vẻ an toàn hơn so với DES, ít nhất là trên nguyên tắc Tuy nhiên các chứng minh về mặt lý thuyết (không nằm trong phạm vi của tài liệu này) đã cho thấy rằng hê H mã này không hề an toàn hơn DES (thuật toán thám mã theo kiểu vét cạn brute -force yêu cầu số phép tính gấp đôi để thám mã 2DES so với DES)
Cách thức thứ hai và hiê Hn nay đang được sử dJng rô Hng rãi là mã hóa DES ba lần , cách này goị là Triple DES (TDES) hay 3DES, hoăc H một cách chuẩn mMc hơn là TDEA (Triple Data Encryption Algorithm) Mô hình sử dJng đơn giản nhất của Triple DES là mã hóa 3 lần sử dJng 3 khóa K , K , K như hình minh hoạ sau:1 2 3
Hình 3.1: Triple DES Bản mã C = DESK3(DES (DESK2 K1(M)), mô hình này goị là EEE vì cả ba bước sử dJng ba khóa ở đây đều sử dJng thuâ Ht toán mã hóa chuẩn của DES , một biến thể khác của mô hình này gọi là EDE với bước ở giữa sử dJng thuật toán giải mã của DES: