$c_n \oplus p_n = k_n$

agnusdei·2025년 11월 25일

CTF

목록 보기
178/185

📝 두 번째 수식의 의미: cnpn=knc_n \oplus p_n = k_n

이 수식의 각 요소와 전체적인 의미는 다음과 같습니다.

1. 각 요소의 의미

  • cnc_n: Ciphertext (암호문)nn번째 문자 또는 해당 문자의 ASCII (American Standard Code for Information Interchange) 값을 의미합니다. (문제 상황에서는 ASCII 값)
  • pnp_n: Plaintext (평문)nn번째 문자 또는 해당 문자의 ASCII 값을 의미합니다. (여기서는 찾고자 하는 플래그 (Flag)nn번째 문자)
  • \oplus: XOR (Exclusive OR, 배타적 논리합) 연산을 의미합니다.
  • knk_n: Key (키)nn번째 문자 또는 해당 문자의 ASCII 값을 의미합니다. (문제 상황에서는 반복되는 5글자 키의 n(mod5)n \pmod{5} 번째 글자)

2. 전체적인 의미 (키 도출)

XOR 암호화의 핵심 속성 중 하나는 가역성 (Reversibility)입니다.

  • 원래 암호화 수식: PK=C(평문=암호문)P \oplus K = C \quad (\text{평문} \oplus \text{키} = \text{암호문})
  • 양변에 PP를 다시 XOR하면: (PK)P=CP    K=CP(P \oplus K) \oplus P = C \oplus P \quad \implies \quad K = C \oplus P

따라서, 두 번째 수식 cnpn=knc_n \oplus p_n = k_n암호문 한 글자평문 한 글자XOR하면, 그 암호화에 사용되었던 키의 해당 글자를 도출해낼 수 있다는 원리를 보여줍니다.

이것은 앞선 대화에서 말씀드렸던 알려진 평문 공격 (Known-Plaintext Attack)의 기초가 됩니다. 플래그가 flag{ 로 시작한다고 가정했을 때, 암호문의 첫 5글자와 이 가정된 평문 5글자를 XOR하여 5자리 키 전체를 찾아낼 수 있습니다.


profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글