선택 평문 공격 (Chosen-Plaintext Attack, CPA)
선택 평문 공격(Chosen-Plaintext Attack, CPA)은 공격자가 원하는 평문을 직접 정해 암호화하게 하고 그 암호문을 얻을 수 있는 조건에서 이루어지는 공격입니다. 정의된 평문 공격(defined plaintext attack)이라고도 합니다. 공격자는 이렇게 얻은 평문-암호문 쌍을 분석해 키를 찾거나 암호의 약점을 밝히려 합니다.
알려진 평문 공격과의 차이
- 알려진 평문 공격(known-plaintext attack): 공격자가 일부 평문과 그에 대응하는 암호문을 알고 있지만, 어떤 평문이 암호화될지는 고를 수 없습니다. 제2차 세계 대전 중 연합군이 독일 메시지에 자주 들어가는 상투적인 문구(크립, crib)를 추측해 에니그마를 해독한 것은 이 유형에 해당합니다.
- 선택(정의된) 평문 공격: 공격자가 암호화될 평문을 스스로 정합니다. 연합군이 특정 해역에 기뢰를 부설해 독일군이 그 지명을 암호화해 보고하도록 유도한 방법(“가드닝”)은 선택 평문에 가까운 사례로 자주 언급됩니다.
작동 방식
- 공격자는 분석에 유리한 평문을 고릅니다. 예를 들어 한 비트만 다른 평문 쌍이나 같은 블록이 반복되는 평문입니다.
- 이 평문을 대상 시스템이 암호화하게 만듭니다. 이처럼 원하는 입력을 넣으면 암호문을 돌려주는 대상을 “암호화 오라클”이라고 합니다.
- 결과 암호문을 기록합니다.
- 평문-암호문 쌍을 분석해 키 또는 알고리즘의 패턴을 찾습니다. 필요하면 앞선 결과를 보고 다음 평문을 고르는데, 이를 적응적 선택 평문 공격이라고 합니다.
실제 사례
- 차분 암호 분석: 비함(Biham)과 샤미르(Shamir)의 차분 공격은 일정한 차이를 가진 평문 쌍을 골라 암호화하고 암호문 차이를 분석하는 대표적인 선택 평문 공격입니다. DES에 대한 이 공격에는 약 247개의 선택 평문이 필요합니다.
- 결정적 암호화의 약점: ECB 모드처럼 같은 평문이 항상 같은 암호문이 되는 방식에서는, 공격자가 후보 평문을 암호화해 보고 가로챈 암호문과 비교하는 것만으로 내용을 알아낼 수 있습니다.
- 공개 키 암호: 공개 키는 누구나 쓸 수 있으므로 공격자는 언제든 원하는 평문을 암호화할 수 있습니다. 그래서 공개 키 암호 방식은 처음부터 선택 평문 공격에 대한 안전성(IND-CPA)을 갖추어야 하며, 이를 위해 암호화에 무작위성을 넣습니다.
왜 위험한가
- 키 복구: 공격이 성공하면 해당 키로 암호화된 모든 메시지를 해독할 수 있습니다.
- 알고리즘 약점 노출: 키를 찾지 못하더라도 암호의 구조적 결함이 드러나 다른 공격에 쓰일 수 있습니다.
현대 블록 암호와 암호화 모드는 공격자가 많은 수의 평문을 골라 암호화할 수 있다는 가정 아래에서도 안전하도록 설계·평가됩니다. 따라서 정의된 평문 공격에 대한 저항력은 암호 설계의 기본 요건입니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.