Kỹ thuật phá mã
Ước lượng độ độ dài khóa
•
•
Phương pháp Kasiski
Phương pháp sử dụng chỉ số trùng hợp
Phục hồi khóa
•
•
Phương pháp
Phương pháp phân tích thống kê
1
Friedrich W. Kasiski
(29 November 1805 – 22 May 1881)
2
Ý tưởng của phương pháp
Tìm các đoạn mã lặp lại trong bản mã và khoảng cách giữa chúng
3
Quan sát
Nếu một xâu lặp lại trong bản rõ được mã hóa cùng một xâu con trong khóa thì trong bản mã sẽ chứa lặp lại
các xâu con lặp lại tương ứng với các xâu con trong bản rõ và khoảng cách giữa chúng là bội của khóa.
Bản mã dài sẽ xuất hiện nhiều hơn những xâu con lặp lại
Ngược lại một bản mã ngắn và một khóa dài sẽ khó xuất hiện những xâu trùng lặp.
4
William F. Friedman
William F. Friedman là người đầu tiên đề cập và sử dụng chỉ sôs trùng
hợp (IC) vào năm 1992
(September 24, 1891 – November 12, 1969)
5
Tính IC
Độ dài văn bản N (có N ký tự) và kích thước bảng chữ cái là n, ai là ký tự thứ
i trong bảng chữ cái. Số lần ai
xuất hiên trong văn bản là Fi lần.
Xác xuất để hai lần chọn ngẫu nhiên đều được ai là:
6
Tính IC
và xác xuất để hai lần chọn ngẫu nhiên được cùng ký tự là:
Vậy chỉ số trùng hợp là:
7
Xét bảng chữ cái tiếng anh
8
ICEnglish
Chỉ số trùng hợp của các văn bản bằng tiếng anh là:
9
ICEnglish
Nếu N đủ lớn thì (piN – 1)/(N – 1) sẽ xấp xỉ bằng pi:
Từ tần suất xuất hiện của các ký tự trong tiếng anh ta tính được ICEnglish
0.0686
10
ICRandom
Trong trường hợp văn bản là những xâu được sinh ngẫu nhiên thì tần suất xuất hiện của một ký tứ trong văn
bản là pi = 1/n, n là kích thước bảng chữ cái.
Từ đó tính được ICRandom
1/n. Nếu sinh ngẫu nhiên từ bảng chữ cái tiếng anh thì ICRandom = 1/26
0.038466.
11
Sử dụng IC để ước lượng độ dài khóa
Đoán độ dài khóa là l và chia bản mã C = C1C2…CN thành l đoạn:
•
S1 bắt đầu từ C1 và có cấu trúc: S1 = C1C1+lC1+2l…
•
S2 bắt đầu từ C2 và có cấu trúc: S1 = C2C2+lC2+2l…
•
Tổng quát, Si bắt đầu bằng Ci và có cấu trúc: Si = CiCi+lCi+2l…
•
và, Sl bắt đầu bằng Cl và có cấu trúc: Sl = ClC2lC3l…
Nhận xét: Với l là độ dài của khóa thì mỗi khối Si sẽ được thế bằng một bảng thế (hay mã hóa bằng một ký tự
trong khóa)
12
Ví dụ
Bản mã:
RSTCS JLSLR SLFEL GWLFI ISIKR MGL
Với độ dài khóa là 3 thì ta chia đoạn mã trên thành 3 khối:
RCLRFGFSRL
SSSSEWIIM
TJLLLLIKG
13
Xác đinh độ dài khóa dựa trên IC
Quan sát: Nếu bản rõ được viết bằng tiếng anh thì IC tính được sẽ xấp xỉ ICEnglish
Ta đoán lần lươt l = 1, 2, 3,… tương ứng với việc chia bản mã thành 1 khối, 2 khối, 3 khối,…
Tính IC của mỗi khối tương ứng với mỗi l, đồng thời tính trung bình IC của các khối ICAverage.
Nếu cách chia nào cho ICAverage gần với ICEnglish thì l tương ứng chính là độ dài khóa
14
Xét lại ví dụ trước
15