BAO MAT THONG TIN
— BÀI:
Trang 3ra ăăằă=
— Mã hóa cô điển
= ban tin ngôn ngữ,
= mot don v1 ma hoa 1a chi cai,
= phuong thirc thay thé hay phương thức hoán vị — Thong tin ngay ngay nay
= HTML, hinh anh, video, am thanh
=> Biéu dién trén may vi tính dưới dạng một dãy các số nhị
phân
Trang 5OH Nem TT E10 606i
Vi du ma hoa đôi xứng hiện đại
Trang 6Of Nentonecbent steer — Giả sử dùng một khóa K gém 4 bit 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
Trang 7
Of Nentonecbent steer
— Mã hóa bang phép XOR: s 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,
gia lap ma hoa One-Time pad
= Một khối được mã hóa băng phép XOR với khóa:
° => Khơng an tồ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
Trang 8fos Ma dong (Stream Cipher)
— Ma dong co cac dac tinh sau:
e Kich thuéc mét đơn vị mã hóa: gôm k bít Bản rõ được chia thành các don vị mã hóa: P —> PạØ1P; Pn—1 (P; : k bít)
e_ Một bộ sinh dãy số ngẫu nhiên: dùng một khóa K ban đầu đề sinh ra các số
ngẫu nhiên có kích thước bằng kích thước đơn vị mã hóa:
StreamCipher(K) —> S = saS4S2 Sn_+ - (S¡: k bít)
e Moi so ngau nhién được XOR với đơn vị mã hóa của bản rõ để có được
bản mã
Trang 9fos Ma dong (Stream Cipher)
— Giai ma => thuc hién ngugc lại
= Banma C được XOR với dãy số ngẫu nhiên S để cho ra lại bản rõ ban đâu: Po = Co @ So, P1 = C1 D 54 - Trong ví dụ trên đơn vị mã hóa có chiều dài k = 4 bit, n = 3: Do = 1111, p, = 0000, p, = 0011 Sg = 8, = $2 =K =0101 cạ = 1010, c, = 0101, c, = 0110
— Vi du nay khong phai la ma dong vi sO, s1, s2 lặp lại khóa K
Trang 10fos Ma dong (Stream Cipher)
— Với mã dòng, các sô s, được sinh ra phải đảm bảo một độ ngau nhiên nào đó (chu ky tuần hoàn đài) P Do Dị ws Pn-t tulad mm | C Co C1 " Cn-1 Mõ hình mã dòng
— Khóa có chiều dài ngăn: Vigenere => khơng bảo đảm an tồ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 hồn tồn thực sự ngâu ie
Trang 116s em ae
— A5/1 được dùng trong mạng điện thoại GSM, dé bao mat dit 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
Trang 125 Se
— 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ố gom 3 thanh ghi X, Y, Z
= Thanh ghi X gom 6 bit, ky hiéu 1a (Xp, Xj, ., X‹)
= Thanh ghi Y gôm 8 bit (Yo Yq: ., Y2)
= Thanh ghi Z lưu 9 bit (Zo, Z¿, , Zạ)
— Khóa K ban đầu có chiêu dài 23 bít và lần lượt được phân bố
Trang 14fos 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ứ 1, các phép tính sau được thực hiện:
= m=maj(X,, y3, Z3)
= If x, =m then thuc hién quay X = Iƒ ya=m then thực hiện quay Y = If z,=m then thực hiện quay Z
— Và bít được sinh ra là: $S¡Z xs ® y7Œ Ze
— Bít s; được XOR với bít thứ ¡ trong bản rõ để có được bít thứ i
Trang 15VỊ dụ: mã hóa bản rõ P=III (chữ h) với khóa K là 100101 01001110.100110000
Trang 166mm ae
— A5/1 hoạt động giỗng như TinyA5/1
Trang 171mm
— Hàm mai được tính trên 3 bít xạ, Y¡o; Z¡ạ Sau khi quay xong bít sinh ra là: s¡ = xis @ y21® Z2z
Trang 18— RC4 được dùng trong giao thức SSL để bảo mật dữ liệu trong quá trình truyền đữ 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
Trang 195 Sco
— Là mô hình thu nhỏ của RC4
— Đơn vị mã hóa của TinyRC4 la 3 bit
— TinyRC4 dung 2 mang S va T mỗi mảng gơm § số ngun 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ừ I đên 8 Bộ sinh sô môi lân sinh ra 3 bít đê sử dụng trong phép XOR
Trang 20fos TinyRC4 a) Giai đoạn khởi tạo /* Khoi tao day so S5 va T */ for 1 = 9 to 7 do S[i] = 1; T[i] = K[i mod N]; next i /* Hoan vi day S */ J= 9; for 1 = 9 to 7 do j = (j + S[i] + T[i]) mod 8; Swap(S[i], S[j]); next i
Trang 22fos TinyRC4 b) Giai doan sinh sé: i, Jj = 9; while (true) i = (i + 1) mod 8; j = (j + S[i]) mod 8; Swap (S[iJ, S[j]); t = (S[i] + S[j]) mod 8; k = S[t]; end while;
— Cac phan 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
Trang 24public static int[] cryptRC4(int S[], int T[], int K[], int N) {
// Giai đoạn khởi tạo
Trang 26— Cơ chế hoạt động của RC4 cũng giông như TinyRC4 với các đặc tính sau:
= Don vi ma hoa của RC4 là một byte 8 bít = Mang S va T gồm 256 so nguyên 8 bit
s Khóa K là một dãy gom N so nguyén 8 bit voi N có thé lay
gia tri ty 1 dén 256
Trang 27Bi naaaaa=n
— Hai giai doan cua RC4 la:
a) Giai doan khoi tao: /* Khoi tao day S va T*/ for i = 0 to 255 do S[i] = 1; T[i] = K[i mod N]; next i /* Hoan vi day S */ J= 9; for i = 8 to 255 do j = (j + SLi] + TLi]) mod 256; Swap(S[i], S[j]); next i b) Giai doan sinh số: i, j = 9; while (true) i = (i + 1) mod 256; j = (j + S[i]) mod 256; Swap (S[i], S[j]); t = (S[i] + S[j]) mod 256; k = S[t]; end while;
— Quá trình sinh số của RC4 cũng sinh ra dãy số ngẫu nhiên, khó