BẢO MẬT THÔNG TIN

BÀI 3:

MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI

Nguyễn Hữu Thể

1

Nội dung

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

2

 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ị.

 Mã hóa cổ điển

 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.

 Thông tin ngày ngày nay

3

Ví dụ:

 Bản tin: attack

 Mã ASCII: 97 116 116 97 99 107

01100011 01101011

 Biểu diễn nhị phân: 01100001 01110100 01110100 01100001

4

Mã hóa đối xứng hiện đại

Ví dụ mã hóa đối xứng hiện đại

 Nếu có bản rõ là “head” => nhị phân là: 111100000011

 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.

5

Mã hóa đối xứng hiện đại

bằng phép XOR :

 bản rõ:

1111 0000 0011 (head)

 khóa:

0101 0101 0101

 bản mã:

1010 0101 0110 (FBCG)

 Giả sử dùng một khóa K gồm 4 bít 0101 để mã hóa bản rõ trên

 Đơn vị mã hóa không phải là một khối 4 bít.

bản rõ ban đầu.

 Để giải mã, lấy bản mã XOR một lần nữa với khóa thì có lại

6

Mã hóa đối xứng hiện đại

 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

 Mã hóa bằng 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)

 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:

 Giải mã => thực hiện ngược lại

 Về phương diện khóa, ví dụ này giống mã Vigenere.

 Ví dụ này không phải là mã dòng vì s0, s1, s2 lặp lại khóa K.

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.

 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.

 Đơn vị mã hóa của A5/1 là một bít.

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:

 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

 Bộ sinh số gồm 3 thanh ghi X, Y, Z.

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.

 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à:

 Tại bước sinh số thứ i, các phép tính sau được thực hiện:

trong bản mã theo quy tắc của mã dòng.

 Bít si được XOR với bít thứ i trong bản rõ để có được bít thứ i

14

Ví dụ: mã hóa bản rõ P=111 (chữ h) với khóa K là 100101. 01001110.100110000

Mã dòng (Stream Cipher)

15

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

sinh ra là:

 Hàm maj được tính trên 3 bít x8, y10, z10. Sau khi quay xong bít

bên dưới:

 Toàn bộ quá trình sinh dãy số của A5/1 được minh họa qua hình

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.

LAN.

 RC4 còn được sử dụng trong mã hóa WEP của mạng Wireless

18

TinyRC4

 Là mô hình thu nhỏ của RC4

 Đơn vị mã hóa của TinyRC4 là 3 bít.

(từ 0 đến 7).

 TinyRC4 dùng 2 mảng S và T mỗi mảng gồm 8 số nguyên 3 bít

 Quá trình sinh số của TinyRC4 gồm hai giai đoạn:

 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.

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

- Hoán vị S

Ví dụ:

P = 001000110

(từ ‟bag”)

 Mã hóa bản rõ:

2, 1, 3 (N=3)

 Khóa K gồm 3 số

21

Thực hiện đến khi i=7 và lúc đó dãy S là 6 0 7 1 2 3 5 4

TinyRC4

 Các phần tử của S tiếp tục được hoán vị.

b) Giai đoạn sinh số:

 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

- Tiếp tục ví dụ trên, quá trình sinh số mã hóa bản rõ ‟bag” thực hiện:

23

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];

24

int loop = 0;

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 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.

 Cơ chế hoạt động của RC4 cũng giống như TinyRC4 với các

26

RC4

 Hai giai đoạn của RC4 là:

đoán trước => RC4 có độ an toàn cao

 Quá trình sinh số của RC4 cũng sinh ra dãy số ngẫu nhiên, khó

27