2013-05-03 5 views
-1

19 개의 구별 된 키로 암호화 된 20 개의 OTP 암호문이 있으므로 1 개의 키가 재사용되었습니다. 동일한 길이의 두 가지 메시지 만 암호화되었습니다.원타임 패드 암호화에서 키가 재사용되었음을 어떻게 감지합니까?

두 개의 암호문을 함께 사용하면 동일한 키를 공유하면 키가 제거된다는 것을 알고 있습니다. 그래서 나는 그들 모두와 함께했다. 하지만 이제는 키를 공유하는 사람이 어느 쪽인지 알 수 없습니다.

다른 사람과 키를 공유하는 쌍을 구별하는 방법을 알려줄 수 있습니까?

+1

이 숙제가 있습니까? 평문에 대해 뭘 안다고? 평문이 무작위와 구별 될 수 없다면 (개념적으로 : 평문은 20 개의 메시지를 암호화하는 데 사용되는 키로 간주 될 수 있습니다. 그 중 두 개는 동일합니다). –

+0

예, 숙제입니다. 일반 텍스트는 공백없이 동일한 길이의 2 개의 영어 메시지입니다. 그래서 평문은 무작위로 구별됩니다. 나는 모든 암호문을 쌍으로 함께 색칠했다. 한 쌍은 키가없는 두 개의 평문의 xor이기 때문에 다른 쌍과 구별 할 수 있어야합니다. 나는 그 차이를 발견 할 수 없다. – mbp

+0

나는 당신이 이미 모른다고 말할 수있는 것이 확실하지 않습니다. 대답은 명백해야합니다 - 특히 평문이 영숫자 인 8 비트 ASCii 인 경우 ... –

답변

1

암호문을 함께 사용하면 제안 된대로 키를 제거 할 수 있습니다. 결과는 함께 XOR 된 두 개의 일반 텍스트가됩니다.

이제이 데이터 내에서 패턴을 감지하게됩니다. 인코딩을 검사하여이를 수행 할 수 있습니다. ASCII 문자는 항상 특정 비트 패턴을 갖습니다. 'A'은 16 진수에서는 41이고 2 진수에서는 0100 0001이고 16 진수에서는 61 또는 0110 0001입니다. 따라서 XOR을 사용하면 0010 0000과 같은 것을 얻을 수 있습니다. 높은 비트 수를 0으로 설정합니다. 또한 두 개의 ASCII 인코딩 된 문자 XOR-ed는 두 개의 0 값 비트로 시작됩니다.

마지막으로 텍스트는 16 진수의 20 값 또는 2 진수의 0010 0000 값을 사용하여 인코딩되는 많은 공백을 사용합니다. 임의의 문자로 XOR 된 경우 다른 대소 문자를 반환하지만 결과는 여전히 문자입니다. 자체적으로 배타적 논리합을 적용하면 이진 값이 0000 0000이됩니다 (자체적으로 XOR 된 모든 문자 인코딩과 동일).

충분한 암호문을 사용하면 일반 텍스트와 키를 얻을 수 있습니다. 단지 2 개의 암호문 만 있으면 이것은 아마도 달성 할 수 없다. 아마도 다음 과제 일 겁니다.

0

하나의 아이디어는 XOR을 사용하여 설명 할 때 키를 제거한 다음 평범한 텍스트 중 하나가 포함 할 가능성이있는 결과를 XOR하고 출력을 검사하는 것입니다.