tài liệu an toàn và bảo mật thông tin - Pdf 24

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

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ố s
i
đượ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.

1
, …, z
8
).
 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(x
1
, y
3
, z
3
)
 If x
1
= m then thực hiện quay X
 If y
3
= m then thực hiện quay Y
 If z
3
= m then thực hiện quay Z

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)

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


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status