Professional Documents
Culture Documents
Bài Giảng Mã Hóa Theo Luồng
Bài Giảng Mã Hóa Theo Luồng
1
Mã hóa theo luồng
(Stream Ciphers)
4
Tạo luồng khóa
• Cần phải tạo luồng khóa zi sao cho các bit của chúng
không phụ thuộc lẫn nhau. Tức là các zi phải được tạo
ra một cách hoàn toàn ngẫu nhiên
• Luồng khóa sẽ được tạo ra từ 1 khóa ngắn
pi Mã hóa ci
pi ⊕ zi = ci
zi
f()
Phản hồi mã
k
8
Máy tạo luồng khóa tuyến tính –
LFSR-3
K2 K1 K0
0 0 1
K2 K1 K0 1 0 0
z2 z1 z0 0 1 0
z0, z1, z2, ...
1 0 1
Giá trị 3, 1 + x + x3 1 1 0
ban đầu [z0, z1, z2] = [1,0,0] 1 1 1
0 1 1
Với z0, z1, z2 là các giá trị ban đầu ta có: 0 0 1
z3 = z1+ z0 mod 2
z4 = z2+ z1 mod 2
……
Tổng quát:
zi+3 = zi+1+ zi mod 2 với i = 0, 1, 2, …
9
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
11
Đánh giá LFSR
• Định lý: Độ dài cực đại của luồng khóa được tạo
bởi LFSR-m bằng 2m-1
• Nhận xét: Luôn có 1 số bộ nào đó (C0,…, Cm-1) cho ta độ
dài maximum của 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 5
• LFSR có thể được biểu diễn dưới dạng đa thức:
P(x) = C0 + C1x + ... + Cm-1xm-1 + xm
VD: (C0 = C1 = 1, C2 = C3 = 0) Ù P(x) = 1 + x + x4
(C0 = C1 = C2 = C3 = 1) Ù P(x) = 1 + x + x2 + x3 + x4
3136950
12