# 선택 평문 공격 (Chosen-Plaintext Attack, CPA)

**선택 평문 공격(Chosen-Plaintext Attack, CPA)**은 공격자가 원하는 평문을 직접 정해 암호화하게 하고 그 암호문을 얻을 수 있는 조건에서 이루어지는 공격입니다. 정의된 평문 공격(defined plaintext attack)이라고도 합니다. 공격자는 이렇게 얻은 평문-암호문 쌍을 분석해 키를 찾거나 암호의 약점을 밝히려 합니다.

## 알려진 평문 공격과의 차이

- **알려진 평문 공격(known-plaintext attack):** 공격자가 일부 평문과 그에 대응하는 암호문을 알고 있지만, 어떤 평문이 암호화될지는 고를 수 없습니다. 제2차 세계 대전 중 연합군이 독일 메시지에 자주 들어가는 상투적인 문구(크립, crib)를 추측해 에니그마를 해독한 것은 이 유형에 해당합니다.
- **선택(정의된) 평문 공격:** 공격자가 암호화될 평문을 스스로 정합니다. 연합군이 특정 해역에 기뢰를 부설해 독일군이 그 지명을 암호화해 보고하도록 유도한 방법(“가드닝”)은 선택 평문에 가까운 사례로 자주 언급됩니다.

## 작동 방식

1. 공격자는 분석에 유리한 평문을 고릅니다. 예를 들어 한 비트만 다른 평문 쌍이나 같은 블록이 반복되는 평문입니다.
2. 이 평문을 대상 시스템이 암호화하게 만듭니다. 이처럼 원하는 입력을 넣으면 암호문을 돌려주는 대상을 “암호화 오라클”이라고 합니다.
3. 결과 암호문을 기록합니다.
4. 평문-암호문 쌍을 분석해 키 또는 알고리즘의 패턴을 찾습니다. 필요하면 앞선 결과를 보고 다음 평문을 고르는데, 이를 적응적 선택 평문 공격이라고 합니다.

## 실제 사례

- **차분 암호 분석:** 비함(Biham)과 샤미르(Shamir)의 차분 공격은 일정한 차이를 가진 평문 쌍을 골라 암호화하고 암호문 차이를 분석하는 대표적인 선택 평문 공격입니다. DES에 대한 이 공격에는 약 2^47개의 선택 평문이 필요합니다.
- **결정적 암호화의 약점:** ECB 모드처럼 같은 평문이 항상 같은 암호문이 되는 방식에서는, 공격자가 후보 평문을 암호화해 보고 가로챈 암호문과 비교하는 것만으로 내용을 알아낼 수 있습니다.
- **공개 키 암호:** 공개 키는 누구나 쓸 수 있으므로 공격자는 언제든 원하는 평문을 암호화할 수 있습니다. 그래서 공개 키 암호 방식은 처음부터 선택 평문 공격에 대한 안전성(IND-CPA)을 갖추어야 하며, 이를 위해 암호화에 무작위성을 넣습니다.

## 왜 위험한가

- **키 복구:** 공격이 성공하면 해당 키로 암호화된 모든 메시지를 해독할 수 있습니다.
- **알고리즘 약점 노출:** 키를 찾지 못하더라도 암호의 구조적 결함이 드러나 다른 공격에 쓰일 수 있습니다.

현대 블록 암호와 암호화 모드는 공격자가 많은 수의 평문을 골라 암호화할 수 있다는 가정 아래에서도 안전하도록 설계·평가됩니다. 따라서 정의된 평문 공격에 대한 저항력은 암호 설계의 기본 요건입니다.

---
출처: https://achivx.kr/glossary/chosen-plaintext-attack-cpa-%EC%84%A0%ED%83%9D-%ED%8F%89%EB%AC%B8-%EA%B3%B5%EA%B2%A9/ · ACHIVX 용어 사전 · 수정일 2026-10-20
