Для начала нужно узнать длину пароля. Вы делаете это, оценивая Индекс совпадения или Каппа-тест. XOR зашифрованного текста с самим собой сдвинут на 1 шаг и подсчитывает количество одинаковых символов (значение 0). Вы получаете значение Каппа, разделив результат на общее количество символов минус 1. Сдвиньте еще раз и снова вычислите значение Каппа. Сдвигайте зашифрованный текст столько раз, сколько необходимо, пока не узнаете длину пароля. Если длина равна 4, вы должны увидеть что-то похожее на это:
Offset Hits
-------------------------
1 2.68695%
2 2.36399%
3 3.79009%
4 6.74012%
5 3.6953%
6 1.81582%
7 3.82744%
8 6.03504%
9 3.60273%
10 1.98052%
11 3.83241%
12 6.5627%
Как вы видите, значение Каппа значительно выше для чисел, кратных 4 (4, 8 и 12), чем для других. Это говорит о том, что длина пароля равна 4.
Теперь, когда у вас есть длина пароля, вы должны снова выполнить XOR зашифрованного текста с самим собой, но теперь вы смещаетесь на кратные длины. Почему? Поскольку зашифрованный текст выглядит так:
THISISTHEPLAINTEXT <- Plaintext
PASSPASSPASSPASSPA <- Password
------------------
EJKELDOSOSKDOWQLAG <- Ciphertext
Когда два одинаковых значения подвергаются XOR: ed, результат равен 0:
EJKELDOSOSKDOWQLAG <- Ciphertext
EJKELDOSOSKDOWQLAG <- Ciphertext shifted 4.
Есть в реальности:
THISISTHEPLAINTEXT <- Plaintext
PASSPASSPASSPASSPA <- Password
THISISTHEPLAINTEXT <- Plaintext
PASSPASSPASSPASSPA <- Password
Который:
THISISTHEPLAINTEXT <- Plaintext
THISISTHEPLAINTEXT <- Plaintext
Как вы видите, пароль «исчезает», а открытый текст подвергается операции XOR: с самим собой.
Итак, что мы можем сделать сейчас? Вы написали, что пробелы убраны. Это немного усложняет получение открытого текста или пароля. Но вовсе не невозможно.
В следующей таблице показаны значения зашифрованного текста для всех английских символов:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A 0
B 3 0
C 2 1 0
D 5 6 7 0
E 4 7 6 1 0
F 7 4 5 2 3 0
G 6 5 4 3 2 1 0
H 9 10 11 12 13 14 15 0
I 8 11 10 13 12 15 14 1 0
J 11 8 9 14 15 12 13 2 3 0
K 10 9 8 15 14 13 12 3 2 1 0
L 13 14 15 8 9 10 11 4 5 6 7 0
M 12 15 14 9 8 11 10 5 4 7 6 1 0
N 15 12 13 10 11 8 9 6 7 4 5 2 3 0
O 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
P 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0
Q 16 19 18 21 20 23 22 25 24 27 26 29 28 31 30 1 0
R 19 16 17 22 23 20 21 26 27 24 25 30 31 28 29 2 3 0
S 18 17 16 23 22 21 20 27 26 25 24 31 30 29 28 3 2 1 0
T 21 22 23 16 17 18 19 28 29 30 31 24 25 26 27 4 5 6 7 0
U 20 23 22 17 16 19 18 29 28 31 30 25 24 27 26 5 4 7 6 1 0
V 23 20 21 18 19 16 17 30 31 28 29 26 27 24 25 6 7 4 5 2 3 0
W 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24 7 6 5 4 3 2 1 0
X 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15 0
Y 24 27 26 29 28 31 30 17 16 19 18 21 20 23 22 9 8 11 10 13 12 15 14 1 0
Z 27 24 25 30 31 28 29 18 19 16 17 22 23 20 21 10 11 8 9 14 15 12 13 2 3 0
Что это значит тогда? Если A и B подверглись XOR:ed, то результирующее значение равно 3. E и P дадут 21. И т. д. Хорошо, но как это вам поможет?
Помните, что открытый текст подвергается XOR: с самим собой, сдвинутым на кратное длине пароля. Для каждого значения вы можете проверить приведенную выше таблицу и определить, какие комбинации может иметь эта позиция. Допустим, значение равно 25, тогда два символа, которые привели к значению 25, могут быть одной из следующих комбинаций: (I-P), (H-Q), (K-R), (J-S), (M-T), (L-U), (O-V ), (N-W), (A-X) или (C-Z). Но какой? Теперь вы делаете больше сдвигов и снова ищете соответствующие значения в таблице для каждой позиции. В следующий раз значение может быть 7, и, поскольку у вас уже есть список возможных комбинаций символов, вы проверяете только их. В следующих двух сменах значения равны 3 и 1. Теперь вы можете определить, что это символ W, так как это единственный общий символ в каждой смене, (N-W), (P-W), (T-W), (V-W). Вы можете сделать это для большинства позиций.
Вы не получите весь открытый текст, но вы получите достаточно символов, чтобы узнать пароль. Возьмите известные символы и XOR их в правильном положении в зашифрованном тексте. Это даст пароль. Количество известных символов, которое вам нужно, по крайней мере, равно количеству символов в пароле, если они находятся в «правильных» позициях по отношению к паролю.
Удачи!
person
Sani Singh Huttunen
schedule
04.09.2011
homework
имеет ошибку :-) :-) - person xanatos   schedule 04.09.2011