핵심 인사이트 (3줄 요약)

  1. 본질: 선택 평문 공격 (Chosen Plaintext Attack, CPA)은 공격자가 암호화 오라클(서버/기기)에 일시적으로 접근하여 원하는 평문을 마음대로 입력하고, 그 결과로 나오는 암호문을 수집해 암호 키의 수학적 패턴을 뚫어내는 적극적 공격 모델이다.
  2. 가치: 현대 암호 시스템이 반드시 갖춰야 할 최소한의 방어 기준점(IND-CPA)을 제시하며, 똑같은 평문을 넣어도 매번 다른 암호문이 나오도록 하는 '무작위성(Randomness)' 도입의 이론적 근거가 된다.
  3. 판단 포인트: 시스템을 설계할 때 단순히 암호화 알고리즘(AES, RSA)을 썼다고 안심할 것이 아니라, 운영 모드(CBC, CTR)나 패딩(OAEP)을 통해 결정론적(Deterministic) 암호화를 확률적(Probabilistic) 암호화로 바꾸었는지 검증해야 한다.

Ⅰ. 개요 및 필요성

암호 해독 공격 모델은 공격자가 확보한 정보의 양과 시스템에 개입할 수 있는 권한에 따라 분류된다. 암호문만 아는 상태(COA)나 평문-암호문 쌍을 우연히 주운 상태(KPA)를 넘어, 해커가 훨씬 더 유리한 고지를 점령한 상황을 가정한 것이 선택 평문 공격 (CPA)이다.

CPA 상황에서는 해커가 공격 대상의 '암호화 기계'를 잠시 빌려 쓸 수 있다. 2차 대전 미드웨이 해전에서 미군이 거짓 무전(평문)을 흘려 일본군이 이를 암호화해 송출(암호문)하게 유도했던 것이 대표적이다. 현대에는 해커가 웹 서버에 임의의 텍스트(평문)를 전송하고 서버가 이를 데이터베이스에 암호화해 저장하게 만드는 방식으로 빈번히 발생한다. 만약 암호 시스템이 CPA 공격에 뚫린다면, 해커가 스스로 만든 거대한 [평문=암호문] 사전(Rainbow Table)을 이용해 남의 암호문을 순식간에 번역해 낼 수 있게 된다.

  • 📢 섹션 요약 비유: CPA는 해커가 자판기(암호기기)에 500원, 1000원, 불량 동전(선택 평문)을 수천 번 넣어보고, 어떤 음료나 에러(암호문)가 튀어나오는지 기록하여 자판기의 내부 톱니바퀴 규칙(비밀키)을 알아내는 얄미운 짓이다.

Ⅱ. 아키텍처 및 핵심 원리

CPA 공격이 성공하는 가장 결정적인 이유는 대상 암호 알고리즘이 **결정론적(Deterministic)**으로 동작하기 때문이다. 즉, $x$를 넣으면 항상 똑같은 $y$가 튀어나오는 구조적 결함을 파고든다.

  1. 사전 구축 (Dictionary Building): 공격자는 평문 $M_1, M_2, M_3...$을 암호화 오라클에 지속적으로 주입하여 $C_1, C_2, C_3...$를 얻어낸다.
  2. 패턴 분석: 입력한 평문의 미세한 차이(예: 1비트 변경)가 출력된 암호문에 어떤 변화를 주는지 통계적으로 분석(차분 공격, 선형 공격 등)하여 비밀키 $K$를 유추한다.
┌──────────────────────────────────────────────────────────────┐
│           결정론적 암호화(ECB)가 CPA 공격에 뚫리는 원리            │
├──────────────────────────────────────────────────────────────┤
│ [ 해커의 공격 랩 ]                 [ 타겟 암호화 오라클 ]      │
│                                      (비밀키 K 내장)           │
│ 평문 1: "ATTACK" ─────(주입)─────▶ "X9#2K" 반환              │
│ 평문 2: "DEFEND" ─────(주입)─────▶ "L1@0P" 반환              │
│ 평문 3: "ATTACK" ───(다시 주입)───▶ "X9#2K" 반환 (동일!)       │
│                                                              │
│ ★ 해커의 판단:                                                │
│ "어? 1번과 3번에 'ATTACK'을 넣었더니 완전히 똑같은 암호문이   │
│ 나오네? 이 기계는 난수(IV)를 섞지 않는 싸구려다!             │
│ 이제 네트워크에서 'X9#2K'가 지나가면 무조건 'ATTACK'이다!"    │
└──────────────────────────────────────────────────────────────┘

위 다이어그램처럼, 입력이 같을 때 출력이 같아지는 순간 암호는 비밀번호(키)를 풀지 않아도 의미가 노출된다. 이 취약점을 이용해 적의 통신 패턴을 100% 확신하는 것이 CPA의 본질이다.

  • 📢 섹션 요약 비유: 번역기 원리를 몰라도, 번역기에 '사과', '바나나'를 계속 집어넣고 나온 외계어를 공책에 적어두면, 나중에 남들이 외계어로 대화할 때 공책만 보고 다 알아들을 수 있다.

Ⅲ. 비교 및 연결

CPA를 이해하려면 암호학의 다른 공격 모델들과 권한 수준을 비교해야 한다.

공격 모델공격자가 가진 무기해커의 개입 수준방어 목표 (보안성)
COA (암호문 단독 공격)암호문 뭉치수동적 (가로채기만 함)현대 암호의 기본 방어선
KPA (알려진 평문 공격)평문-암호문 쌍 몇 개수동적 (운 좋게 주움)고전 암호들이 뚫리는 수준
CPA (선택 평문 공격)원하는 평문의 암호화 결과적극적 (암호화 기계 조작)IND-CPA (무작위성 도입)
CCA (선택 암호문 공격)원하는 암호문의 복호화 결과가장 강력함 (복호화 기계 조작)IND-CCA (MAC, 인증 암호화)

CPA 공격을 방어해 낸 상태를 **IND-CPA (Indistinguishability under CPA, 구별 불가능성)**라고 부른다. 이는 해커가 두 개의 평문 중 하나를 골라 암호화해 달라고 오라클에 던진 뒤, 돌아온 암호문이 둘 중 어느 평문에서 온 것인지 50% 확률 이상으로 맞히지 못하는 상태를 뜻한다.

  • 📢 섹션 요약 비유: COA가 잠긴 상자만 구경하는 것이고, KPA가 열린 상자와 닫힌 상자를 줍는 것이라면, CPA는 자물쇠 장인에게 "이 열쇠로 상자 좀 잠가봐"라고 계속 시키면서 톱니바퀴 소리를 엿듣는 것이다.

Ⅳ. 실무 적용 및 기술사 판단

실무에서 개발자가 암호 라이브러리를 사용할 때, 무심코 기본 설정(Default)을 선택하면 CPA 공격에 무방비로 노출된다.

체크리스트 및 의사결정 분기

  1. 대칭키 암호 (AES 등) 운영 모드 선택
    • 판단: 똑같은 평문 블록이 똑같은 암호문으로 변환되는 ECB (Electronic Codebook) 모드는 절대 사용해선 안 된다. (CPA에 즉시 뚫림). 반드시 매번 랜덤한 초기화 벡터(IV)를 섞어 확률적 암호를 만드는 CBC, CTR, GCM 모드를 채택해야 한다.
  2. 공개키 암호 (RSA 등) 패딩 (Padding) 적용
    • 판단: 순정 RSA 알고리즘($C = M^e \bmod n$)은 결정론적 수학 공식이므로 같은 $M$에 항상 같은 $C$가 나온다. 실무에서는 본래 데이터에 난수를 섞어 부풀리는 **OAEP (Optimal Asymmetric Encryption Padding)**를 반드시 결합(RSA-OAEP)하여 CPA 공격을 무력화해야 한다.

안티패턴

  • 데이터베이스에 비밀번호나 개인정보를 암호화해 넣을 때, 개발의 편의를 위해 고정된 IV(예: 00000000)를 재사용하는 코드 작성 관행.

  • 📢 섹션 요약 비유: CPA 방어는 똑같은 내용의 편지를 보낼 때마다 매번 다른 암호 책받침(IV, 난수)을 덧대어 쓰는 것이다. 해커가 편지를 가로채도 책받침이 매번 바뀌니 절대 글자를 해독할 수 없다.


Ⅴ. 기대효과 및 결론

CPA 모델에 대한 대응은 암호학을 '정해진 수학 공식'에서 '난수(Randomness)와의 융합 예술'로 끌어올렸다. IV나 솔트(Salt), 패딩을 통해 입력 평문에 무작위성을 주입함으로써, 현대의 보안 시스템은 해커가 아무리 많은 평문-암호문 쌍을 수집해도 패턴을 찾지 못하게 만드는 강력한 안전성을 확보하게 되었다.

다만, 난수를 생성하고 관리하는 오버헤드가 발생하며, 생성된 난수(IV)를 복호화 측에 안전하게 전달(또는 함께 저장)해야 하는 관리적 복잡성이 늘어난다. 결론적으로, 암호 시스템의 설계는 어떤 알고리즘을 쓰느냐보다 "어떻게 무작위성을 부여하여 CPA 같은 능동적 공격자의 예측을 빗나가게 만들 것인가"에 그 성패가 달려 있다.

  • 📢 섹션 요약 비유: CPA 공격을 이겨낸 시스템은 똑같은 "사랑해"라는 말을 백 번 해도 매번 다른 외국어(암호문)로 번역해 주는 완벽한 거짓말쟁이 기계와 같다. 도청자는 패턴을 절대 찾지 못하고 포기하게 된다.

📌 관련 개념 맵

개념연결 포인트
운영 모드 (Block Cipher Modes)ECB는 CPA에 취약하며, CBC/CTR은 IV를 통해 방어함
IV (초기화 벡터) / Nonce동일 평문이 다른 암호문으로 나오게 만드는 무작위 난수
IND-CPA (구별 불가능성)시스템이 CPA 공격을 견뎌낼 수 있는지를 평가하는 보안 기준
CCA (선택 암호문 공격)CPA보다 한 단계 더 강력한, 복호화 기기까지 찌르는 공격 모델

📈 관련 키워드 및 발전 흐름도

수동적 공격 (COA, KPA) 
    │
    ▼
적극적 공격 모델 등장 (CPA: 선택 평문 공격)
    │
    ▼
결정론적 암호화(ECB, 순정 RSA)의 취약성 노출
    │
    ▼
확률적 암호화 도입 (IV 주입, CBC/CTR 모드, 패딩 OAEP)
    │
    ▼
IND-CPA 보안성 달성 및 다음 단계 공격(CCA) 방어 연구 (MAC 결합)

👶 어린이를 위한 3줄 비유 설명

  1. 마법 상자에 '안녕'이라는 쪽지를 넣었더니 '꾸룰루'라는 외계어가 나왔어요. 해커는 자기가 궁금한 단어를 계속 상자에 넣어보는(선택 평문) 나쁜 장난을 쳐요.
  2. 해커가 계속 장난을 쳐서 '안녕=꾸룰루'라는 사전을 만들면, 나중에 우리가 외계어로 비밀 얘기를 해도 다 알아들어 버려요!
  3. 그래서 똑같은 '안녕'을 10번 넣어도 매번 '꾸룰루', '샤라뽀', '쿠쿠루' 하고 다르게 나오도록 엉뚱한 마법(난수)을 상자에 걸어둬야 해커를 막을 수 있답니다.