Trường 1 Mã hóa theo luồng – Khái niệm mã hóa theo luồng – Tạo luồng khóa tuyến tính – Tạo luồng khóa không tuyến tính 2 Mã hóa theo luồng (Stream Ciphers) Khoa học về mật mã Khóa bí mật Private Key M[.]
Mã hóa theo luồng – Khái niệm mã hóa theo luồng – Tạo luồng khóa tuyến tính – Tạo luồng khóa khơng tuyến tính Mã hóa theo luồng (Stream Ciphers) Khoa học mật mã Khóa bí mật Private-Key Mã hóa theo khối Block ciphers Mã hóa theo luồng Stream ciphers Mã hóa theo khối : C = c1, c2,…, cn = ek(p1), ek(p2), …, ek(pn) Khóa khơng thay đổi cho tất khối (k) Mã hóa theo luồng : C = c0, c1, …, cn-1 = ez0(p0), ez1 (p1), …, ezn-1 (pn-1) Bằng luồng khóa (keystream) = z0, z1, …, zn-1 Hàm mã hóa giải mã pi zi ci zi pi Hàm mã giải mã phổ biến nhất: Cộng theo modulo Giả sử: pi, ci, zi ∈ {0,1} ; i = → n-1 ci = ezi (pi) = pi + zi mod → Mã hóa pi = ezi (ci) = ci + zi mod → Giải mã Nhận xét: Được Vernam sử dụng từ năm 1917 Cộng theo modulo ≡ phép XOR với đầu vào Mã hóa giải mã hồn tồn Phép cộng modulo a 0 1 b c = a + b mod 0 + = mod + = mod + = mod 1 + = mod • Đây kết a XOR b • Phép mã hóa giải mã vì: Mã: pi + zi → ci Giải mã: ci + zi = pi + zi + zi = pi Ví dụ: Mã hóa chữ A: AASCII = 6510 = 0100 00012 Với luồng khóa: z0z1…z7 = 001011012 Tạo luồng khóa • • Cần phải tạo luồng khóa zi cho bit chúng không phụ thuộc lẫn Tức zi phải tạo cách hồn tồn ngẫu nhiên Luồng khóa tạo từ khóa ngắn Khóa ban đầu K Tạo luồng khóa pn, …, p1, p0 Nam zi Tạo luồng khóa Dũng cn, …, c1, c0 Khóa ban đầu K zi pn, …, p1, p0 Mai Các phương pháp tạo luồng khóa Tạo luồng khóa đồng thời (synchronous stream cipher) zi = f(k) → Hàm tạo số ngẫu nhiên (pseudo-random generator - PRG) Tạo luồng khóa khơng đồng thời (asynchronous stream cipher) zi = f(k, ci-1, ci-2, …,ci-n) → Tạo số ngẫu nhiên với phản hồi mã (feedback of cipher) Sơ đồ mã hóa theo luồng pi Mã hóa pi ⊕ zi = ci ci zi f() Phản hồi mã k Sơ đồ mã hóa theo luồng có (hoặc khơng có) phản hồi mã Tạo luồng khóa đồng thời (synchronous stream cipher) • Dãy z0,z1, … tạo cách ngẫu nhiên phụ thuộc vào khóa k • Đại diện: Máy tạo luồng khóa tuyến tính (linear feedback shift registers - LFSR) – Với m giá trị nhị phân ban đầu máy cho ta dãy số nhị phân ngẫu nhiên dựa phép tốn XOR Q trình tính tốn có sử dụng kết tính bước trước – Ví dụ: m=3, Ta có hộp K0, K1, K2 theo hình vẽ sau: Máy tạo luồng khóa tuyến tính – LFSR-3 K2 K1 K0 0 K2 K1 K0 0 z2 z1 z0 1 1 1 1 1 0 Giá trị ban đầu z0, z1, z2, 3, + x + x3 [z0, z1, z2] = [1,0,0] Với z0, z1, z2 giá trị ban đầu ta có: z3 = z1+ z0 mod z4 = z2+ z1 mod …… Tổng quát: zi+3 = zi+1+ zi mod với i = 0, 1, 2, … Máy tạo luồng khóa tuyến tính – LFSR-m C0 + C1x + + Cm-1xm-1 + xm Cm-1 C1 C0 Km-1 K1 K0 zm-1 z1 z0 Output input Với z0, z1,…, zm-1 giá trị ban đầu C0, C1,…, Cm-1 hệ số phản hồi ∈ {0,1} Ci = → Mạch mở; Ci = → Mạch đóng zi+m = Σj Cj.zi+j mod với j = 0, 1, …m-1 Ví dụ: { C0=C1=1, C2=0; z0 =1, z1 = z2 =0; m=3} 10 Luyện tập LFSR- • Vẽ máy tính luồng khóa nhận với m=4 : Tải FULL (23 trang): https://bit.ly/3G2fw7L Dự phòng: fb.com/TaiHo123doc.net (C0= C2 = 1, C1= C3 = 0); z0= z1= 0, z2= z3= (C0= C1 = C2 = 1, C3 = 0); z0= z1= z2= 0, z3= (C0 = C1 = C2 = C3 = 1); z0= z1= z2= z3= 11 Đánh giá LFSR • Định lý: Độ dài cực đại luồng khóa tạo LFSR-m 2m-1 • Nhận xét: Ln có số (C0,…, Cm-1) cho ta độ dài maximum LFSR-m Ví dụ: Với m=4: (C0 = C1 = 1, C2 = C3 = 0) cho độ dài 2m-1 = 15 Nhưng (C0 = C1 = C2 = C3 = 1) có độ dài • LFSR biểu diễn dạng đa thức: P(x) = C0 + C1x + + Cm-1xm-1 + xm VD: (C0 = C1 = 1, C2 = C3 = 0) Ù P(x) = + x + x4 (C0 = C1 = C2 = C3 = 1) Ù P(x) = + x + x2 + x3 + x4 3136950 12 .. .Mã hóa theo luồng (Stream Ciphers) Khoa học mật mã Khóa bí mật Private-Key Mã hóa theo khối Block ciphers Mã hóa theo luồng Stream ciphers Mã hóa theo khối : C = c1, c2,…,... ek(pn) Khóa khơng thay đổi cho tất khối (k) Mã hóa theo luồng : C = c0, c1, …, cn-1 = ez0(p0), ez1 (p1), …, ezn-1 (pn-1) Bằng luồng khóa (keystream) = z0, z1, …, zn-1 Hàm mã hóa giải mã pi zi... 1917 Cộng theo modulo ≡ phép XOR với đầu vào Mã hóa giải mã hoàn toàn Phép cộng modulo a 0 1 b c = a + b mod 0 + = mod + = mod + = mod 1 + = mod • Đây kết a XOR b • Phép mã hóa giải mã vì: Mã: pi