PE Notes · 보안
암호문 공격
공격자가 손에 쥔 정보에 따라 COA·KPA·CPA·CCA를 가르고, 패딩 오라클과 IND-CCA2를 같은 표에 올려 대칭·공개키 선택의 기준을 정리합니다.
암호를 깨는 일은 알고리즘 이름보다 공격자가 무엇을 이미 가지고 있는가에서 출발합니다. 암호문만 있는 경우와, 원하는 평문을 암호화하거나 원하는 암호문을 복호화할 수 있는 경우는 전혀 다른 모델입니다. 이 글은 그 정보량을 네 층으로 나누고, 패딩 응답처럼 작은 오라클이 왜 CCA가 되는지 같은 표에 올립니다.
정보량으로 나눈 공격 모델
목표가 키 복원인지, 특정 평문 추출인지는 나중에 둡니다. 먼저 보유 정보를 고정합니다. 는 암호문만, 는 일부 평문–암호문 쌍, 는 임의 평문의 암호문, 는 임의 암호문의 평문(타깃 제외)까지 묻습니다.
| 비교축 | COA | KPA | CPA | CCA / CCA2 |
|---|---|---|---|---|
| 보유 정보 | 암호문만 | 일부 평문–암호문 쌍 | 임의 평문 암호화 | 임의 암호문 복호화 |
| 강도 | 가장 약함 | 중간 | 강함 | 가장 강함 |
| 전형 기법 | 빈도·패턴·통계 | 선형·차분, 중간 만남 | 차분·오라클 질의 | 패딩·형식 오류 오라클 |
| 어디에 쓰이나 | 고전 치환, ECB 패턴 | 고정 헤더, 정형 전문 | 공개키 최소 가정 | 현대 권장 안전성 |
공개키는 키가 공개되어 있어 누구든 평문을 고를 수 있습니다. 그래서 IND-CPA는 공개키의 바닥이고, 지금은 가 권장 목표입니다. 두 평문의 암호문을 구별하지 못해야 하고, 타깃을 뺀 복호화 질의에도 그 성질이 유지되어야 합니다.
실제 공격이 모델에 붙는 자리
교과서의 네 층은 현장에서 한 줄 오류 메시지로 구현됩니다. CBC가 “패딩이 틀렸다”고 다르게 대답하면, 그 한 비트가 복호화 오라클이 됩니다.
| 공격 | 한 줄 | 막는 쪽 |
|---|---|---|
| 빈도·패턴 | 치환·ECB에서 반복이 평문 구조를 드러낸다. | 의미론적 안전, 고유 IV, 인증 암호화 |
| 중간 만남 | 2DES처럼 이중 암호는 키 길이만큼 강해지지 않는다. | 3중 이상 또는 AES 단일 사용 |
| 패딩 성공/실패가 평문 바이트를 한 칸씩 알려 준다. | AES-GCM 등 AEAD, 동일 오류 응답 | |
| PKCS#1 v1.5 | 패딩 형식 오류가 RSA 복호화 오라클이 된다. | RSA-OAEP |
블록 운영모드 토픽의 ECB·CBC가 여기선 오라클이 열리는가로 다시 읽힙니다. GCM은 조작 즉시 인증이 실패해, 패딩 이야기를 서버가 꺼내지 않습니다.
안전성 목표와 선택
한 방향성(OW)만으로는 부족합니다. 구별 불가능성(IND)과 변조 불가(NM)를 같이 봐야 하고, 구현에서 IV·논스 재사용과 상세 오류가 그 목표를 무너뜨립니다.
| 비교축 | 교과서 RSA | RSA-OAEP | AES-CBC | AES-GCM |
|---|---|---|---|---|
| IND-CPA | 아니오 | 예 | 고유 IV면 예 | 예 |
| IND-CCA2 | 아니오 | 예 | 패딩 오라클로 아니오 | 예 |
| 실무 한 줄 | 쓰지 않는다 | 공개키 권장 | 레거시, 인증 별도 | 대칭 기본값 |
양자 쪽은 대칭 키를 늘리는 문제로 이어지고, 전력·타이밍은 암호문 모델 밖의 구현 공격입니다. 답안에는 모델 이름과 오라클 제거를 한 쌍으로 쓰면 닫힙니다.