Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
3,4 MB
Nội dung
Chương - MậtmãkhóabímậtChương 2: Mậtmãkhóabímật Có ba phương pháp mậtmãkhoábímật (mật mãkhoá riêng hay mậtmã cổ điển): Hoán vị - Thay - Xử lý bit (chủ yếu nằm ngôn ngữ lập trình) Ngoài có phương pháp hỗn hợp thực kết hợp phương pháp mà điển hình chuẩn mã liệu (DES – Data Encryption Standard) Mỹ 2.1 Sơ đồ khối hệ truyền tin mật (Oscar) Thám mã Bản rõ Nguồn tin (Alice) Bản mã Bộ mã hoá Bản rõ Bản mã Kênh mở Bộ giải mã Nhận tin (không an toàn) KE KD (Bob) Kênh an toàn Nguồn khoá Định nghĩa 2.1: Một hệ mật ( P, C, K, E, D ) thoả mãn điều kiện sau: a) P tập hữu hạn rõ b) C tập hữu hạn mã c) K tập hữu hạn khoá (không gian khoá) d) Đối với k ∈ K có quy tắc mã e k ∈ E ek : P → C quy tắc giải mã tương ứng d k ∈ D dk : C → P cho: d k ( e k ( x ) ) = x với ∀ x ∈ P 26 Chương - Mậtmãkhóabímật 2.2 Mậtmã thay 2.2.1 Mậtmã dịch vòng (MDV) Giả sử P = C = K = Z 26 với ≤ k ≤ 25 , ta định nghĩa: e k ( x ) = x + k mod26 d k ( y ) = y − k mod26 ( x, y ∈ Z26 ) Ta sử dụng MDV (với modulo 26) để mã hoá văn tiếng Anh thông thường cách thiết lập tương ứng ký tự thặng dư theo mod 26 sau: Ký tự Mã tương ứng Ký tự Mã tương ứng A N 13 B O 14 C P 15 D Q 16 E R 17 F S 18 G T 19 H U 20 I V 21 J W 22 K 10 X 23 L 11 Y 24 M 12 Z 25 Ví dụ 2.1: Giả sử khoá cho MDV k = rõ meetmeatsunset Trước tiên, ta biến đổi rõ thành dãy số nguyên theo bảng trên: 12.4.4.19.12.4.0.19.18.20.13.18.4.19 Sau ta cộng vào giá trị rút gọn tổng theo mod 26, ta dãy số sau: 17.9.9.24.17.9.5.24.23.25.18.23.9.24 Cuối cùng, ta lại biến đổi dãy số nguyên thành ký tự tương ứng, ta có mã sau: RJJYRJFYXZSXJY Để giải mã cho mã này, trước tiên ta biến mã thành dãy số nguyên trừ giá trị cho (rút gọn theo modulo 26), cuối lại biến đổi lại dãy số nhận thành ký tự Nhận xét: - Khi k = , hệ mật thường gọi mã Caesar Hoàng đế Caesar sử dụng MDV (theo mod 26) không an toàn bị thám theo phương pháp tìm khoá vét cạn (thám mã dễ dàng thử khoá dk tìm rõ có nghĩa) Trung bình tìm rõ sau thử khoảng ( 26 ) = 13 quy tắc giải mã 27 Chương - Mậtmãkhóabímật - Từ ví dụ ta thấy rằng, điều kiện cần để hệ mật an toàn phép tìm khoá vét cạn phải thực Tuy nhiên, không gian khoá lớn chưa đủ để đảm bảm độ mật 2.2.2 Mã thay (MTT) Cho P = C = Z 26 K chứa hoán vị có 26 ký tự từ đến 25 Với phép hoán vị π ∈ K , ta định nghĩa: e π ( x ) = π( x ) d π ( y ) = π −1 ( y ) π −1 hoán vị ngược π Sau ví dụ phép hoán vị ngẫu nhiên π tạo nên hàm mã hoá (tương tự trên, ký tự rõ viết chữ thường, ký tự mã viết chữ in hoa) Ký tự rõ Ký tự mã Ký tự rõ Ký tự mã a X n S b N o F c Y p L d A q R e H r C f P s V g O t M h G u U i Z v E j Q w K k W x J l B y D m T z I Như vậy, e π ( a ) = X, e π ( b ) = N, Hàm giải mã phép hoán vị ngược Điều thực cách viết hàng thứ hai lên trước xếp theo thứ tự chữ Ta có: Ký tự mã Ký tự rõ Ký tự mã Ký tự rõ a d n b b l o g c r p f d y q j e v r q f o s n g h t m h e u u i z v s j x w k k w x a l p y c m t z i Ví dụ 2.2: Với phép thay trên, từ rõ: meetmeatsunset ta thu mã sau: THHMTHXMVUSHM Sử dụng phép hoán vị ngược, ta dễ dàng tìm lại rõ ban đầu Mỗi khoámã thay phép hoán vị 26 ký tự Số hoán vị 26 !> 4.10 26 Đây số lớn nên khó tìm khoá phép tìm khoá vét cạn Tuy nhiên, phương pháp thống kê, ta dễ dàng thám mã loại 28 Chương - Mậtmãkhóabímật 2.2.3 Mậtmã Vigenère Trong hai hệ MDV MTT trên, khoá chọn ký tự ánh xạ vào ký tự Vì vậy, hệ gọi hệ thay đơn biểu Sau ta trình bày hệ thay đa biểu gọi hệ mật Vigenere Sử dụng phép tương ứng A ↔ 0, B ↔ 1, , Z ↔ 25 mô tả trên, ta gắn cho khoá k chuỗi ký tự có độ dài m, gọi từ khoáMậtmã Vigenère mã hoá đồng thời m ký tự: phần tử rõ tương đương với m ký tự Ví dụ 2.3: Giả sử m = từ khoá CIPHER Từ khoá tương ứng với dãy số k = (2, 8, 15, 7, 4, 17) Giả sử rõ là: meetmeatsunset Ta biến đổi phần tử rõ thành thặng dư theo mod 26, viết chúng thành nhóm cộng với từ khoá theo modulo 26 sau: 12 14 12 15 19 19 12 16 17 21 2 19 18 15 20 13 17 18 17 19 Bản rõ Khoá Bản mã Như vậy, dãy ký tự tương ứng với xâu mã là: OMTAQVCBHBRJGB Ta mô tả mậtmã Vigenère sau: Cho m số nguyên dương cố định Ta định nghĩa P = C = K = ( Z 26 ) n k = ( k , k , , k m ) , ta xác định: e k ( x , x , , x m ) = ( x + k , x + k , , x m + k m ) d k ( y1 , y , , y m ) = ( y1 − k , y − k , , y m − k m ) Với khoá tất phép toán thực Z 26 Chú ý: Để giải mã, ta dùng từ khoá thay cho cộng, ta trừ theo modulo 26 29 Chương - Mậtmãkhóabímật Ta thấy rằng, số từ khoá với độ dài m mậtmã Vigenere 26 m Bởi vậy, chí với m nhỏ, phương pháp tìm kiến vét cạn yêu cầu thời gian lớn Ví dụ, với m = không gian khoá có kích thước lớn 3.108 khoá 2.3 Mậtmã hoán vị (MHV) Khác với MTT, ý tưởng MHV giữ ký tự rõ không thay đổi thay đổi vị trí chúng cách xếp lại ký tự phép toán đại số cần thực mã hoá giải mã Ví dụ 2.4: Giả sử m = khoá phép hoán vị sau: Khi đó, phép hoán vị ngược là: 6 Giả sử ta có rõ: asecondclasscarriageonthetrain Trước tiên, ta nhóm rõ thành nhóm ký tự: 6 a sec on dclass carria geonth etrain Sau đó, nhóm chữ lại xếp lại theo phép hoán vị π , ta có: EOANCS LSDSAC RICARA OTGHNE RIENAT Cuối cùng, ta có mã sau: EOANCSLSDSACRICARAOTGHNERIENAT Khi sử dụng phép hoán vị ngược π −1 dãy mã (sau nhóm lại theo nhóm ký tự), ta nhận lại rõ ban đầu Từ ví dụ trên, ta định nghĩa MHV sau: Cho m số nguyên dương xác định Cho P = C = ( Z 26 ) { 1, 2, , m } m cho K tất hoán vị có Đối với khoá π (tức phép hoán vị đó), ta xác định: ( e π = ( x , , x m ) = x π(1) , , x π( m ) ) d π = ( x , , x m ) = y −1 , , y −1 π ( m) π (1) π −1 phép hoán vị ngược π 30 Chương - Mậtmãkhóabímật 2.4 Mậtmã Hill Trong phần mô tả hệ mật thay đa biểu khác gọi mậtmã Hill Mậtmã Lester S.Hill đưa năm 1929 Giả sử m số nguyên dương, đặt P = C = ( Z 26 ) m ý tưởng lấy m tổ hợp tuyến tính m ký tự phần tử rõ để tạo m ký tự phần tử mã Ví dụ m = ta viết phần tử rõ x = ( x1 , x ) phần tử mã y = ( y1 , y ) đây, y1 y tổ hợp tuyến tính x1 x Chẳng hạn, lấy: y1 = 11x1 + 3x y = 8x1 + x Tất nhiên viết gọn theo ký hiệu ma trận sau: 11 ( y1 y ) = ( x1 x ) Nói chung, lấy ma trận k kích thước m × m làm khoá Nếu phần tử hàng i cột j k k i, j viết k = k i, j , với ( ) x = ( x , x , , x m ) ∈ P k ∈ K , ta tính y = e k ( x ) = ( y1 , y , , y m ) sau : k 1,1 k ( y1 , , y m )( x1 , , x m ) 2,1 k m,1 k 1, m k 2, m k m, m k 1, k 2, k m, Nói cách khác, y = xk Chúng ta nói mã nhận từ rõ nhờ phép biến đổi tuyến tính Ta xét xem phải thực giải mã nào, tức làm để tính x từ y Bạn đọc làm quen với đại số tuyến tính thấy phải dùng ma trận nghịch đảo k −1 để giải mã Bản mã giải mã công thức x = yk −1 Sau số định nghĩa khái niệm cần thiết lấy từ đại số tuyến tính Nếu A = x i, j ma trận cấp l × m B = b l, k ma trận cấp ( ) ( ) ( ) m × n tích ma trận AB = c l, k định nghĩa theo công thức : 31 Chương - Mậtmãkhóabímật m c l, k = ∑a i, j b j, k j=1 với ≤ i ≤ l ≤ k ≤ l Tức phần tử hàng i cột thứ k AB tạo cách lấy hàng thứ i A cột thứ k B, sau nhân tương ứng phần tử với cộng lại Cần để ý AB ma trận cấp l × n Theo định nghĩa này, phép nhân ma trận kết hợp (tức ( AB) C = A( BC) ) nói chung không giao hoán (không phải lúc AB = BA , chí ma trận vuông A B) Ma trận đơn vị m × m (ký hiệu I m ) ma trận cấp m × m có số nằm đường chéo chính, số vị trí lại Như vậy, ma trận đơn vị × là: 1 0 I = I m gọi ma trận đơn vị AIm = A với ma trận cấp l × m I m B = B với ma trận cấp m × n Ma trận nghịch đảo ma trận A cấp m × m (nếu tồn tại) ma trận A −1 cho AA −1 = A −1A = I m Không phải ma trận có nghịch đảo, tồn Với định nghĩa trên, dễ dàng xây dựng công thức giải mã nêu: Vì y = xk , ta nhân hai vế đẳng thức với k −1 nhận được: ( ) yk −1 = ( xk ) k −1 = x kk −1 = xI m = x (Chú ý: sử dụng tính chất kết hợp) Có thể thấy rằng, ma trận mã hoá có nghịch đảo Z 26 : 11 −1 18 = 23 11 12 18 11 × + × 23 11 × 18 + × 11 = 23 11 × + × 23 × 18 + × 11 261 286 = = 182 131 (Hãy nhớ phép toán số học thực theo modulo 26) Sau ví dụ minh hoạ cho việc mã hoá giải mã hệ mậtmã Hill Ví dụ 2.5: Giả sử khoá 11 k = 7 32 Chương - Mậtmãkhóabímật Từ tính toán trên, ta có: 18 k −1 = 23 11 Giả sử cần mã hoá rõ "July" Ta có hai phần tử rõ để mã hoá: ( 9, 20) (ứng với Ju) (11, 24) (ứng với ly) Ta tính sau: 11 20 ) 3 11 (11 24) 3 (9 8 = ( 99 + 60 72 + 140 ) = ( ) 8 = (121 + 72 88 + 168) = (11 22 ) Bởi vậy, mã July DELW Để giải mã, Bob tính (3 ).k −1 = ( 20 ) (11 22 ).k −1 = (11 24 ) Như vậy, Bob nhận Cho tới lúc này, ta thực phép giải mã k có nghịch đảo Trên thực tế, để phép giải mã thực được, điều kiện cần k phải có nghịch đảo (Điều dễ dàng rút từ đại số tuyến tính sơ cấp, nhiên không chứng minh đây) Bởi vậy, ta quan tâm tới ma trận k khả nghịch Tính khả nghịch ma trận vuông phụ thuộc vào giá trị định thức Để tránh tổng quát hoá không cần thiết, ta giới hạn trường hợp 2×2 Định nghĩa 2.2: ( ) Định thức ma trận A = a i, j cấp × giá trị det A = a1,1a 2, − a1, a 2,1 Nhận xét: Định thức ma trận vuông cấp m x m tính theo phép toán hàng sơ cấp (hãy xem giáo trình đại số tuyến tính) Hai tính chất quan trọng định thức det I m = quy tắc nhân det ( AB) = det A × det B Một ma trận thực k có nghịch đảo định thức khác Tuy nhiên, điều quan trọng cần nhớ ta làm việc Z 26 Kết tương ứng ma trận k có nghịch đảo theo modulo 26 UCLN( det k , 26 ) = Sau chứng minh ngắn gọn kết Trước tiên, giả sử UCLN( det k , 26 ) = Khi det k có nghịch đảo Z 26 Với ≤ i ≤ m , ≤ j ≤ m , định nghĩa k i j ma trận thu từ k cách loại bỏ hàng thứ i cột thứ j Và định nghĩa ma trận k * có phần tử ( i, j) 33 Chương - Mậtmãkhóabímật i+ j nhận giá trị ( − 1) det k j i ( k * gọi ma trận bù đại số k) Khi đó, chứng tỏ rằng: k −1 = ( det k ) −1 k * Bởi k khả nghịch Ngược lại, k có nghịch đảo k −1 Theo quy tắc nhân định thức: ( ) = det I = det k k −1 = det k det k −1 Bởi det k có nghịch đảo Z 26 Nhận xét: Công thức k −1 công thức tính toán có hiệu trừ trường hợp m nhỏ (chẳng hạn m = 2, 3) Với m lớn, phương pháp thích hợp để tính ma trận nghịch đảo phải dựa vào phép toán hàng sơ cấp Trong trường hợp × , ta có công thức sau: Định lý 2.1: Giả sử ( ) A = j ma trận cấp 2×2 Z 26 cho det A = a1,1a 2, − a1, a 2,1 có nghịch đảo Khi đó: a 2, − a1, A −1 = ( det A ) −1 − a a , 1 , Trở lại ví dụ xét Trước hết ta có: 11 = 11 × − × mod det = 77 − 24 mod 26 = 53 mod 26 =1 Vì 1−1 mod 26 = nên ma trận nghịch đảo là: −1 11 18 = 7 23 11 Đây ma trận có Bây ta mô tả xác mậtmã Hill Z 26 (hình 2.1) Cho m số nguyên dương cố định Cho cho K = { ma trận khả nghịch cấp } Với khoá , ta xác định: Tất phép toán thực 34 Hình 2.1: Mậtmã Hill Chương - Mậtmãkhóabímật 2.5 Hệ mật xây dựng cấp số nhân xyclic vành đa thức Trong phần ta xét ứng dụng nhóm nhân xyclic vành đa thức Z [ x ] x n + với n = k Đây trường hợp đặc biệt không xem xét tới xây dựng mã khống chế sai.Tuy nhiên,trường hợp lại có ứng dụng lý thú mậtmã [4] 2.5.1 Nhóm nhân vành Bổ đề 2.1: Trong vành Z [ x ] x n + với n = k , tập đa thức có trọng số lẻ tạo nên nhóm nhân đa thức theo modulo x n + Chứng minh: ( ) Vì n = k nên : x n + = (1 + x ) n Do đó, đa thức a ( x ) có trọng số lẻ thoả mãn điều kiện: (a ( x ),(1 + x ) ) = n (2.1) Các đa thức tạo nên nhóm nhân G có luỹ đẳng e( x ) = có cấp bằng: G = n −1 Chú ý: Đa thức e( x ) gọi lũy đẳng e ( x ) = e( x ) Bổ đề 2.2: Mọi phần tử nhóm nhân G có cấp k có cấp ước k Chứng minh: Ta chứng minh qui nạp: k = 1: vành chứa nhóm nhân cấp nhóm nhân xyclic đơn vị I k = i : Giả sử A = {a ( x ) , a ( x ) , a ( x ) , , a n ( x )} nhóm nhân xyclic cấp n vành ( n = 2i ) k = i+1: Bình phương phần tử A ta có nhóm nhân xyclic sau: 35 Chương - Mậtmãkhóabímật 2.10.2 Thám mã tuyến tính (TMTT) ý tưởng phương pháp cố gắng biểu thị (xấp xỉ) vòng DES phép biến đổi tuyến tính Hình 2.17 biểu thị cách mà thám mã tuyến tính dùng vòng DES Trong cách công với rõ biết ta biết rõ M mã C tương ứng Vì đầu IP(M) sau phép hoán vị ban đầu biết nên ta biết nội dung ghi dịch trái phải Giả sử X = x1 , x , x 32 nội dung ghi dịch phải 32 bít qua phép hoán vị mở rộng A = E( X ) : véctơ 48 bít kết A = a1 , a , a 48 cộng mod theo bít với khóa 48 bít K i = k i1 , k i , k i 48 vòng lặp thứ i lấy từ phép biến đổi hoán vị lựa chọn PC { }k =1,,48 Véctơ 48 bít B = b1 , b , b 48 đưa qua hộp thay Sk ( ) véctơ vào bít b1 , b , b3 , b , b5 , b thay véctơ ( ) bít c1 , c , c3 , c Véctơ 32 bít C = c1 , c , c32 lại biến đổi qua phép hoán vị P véctơ 32 bít Y = y1, y , y32 cộng với nội dung ghi dịch trái Thanh ghi dịch phải cập nhật véctơ 32 bít kết Y = P( C ) C = P −1 ( Y ) Từ hình 2.17 ta thấy biết đầu vào X (bản rõ sau phép hoán vị ban đầu IP) đầu phép hoán vị mở rộng A = E( X ) biết Tuy nhiên khóa K i = k ij với j = 1, 2, 48 vòng lặp thứ i (ta bắt đầu với i = 1) chưa biết nên ta xác định tổng đầu cộng moduo 2: b j = a i ⊕ k ij với ≤ j ≤ 48 Các bít đầu cộng ( { b } j = 1, 2, 48) bít vào hộp thay j Sk Bây ta quay trở lại nội dung ghi dịch trái L nội dung trước thanh ghi dịch phải X ' (trên thực tế: Thanh ghi dịch tạm thời TEMP 32 từ vòng lặp trước DES), ta xác định véctơ 32 bít Y Vì Y kết phép hoán vị chuẩn P đầu từ hộp thay thế: C = P −1 ( Y ) 78 Chương - Mậtmãkhóabímật Thanh ghi dịch phải x1 x 32 Hoán vị mở rộng a 48 a1 k i, j Hoán vị lựa chọn PC vòng lặp thứ i Bộ cộng modulo - với vòng lặp thứ i b1 S1S2S3S4S5S6S7S8 hộp thay c 32 c1 Hoán vị y 32 y1 l1 Bộ cộng modulo - Thanh ghi dịch trái với ' x1 ' x 32 l 32 Hình 2.17: Thám mã tuyến tính vòng DES Véctơ 32 bít C = c1 , c , c32 đầu hộp thay xác định 79 Chương - Mậtmãkhóabímật { } k =1,,48 phải ngẫu nhiên không chệch Với đầu Các hộp thay Sk vào bít b1 , b , b3 , b , b5 b , bít phải có phân bố chuẩn Bây cấu tạo bảng tất 64 véctơ vào hộp thay thế, bít vào bi = nửa số lần bi = nửa số lần khác Nói cách khác, ta nói bít vào (trong bít) với xác suất p = (trong bít) với xác suất p = bít Tuy nhiên ta suy đầu vào hộp thay khai thác mối quan hệ đầu vào đầu Chẳng hạn ta quan sát bít c1 , c , c3 c đầu hộp thay Sk cộng chúng với theo modulo 64 véctơ vào khác b1 , , b , kết c1 ⊕ c ⊕ c3 ⊕ c = với nửa số trường hợp (32 trường hợp) c1 ⊕ c ⊕ c3 ⊕ c = với nửa số trường hợp lại (Mỗi giá trị 16 véctơ xuất lần bảng thay thế) Ta thấy quan hệ vào – hộp thay không hoàn toàn không chệch Chẳng hạn, hộp thay S5 chệch hộp thay ta khai thác để suy khóa Bảng 2.2 quan hệ bít vào b 25 , b 26 , b 27 , b 28 , b 29 b30 bít c17 , c18 , c19 c 20 hộp thay S5 Từ bảng 2.2 ta thấy bít vào b 26 = nửa số trường hợp (tức với xác suất p = ) tổng c1 ⊕ c ⊕ c3 ⊕ c = phương trình sau: b 26 = c1 ⊕ c ⊕ c ⊕ c Với xác suất p = có 12 lần số 62 lần (đúng với xác suất p = 12 = ) 12 trường 64 16 hợp cột kiểm tra bảng 2.2 bít vào R bít Kiểm tra 80 Chương - Mậtmãkhóabímật b1 b b b b b b 25 b 26 b 27 b 28 b 29 b 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 a c1 c c c c17 c18 c19 c 20 11 1 7 11 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0 5 5 1 3 1 b 26 = c1 ⊕ c ⊕ c ⊕ c 1 1 0 b 26 = c1 ⊕ c ⊕ c ⊕ c 0 1 1 1 1 0 1 b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c Bảng 2.2: Quan hệ vào hộp thay S5 (bắt đầu) bít vào bít b1 b 25 b2 b 26 b3 b 27 b4 b 28 b5 b 29 b6 b 30 0 0 81 Ra c1 c17 c c3 c18 c19 c4 c 20 Kiểm tra Chương - Mậtmãkhóabímật 1 1 0 0 0 0 0 1 1 11 1 0 0 1 0 0 1 0 1 12 1 0 1 0 0 1 1 11 0 1 1 1 0 10 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 13 14 13 15 15 12 10 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 0 0 0 1 1 1 14 1 1 1 1 0 1 b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c b 26 = c1 ⊕ c ⊕ c ⊕ c Bảng 2.3: Quan hệ vào hộp thay S5 (kết thúc) Ta thấy xác suất để có b 26 = c1 ⊕ c ⊕ c ⊕ c dùng để trợ giúp cho việc phá DES Khi với xác suất p = 16 16 b 26 = c1 ⊕ c ⊕ c ⊕ c a 26 ⊕ k i 26 = c1 ⊕ c ⊕ c ⊕ c Nhưng A = E( X ) nên a 26 = x17 Tương tự việc biết ánh xạ hàm hoán vị chuẩn Y = P( C ) giúp ta thay c17 , c18 , c19 c 20 giá trị mã biết y , y , y14 y 25 82 Chương - Mậtmãkhóabímật Bởi vậy, với xác suất p = 16 k i 26 = a 26 ⊕ c1 ⊕ c ⊕ c ⊕ c k i 26 = a 26 ⊕ c17 ⊕ c18 ⊕ c19 ⊕ c 20 k i 26 = x17 ⊕ y ⊕ y8 ⊕ y14 ⊕ y 25 Vì cặp rõ X mã Y vòng biết nên điều cung cấp chứng để coi bít k i 26 phần bù x17 ⊕ y3 ⊕ y8 ⊕ y14 ⊕ y 25 Phân tích vòng tổng hóa lên cho 16 vòng DES Điều thực nội dung ghi phải vòng lặp thứ hai hàm kết vòng lặp thứ Thám mã tuyến tính DES khó khả thi cần tới 47 cặp rõ - mã biết để tìm bít khóa riêng lẻ Bít khóa thứ hai tìm Người ta sử dụng phép xấp xỉ tuyến tính cho DES 14 vòng đánh giá (phán đoán) bít khóa k i 25 , k i 26 , k i 27 , k i 28 , k i 29 k i30 theo bít vào hộp thay S5 cho vòng 14, điều tương đương với việc thực 212 phép phân tích tuyến tính song song tạo 26 bít khóa Điều làm giảm không gian khóa cần tìm kiếm từ 56 (khi tìm kiếm vét cạn) xuống 230 = 1.073.741.824 2.11 Chuẩn mã liệu tiên tiến (AES) Vào 1997, Viện tiêu chuẩn công nghệ quốc gia (NIST) Của Mỹ phát động thi nhằm xây dựng chuẩn mã liệu thay cho chuẩn mã liệu cũ DES đưa năm 1974 Qua trình tuyển chọn vào tháng 10 năm 2000, NIST công bố chuẩn mã liệu lựa chọn thuật toán Rijndael Đây mậtmã khối đối xứng với ba kích thước khóa lựa chọn (128 bít, 192 bít 256 bít) Sau ta mô tả thuật toán AES 2.11.1 Cơ sở toán học AES Trong AES phép toán cộng nhân thực byte ( ) trường hữu hạn GF Phép cộng: 83 Chương - Mậtmãkhóabímật Phép cộng hai phần tử (các byte) trường hữu hạn thực cách cộng theo mođulo bít tương ứng biểu diễn byte Phép cộng byte A B với: A = ( a1 a B = ( b1 b a3 a4 a5 a a7 b3 b5 b7 C = A + B với C = ( c1 b4 c2 b6 c3 c a8 ) b8 ) c5 c c8 ) c7 Ci = a i + bi mod với i = 1,8 Các phần tử trường hữu hạn biểu diễn dạng đa thức Ví dụ tổng A = 73H B = 4E H (viết dạng số 16 - hexa) là: 73H + 4E H = 3D H Viết dạng nhị phân: 01110011 + 01001110 = 00111101 Viết dạng đa thức: (x ) ( ) ( ) + x5 + x + x + + x6 + x3 + x + x = x5 + x + x3 + x + Phép nhận: ( ) Phép nhân thực GF cách nhân hai đa thức rút gọn theo mođulo đa thức bất khả quy m ( x ) Trong AES đa thức bất khả quy m ( x ) = x + x + x + x + Ví dụ: A = C3H , B = 85H tương ứng với: a ( x ) = x + x + x + b ( x ) = x + x + Khi C = A.B ( ) c ( x ) = a ( x ) b ( x ) mod x + x + x + x + c ( x ) = x + x5 + x3 + x + x hay C = AE H = 10101110 84 Chương - Mậtmãkhóabímật 2.11.2 Thuật toán AES AES mã hóa khối rõ M 128 bít thành khối mã C 128 bít cách dùng khóamã K có độ dài 128 bít (hoặc 192 256 bít) tương ứng với AES − 128 (hoặc AES − 192 AES − 256 ) Thuật toán thực byte kích thước khối đầu vào đầu khóa biểu thị từ 32 bít (4 byte) AES thực số vòng mã hóa N r phụ thuộc vào độ dài khóa sử dụng (Xem bảng 2.4) Độ dài khóa Nk Số vòng Nr Thuật toán AES Độ dài đầu vào/đầu AES − 128 AES − 192 AES − 256 từ từ 10 vòng từ từ 12 vòng từ từ 14 vòng Bảng 2.4: Số vòng mã hóa AES Mã hóa AES: Mõi vòng gồm phép biến đổi mậtmã theo byte - Thay byte Dịch hàng mảng trạng thái (State Array) Trộn liệu cột State Array Cộng khóa vòng vào State Array Phép thay byte: SubBytes( ) Phép biến đổi AES phép thay byte phi tuyến gọi phép biến đổi SubBytes( ), hoạt động độc lập byte Trước tiên tính nghịch ( ) đảo phép nhân GF , sau sử dụng phép biến đổi afin nghịch đảo 85 Chương - Mậtmãkhóabímật b'0 1 b1' ' 1 b 1 ' b3 = 1 b' 1 4 b' 0 0 b'6 ' 0 b7 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 b0 1 b1 1 b 0 b3 0 + b 0 b5 1 b6 1 b7 0 bi biểu thị bít thứ i byte b Dịch hàng State Array; Phép biến đổi ShiftRows( ) Phép biến đổi AES dịch hàng State Array Lượng dịch Shift ( r, N b ) phụ thuộc vào số hàng r Các khối đầu vào (bản rõ) vào khoói đầu (bản mã) khối 128 bít gồm N b = từ 32 bít Phép biến đổi ShiftRows( ) biểu thị sau: s 'r,c =sr ( c+shift ( r, N b ) ) mod N b ≤ c ≤ N b Hàng không dịch, tức shift ( 0, N b = ) = Với hàng lại lượng dịch tùy theo số hàng shift ( 0,4 ) = shift ( 1,4 ) = shift ( 2,4 ) = shift ( 3,4 ) = Trộn liệu cột State Array: Phép biến đổi Mixcolumns( ) Phép biến đổi Mixcolumns( ) dùng để trộn liệu cột ma ( ) trận trạng thái Các cột xem đa thức GF Đầu 86 Chương - Mậtmãkhóabímật Mixcolumns( ) s ' ( x ) tạo cách nhân cột với s ( x ) với đa thức a ( x ) ( ) rút gọn theo mod X + ( ) s ' ( x ) = a ( x ) s ( x ) mod X + đó: a ( x ) = 03H x + 01H x + 02H dạng ma trận phép biến đổi viết sau: s'0,c 02 H ' s1,c 01H ' = s 2,c 01H ' 03H s3,c 03H 02H 01H 01H 01H 03H 02H 01H 01H s 0,c 01H s1,c 03H s 2,c 02H s3,c ≤ c < N b Mở rộng khóa AES: KeyExpansion( ) Thuật toán AES tạo từ khóamã 128 bít (hoặc 192 256 bít) tập khởi tạo N b từ 32 bít N b từ 32 bít cho vòng bao gồm N b ( N r + 1) từ 32 bít Chương trình giải mã KeyExpansion( ) chứa SubWord( ) RotWord( ) Hàm SubWord( ) phép thay (hộp S) từ vào byte từ byte Hàm RotWord( ) thực phép hoán vị vòng byte từ byte (32 bít) Wi : RotWord ( a ,a1,a ,a ) = ( a1,a ,a ,a ) ( KeyExpansion byte key [ 4* N k ] , word w N b* ( N r + 1) , N k ) Begin i=0 while ( i < N k ) w [ i ] = word key [ 4*i ] ,key [ 4*i + 1] ,key [ 4*i + ] ,key [ 4*i + 3] i = i +1 end while 87 Chương - Mậtmãkhóabímật i ; Nk while ( i < N b* ( N r + 1) ) word temp = w [ i − 1] if ( i mod N k = ) temp = SubWord ( RotWord ( temp ) ) xor Rconw [ i N k ] else if ( N k = and i mod N k = ) temp = SubWord ( temp ) end if w [ i ] ; w [ i − N k ] = xor temp i = i +1 end while end (nguồn trích dẫn: Đặc tả thô AES: http://csrc.nist.gov/encryption/aes/ ) Chương trình giải mã AES ( Cipher bytein [ 4* N b ] ,byteout [ 4* N b ] , word w N b* ( N r + 1) ) Begin byte state [ 4, N b ] state = in AddRoundKey(state,w) for round = step to N r − SubBytes (state), ShifRows (state), Mixcolumns(state), AddRoundKey(state,w+round * N b ) end for SubBytes (state), ShifRows (state) AddRoundKey(state,w+N r*N b ) out = state end (nguồn trích dẫn: Đặc tả thô AES: http://csrc.nist.gov/encryption/aes/ ) 88 Chương - Mậtmãkhóabímật 2.12 Bài tập Thám mã thu mã sau: PSZI QIERW RIZIV LEZMRK XS WEC CSY EVI WSVVC Biết mãmật Xeda với khoá k chưa biết Hãy dùng phương pháp tìm khoá vét cạn để tìn rõ tiếng Anh tương ứng Ghi chú: Phương pháp tìm khoá vét cạn phương pháp thử giải mãkhoá có Dưới mã thu từ mã thay Một thu từ mã Vigenère, từ mậtmã Affine chưa xác định Nhiệm vụ xác định rõ trường hợp Hãy mô tả bước cần thực để giải mãmã (bao gồm tất phân tích thống kê tính toán cần thực hiện) Hai rõ đầu lấy từ " The Diary of Samuel Marchbanks " Robertson Davies, Clack Iriwin,1947; rõ thứ tư lấy từ " Lake Wobegon Days" Garrison Keillor, Viking Penguin, 1985 a Mã thay EMGLOSUDCGDNCUSWYSFHNSFCYKDPUMLWGYICOXYSIPJCK QPKUGKMGOUCGINCGACKSNISACYKZSCKXEOCKSHYSXCG OIDPKZCNKSHICGIWYGKKGKGOLDSILKGOIUSIGLEDSPWZU GFZCCNDGYYSFUSZCNXEOJNCGYEOWEUPXEZGACGNFGLKNS ACIGOIYCKXOUOUZCFZCCNDGYYSFEUEKUZCSOCFZCCNC IACZEJNCSHFZEJZEGMXCYHCIUMGKUSY Chỉ dẫn: F giải mã thành w b Hệ mã Vigenère KCCPKBGUFDPHQTYAVINRRTMVGRKDNBVFĐETDGILTXRGUD DKOTFMBPVGEGLTGCKQRACQCWDNAWCRXLZAKFTLEWRPTVC QKYVXCHKFTPONCQQRHJVAJUWETMCMSPKQDYHJVDAHCTRL SVSKCGCZQọDZXGSFRLSWCWSJTBHAFSLASPRJAHKJRJUMV GKMITZHFPDLSPZLVLGWTFPLKKEBDPGCEBSHCTJRWXBAFS PEZQNRWXCVYCGAONWDDKACKAWBBIKFTLOVKCGGHJVLNHI FFSQESVYCLACNVRWBBIREPBBVFEXOSCDYGZWPFDTKFQLY CWHJVTNHIQ/BTKH/VNPIST c Hệ mã Affine KQEREJEBCPPCJCRKIEACUZBKRVPKRBCIBQCARBJCVFCUP KRLOFKPACUZQEPBKRXPEIIEABDKPBCPFCDCCAFIEABĐKP BCPFEQPKAZBKRHALBKAPCCIBURCCDKDCCJC/DFUIXPAFF ERBICZDFKABICBBENEFCUPLCVKABPCYDCCDPKBCOCPERK 89 Chương - Mậtmãkhóabímật IVKSCPICBRKLJPKABL d Hệ mã chưa xác định BNVSNSIHQCEELSSKKYERIFJKXUMBGVKAMQLJTYAVFBKVT DVBPVVRJYYLAOKYMPQSCGDLFSRLLPROYGESEBUUALRWXM MASAZLGLEĐFJBZAVVPXWI CGJXASCBYEHOSNMULKCEAHTQ OKMFLEBKFXLRRFDTZXCIWBJSICBGAWDVYDHAVFJXZIBKC GJIWEAHTTOEWTUHKRQVVRGZBXYIREMMASCSPBNLHJMBLR FFJELHWEYLWISTFVVYFJCMHYUYRUFSFMGESIGRLWALSVVM NUHSIMYYITCCQPZSICEHBCCMZFEGVJYOCDEMMPGHVAAUM ELCMOEHVLTIPSUYILVGFLMVWDVYDBTHFRAYISYSGKVSUU HYHGGCKTMBLRX a Có ma trận khả nghịch cấp 2x2 Z26 a Giả sử p số nguyên tố Hãy chứng tỏ số ma trận khả nghịch cấp 2x2 ( )( ) 2 Zp p − p − p Chỉ dẫn Vì p số nguyên tố nên Zp trường Hãy sử dụng khẳng định sau: Một ma trận trường khả nghịch hàng véc tơ độc lập tuyến tính (tức không tồn tổ hợp tuyến tính hàng khác mà tổng chúng véc tơ toàn số 0) b Với p số nguyên tố m số nguyên m ≥ Hãy tìm công thức tính số ma trận khả nghịch cấp mxm Zp Giả sử ta biết rõ "conversation" tạo nên mã "HIARRTNUYTUS" (được mã theo hệ mã Hill chưa xác định m) Hãy xác định ma trận mã hoá Hệ mã Affine - Hill hệ mã Hill sửa đổi sau: Giả sử m số m nguyên dương P =C=( Z26 ) Trong hệ mật này, khoá K gồm cặp (L,b), L ma trận khả nghịch cấp mxm Z26 b∈ ( Z26 ) m theo ( ) công thức y = xL + b Bởi vậy, L = l ij b = ( b1,K ,bm) thì: ( y1,K ,ym) l1,1 l1,2 l 2,1 l 2,2 = ( x1,K ,xm) l m,1 l m,2 K K K K l1,m l2,m + ( b1,K ,bm) l m,m 90 Chương - Mậtmãkhóabímật Giả sử Oscar biết rõ 1à "adisplayedequation" mã tương ứng "DSRMSIOPLXLJBZULLM" Oscar biết m =3 Hãy tính khoá tất tính toán cần thiết Sau cách thám mã hệ mã Hill sử dụng phương pháp công với mã Giả sử ta biết m = Chia mã thành khối có độ dài kí tự (các đôi) Mỗi đôi mã đôi rõ nhờ dùng ma trận mã hoá chưa biết Hãy nhặt đôi thường gặp mã coi mã đôi thường gặp danh sách bảng 1.1 (ví dụ TH ST) Với giả định, thực phép công với rõ biết tìm ma trận giải mã Sau ví dụ mã để bạn giải mã theo phương pháp nêu: LMQETXYEAGTXCTUIEWNCTXLZEWUAISPZYVAPEWLMGQWVA XFTGMSQCADAGTXLMDXNXSNPJQSYVAPRIQSMHNOCVAXFV Ta mô tả trường hợp đặc biệt mã hoán vị Giả sử m, n số nguyên dương Hãy viết rõ theo thành hàng thành hình chữ nhật m x n Sau tạo mã cách lấy cột hình chữ nhật Ví dụ, m = 4, n = ta mã hoá rõ "cryptography" cách xây dựng hình chữ nhật : cryp togr aphy Bản mã là: "CTAROPYGHPRY" a Hãy mô tả cách Bob giải mãmã (với m, n biết) b Hãy giải mãmã sau: (nhận theo phương pháp nêu): MYAMRARUYIQTENCTORAHROYWĐSOYEOUARRGĐERNOGW Hãy chứng minh phép giải mã DES thực cách áp dụng thuật toán mã hoá DES cho rõ với bảng khoá đảo ngược Cho DES(x,K) phép mã hoá DES rõ x với khoá K Giả sử y = DES( x,K ) y' = DES( c( x) ,c( K ) ) c(.) kí hiệu phần bù theo bít biến Hãy chứng minh y' = c( y) (tức lấy phần bù rõ khoámã kết phần bù mã ban đầu) Chú ý kết chứng minh cách sử dụng mô tả "mức cao" DES - cấu trúc thực tế hộp S thành phần khác hệ thống không ảnh hưởng tới kết 91 Chương - Mậtmãkhóabímật 10 Mã kép cách để làm mạnh thêm cho DES: với hai khóa K K cho trước, ta xác định y = eK ( ek1 ( x) ) (dĩ nhiên tích DES với nó) Nếu hàm mã hoá eK giống hàm giải mã dK1 K K gọi khoá đối ngẫu (đây trường hợp không mong muốn phép mã kép mã kết lại trùng với rõ) Một khoá gọi tự đối ngẫu đối ngẫu với a Hãy chứng minh C0 gồm toàn số gồm toàn số D0 K tự đối ngẫu b Hãy tự chứng minh khoá sau ( cho dạng hexa) tự đối ngẫu; 1 1 1 1 F E E F E F E F E F E F E F E F F F F F F F F F E E E E F F F F c Hãy chứag tỏ C0 = 0101K 01 1010K 10 (ở dạng nhị phân) XOR xâu bít Ci C17− i 111K 11, với 1≤ i ≤ 16 (khẳng định tương tự Di ) d Hãy chứng tỏ cặp khoá sau đối ngẫu: E 001E 001F 101F 101 01E 001E 001F 101F F E1F F E1FF 0EFE 0E 1F F E1F F E0EFE0EFE E 01FE 01FFF 10FF 10 1FE 01FE 00EF 10EF 92 ... = 23 2−1 .23 2 2 = 61 n = 64 N = 64−1 .2 64 2 = 21 25 n = 128 N = 21 28−1 .21 28 2 = 25 3 2. 5.3 .2. Hệ mật xây dựng cấp số nhân xyclic Mỗi cấp số nhân xyclic cấp n coi phép biến đổi tuyến tính vector mã. .. đề 2. 5: Số cấp số nhân xyclic cấp n xây dựng G xác định theo biểu thức sau: N = 22 k 2 2 k 2 (2. 3) Ví dụ 2. 7: n=8 N = 28 −1 .28 2 = 21 3 = 8.1 92 n = 16 N = 21 6−1 .21 6 2 = 29 = 65.011 7 12 n = 32. . .Chương - Mật mã khóa bí mật 2. 2 Mật mã thay 2. 2.1 Mật mã dịch vòng (MDV) Giả sử P = C = K = Z 26 với ≤ k ≤ 25 , ta định nghĩa: e k ( x ) = x + k mod26 d k ( y ) = y − k mod26 ( x, y ∈ Z26