Bài giảng Bài 3: mã hóa đối xứng hiện đại

TinyA5/1 2. A5/1 3. TinyRC4 4. RC4

pdf27 trang | Chia sẻ: mamamia | Lượt xem: 3057 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Bài 3: mã hóa đối xứng hiện đại, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1 BẢO MẬT THÔNG TIN BÀI 3: MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI Nguyễn Hữu Thể 2 Nội dung 1. TinyA5/1 2. A5/1 3. TinyRC4 4. RC4  Mã hóa cổ điển  bản tin ngôn ngữ,  một đơn vị mã hóa là chữ cái,  phương thức thay thế hay phương thức hoán vị.  Thông tin ngày ngày nay  HTML, hình ảnh, video, âm thanh… => Biểu diễn trên máy vi tính dưới dạng một dãy các số nhị phân.  Trong máy tính: chữ cái được biểu diễn bằng mã ASCII. 3 Ví dụ:  Bản tin: attack  Mã ASCII: 97 116 116 97 99 107  Biểu diễn nhị phân: 01100001 01110100 01110100 01100001 01100011 01101011 4 Mã hóa đối xứng hiện đại Ví dụ mã hóa đối xứng hiện đại  Bản rõ là các chữ cái của một ngôn ngữ gồm có 8 chữ cái A, B, C, D, E, F, G, H trong đó mỗi chữ cái được biểu diễn bằng 3 bít.  Nếu có bản rõ là “head” => nhị phân là: 111100000011 5 Mã hóa đối xứng hiện đại  Giả sử dùng một khóa K gồm 4 bít 0101 để mã hóa bản rõ trên bằng phép XOR :  bản rõ: 1111 0000 0011 (head)  khóa: 0101 0101 0101  bản mã: 1010 0101 0110 (FBCG)  Đơn vị mã hóa không phải là một khối 4 bít.  Để giải mã, lấy bản mã XOR một lần nữa với khóa thì có lại bản rõ ban đầu. 6 Mã hóa đối xứng hiện đại  Mã hóa bằng phép XOR:  Khóa được lặp lại: • => điểm yếu giống như mã hóa Vigenere. • Khắc phục: dùng một bộ sinh số ngẫu nhiên để tạo khóa dài, giả lập mã hóa One-Time pad.  Một khối được mã hóa bằng phép XOR với khóa: • => Không an toàn vì chỉ cần biết một cặp khối bản rõ - bản mã (vd: 1111 và 1010) => dễ dàng tính được khóa. • Khắc phục: tìm các phép mã hóa phức tạp hơn phép XOR 7 Mã dòng (Stream Cipher)  Mã dòng có các đặc tính sau: 8 Mã dòng (Stream Cipher)  Giải mã => thực hiện ngược lại  Bản mã C được XOR với dãy số ngẫu nhiên S để cho ra lại bản rõ ban đầu:  Ví dụ này không phải là mã dòng vì s0, s1, s2 lặp lại khóa K.  Về phương diện khóa, ví dụ này giống mã Vigenere. 9 Mã dòng (Stream Cipher)  Với mã dòng, các số si được sinh ra phải đảm bảo một độ ngẫu nhiên nào đó (chu kỳ tuần hoàn dài)  Khóa có chiều dài ngắn: Vigenere => không bảo đảm an toàn  Khóa có chiều dài bằng chiều dài bản tin: One-Time Pad => không thực tế.  Mã dòng cân bằng giữa hai điểm này => khóa ngắn nhưng dãy số sinh ra bảo đảm một độ ngẫu nhiên cần thiết như khóa của One-time Pad, dùng rằng không hoàn toàn thực sự ngẫu nhiên. 10 A5/1  A5/1 được dùng trong mạng điện thoại GSM, để bảo mật dữ liệu trong quá trình liên lạc giữa máy điện thoại và trạm thu phát sóng vô tuyến.  Đơn vị mã hóa của A5/1 là một bít.  Bộ sinh số mỗi lần sẽ sinh ra hoặc bít 0 hoặc bít 1 để sử dụng trong phép XOR. 11 TinyA5/1  Mô hình thu nhỏ của A5/1 gọi là TinyA5/1.  Cơ chế thực hiện của bộ sinh số TinyA5/1 là như sau:  Bộ sinh số gồm 3 thanh ghi X, Y, Z.  Thanh ghi X gồm 6 bit, ký hiệu là (x0, x1, …, x5).  Thanh ghi Y gồm 8 bit (y0, y1, …, y7).  Thanh ghi Z lưu 9 bit (z0, z1, …, z8).  Khóa K ban đầu có chiều dài 23 bít và lần lượt được phân bố vào các thanh ghi: K -> XYZ 12 TinyA5/1  Các thanh ghi X, Y, Z được biến đổi theo 3 quy tắc: 13 TinyA5/1  Hàm maj(x, y, z) nếu trong 3 bít x, y, z có từ hai bít 0 trở lên thì hàm trả về giá trị 0, nếu không hàm trả về giá trị 1.  Tại bước sinh số thứ i, các phép tính sau được thực hiện:  m = maj(x1, y3, z3)  If x1 = m then thực hiện quay X  If y3 = m then thực hiện quay Y  If z3 = m then thực hiện quay Z  Và bít được sinh ra là:  Bít si được XOR với bít thứ i trong bản rõ để có được bít thứ i trong bản mã theo quy tắc của mã dòng. 14 Mã dòng (Stream Cipher) 15 Ví dụ: mã hóa bản rõ P=111 (chữ h) với khóa K là 100101. 01001110.100110000 A5/1  A5/1 hoạt động giống như TinyA5/1.  Kích thước thanh ghi X, Y, Z lần lượt là 19, 22 và 23 bít 16 A5/1  Hàm maj được tính trên 3 bít x8, y10, z10. Sau khi quay xong bít sinh ra là:  Toàn bộ quá trình sinh dãy số của A5/1 được minh họa qua hình bên dưới: 17 RC4  RC4 được dùng trong giao thức SSL để bảo mật dữ liệu trong quá trình truyền dữ liệu giữa Web Server và trình duyệt Web.  RC4 còn được sử dụng trong mã hóa WEP của mạng Wireless LAN. 18 TinyRC4  Là mô hình thu nhỏ của RC4  Đơn vị mã hóa của TinyRC4 là 3 bít.  TinyRC4 dùng 2 mảng S và T mỗi mảng gồm 8 số nguyên 3 bít (từ 0 đến 7).  Khóa là một dãy gồm N số nguyên 3 bít với N có thể lấy giá trị từ 1 đến 8. Bộ sinh số mỗi lần sinh ra 3 bít để sử dụng trong phép XOR.  Quá trình sinh số của TinyRC4 gồm hai giai đoạn: 19 TinyRC4 a) Giai đoạn khởi tạo  Dãy S gồm các số nguyên 3 bít từ 0 đến 7 được sắp thứ tự tăng dần. Sau đó dựa trên các phần tử của khóa K, các phần tử của S được hoán vị lẫn nhau đến một mức độ ngẫu nhiên nào đó. 20 Ví dụ:  Mã hóa bản rõ: P = 001000110 (từ ‟bag”)  Khóa K gồm 3 số 2, 1, 3 (N=3) 21 - Hoán vị S Thực hiện đến khi i=7 và lúc đó dãy S là 6 0 7 1 2 3 5 4 TinyRC4 b) Giai đoạn sinh số:  Các phần tử của S tiếp tục được hoán vị.  Tại mỗi bước sinh số, hai phần tử của dãy S được chọn để tính ra số k 3 bít là số được dùng để XOR với đơn vị mã hóa của bản rõ. 22 23 - Tiếp tục ví dụ trên, quá trình sinh số mã hóa bản rõ ‟bag” thực hiện: public static int[] cryptRC4(int S[], int T[], int K[], int N) { // Giai đoạn khởi tạo for (int i = 0; i < 8; i++) { S[i] = i; T[i] = K[i % N]; } // Hoán vị ngẫu nhiên System.out.println("Hoán vị mảng S[] "); int j = 0; for (int i = 0; i < 8; i++) { j = (j + S[i] + T[i]) % 8; swap(S, i, j); // Hoán vị S[i] và S[j] printArrayInt(S, 8); } int i = 0; j = 0; int k[] = new int[N]; int loop = 0; 24 System.out.println("Giai đoạn sinh số: "); while (loop < N) { i = (i + 1) % 8; j = (j + S[i]) % 8; swap(S, i, j); int t = (S[i] + S[j]) % 8; k[loop] = S[t]; printArrayInt(S, 8); loop++; } return k; // Chú ý: Phương thức (hàm) này có thể tách ra thành nhiều phương thức nhỏ. } 25 RC4  Cơ chế hoạt động của RC4 cũng giống như TinyRC4 với các đặc tính sau:  Đơn vị mã hóa của RC4 là một byte 8 bít.  Mảng S và T gồm 256 số nguyên 8 bít  Khóa K là một dãy gồm N số nguyên 8 bít với N có thể lấy giá trị từ 1 đến 256.  Bộ sinh số mỗi lần sinh ra một byte để sử dụng trong phép XOR. 26 RC4  Hai giai đoạn của RC4 là:  Quá trình sinh số của RC4 cũng sinh ra dãy số ngẫu nhiên, khó đoán trước => RC4 có độ an toàn cao 27
Tài liệu liên quan