암호 공격과 부채널: 전수조사·선택 암호문·타이밍 공격 구분
1장 개념과 보호 목표#
암호 공격은 알고리즘의 수학적 약점뿐 아니라 구현과 프로토콜에서 생기는 정보 노출을 이용합니다. 전수조사, 알려진 평문, 선택 평문과 선택 암호문 공격은 공격자가 어떤 정보와 질의 능력을 가지는지 구분하는 개념입니다.
2장 원리와 구분#
차분·선형 분석은 암호 내부의 관계를 활용하는 분석이고 부채널 공격은 시간·전력·전자기·캐시 같은 부가 신호를 이용합니다. 안전한 수학 구조라도 비밀에 따라 실행시간이 달라지면 위험할 수 있습니다. 오류 메시지·응답시간 차이와 프로토콜 다운그레이드도 분석 대상입니다.
오류 주입 방어에서 단순한 CRC는 공격자가 의도적으로 계산을 조작하는 상황에 대한 포괄적인 증명이 아닙니다. 하드웨어 탐지, 연산 결과 검증과 실패 시 키 사용 중단을 위협에 맞게 결합해야 합니다. 랜덤 지연도 분석 신호를 완전히 없애는 수단으로 단정하지 않습니다.
3장 비교와 판단 기준#
| 구분 | 공격자 조건 | 방어 검토 |
|---|---|---|
| 선택 평문 | 원하는 입력의 암호문 획득 | 안전한 스킴·Nonce |
| 선택 암호문 | 변형 암호문에 대한 처리 관측 | 인증·오류·프로토콜 |
| 부채널 | 시간·전력·캐시 등 관측 | 상수시간·마스킹·격리 |
| 오류 주입 | 연산에 비정상 상태 유발 | 하드웨어·연산 검증 |
4장 공격 분류에는 서로 다른 축이 있다#
공격자의 입력·출력 접근 권한을 나타내는 분류와 분석 방법을 나타내는 분류를 구분합니다. 선택 평문 공격이라는 환경에서 차분 분석을 수행할 수도 있으므로 두 용어는 서로 배타적인 목록이 아닙니다.
5장 암호문 단독과 알려진 평문#
암호문 단독 공격은 암호문 등의 관찰 자료에서 정보를 얻으려는 경우입니다. 알려진 평문 공격은 대응하는 평문·암호문 쌍을 알고 있는 환경입니다. 파일 헤더처럼 예상 가능한 평문이 있다는 사실 자체를 안전한 암호의 실패로 보지는 않습니다.
6장 선택 평문과 선택 암호문#
선택 평문 공격에서는 공격자가 고른 평문의 암호화 결과를 관찰할 수 있습니다. 선택 암호문 공격에서는 고른 암호문에 대한 복호화 관련 응답을 관찰할 수 있는 조건을 다룹니다. 실제 API가 어떤 관찰 창구를 제공하는지 확인해야 합니다.
7장 전수조사와 키의 엔트로피#
충분한 길이의 키라도 사람이 정한 비밀번호에서 단순하게 만든다면 후보 공간이 작을 수 있습니다. 키 길이와 실제 예측 불가능성은 구분해야 합니다. 비밀번호 유래 키에는 적합한 KDF와 비용 설정이 필요합니다.
8장 타이밍 공격의 관찰값#
비밀에 따라 분기, 비교와 메모리 접근이 달라지면 수행 시간이 정보를 줄 수 있습니다. 네트워크 지연이 있다고 안전성을 보장할 수는 없습니다. 반복 관찰과 통계 분석이 가능한 환경을 고려합니다.
9장 캐시·전력·전자기 신호#
실행 중의 캐시 상태, 전력 소비와 전자기 방출 등도 관찰 경로가 될 수 있습니다. 공격자의 물리 접근과 같은 장비 공유 여부에 따라 위험과 대응이 달라집니다. 알고리즘의 수학적 안전성과 구현의 관찰 가능성은 별도의 문제입니다.
10장 상수 시간 구현의 의미#
비밀값에 따른 실행 경로와 메모리 접근의 차이를 줄이는 구현을 사용합니다. 소스 코드가 단순해 보인다는 이유만으로 상수 시간이라고 판단하지 않습니다. 컴파일 결과, 라이브러리와 실행 환경도 영향을 줍니다.
무작위 지연을 추가하는 방식은 안정적인 보안 보증을 대신하지 않습니다. 검증된 구현과 적합한 시험이 필요합니다.
11장 오류 주입 공격#
전압·클록 등의 변화나 계산 오류를 유도하여 비정상 결과에서 정보를 얻는 공격도 있습니다. 물리 접근 위협이 있는 장치는 오류 탐지와 연산 결과 검증 등을 검토합니다. 부채널 방어와 오류 주입 방어가 항상 같은 것은 아닙니다.
12장 원격 API의 사례#
유효하지 않은 인증 태그, 패딩과 계정 오류가 서로 다른 응답을 내면 공격자는 내부 처리의 단서를 얻을 수 있습니다. 외부 응답을 통제하되 내부에는 문제를 조사할 수 있는 안전한 기록을 남깁니다.
| 관찰 경로 | 확인할 통제 |
|---|---|
| 오류 응답 | 정보 차이·응답 시점 |
| 수행 시간 | 비밀 의존 분기·비교 |
| 공유 하드웨어 | 캐시·프로세스 격리 |
| 물리 접근 | 장치·디버그·오류 주입 보호 |
13장 위협 모델에 맞는 방어#
공격자의 접근 조건, 관찰 횟수와 대상 비밀을 정의합니다. 키 길이를 늘리는 조치가 API 권한 오류나 부채널을 자동 해결하지는 않습니다. 각각의 공격 경로에 대응하는 통제를 연결해야 합니다.
14장 태그 비교에서 드러나는 정보의 사례#
문자열 비교가 첫 번째 불일치에서 즉시 끝난다면 일치하는 접두 부분에 따라 시간이 달라질 수 있습니다. 실제 공격 가능성은 구현·관찰 환경과 반복 횟수 등에 영향을 받지만, 비밀값을 일반 문자열 비교로 처리해도 된다는 근거가 되지는 않습니다.
라이브러리가 제공하는 안전한 비교·검증 함수를 사용하고 입력 길이 처리와 실패 응답도 확인합니다. 상수 시간 비교 함수만 사용해도 그 이전에 비밀에 따른 분기나 다른 조회가 있다면 전체 처리의 시간 차이가 남을 수 있습니다.
검토에서는 비밀을 다루는 연산 경로를 통째로 추적합니다. 공격 분류의 이름을 외우는 것보다 관찰값이 어떤 비밀과 연결되는지 설명하는 것이 중요합니다.
15장 적용 사례와 운영 방법#
서명·인증 라이브러리는 검증된 상수시간 구현을 사용하고 비밀 비교에도 적절한 함수를 사용합니다. 다만 비교 함수 하나를 바꾸는 것으로 전체 프로그램의 부채널 저항성이 확보되지는 않습니다. 민감한 연산의 격리, 패치, 키 회수와 환경별 분석을 함께 적용합니다.
16장 공격자의 관측 능력에 맞춰 방어를 정한다#
원격 공격자는 응답·시간을, 로컬 공격자는 캐시·프로세스 상태를, 물리 접근자는 전력·전자기·오류 주입을 관측할 수 있습니다. 서로 다른 위협을 키 길이 하나로 설명할 수 없습니다. 같은 라이브러리라도 하드웨어 가속·컴파일러·실행 환경에 따라 보호 특성이 달라질 수 있습니다.
선택 평문·선택 암호문은 공격자의 질의 능력을 설명하고 차분·선형 분석은 암호 구조 분석의 방법입니다. 타이밍과 전력 분석은 구현의 부가 신호를 이용합니다. 교육 자료에서는 이 분류 축을 구분해야 하나의 공격이 여러 표현으로 설명되는 이유를 이해할 수 있습니다.
17장 비교 함수의 변경만으로 끝내지 않기#
비밀 비교를 상수시간 함수로 바꾸는 것은 일부 누출을 줄일 수 있지만 비밀에 따른 분기·메모리 접근·패딩 오류·재시도 처리도 남아 있을 수 있습니다. 민감한 연산에는 유지보수되는 검증된 구현을 사용하고 주변 코드의 입력·오류·로그를 함께 검토합니다.
랜덤 지연은 반복 측정으로 신호가 드러날 수 있어 근본 해결이라고 단정하지 않습니다. 물리 위협은 마스킹·오류 탐지·결과 검증·키 사용 제한 같은 구성과 해당 환경의 시험을 요구할 수 있습니다. 검증 범위를 명시하고 이론적 알고리즘 강도와 실제 구현 저항성을 나누어 평가합니다.
18장 적용 전 확인할 사항#
- 위협 모델에 원격·로컬·물리 접근을 구분한다
- 비밀에 따른 분기·메모리 접근·오류 차이를 검토한다
- 검증된 구현과 보안 업데이트를 유지한다
19장 자주 묻는 질문#
키 길이를 늘리면 부채널 공격도 막을 수 있나요?#
부채널은 키 공간을 직접 탐색하지 않고 구현의 누출을 이용할 수 있습니다. 키 길이와 별도로 구현과 실행 환경을 보호해야 합니다.
선택 암호문 공격은 개인키를 직접 읽는 공격인가요?#
공격자가 변형한 암호문에 대한 처리 결과를 이용할 수 있는 조건을 설명합니다. 실제 공격의 목적과 획득 정보는 스킴·프로토콜에 따라 다릅니다.
암호 라이브러리를 직접 최적화해도 되나요?#
성능 변화가 부채널 저항성이나 정확성에 영향을 줄 수 있습니다. 검증된 구현을 우선 사용하고 변경이 필요하면 전문 검토와 해당 환경의 검증을 수행해야 합니다.