Cơ sở mật mã học - Chương 3: Chuẩn mã dữ liệu

Ngày 15.5.1973. Uỷ ban tiêu chuẩn quốc gia Mỹ đã công bố một khuyến nghị cho các hệ mật trong Hồ sơ quản lý liên bang. Điều này cuối cùng đã dẫn đến sự phát triển của Chuẩn mã dữ liệu (DES) và nó đã trở thành một hệ mật được sử dụng rộng rãi nhất trên thế giới. DES được IBM phát triển và được xem như một cải biên cuả hệ mật LUCIPHER. Lần đầu tiên DES được công bố trong Hồ sơ Liên bang vào ngày 17.3.1975. Sau nhiều cuộc trânh luận công khai, DES đã được chấp nhận chọn làm chuẩn cho các ứng dụng không được coi là mật vào 5.1.1977. Kể từ đó cứ 5 năm một lần, DES lại được Uỷ ban Tiêu chuẩn Quốc gia xem xét lại. Lần đổi mới gàn đây nhất của DES là vào tháng 1.1994 và tiếp tới sẽ là 1998. Người ta đoán rằng DES sẽ không còn là chuẩn sau 1998.

 

 

doc51 trang | Chuyên mục: Mật Mã Học | Chia sẻ: dkS00TYs | Lượt xem: 1390 | Lượt tải: 1download
Tóm tắt nội dung Cơ sở mật mã học - Chương 3: Chuẩn mã dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 bằng một thuật toán đệ quy.
Ví dụ 3.5.
	Một số chương trình máy tính đã được thực hiện để kiêmr tra phương pháp này. Trong đó đã tạo ra một mẫu ngẫu nhiên gồm 120 cặp bản rõ với các XOR xác định và các bản rõ này đã được mã hoá bằng cùng một khoá ( ngẫu nhiên ). Bảng 3.1 đưa ra 120 cặp các bản rõ và các bản mã tương ứng ở dạng mã hexa.
	Khi tính các tập được phép ta thu được ni tập được phép có lực lượng như sau:
i
ni
2
3
4
5
6
7
8
9
10
111
180
231
255
210
120
45
10
1
	Tập được phép duy nhất có lực lượng 10 là:
{24,29,30,48,50,52,55,83,92,118}
	Thực tế tập được tạo ra theo 10 cặp đúng. Chỉ có tập được phép này mới chứa các bít khoá đúng cho J2, J5, J6, J7, J8. Chúng có giá trị như sau:
J2 = 011001
J5 = 110000
J6 = 001001
J7 = 101010
J8 = 100011
Chú ý rằng tất cả các tập được phép có lực lượng tối thiểu là 6 không kể 3 tập được phép có lực lượng là 5 sinh ra từ các cặp đúng bởi vì
với 6 £ i £ 10.
	Phương pháp này sẽ cho ta biết 30 bít trong 56 bít khoá. Bằng một đặc trưng 3 vòng khác ( nêu ở hình 3.14 ), ta có thể tính thêm 12 bít khoá nữa ( các bít này nằm trong J1 và J4). Bây giờ chỉ còn lại 14 bít khoá chưa biết. Vì 214 = 16384 là một số quá nhỏ nên có thể dùng phép tìm kiếm vét cạn để xác định nốt chúng.
Hình 3.14. 
 L0' = 0020000816 R0' = 0000040016 
 L1' = 0000040016 R1' = 0000000016 p = 1/4
 L2' = 0000000016 R2' = 0000040016 p = 1
 L3' = 0000040016 R3' = 0020000816 p = 1/4
	Toàn bộ khoá ( ở dạng hexa, kể cả các bít kiểm tra chẵn lẻ ) sẽ là:
34E9F71A20756231
	Như đã nói ở trên, 120 cặp được cho ở bảng 3.1. Trong cột thứ hai, dấu (*) kí hiệu cặp đúng, dấu (**) kí hiệu cặp sai nhận biết được và nó sẽ bị loại bỏ bởi phép lọc. Trong số 120 cặp, có 73 cặp được xác định là các cặp sai nhờ quá trình lọc, bởi vậy 47 cặp còn lại sẽ là các cặp đúng có thể.
3.6.3. Các ví dụ khác về DC.
	Các kỹ thuật DC có thể được sử dụng để tấn công DES có trên 6 vòng. Với DES 8 vòng cần 214 bản rõ chọn lọc, DES 10, 12, 14, 16 vòng có thể phá được với tương ứng là 224, 231, 239 và 247 bản rõ chọn lọc. Vào thời điểm hiện tại, tấn công DES có trên 10 vòng là không thực tế.
	Một loại mã tích hoán vị - thay thế khác với DES cũng có thể dùng DC để phá ( ở mức độ khác nhau ). Trong các hệ này, có một số hệ mật hoán vị - thay thế đã được đưa ra trong những năm gần đây như FEAL,REDOC-II và LOKI.
Ghi chú ( của người dịch ): theo công bố của Micheal Wiener vào 1993, với 107 USD có thể xây dựng thiết bị chuyên dụng để phá DES trong khoảng 21 phút. Với 108 USD, các bản tin DES có thể bị phá trong khoảng 2 phút. Như vậy, DES không còn bí mật đối với NAS. Tuy nhiên cũng không cần một thiết bị chuyên dụng đắt tiền như vậy để phá DES. Các thông báo được mã hoá bằng DES có thể bị phá bằng các máy tính thông thường trên với điều kiẹen có vẻ siêu thực: có trên 243 ´ 26 bít rõ - mã với một khoá 56 bít cố định, tuy nhiên bạn phải chờ lâu hơn.
	Trong hội nghị CRYPTO'94 M.Matsui đã trình bày một kỹ thuật phá DES mới được gọi là " thám mã tuyến tính". Sử dụng 243 (8.796.093.022.208) bản mã đã biết. Matsui có thể phá một khoá DES trong 50 ngày bằng một máy tính cá nhân.
3.7. Các chú giải và tài liệu dẫn.
	Smid và Branstad đã có một bài báo hay về lịch sử của DES [SB 92]. Các công bố về Chuẩn xử lý thông tin liên bang (FIPS) liên quan đến DES gồm: mô tả DES [NBS 77]; ứng dụng và sử dụng DES [NBS 81]; các chế độ làm việc của DES [NBS 80]; xác thực bằng DES [NBS 85].
	Một số tính chất của các hộp S được Brickell, Moore và Purtill [BMP87] nghiên cứu. Chíp giải mã DES được mô tả trong [EB 93]. Thiết bị tìm khoá của Wiener được mô tả ở CRYPTO' 93 [Wi 94]. Phép tối ưu hoá thời gian - bộ nhớ tổng quát hơn được trình bày bởi Fiat và Naor trong [FN 91]. Kỹ thuật DC được phát triển bởi Biham và Shamir [BS 91] ( cũng có thể xem [BS93A] và sách của họ [BS 93] trong đó cũng thảo luận thám mã hệ mật khác). Cách trình bày về DC trong chương này phần lớn dựa trên [BS93]. Một phương pháp mã thám mới có thể dùng để tấn công DES và các hệ mật tương ứng khác là phương pháp thám mã tuyến tính của Matsui [MA 94], [MA 94A].
	Các mô tả về hệ mật hoán vị - thay thế khác có thể tìm trong các tài liệu sau: LUCIFER [FE 73], FEAL [MI 91], REDOC-II [CW 91] và LOKI [BKPS 90].
Bảng 3.1. Mã thám DES 6 vòng.
Cặp
Cặp đúng
Bản rõ 
Bản mã
1
**
86FA1C2B1F51D3BE
C6F21CC2B1B51D3BE
1E23ED7F2F551971
296DE2BG87AC6310
2
**
EDC439EC935E1ACD
ADCC39EC975E1ACD
0F847EFE90466588
93E84839E374440B
3
**
9468A0BE00166155
D460A0BE04166155
3D6A906A6566D0BF
3BC3B23698379E1
4
**
D4FF2B18A5A8AACB
94F72B18A1A8AAC8
26B14738C2556BA4
15753FDE86575ABF
Bài tập
3.1.hãy chứng minh rằng phép giải mã DES có thể thực hiện bằng cách áp dụng thuật toán mã hoá DES cho bản rõ với bảng khoá đảo ngược.
3.2.Cho DES(x,K) là phép mã hoá DES của bản rõ x với khoá K. Giả sử y = DES(x,K) và y' = DES(c(x),c(K)) trong đó c(.) kí hiệu là phần bù theo các bít của biến. Hãy chứng minh rằng y' = c(y) ( tức là nếu lấy phần bù của bản rõ và khoá thì bản mã kết quả cũng là phần bù của bản mã ban đầu). Chú ý rằng kết quả trên có thể chứng minh được chỉ bằng cách sử dụng mô tả "mức cao" của DES - cấu trúc thực tế của các hộp S và các thành phần khác của hệ thống không ảnh hưởng tới kết quả này.
3.3.Mã kép là một cách để làm mạnh thêm cho DES: với hai khóa K1 và K2 cho trước, ta xác định y = eK2(eK1(x)) (dĩ nhiên đây chính là tích của DES với chính nó. Nếu hàm mã hoá eK2 giống như hàm giải mã dK1 thì K1 và K2 được gọi là các khoá đối ngẫu ( đây là trường hợp không mong muốn đối với phép mã kép vì bản mã kết quả lại trùng với bản rõ). Một khoá được gọi là tự đối ngẫu nếu nó đối ngẫu với chính nó.
	a/ Hãy chứng minh rằng nếu C0 gồm toàn các số 0 hoặc gồm toàn các số 1 và D0 cũng vậy thì K là tự đối ngẫu.
	b/ Hãy tự chứng minh rằng các khoá sau ( cho ở dạng hexa) là tự đối ngẫu:
0101010101010101
FEEFEFEFEFEFEFE
1F1F1F1F0E0E0E0E
E0E0E0E0F1F1F1F1
	c/ Hãy chứng tỏ rằng nếu C0 = 0101. . . 01 hoặc 1010. . .10 ( ở dạng nhị phân) thì XOR các xâu bít Ci và C17-i là 111. . .11, vơi 1 £i £16 ( khẳng định tương tự cũng đúng đối với Di).
	d/ Hãy chứng tỏ các cặp khoá sau là đối ngẫu:
E001E001F101F101 01E001E001F101F1
FE1FFE1FF0EFE0E 1FFE1FFE0EFE0EFE
E01FE01FFF10FF10 1FE01FE00EF10EF1
3.4.Có thể tạo một mã xác thực thông báo bằng chế độ CFB cũng như chế độ CBC. Cho dãy các khối bản rõ x1. . .xn , giả sư ta xác định véc tơ khởi đầu IV là x1 . Sau đó mã hoá x2. . .xn bằng khoá K ở chế độ CFB để thu được y1...yn-1 ( chú ý rằng chỉ có n-1 khối bản mã ). Cuối cùng xác định eK(yn-1) làm MAC. Hãy chứng minh rằng MAC này đòng nhất với MAC được tạo trong phần 3.4.1. dùng chế độ CBC.
3.5.Giả sử một dãy các khối bản rõ x1. . .xn được mã hoá bằng DES, tạo ra các khối bản mã y1. . .y2 . Giả sử rằng một khối bản mã ( chẳng hạn yi) bị phát sai ( tức là có một số số 1 bị chuyển thành số 0 và ngược lại). Hãy chỉ ra rằng số các khối bản rõ bị giải mã không đúng bằng một nếu ta dùng các chế độ ECB và OFB để mã hoá; và bằng hai nếu dùng các chế độ CBC và CFB để mã hoá.
3.6.Bài tập này nhằm nghiên cứu một phép tối ưu hoá thời gian - bộ nhớ đơn giản đối với phép tấn công bản rõ chọn lọc. Giả sử có một hệ mật trong đó P = C = K và đạt được độ mật hoàn thiện. Khi đó eK(x) = eK1(x) có nghĩa là K = K1 . Kí hiệu P = Y = {y1,. . .,yN}. Cho x là bản rõ cố định. Định nghĩa hàm g: YàY theo quy tắc g(y) = ey(x). Ta xác định một đồ thì có hướng G chứa tập đỉnh Y, trong đó tập cạnh chứa tất cả các cạnh có hướng có dạng (yi,g(yi)), 1 £ i £ N.
	a/ Hãy chứng minh rằng G gồm tất cả các chu trình có hướng không liên thông.
	b/ Cho T là một tham số thời gian mong muốn. Giả sử ta có một tập các phần tử Z = {z1,. . .,zm} Í Y sao cho với mỗi phần tử yi Î Y nằm trong một chu trình có độ dài tối đa là T hoặc tồn tại một phần tử zj ¹ yi sao cho khoảng cách tử yi tới zj trong G tối đa là T. Hãy chứng tỏ rằng tồn tại một tập Z như vậy sao cho: | Z | £ 2N/T và như vậy | Z | = 0(N/T).
	c/ Với mỗi zj Î Z ta xác định g-T(zj) là phần tử yi sao cho gT(yi) = zj , trong đó gT là một hàm gồm T phép lặp của g. Hãy xây dựng một bảng X gồm các cặp (zi,g-T(zj)) được sắp xếp theo các toạ độ đầu của chúng.
	Một mô tả giả mã của một thuật toán tìm K với y = eK(x) cho trước được trình bày ở hình 3.15. Hãy chứng tỏ thuật toán này tìm K trong tối đa là T bước ( bởi vậy cỡ của phép tối ưu hoá thời gian - bộ nhớ là 0(N)).
Hình 3.15. Phép tối ưu hoá thời gian - bộ nhớ.
Ystart = y
Backup = false
While g(y) ¹ ystart do
 if y = zj với mỗi j nào đó and not backup then 
 y = g-T(zj)
 backup = true
 else
y = g(y)
K = y
	d/ Hãy mô tả thuật toán giải mã để xây dựng một tập Z mong muốn trong thời gian 0(NT) không dùng một mảng có kích thước N.
3.7. Hãy tính các xác suất của đặc trưng 3 vòng sau:
 L0' = 0020000816 R0' = 0000040016 
 L1' = 0000040016 R1' = 0000000016 p = ?
 L2' = 0000000016 R2' = 0000040016 p = ?
 L3' = 0000040016 R3' = 0020000816 p = ?
3.8. Sau đây là một phép tấn công vi sai đối với DES 4 vòng sử dụng đặc trưng sau ( đây là một trường hợp đặc biệt của đặc trưng được trình bày ở hình 3.10).
 L0' = 2000000016 R0' = 0000000016 
 L1' = 0000000016 R1' = 2000000016 p = 1
	a/ Giả sử rằng thuật toán sau ( được nêu ở hình 3.16) được dùng để tính các tập test2,. . .,test8. Hãy chứng tỏ rằng Jj Î testj với 2 £ j £ 8.
Hình 3.16. Tấn công DC lên DES 4 vong.
 Vào : L0R0, L0*R0*, L3R3 và L3*R3*, trong đó
 L0' = 1000000016 và R0' = 0000000016 
Tính C ' = P-1(R4') 
Tính E = E(L4) và E* = E*(L4*)
For j =2 to 8 do 
 Tính testj(Ej,Ej*,Cj') 
	b/ Với các cặp bản rõ - mã sau, hãy xác định các bít khoá trong J2,...,J8.
Bản rõ Bản mã
18493AC485B8D9A0 E332151312A18B4F
38493AC485B8D9A0 87391C27E5282161
482765DDD7009123 B5DDD833D82D1D1
682765DDD7009123 81F4B92BD94B6FD8
ABCD098733731FF1 93A4B42F62EA59E4
8BCD098733731FF1 ABA494072BF411E5
13578642AAEDCB FDEB526275FB9D94
33578642AAFFEDCB CC8F72AAE685FDB1
	c/ Hãy tính toàn bộ khoá ( 14 bít khoá còn lại cần phải xác định có thể tìm theo phương pháp tìm kiếm vét cạn).

File đính kèm:

  • docCơ sở mật mã học - Chương 3 Chuẩn mã dữ liệu.doc
Tài liệu liên quan