Взлом XOR с помощью повторяющегося ключа и счетчика - PullRequest
1 голос
/ 31 октября 2019

Мне дали упражнение, где я должен сломать xor с помощью повторяющегося ключа и счетчика. Я не знаю ни ключа, ни его длины, ни значения счетчика.

У меня есть:

PT1 xor K = C1 
PT2 xor K = C2 
PT3 xor K = C3 

Итак:

C1 xor C2 = PT1 xor PT2 xor K xor K = PT1 xor PT2 xor 0

Итак:

0 xor C1 xor C2 = PT1 xor PT2
0 xor C1 xor C3 = PT1 xor PT3
0 Xor C2 xor C3 = PT2 xor PT3

Где K - ключ, C - шифр, а PT - обычный текст.

Я не знаю, что с этим делать. Не могли бы вы дать мне подсказку? :)

1 Ответ

1 голос
/ 02 ноября 2019

Вот решение, которое удовлетворяет вашим условиям с вашим вопросом

PT1(5)   K(9)   C1(12)
PT2(7)   K(9)   C2(14)
PT3(9)   K(9)   C3(0)

0 xor C1 xor C2 = PT1 xor PT2
0 xor C1 xor C3 = PT1 xor PT3
0 Xor C2 xor C3 = PT2 xor PT3

So in the case i built:
0 xor C1(12) xor C2(14) = PT1(5) xor PT2(7)
0 xor C1(12) xor C3(0) =  PT1(5) xor PT3(9)
0 Xor C2(14) xor C3(0) =  PT2(7) xor PT3(9)

В слабых случаях вы можете получить K следующим образом:

Вы можете получить K следующим образом:

In [519]: 1^5                                                                                                                                  
Out[519]: 4

In [520]: 2^5                                                                                                                                  
Out[520]: 7

In [521]: 3^5                                                                                                                                  
Out[521]: 6

In [522]: 6^7^4                                                                                                                                
Out[522]: 5

Таким образом, вы можете взломать ключ, скопировав вместе шифры, если используется слабый ключ к шифру xor (работает не во всех случаях, только очень редко). Но поможет ли это вам помочь решить проблему?

PT1 xor K = C1   if c1 is 4
PT2 xor K = C2   if c2 is 7
PT3 xor K = C3   if c2 is 6

Вы знаете, что K равно 5. Оттуда вы можете получить PT, работая XOR в обратном направлении:

c1 (4) ^ K (5) = PT1
c2 (7) ^ K (5) = PT2
c3 (6) ^ K (5) = PT3

Итак, резюмируем, XOR c1 ^ c2 ^ c3, чтобы получить Kи оттуда вы можете получить соответствующий PT (1-3). Но это работает только в некоторых редких случаях, но помогает ли это?

Если у вас есть какое-либо из значений, дайте мне знать. Я попытаюсь воссоздать что-то с нуля

Вот случай, когда я XORED C1, C2, C3 вместе, чтобы получить ключ, а затем PT1-3 просто заполнить для работы

PT1(10)  K(12)   C1(6)
PT2(4)   K(12)   C2(8)
PT3(14)  K(12)   C3(2)


0 xor C1(6) xor C2(8) =  PT1(10) xor PT2(4)    
0 xor C1(6) xor C3(2) =  PT1(10) xor PT3(14)  
0 Xor C2(8) xor C3(2) =  PT2(4)  xor PT3(14)  

Это действительно зависит от того, как ваше назначение ожидает, что вы получите ключ. Надеюсь, все это поможет, шифрование - это весело. Я указал несколько путей, надеюсь, один из них поможет.

...