두 평문을 같은 키로 XOR 암호화하면 암호문 두 개를 다시 XOR할 때 공통 키가 소거됩니다. 따라서 C₁ XOR C₂ = P₁ XOR P₂가 되어 평문 사이의 관계가 노출됩니다. 그러나 이 관계만으로 두 평문이 항상 하나로 정해지는 것은 아닙니다. 한 평문을 알거나 문맥 후보가 좁혀질 때 다른 평문을 복구하기 쉬워집니다.

일회용 패드의 안전성에는 메시지 길이 이상의 균등 무작위 키, 평문과의 독립성, 키의 단 한 번 사용과 비밀 유지가 필요합니다. 예제의 네 비트 값은 원리 확인을 위해 만든 숫자이며 운영용 키나 실제 보안 강도 측정값이 아닙니다.

키를 두 번 쓰면 암호문 관계가 남습니다

일회용 패드(One-Time Pad, OTP)는 이름처럼 같은 키를 재사용하지 않는 방식입니다. 짧고 비트 단위로 표현한 교육용 예에서 암호화는 C = P XOR K로 둡니다. 같은 K를 두 번 사용하면 C₁ XOR C₂ = (P₁ XOR K) XOR (P₂ XOR K)가 됩니다. XOR은 같은 값을 두 번 적용하면 없어지므로 K XOR K = 0이고, 결과는 P₁ XOR P₂만 남습니다. 공격자가 각 암호문에서 곧바로 평문을 읽는다는 뜻은 아니지만, 서로 무관해야 할 두 메시지 사이에 정보가 생깁니다.

아래 계산은 XOR 규칙을 확인하려고 만든 4비트 예입니다. 첫 번째 평문 P₁은 1010, 두 번째 평문 P₂는 0011, 두 메시지에 공통으로 쓴 키 K는 1100이라고 가정합니다. 실제 OTP에서 이런 짧은 키를 쓰거나 재사용해도 된다는 뜻은 아닙니다.

같은 키를 두 번 썼을 때의 4비트 계산
항목계산결과
첫 번째 암호문1010 XOR 11000110
두 번째 암호문0011 XOR 11001111
두 암호문의 XOR0110 XOR 11111001
두 평문의 XOR1010 XOR 00111001

마지막 두 행이 같습니다. C₁ XOR C₂를 계산하면 사용했던 키 값이 무엇이었는지 몰라도 P₁ XOR P₂가 나옵니다. 이 관계는 두 문장을 각각 읽어 낸 결과와 다릅니다. 예를 들어 P₁이 1010이라고 이미 알면 P₂ = P₁ XOR (P₁ XOR P₂) = 1010 XOR 1001 = 0011을 계산할 수 있습니다. 반대로 어느 쪽도 알지 못하고 가능한 평문 후보가 많다면 XOR 결과 하나만으로 각각의 비트를 유일하게 결정하지 못할 수 있습니다.

‘한 번만’은 좋은 관행이 아니라 조건입니다

한 번만 쓰는 키는 평문 길이만큼의 비트를 가져야 하고, 예측할 수 없도록 균등하게 무작위로 선택되며, 평문과 독립이어야 합니다. 키를 재사용하거나 키의 일부가 편향되면 이 방식에 기대하는 성질이 달라집니다. 키를 안전하게 만드는 것만큼 송신자와 수신자 사이에서 키를 미리 공유하고, 보관하고, 사용 여부를 기록하며, 사용 후 다시 쓰지 않는 관리도 어렵습니다. NIST의 난수 생성 지침은 엔트로피 원천을 검증하고 이를 난수 생성기 구성에 포함하는 문제를 다룹니다. 이는 실제 OTP 키를 자동으로 안전하게 만들어 준다는 보증은 아닙니다.

종종 ‘암호문은 무작위처럼 보이니 안전하다’고 추론합니다. 암호문 각각의 겉모양보다 두 암호문 사이에서 어떤 관계를 계산할 수 있는지가 중요합니다. 이 예에서는 암호문 한 개만으로 키를 알 수 없어도 둘을 비교하면 평문 XOR가 노출됩니다. 평문에 반복 구절이나 형식이 있으면 그 관계를 단서로 삼아 후보를 시험할 수 있지만, 그 결과가 언제나 하나의 해답을 보장하지는 않습니다. 암호화한 문장들의 길이가 다르면 키가 겹치는 구간에서만 이 소거 계산이 적용되므로, 끝부분의 길이와 패딩 처리도 따로 살펴야 합니다. 이 글은 그 변형의 복구 가능성을 분석하지 않습니다.

  1. 암호화식을 적습니다: C₁=P₁ XOR K, C₂=P₂ XOR K.
  2. 두 식을 XOR하고 괄호를 정리합니다.
  3. K XOR K가 0이 되는지 확인합니다.
  4. 남은 평문 관계로 실제 무엇이 드러났는지와 무엇은 아직 모르는지 따로 적습니다.
  5. 한 평문을 알 때 다른 평문이 유일하게 계산되는지 검산합니다.

관계 노출을 완전 복호와 같다고 하지 않습니다

회상 연습: 식에서 공통 키를 지웁니다

교육용 문제입니다. P₁=1010, P₂=0011, K=1100일 때 두 암호문의 XOR를 구하고, P₁을 알고 있다면 P₂를 계산하세요. 계산 결과만 쓰지 말고 이 결과가 키 재사용에 대해 증명하는 것과 증명하지 않는 것도 각각 한 문장으로 답해 보세요.

정답은 C₁=0110, C₂=1111이며 C₁ XOR C₂=1001입니다. 이는 P₁ XOR P₂와 같고, P₁=1010을 알면 P₂=1010 XOR 1001=0011입니다. 따라서 공통 키가 소거되어 평문 관계가 노출되며 한 평문을 아는 조건에서는 다른 평문을 복구할 수 있습니다. 그러나 모든 경우에 관계만으로 두 평문이 유일하게 결정된다는 결론은 나오지 않습니다.

정답을 가리고 확인해 보세요

이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.

P₁=1010, P₂=0011, K=1100으로 각각 암호화했다. C₁ XOR C₂와 P₁을 아는 경우의 P₂를 구하고, 키 재사용이 항상 두 평문을 유일하게 복구하게 한다고 할 수 있는지 답하라.

정답과 해설 확인C₁=0110, C₂=1111이므로 C₁ XOR C₂=1001이고 이는 P₁ XOR P₂와 같다. P₁=1010이면 P₂=1010 XOR 1001=0011이다. 관계 노출은 성립하지만 그 관계만으로 언제나 두 평문이 유일하게 결정되지는 않는다.

XOR의 결합법칙과 K XOR K=0에 따라 C₁ XOR C₂=P₁ XOR P₂입니다. 한 평문을 아는 조건에서만 그 관계를 이용해 다른 평문을 이 예처럼 구할 수 있습니다. NIST SP 800-90B와 800-90C는 난수 생성기·엔트로피 구성의 범위를 설명하며 이 계산에서 실제 OTP 키의 안전성을 평가하지 않습니다.