Chương 2 C ác khái niệm cơ sở Các h ệ m ã khóa đối xứng ( khóa bí mật ) Sơ đồ khối chung Các hệ mã cổ điển Các hệ mã khối và DES Hệ mã AES Các chế độ sử dụng mã khối 1
Chương 2 C ác khái niệm cơ sở Các h ệ m ã khóa đối xứng (khóa bí mật) Sơ đồ khối chung Các hệ mã cổ điển Các hệ mã khối và DES Hệ mã AES Các chế độ sử dụng mã khối 2
Chương 2 Các khái niệm cơ sở 3 1. Plaintext – Bản rõ: 2. Ciphertext – Bản mã: C 3. Key – Khóa: K 4. Encipher (encrypt) – Phép mã hóa: E C = E(P, K) 5. Decipher (decrypt) – Phép giải mã: D P = D(C, K)
Chương 2 Các khái niệm cơ sở 4 6. Cryptography – Mật mã: nghiên cứu các phương pháp/nguyên tắc mã hóa. 7. Cryptanalysis (codebreaking) – Mã thám: nghiên cứu nguyên tắc/phương pháp giải mã không biết khóa. 8. Cryptology – Mật mã học nghiên cứu cả mật mã và thám mã.
Chương 2 Các khái niệm cơ sở 5 Hệ mã 1. Plaintext – Bản rõ: 2. Ciphertext – Bản mã: C 3. Key – Khóa: K 4. Encipher (encrypt) – Phép mã hóa: E C = E(P, K) 5. Decipher (decrypt) – Phép giải mã: D D(C, K) = P An toàn của hệ mã phụ thuộc vào việc giữ bí mật khóa, không phụ thuộc vào việc giữ bí mật giải thuật mã hóa/giải mã.
Chương 2 Phân loại hệ mã K hóa mã hóa/giải mã Không dùng khóa Các hàm băm (Hash Functions): Sử dụng khóa giống nhau cho mã hóa và giải mã Hệ mã khóa bí mật (Secret key cryptography) hay hệ mã khóa đối xứng (Symmetric Cipher) Sử dụng khóa khác nhau cho mã hóa và giải mã (khóa bí mật, khóa công khai) Hệ mã khóa công khai (Public key cryptography) hay hệ mã khóa bất đối xứng (Asymmetric Cipher) 6
Chương 2 Phân loại hệ mã Phương pháp mã hóa Mã thay thế (Substitution) Mã chuyển vị (Transposition) Mã kết hợp thay thế và chuyển vị (Product) Cách thức xử lý bản rõ Mã khối (Block) Mã dòng (Stream) 7
Chương 2 Tấn công thám mã và tấn công vét cạn Thám mã (Cryptanalysis) D ựa vào bản chất của thuật toán cộng với một số kiến thức về các đặc điểm chung của bản rõ hoặc thậm chí một số cặp bản rõ - bản mã. Kiểu tấn công này khai thác các đặc điểm của thuật toán để cố gắng tìm ra một bản rõ cụ thể hoặc để tìm ra khóa đang được sử dụng. Vét cạn (Brute-force attack) Kẻ tấn công thử mọi khóa có thể có trên một đoạn mã cho đến khi thu được bản dịch dễ hiểu ( bản rõ ) . Trung bình, phải thử ½ trong số tất cả các khóa 8
Chương 2 Các kiểu tấn công thám mã dựa trên thông tin mà mã thám có được Chỉ biết bản mã (Ciphertext Only) Mã thám biết bản mã và thuật toán mã hóa Biết bản rõ (Known Plaintext) Mã thám có được một hoặc nhiều bản rõ và bản mã tương ứng Mã thám biết một số thành phần nhất định sẽ xuất hiện trong bản rõ Các tệp tin được mã hóa ở định dạng Postcript luôn bắt đầu cùng một thành phần Phần tiêu đề hoặc banner chuẩn hóa sử dụng trong thông báo chuyển tiền điện tử. 9
Chương 2 Các kiểu tấn công thám mã Bản rõ chọn sẵn (Chosen Plaintext) Mã thám biết bản mã và thuật toán mã hóa Mã thám lựa chọn bản rõ và tạo bản mã tương ứng sử dụng khóa bí mật. Ví dụ thực tế Mỹ thu được bản mã của Nhật và giải mã được một phần bản mã này Mỹ mã hóa một tin giả có nội dung: “Nguồn nước cấp cho đảo Midway sắp cạn”. Nhật chặn được thông điệp này, nhanh chóng báo cho cấp trên là “AF sắp hết nước” 10 Nhật Bản đang lập kế hoạch tấn công vào AF ?
Chương 2 Các kiểu tấn công thám mã Bản mã chọn sẵn (Chosen Ciphertext) Kẻ tấn công khiến nạn nhân (người biết khóa bí mật) giải mã bất kỳ bản mã nào do anh ta tạo ra và gửi lại kết quả cho anh ta. Bằng cách phân tích bản mã đã chọn và bản rõ nhận được tương ứng, kẻ tấn công đoán khóa bí mật đã được nạn nhân sử dụng. Thường xảy ra với hệ mã hóa khóa công khai. Ví dụ, các phiên bản đầu tiên của hệ mã RSA rất dễ bị tấn công. 11
Chương 2 Hệ mã an toàn tuyệt đối (unconditionally secure) Thám mã không thể tìm ra bản rõ từ các bản mã dù có thời gian và năng lực tính toán không hạn chế Ví dụ hệ mã an toàn tuyệt đối: one-time pad Mục tiêu thiết kế hệ mã Chi phí phá mã vượt quá giá trị thông tin được mã hóa Thời gian phá mã vượt quá thời gian tồn tại hữu ích của thông tin. 12
Chương 2 Hệ mã an toàn về mặt tính toán (computationally secure) Thoải mãn 1 trong 2 tiêu chí Chi phí phá mã vượt quá giá trị thông tin được mã hóa Thời gian phá mã vượt quá thời gian tồn tại hữu ích của thông tin. 13
??? ??? 1976 Cổ điển Hiện đại Ai cập CĐ Hy lạp CĐ La mã CĐ Vigenere Enigma RSA ECC Chương 2 Lịch sử phát triển mật mã DES 3DES
Chương 2 C ác khái niệm cơ sở Các h ệ m ã khóa đối xứng (khóa bí mật) Sơ đồ khối chung Các hệ mã cổ điển Các hệ mã khối và DES Hệ mã AES 15
Chương 2 Hệ mã khóa bí mật (hệ mã khóa đối xứng) Sơ đồ khối chung 16
Chương 2 C ác khái niệm cơ sở Các h ệ m ã khóa đối xứng (khóa bí mật) Sơ đồ khối chung Các hệ mã cổ điển Các hệ mã khối và DES Hệ mã AES Các chế độ sử dụng mã khối 17
Chương 2 Các hệ mã cổ điển Các hệ mã thay thế Các hệ mã chuyển vị 18
Chương 2 Các hệ mã cổ điển Các hệ mã thay thế Các hệ mã chuyển vị 19
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Mỗi phần từ rõ được ánh xạ thành một phần tử mã cố định . Quan hệ rõ-mã là 1-1 Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Mỗi phần từ rõ có thể ánh xạ thành nhiều phần tử mã. Quan hệ rõ-mã là 1-nhiều 20
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Hệ mã Caesar Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Hệ mã Playfair Hệ mã Hill Hệ mã Vigenère 21 Hệ mã Vernam Hệ mã One-time pad
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Hệ mã Caesar Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Hệ mã Playfair Hệ mã Hill Hệ mã Vigenère 22 Hệ mã Vernam Hệ mã One-time pad
Chương 2 Hệ mã Caesar 23 Vòng ngoài: phần tử rõ Vòng trong: phần tử mã a b c d e f g h i j k l m 1 2 3 4 5 6 7 8 9 10 11 12 n o p q r s t u v w x y z 13 14 15 16 17 18 19 20 21 22 23 24 25 Mã hóa: C = (P + k) mod 26 Giải mã: P = (C – k) mod 26
Chương 2 Hệ mã Caesar 24 n o p q r s t u v w x y z Q R S T U V W X Y Z A B C Mã hóa: C = (P + 3 ) mod 26 Giải mã: P = (C – 3 ) mod 26 a b c d e f g h i j k l m D E F G H I J K L M N O P a b c d e f g h i j k l m 1 2 3 4 5 6 7 8 9 10 11 12 n o p q r s t u v w x y z 13 14 15 16 17 18 19 20 21 22 23 24 25
Chương 2 Hệ mã Caesar 25 Mã hóa: C = (P + 12 ) mod 26 a b c d e f g h i j k l m 1 2 3 4 5 6 7 8 9 10 11 12 n o p q r s t u v w x y z 13 14 15 16 17 18 19 20 21 22 23 24 25 w e m e e t t o m o r r o w I Q Y Q Q F F A Y A D D A I
Chương 2 Hệ mã Caesar 26 Giải mã : P = (C – 20 ) mod 26 a b c d e f g h i j k l m 1 2 3 4 5 6 7 8 9 10 11 12 n o p q r s t u v w x y z 13 14 15 16 17 18 19 20 21 22 23 24 25 B I W X Y F U G P C Y W P U F U G H A O I C h o c d e l a m v i e c v a l a m n g u o i
Chương 2 Tấn công hệ mã Caesar 27 Giải mã: P = (C – ) mod 26 a b c d e f g h i j k l m 1 2 3 4 5 6 7 8 9 10 11 12 n o p q r s t u v w x y z 13 14 15 16 17 18 19 20 21 22 23 24 25 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? U C J A M K C R M N F C L G I Y Y k
Chương 2 Tấn công hệ mã Caesar 28 w e l c o m e t o p h e n i k a a U C J A M K C R M N F C L G I Y Y k=24
Chương 2 Hệ mã Caesar Thám mã 29 ZQZMTOCDIBDNBJDIBRZGGDIVA Khóa? Bản rõ? Khóa ? Bản rõ ? RWJCVIDXAPRWXTCHXRDCVPC
Chương 2 Các hệ mã cổ điển Tấn công hệ mã Caesar Số lượng khóa thử cho thám mã: 25 Biết giải thuật mã hóa/giải mã Dễ dàng tìm ra bản rõ từ bản mã khi biết ngôn ngữ sử dụng trong bản rõ 30 brute-force attack
Chương 2 Các hệ mã cổ điển Tăng không gian khóa 31 Mỗi một phần tử rõ được thay thế ngẫu nhiên bất kỳ bởi một phần tử mã Phép hoán vị: abc, acb, bac, bca, cab, cba B ảng chữ cái là một tập K với 26 phần tử, từ đó ta có 26! h oán vị của K Không gian khóa: 26! > 4 x 10 26 Hệ mã thay thế đa biểu
Chương 2 Các hệ mã cổ điển Tấn công (relative frequency) Phân tích tần số xuất h iện của các chữ mã 32 Chương 2
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Hệ mã Caesar Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Hệ mã Playfair Hệ mã Hill Hệ mã Vigenère 33 Hệ mã Vernam Hệ mã One-time pad
Chương 2 Hệ mã Playfair Bản rõ? Bản mã? Khóa? Phép mã hóa? Phép giải mã? 34 - Hai ký tự đứng cạnh nhau - Nếu hai ký tự trong một cặp giống nhau thì sẽ được tách bằng chữ x . Hai ký tự mã tương ứng từ hai ký tự rõ Ma trận K 5x5 M O N A R C H Y B D E F G I/J K L P Q S T U V W X Z balloon → ba lx lo on IB SU PM NA - 2 ký tự trong cặp thuộc cùng một hàng? - 2 ký tự trong cặp thuộc cùng một cột? - 2 ký tự trong cặp thuộc đường chéo?
Chương 2 Hệ mã Playfair – Ví dụ? Bản rõ? Bản mã? Khóa? Phép mã hóa? Phép giải mã? 35
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Hệ mã Caesar Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Hệ mã Playfair Hệ mã Hill Hệ mã Vigenère 36 Hệ mã Vernam Hệ mã One-time pad
Chương 2 Hệ mã Hill Bản rõ Bản mã? Khóa? Phép mã hóa? Phép giải mã? 37 m ký tự rõ { p 1 , p 2 ,…,p m } m ký tự mã { c 1 , c 2 ,…,c m } Ma trận K mxm C = K * P mod 26 P = K -1 * C mod 26 ( K -1 * K mod 26 = I )
Chương 2 Hệ mã Hill Bản rõ Bản mã? Khóa? Phép mã hóa? Phép giải mã? 38 pay moremoney (15, 0, 24) LNS HDLEWMTRW mod 26 = = LNS mod 26 = = PAY
Chương 2 Hệ mã Hill Ma trận nghịch đảo của ma trận vuông Điều kiện cần và đủ để ma trận vuông khả nghịch là det[A] ≠ 0. Khi đó là ma trận phụ hợp của A với 39 là phần bù đại số của phần từ của ma trận : định thức con
Chương 2 Hệ mã Hill 41 P = thetargetisidentified m=2 C = ? K -1 = ?
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Hệ mã Caesar Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Hệ mã Playfair Hệ mã Hill Hệ mã Vigenère 42 Hệ mã Vernam Hệ mã One-time pad
Chương 2 Hệ mã Vigenère 43 - Mỗi dòng của bảng Vigenere là một mã hóa đơn biểu . - Cả bảng mã Vigenere là mã hóa đa biểu .
Chương 2 Hệ mã Vigenère 44 Bản rõ: Bản mã : Khóa : Phép mã hóa : Phép giải mã : P = {p , p 1 , p 2 ,.., p n-1 } C = {c , c 1 , c 2 ,..,c n-1 } K = {k , k 1 , k 2 ,..,k m-1 } (m<n) c i = (p i + k i mod m ) mod 26 p i = (c i - k i mod m ) mod 26
Chương 2 Hệ mã Vigenère 45 Bản rõ: Bản mã : Khóa : Phép mã hóa : Phép giải mã : wea red iscove red saveyourself deceptive deceptivedeceptive c i = (p i + k i mod m ) mod 26 p i = (c i - k i mod m ) mod 26 ZIC VTW QNGRZG VTW AVZHCQYGLMGJ
Chương 2 Hệ mã Vigenère 46 Bản rõ: ? Bản mã : ? Khóa : ? Phép mã hóa : Phép giải mã : c i = (p i + k i mod m ) mod 26 p i = (c i - k i mod m ) mod 26
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Hệ mã Caesar Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Hệ mã Playfair Hệ mã Hill Hệ mã Vigenère 47 Hệ mã Vernam Hệ mã One-time pad
Chương 2 Hệ mã Vernam Xử lý bít nhị phân (0,1) 48
Chương 2 Các hệ mã thay thế Chữ cái/bit của bản rõ được thay thế bởi chữ cái khác/số/ký hiệu/bit mã Hệ mã thay thế đơn biểu (monoalphabetic substitution cipher) Hệ mã Caesar Hệ mã thay thế đa biểu (polyalphabetic substitution cipher) Hệ mã Playfair Hệ mã Hill Hệ mã Vigenère 49 Hệ mã Vernam Hệ mã One-time pad
Chương 2 Hệ mã One-time pad Khóa ngẫu nhiên, sử dụng một lần Bản mã được tạo ra không có bất kỳ mối quan hệ thống kê nào với bản rõ 50 P 1 = wewillmeetatthepartytonight C = BLWPOODEMJFBTZNVJNJQOJORGGU K 1 = FHWYKLVMKVKXCVKDJSFSAPXZCVP K 2 = IESRLKBWJFCIFZUCJLZXAXAAPSY P 2 = theydecidedtoattacktomorrow - Tạo khóa? - Quản lý và phân phối khóa?
Chương 2 Các hệ mã cổ điển Các hệ mã thay thế Các hệ mã chuyển vị 51
Chương 2 Mã chuyển vị 52 P = attackpostponeduntilthisnoon C = AODHTSUITTNSAPTNCOIOKNLOPETN C = APTNKNLOPETNAODHTTNSTSUICOIO
Chương 2 C ác khái niệm cơ sở Các h ệ m ã khóa đối xứng (khóa bí mật) Sơ đồ khối chung Các hệ mã cổ điển Mã khối và DES Hệ mã AES Các chế độ sử dụng mã khối 53
Chương 2 Mã khối và DES Cấu trúc mã khối truyền thống Mã dòng và mã khối Hệ mã DES Các nguyên tắc thiết kế mã khối 54
Chương 2 Mã khối và DES Cấu trúc mã khối truyền thống Mã dòng và mã khối Hệ mã DES Các nguyên tắc thiết kế mã khối 55
Chương 2 Cấu trúc mã khối truyền thống Mã dòng – Stream cipher Bản rõ: Bản mã Khóa: Phép mã hóa : Phép giải mã : 56 P = {p , p 1 , p 2 ,.., p n-1 } C= {c , c 1 , c 2 ,..,c n-1 } S= {s , s 1 , s 2 ,..,s n-1 } S = StreamCipher(K) C = P P = C A5/1 RC4
Chương 2 Cấu trúc mã khối truyền thống Mã khối 57
Chương 2 Cấu trúc mã khối truyền thống Mã khối Mã hóa Giải mã 58 c i = p i i p i = c i i Known Plaintext (Choosen-Plaintext) Attack P = 1111 0000 0011 K = 0101 0101 0101 C = 1010 0101 0110 Ví dụ:
Chương 2 Cấu trúc mã khối truyền thống Mã khối 59 SP N : Substitution-Permutation Network - Tính khuếch tán ( diffusion) : S+P 1 bít rõ tác động tới tất cả các bít mã. giảm tối đa liên quan rõ-mã => ngăn tìm ra khóa - Tính gây lẫn ( confusion) : S Làm phức tạp hóa mối quan hệ mã-khóa => ngăn tìm ra khóa
Chương 2 Cấu trúc mã khối truyền thống Hệ mã Feistel 60 P C 1 C 2 C 3 … C n K 1 K 2 K n K 3 Bản rõ P và các bản mã C i được chia thành nửa trái và nửa phải: P = (L , R ) = ( , ) = 1, 2, …n là một khóa con cho vòng thứ được sinh ra từ khóa K Mã hóa : Giải mã :
Chương 2 Cấu trúc mã khối truyền thống Ví dụ mã Feistel Mã hóa Giả sử tại vòng mã hóa 14 ta có C 14 = DE7F03A6 => LE 14 = DE7F và RE 14 c K 15 = 12DE52 Sau vòng 15 ta có LE 15 = 03A6 RE 15 = LE 14 DE7F F(03A6, 12DE52) 61 Mã hóa :
Chương 2 Cấu trúc mã khối truyền thống Ví dụ mã Feistel Giải mã Giả sử LD 1 = RE 15 và RD 1 = LE 15 = 03A6 Cần chứng minh LD 2 = RE 14 và RD 2 = LE 14 LD 1 = F(03A6, 12DE52) DE7F Và RD 1 = 03A6 => LD 2 = 03A6 = RE 14 và RD 2 = F(03A6,12DE52) [F(03A6, 12DE52) DE7F] = DE7F = LE 14 62 Giải mã :
Chương 2 Cấu trúc mã khối truyền thống Hệ mã Feistel 63 1. Kích cỡ khối : 128 bít 2 . Kích cỡ khóa : 128 bít 3 . Số vòng : 16 vòng 4 . Thuật toán sinh khóa K i 5 . Hàm F
Chương 2 Cấu trúc mã khối truyền thống Hệ mã Feistel Các mã khối hiện đại đều dựa trên cơ sở mã Feistel. Hàm F thực hiện phép thay thế, không cần khả nghịch, do đó mã hóa/giải mã đều dùng chiều thuận của hàm F. Hàm F và thuật toán sinh khóa con càng phức tạp thì càng khó phá mã. Với các hàm F và thuật toán sinh khóa con khác nhau sẽ có các phương pháp mã hóa khác nhau. 64
Chương 2 Mã khối và DES Cấu trúc mã khối truyền thống Mã dòng và mã khối Hệ mã DES Các nguyên tắc thiết kế mã khối 65
Chương 2 Hệ mã DES 66 P, C: khối 64 bít K : - Khóa chính: 56 bít. - Mỗi vòng dùng khóa con 48 bít được trích ra từ khóa chính. - Có 16 vòng; thêm một hoán vị khởi tạo trước khi vào vòng 1 và một hoán vị kết thúc sau vòng 16 Mã hóa – giải mã???
Chương 2 Hệ mã DES Mã hóa – giải mã Hoán vị khởi tạo và hoán vị kết thúc 16 vòng DES Thuật toán sinh khóa con 67
Chương 2 Hệ mã DES Mã hóa – giải mã Hoán vị khởi tạo và hoán vị kết thúc 68
Chương 2 Hệ mã DES Mã hóa – giải mã 16 vòng DES 69 = P-box ( S-boxes ( Expand ( , )) - Expand : mở rộng và hoán vị R i-1 từ 32 lên 48 b it - Sboxes : nén 48 thành 32 bit - P-box : hoán vị 32 b i t
Chương 2 Hệ mã DES Mã hóa – giải mã Thuật toán sinh khóa con 70 64 bít thành 56 bít 56 bít chia thành 2 nửa 28 bít Tại vòng thứ i (i = 1, 2, 3,…,16), KL i-1 và KR i-1 được dịch vòng trái bít thành KL i và KR i , với r i được xác định như sau : Hoán vị và nén 56 bít của KL i và KR i thành 48 bít
Chương 2 Hệ mã DES 71 Key Size (bits) Number of Alternative Keys Time Required at 10 9 Decryptions/s Time Required at 1013 Decryptions/s 56 (DES) 2 56 = 7.2 x 10 16 1.125 years 1 hour 168 (3DES) 2 168 = 3.7 x 10 50 5.8 x 10 33 years 5.8 x 10 29 years Deep Crack 7/1998 TripleDES 1999 AES 26/5/2002
Chương 2 Mã khối và DES Cấu trúc mã khối truyền thống Mã dòng và mã khối Hệ mã DES Các nguyên tắc thiết kế mã khối 72
Chương 2 Các nguyên tắc thiết kế mã khối Số vòng (number of rounds) Số vòng càng lớn thì thám mã càng khó khăn hơn, ngay khi hàm F tương đối yếu. Hàm F F là hàm phi tuyến, càng phi tuyến càng khó thám mã Một thay đổi của một bit đầu vào sẽ tạo ra sự thay đổi ở nhiều bit đầu ra. C ác bit đầu ra nên thay đổi độc lập khi có b it đầu vào duy nhất bị đảo. Tạo khóa (key scheduling) Khó đoán các khóa con và khóa chính Đảm bảo 2 tiêu chí khóa/bản mã 73
Chương 2 C ác khái niệm cơ sở Các h ệ m ã khóa đối xứng (khóa bí mật) Sơ đồ khối chung Các hệ mã cổ điển Mã khối và DES Hệ mã AES Các chế độ sử dụng mã khối 74
Chương 2 Hệ mã AES Bản rõ Các khối rõ 128 bít hay 16 bytes được biểu diễn dưới dạng các ma trận vuông 4x4 (bytes) hay gọi là mảng trạng thái (state) Dữ liệu đầu vào được đọc vào ma trận state theo từng cột, theo thứ tự từ trên xuống dưới, từ trái qua phải. Dữ liệu đầu ra được đọc từ ma trận cũng theo quy tắc trên.
Chương 2 Hệ mã AES Bản mã Các khối rõ 128 bít hay 16 bytes dưới dạng các ma trận vuông 4x4 (bytes) Khóa 128, 192, 256 b it hay 16, 24, 32 bytes 76 = 4, 6, 8 tùy theo khóa 128, 192, 256
Chương 2 Hệ mã AES Mã hóa/giải mã 77
Chương 2 Hệ mã AES Mã hóa 78 Pre-round transformation Round 1 (4 transformations) Round 2 (4 transformations) … Round (3 transformations) 128-bit paintext Key expansion Round keys (128 bits) Cipher key (128, 192, 256 bits) R Key size 10 128 12 192 14 256 Quan hệ giữa số vòng và kích cỡ khóa 128-bit ciphertext Round 0 SubBytes Shiftrows Mixcolumns Addroundkey Add round key SubBytes Shift rows Add round key
Chương 2 Hệ mã AES Giải mã 79 Inverse subbytes Inverse shiftrows Inverse mixcols Addroundkey
Chương 2 Hệ mã AES SubBytes Shiftrows Mixcolumns Addroundkey 80
Chương 2 Hệ mã AES SubBytes Shiftrows Mixcolumns Addroundkey 81
Chương 2 Hệ mã AES SubBytes Mã hóa 82 Input Output
Chương 2 Hệ mã AES SubBytes Mã hóa: S_box 83 Ma trận 16x16 bytes {95} => {2A}
Chương 2 Hệ mã AES SubBytes Giải mã: S_box 84 Ma trận 16x16 bytes {2A} => {95}
Chương 2 Hệ mã AES SubBytes Ví dụ mã hóa 85
Chương 2 Hệ mã AES Tạo S-box mã hóa B1: Khởi tạo S-box với các giá trị byte tăng dần theo hàng => Giá trị byte ở hàng y , cột x là {yx} 86 1 2 3 4 5 6 7 8 9 A B C D E F 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1 10 11 12 13 15 15 16 17 18 19 1A 1B 1C 1D 1E 1F 2 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F …. F F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
Chương 2 Hệ mã AES Tạo S-box mã hóa B2: Ánh xạ từng byte trong S-box thành giá trị nghịch đảo của nó trong trường hữu hạn GF(2 8 ) Giá trị {00} ánh xạ thành chính nó 87
Chương 2 Hệ mã AES Tạo S-box mã hóa B3: Biến đổi Affine các giá trị nghịch đảo ở B2 88
Chương 2 Hệ mã AES Tạo S-box mã hóa Ví dụ Đầu vào: {95} Nghịch đảo trong GF(2 8 ) của {95}: {8A} = 10001010 Biến đổi affine của {8A} = {2A} 89
Chương 2 Hệ mã AES Tạo S-box giải mã (Inverse S-box) 90 {2A} => {95}
Chương 2 Hệ mã AES Tạo S-box giải mã (Inverse S-box) B1: Khởi tạo S-box với các giá trị byte tăng dần theo hàng => Giá trị byte ở hàng y , cột x là {yx} B2: Ánh xạ từng byte trong S-box thành giá trị nghịch đảo của nó trong trường hữu hạn GF(2 8 ) B3: Biến đổi ngược của B3 trong S-box mã hóa 91
Chương 2 Hệ mã AES Tạo S-box giải mã (Inverse S-box) B3: Biến đổi ngược của B3 trong S-box mã hóa 92
Chương 2 Hệ mã AES S-box Được thiết kế để chống lại known cryptanalytic attacks Tương quan giữa các bit đầu vào và đầu ra là nhỏ đầu ra không là hàm tuyến tính của đầu vào. Tính phi tuyến là do sử dụng phép nghịch đảo. 93
Hệ mã AES Trường hữu hạn GF(2 8 ) Gồm 256 phần tử Các phép toán được sử dụng là phép cộng, nhân đa thức với hệ số theo mod 2 Biểu diễn một số nguyên a dưới dạng đa thức trong trường GF(2 8 ) , sẽ tương đương với đa thức có dạng: Chương 2 94
Hệ mã AES Trường hữu hạn GF(2 8 ) Phép cộng đa thức ( Phép nhân ( Đa thức tối giản Chương 2 95
Hệ mã AES Trường hữu hạn GF(2 8 ) Ví dụ thực hiện phép cộng và phép nhân {57} và {83} trong GF(2 8 ) {57} = 0101.0111 {83} = 1000.0011 {57} + {83} = + = + + = 1101.0100 = {D4} Chương 2 96
Hệ mã AES Trường hữu hạn GF(2 8 ) Ví dụ thực hiện phép cộng và phép nhân {57} và {83} trong GF(2 8 ) {57} = 0101.0111 {83} = 1000.0011 {57} {83} = ( = + + + + = + + + {57} {83} = + + + ) ) = + Chương 2 97
Hệ mã AES Trường hữu hạn GF(2 8 ) Ví dụ thực hiện phép cộng và phép nhân {57} và {83} trong GF(2 8 ) {57} {83} = + + + ) ) = + = 1100.0001 = {C1} Chương 2 98
Chương 2 Hệ mã AES SubBytes Shiftrows Mixcolumns Addroundkey 99
Chương 2 Hệ mã AES Shiftrows cho mã hóa: Dịch trái Inverse Shift rows: 100 Dòng 1: giữ nguyên Dòng 2: dịch trái 1 byte Dòng 3: dịch trái 2 byte Dòng 4: dịch trái 3 byte Dòng 1: giữ nguyên Dòng 2: dịch phải 1 byte Dòng 3: dịch phải 2 byte Dòng 4: dịch phải 3 byte Xáo trộn các byte để tạo các cột khác nhau trước khi sử dụng cột cho MixColumns.
Chương 2 Hệ mã AES Shiftrows cho mã hóa Ví dụ 101
Chương 2 Hệ mã AES SubBytes Shiftrows Mixcolumns Addroundkey 102
Chương 2 Hệ mã AES Ý nghĩa của Mixcolumns Làm cho mỗi byte trong cột kết quả đều phụ thuộc vào bốn byte trong cột ban đầu. MixColumns kết hợp với ShiftRows đảm bảo sau một vài vòng biến đổi, 128 bit trong kết quả đều phụ thuộc vào tất cả 128 bit ban đầu tính khuếch tán (diffusion) 105
Chương 2 Hệ mã AES SubBytes Shiftrows Mixcolumns Addroundkey 106
Chương 2 Hệ mã AES Addroundkey Inverser Addroundkey 107 State ⊕ = round key
Chương 2 Hệ mã AES SubBytes State matrix ShiftRows MixColumns AddRoundKey Round key State matrix MixColumns matrix Các biến đổi trong một vòng
Chương 2 Hệ mã AES Mở rộng khóa (ExpandKey) Tạo N+1 khóa vòng từ khóa chính K Mỗi khóa vòng gồm N k từ 32 bit (với AES thì N k =4) Các phép biến đổi để tạo khóa vòng trong ExpandKey là khác nhau đối với các kích thước khóa K khác nhau 109
Chương 2 Hệ mã AES Mở rộng khóa (ExpandKey) Khóa chính K = 128 bít 16 bytes 4 words Số vòng: 11 vòng (1 vòng khởi tạo + 10 vòng chính) Sinh ra một mảng khóa vòng là 11x4 = 44 words hay 176 bytes. 44 words này được sử dụng cho 11 vòng mã hóa/giải mã của AES. Mỗi khóa vòng gồm 4 words 110
Chương 2 Hệ mã AES Mở rộng khóa 111 g 1. RotWord Dịch trái 1 byte của word Input word [ ] => [ ] 2. SubWord Phép thế dùng S-box [ ] => [ ] 3. Các kết quả của (1) và (2) XOR với Rcon[j] (Rcon tại vòng thứ j) j 1 2 3 4 5 6 7 8 9 10 RC[j] 01 02 04 08 10 20 40 80 1B 36 RC[j] = 2
Chương 2 Hệ mã AES Mở rộng khóa 112
Chương 2 Hệ mã AES Ví dụ Khóa vòng ở vòng 8: EA D2 73 21 B5 8D BA D2 31 2B F5 60 7F 8D 29 2F Cột đầu tiên của khóa vòng ở vòng 9: 113
Chương 2 Hệ mã AES Mục đích ExpandKey Chống lại known-plaintext attack Biết một số bit của khóa hay khóa con cũng không thể tính các bit còn lại. Không thể tính ngược: biết một khóa con cũng không thể tính lại các khóa con trước đó. Tính khuếch tán: một bit của khóa chính tác động lên tất cả các bit của các khóa con. 114
Chương 2 Chương 2 115
Chương 2 Hệ mã AES Ví dụ 116 Round 0
Chương 2 Hệ mã AES Ví dụ 117 Round 0 Round 1
Chương 2 Hệ mã AES Ví dụ 118 Round 1 Round 2
Chương 2 Hệ mã AES Ví dụ 119 Round 2 Round 3
Chương 2 Hệ mã AES Ví dụ 120 Round 3 Round 4
Chương 2 Hệ mã AES Ví dụ 121 Round 4 Round 5
Chương 2 Hệ mã AES Ví dụ 122 Round 5 Round 6
Chương 2 Hệ mã AES Ví dụ 123 Round 6 Round 7
Chương 2 Hệ mã AES Ví dụ 124 Round 7 Round 8
Chương 2 Hệ mã AES Ví dụ 125 Round 8 Round 9
Chương 2 Hệ mã AES Ví dụ 126 Round 9 Round 10
Chương 2 Hệ mã AES Ví dụ 127 Round 10 Bản mã
Chương 2 C ác khái niệm cơ sở Các h ệ m ã khóa đối xứng (khóa bí mật) Sơ đồ khối chung Các hệ mã cổ điển Mã khối và DES Hệ mã AES Các chế độ sử dụng mã khối 128
Chương 2 129 Các chế độ sử dụng mã khối K ỹ thuật nâng cao hiệu quả thuật toán mật mã hoặc điều chỉnh thuật toán cho phù hợp với một ứng dụng cụ thể 5 chế độ sử dụng mã khối ECB - Electronic codebook mode CBC - Cipher block chaining mode CFB - Cipher Feedback mode OFB - Output feedback mode CTR - Counter mode Chuyển mã khối sang mã dòng
Chương 2 130 Các chế độ sử dụng mã khối ECB - Electronic codebook mode Bản rõ : p 1 , p 2 ,..,p i Bản mã : c 1 , c 2 ,..,c i K dùng chung Mã hóa: m ỗi khối rõ được mã hóa độc lập c i = E K (p i ) Decryption: p i = D K (c i ) Nhược điểm Nếu khối rõ giống nhau sẽ tạo ra khối mã giống nhau Có thể tìm ra khối rõ từ khối mã nếu mã hóa lặp đi lặp lại khối rõ. Ứng dụng Truyền tin với dung lượng nhỏ (khóa mã h óa tạm thời)
Chương 2 131 Các chế độ sử dụng mã khối CBC - Cipher block chaining mode The plaintext : p 1 , p 2 , ..., p N The ciphertext : c 1 , c 2 , ..., c N Encryption: Decryption K dùng chung C i = E K (C i-1 P i ) C = IV (initial vector) P i = C i-1 D K (C i )
Chương 2 Các chế độ sử dụng mã khối CBC - Cipher block chaining mode Vector khởi tạo IV 2 đầu gửi, nhận phải biết IV tuy nhiên đối phương không thể đoán được IV Để đảm bảo an toàn nhất có thể, IV cần được bảo vệ trước những thay đổi trái phép, ví dụ sử dụng ECB để gửi IV tới hai đầu gửi nhận tin Để IV khó đoán ta có thể sử dụng Nonce: khối bit dữ liệu sử dụng một lần duy nhất cho mỗi phép mã hóa. Ví dụ: counter, timestamp, message number Tạo khối dữ liệu ngẫu nhiên sử dụng bộ tạo số ngẫu nhiên (random number generator) 132
Chương 2 Các chế độ sử dụng mã khối CBC - Cipher block chaining mode Thích hợp sử dụng để mã hóa các thông điệp có độ dài > b bit Ngoài việc sử dụng để đạt được tính bí mật, CBC còn dùng để xác thực . 133
Chương 2 Các chế độ sử dụng mã khối Cipher Feedback (CFB) Mode Bản rõ: chia thành các đoạn s bits: P 1 , P 2 , P 3 ,.., P N Bản mã: C 1 , C 2 , C 3 ,.., C N Mã hóa: C i = P i MSB s [ E (K, IV)] Đầu vào của hàm mã hóa là thanh ghi dịch b bít được khởi tạo với IV. s bít bên trái của đầu ra của hàm mã hóa được XOR với phân đoạn đầu tiên của bản rõ P1 để tạo đơn vị mã đầu tiên C1. C ác giá trị của thanh ghi dịch được dịch trái s bít, và C1 được thay thế bởi s bít phải nhất của thanh ghi dịch này. Lặp lại các bước trên đến khi mã hóa hết các phần tử của bản rõ. Giải mã : P i = C i MSB s [ E (K, IV)] 134
Chương 2 Các chế độ sử dụng mã khối Cipher Feedback (CFB) Mode 135 Mã hóa : C i = P i MSB s [ E (K, IV)]
Chương 2 Các chế độ sử dụng mã khối Cipher Feedback (CFB) Mode 136 Gi ải mã : P i = C i MSB s [ E (K, IV)]
Chương 2 Các chế độ sử dụng mã khối Output Feedback – OFB 137 Bản rõ: chia thành các đoạn b bits: P 1 , P 2 , P 3 ,.., P N Bản mã : C 1 , C 2 , C 3 ,.., C N Mã hóa : -1
Chương 2 Các chế độ sử dụng mã khối Output Feedback – OFB 138 Bản rõ: chia thành các đoạn b bits: P 1 , P 2 , P 3 ,.., P N Bản mã : C 1 , C 2 , C 3 ,.., C N Gi ải mã : -1
Chương 2 Các chế độ sử dụng mã khối Output Feedback – OFB Ưu điểm Vector khởi tạo là Nonce L ỗi bit trong quá trình truyền không lan truyền N ếu một lỗi bit xảy ra ở C1 thì chỉ giá trị P1 bị ảnh hưởng; các giá trị P tiếp theo không bị ảnh hưởng . Nhược điểm Dễ bị tấn công thay đổi nội dung tin hơn CFB 139
Chương 2 Các chế độ sử dụng mã khối Counter Mode (CTR) 140 Bản rõ : Bản mã: Khóa : Mã hóa: - - - ( ) -
Chương 2 Các chế độ sử dụng mã khối Counter Mode (CTR) 141 Bản rõ: Bản mã: Khóa : Giải mã: - - - ( ) -
Chương 2 Các chế độ sử dụng mã khối Counter Mode (CTR) Ưu điểm Hiệu quả về phần cứng Hiệu quả về phần mềm Tiền xử lý Truy cập ngẫu nhiên An toàn Đơn giản 142