열쇠가 두 개라고?: 비대칭키와 해시, 그리고 암호 공격
목차 24
5과목(정보시스템 구축 관리) 정보보호 영역의 두 번째 강. 47강 대칭키가 풀지 못한 "키를 어떻게 안전하게 나눌까(키 분배 문제)"를 비대칭키(공개키)가 어떻게 해결하는지에서 출발한다. 비대칭키 두 사용 방식 ★상공나개★, 5인방(RSA·ECC·DH·ElGamal·DSA)과 안전성 근거 — ★RSA=리·샤·아·인수★(소인수분해)·★ECC=짧·강·모바일★(타원곡선 이산대수), 무결성을 지키는 해시 4대 특성 ★해시=일·충·고·눈★, 해시+비밀키 MAC, 둘이 결합한 디지털 서명 3대 보장 ★디서=무인부★(기밀성 X 함정), 공개키 신뢰 인프라 ★PKI=CA·RA·저·인·사★와 X.509, 마지막으로 암호 공격 5분류와 평문 기반 공격 ★K=알·P=골·C=고른암호문★(KPA·CPA·CCA)·MITM·Birthday까지 여섯 묶음으로 정리한다. RSA·해시 4대 특성·디지털 서명이 매 회차 2~3문제 나오는 5과목 최대 빈출 단원이다.
대단원 1 — 비대칭키(공개키) 암호 개요
비대칭키 등장 배경 + 공개키·개인키 쌍 ·비대칭키 정의·시험 1순위·
[정의] 비대칭키(Asymmetric Key, 공개키 암호) = 암호화 키와 복호화 키가 다른 한 쌍(공개키 + 개인키)으로 동작하는 암호. 47강 대칭키의 최대 한계인 키 분배 문제(같은 비밀키를 안전하게 어떻게 나누나)를 해결하려고 등장했다. 한 줄 압축은 47강에서 본 ★비=속느·키안★ — 느리지만 키 분배가 안전하다.
[표] 대칭키 vs 비대칭키 (47강 회수 — 핵심만)
| 항목 | 대칭키 | 비대칭키 |
|---|---|---|
| 키 | 1개 (공유 비밀키) | 2개 (공개키 + 개인키 쌍) |
| 속도 | 빠름 | 느림 (100배 이상) |
| 키 분배 | 위험 | 안전 (공개키만 공개) |
| 키 관리량 | N(N-1)/2 폭증 | 2N 절감 |
| 대표 | DES·AES·SEED·ARIA | RSA·ECC·DH·ElGamal·DSA |
[표] 공개키 vs 개인키 — 누가 가지고 무엇에 쓰나
| 키 | 누가 가지나 | 용도 |
|---|---|---|
| 공개키 Public | 누구나 (공개해도 안전) | 암호화 · 서명 검증 |
| 개인키 Private | 본인만 (절대 비공개) | 복호화 · 서명 생성 |
🔑 암기 비대칭키 = 공개키 암호 = 키 쌍(공개키 + 개인키). 해결한 문제 = 키 분배. 최초 제안 = 1976 Diffie·Hellman, 첫 실제 구현 = 1977 RSA. 안전성 근거 = 수학적 난제(곱하긴 쉽고 인수분해는 어렵다 / 거듭제곱은 쉽고 로그 역산은 어렵다). ⚠️ 함정 "공개키만 알면 개인키를 역산할 수 있다" ❌ → 절대 불가. "비대칭키는 한 쪽 키만 있으면 된다" ❌ → 반드시 한 쌍이 함께 생성·동작. "비대칭키가 대칭키보다 빠르다" ❌ → 대칭키가 100배 이상 빠르다. 🎯 빈출 대칭/비대칭 속도·키 분배 대비, 키 쌍 개념, 최초(DH 1976)·첫 구현(RSA 1977) 연도가 매 회차 출발점. 💡 우체통 비유 — 투입구(공개키)는 누구나 편지를 넣을 수 있지만, 꺼내는 열쇠(개인키)는 주인 한 명뿐. 47강 케르크호프스 분류 지도의 [2] 비대칭키가 여기서부터 본격이다.
★상공나개★ — 비대칭키 두 가지 사용 방식 ·비대칭키 활용·시험 1순위·
[정의] 비대칭키는 누구의 어느 키로 암호화하느냐에 따라 완전히 다른 두 목적으로 쓰인다. 이 두 방식을 ★상공나개★로 잡는다 — 상대 공개키로 암호화하면 기밀성, 나의 개인키로 암호화(서명)하면 인증·부인방지.
[표] ★상공나개★ — 두 사용 방식
| 방식 | 두음 | 누가 무엇으로 | 보장 | 예시 |
|---|---|---|---|---|
| 기밀성 | 상·공 | 송신자가 상대 공개키로 암호화 | 기밀성 | 비밀 메시지 ("너만 봐") |
| 인증·서명 | 나·개 | 송신자가 나의 개인키로 서명 | 인증·부인방지 | 송금·코드 서명 ("내가 보낸 거 맞아") |
[흐름] 암호화 방향 vs 서명 방향 (정반대)
| 목적 | 키 사용 | 핵심 |
|---|---|---|
| 기밀성(상공) | 송신자 → 수신자 공개키로 암호화 → 수신자 개인키로 복호화 | 수신자만 열람 가능 |
| 인증(나개) | 송신자 → 나의 개인키로 서명 → 누구나 송신자 공개키로 검증 | 보낸 사람 증명 |
🔑 암기 ★상공나개★ — 수신자 공개키로 암호화 = 기밀성, 송신자 개인키로 서명 = 인증 + 부인방지. 암호화와 서명은 쓰는 키의 주인이 정반대. ⚠️ 함정 "기밀성을 위해 송신자가 자기 공개키로 암호화" ❌ → 상대(수신자) 공개키로. "서명을 위해 상대 개인키로" ❌ → 나(송신자)의 개인키로. 키의 주인을 뒤바꾸는 게 단골. 🎯 빈출 "수신자 공개키로 암호화하면?" → 기밀성, "송신자 개인키로 서명하면?" → 인증·부인방지. 이 두 쌍이 비대칭키 응용 문제의 핵심. 💡 ★상공나개★는 RSA·ECC 어느 알고리즘에든 똑같이 적용된다.
대단원 2 — 비대칭키 5인방
★RSA=리·샤·아·인수★ — 비대칭키 1순위 ·RSA·시험 1순위·
[정의] RSA = 1977년 MIT의 Rivest·Shamir·Adleman이 발표한 비대칭키 1순위 알고리즘. 안전성 근거는 소인수분해의 어려움이다. 핵심을 ★RSA=리·샤·아·인수★로 잡는다 — 리베스트·샤미르·애들먼 + 인수분해.
[표] RSA 핵심 5스펙
| 항목 | 내용 |
|---|---|
| 개발 | 1977 MIT · Rivest·Shamir·Adleman |
| 안전성 근거 | 소인수분해 (큰 소수 두 개의 곱을 되돌리기 어려움) |
| 키 길이 | 2048비트 현재 표준 (1024비트 폐기) |
| 용도 | 암호화 · 디지털 서명 · 키 교환 (만능) |
| 단점 | 대칭키 대비 매우 느림 + 양자컴퓨터 위협 |
[흐름] RSA 키 생성 — 공개키 = (N, e) / 개인키 = (N, d)
- 큰 소수 p, q 선택
- N = p × q 계산
- 공개 지수 e 선택 (보통 65537)
- 개인 지수 d 계산
- 공개키 = (N, e) 공개 / 개인키 = (N, d) 비밀
- 안전성: N을 인수분해해야 d를 얻는데, 그게 사실상 불가능
🔑 암기 ★RSA=리·샤·아·인수★ — Rivest·Shamir·Adleman·인수분해. 1977년·2048비트·만능(암호화+서명+키교환). 공개키 = (N, e), 개인키 = (N, d) — N = 두 소수 p×q의 곱. ⚠️ 함정 "RSA 안전성 근거 = 이산대수" ❌ → 소인수분해(이산대수는 ECC·DH 쪽). 이 함정이 거의 매 회차. "RSA 권장 키 = 1024" ❌ → 2048(1024는 폐기). "RSA는 서명만 가능" ❌ → 만능. 🎯 빈출 RSA 안전성 근거(소인수분해)·개발자·연도(1977)·키 길이(2048)·만능 여부가 매 회차 1순위. "안전성 근거가 다른 것"으로 RSA만 골라내는 유형도 단골. 📝 기출 기출 2 (RSA 안전성 근거) 💡 2024년 NIST가 양자컴퓨터 대비 양자내성암호(PQC) 표준 FIPS 203/204/205를 확정했고 RSA·ECC는 2030년 이후 점진 폐기 권고다. 다만 현 시험은 RSA·ECC 자체가 출제 범위이고 PQC는 트렌드 인지 수준으로 충분하다.
하이브리드 암호 + TLS 4단계 — RSA의 실무 활용 ·실무 종합·간헐·
[정의] 실무에서는 비대칭키와 대칭키를 함께 쓴다(47강 하이브리드 암호 회수). 비대칭키로 세션 키만 안전하게 교환하고, 본문은 빠른 대칭키(AES)로 암호화한다. HTTPS 자물쇠 뒤에서 도는 TLS가 대표 사례로, 47강의 AES·SHA와 48강의 RSA·ECC가 한 흐름에서 모두 협력한다.
[표] TLS 4단계 — 47강 + 48강 기술이 한 흐름에
| 단계 | 담당 기술 | 출처 |
|---|---|---|
| ① 서버 인증 | RSA/ECDSA 인증서(X.509) 검증 | 48강 |
| ② 세션 키 교환 | RSA 또는 ECDHE로 공통 키 협상 | 48강 |
| ③ 본문 암호화 | AES-256-GCM | 47강 |
| ④ 무결성 검증 | SHA-256 / HMAC-SHA256 | 47·48강 |
🔑 암기 하이브리드 = 비대칭(키 교환·인증) + 대칭(본문·속도). TLS 본체 = 대칭키 AES(속도) + 비대칭키 RSA·ECC(키 교환·인증) + 해시 SHA(무결성). ⚠️ 함정 "하이브리드는 본문을 비대칭키로 암호화" ❌ → 본문은 빠른 대칭키(AES), 비대칭은 키 교환·인증용. 🎯 빈출 하이브리드의 역할 분담(비대칭=키 교환, 대칭=본문)·TLS가 하이브리드라는 진술이 간헐. RSA가 TLS에서 서버 인증·세션 키 교환을 맡는다는 점이 단골. 💡 참고로 TLS 1.3부터 키 교환은 ECDHE가 표준이지만 서버 인증서는 여전히 RSA-2048 또는 ECDSA-P256이 주류다. 클라우드 KMS 등 제품군은 도메인 일반화로만 본다.
★ECC=짧·강·모바일★ — 짧은 키, 모바일 시대 표준 ·ECC·시험 1순위·
[정의] ECC(Elliptic Curve Cryptography, 타원곡선 암호) = 짧은 키로 RSA와 동급 안전성을 내는 비대칭키. 안전성 근거는 타원곡선 이산대수(ECDLP)다. 3대 특징을 ★ECC=짧·강·모바일★로 잡는다 — 짧은 키·강한 안전성·모바일 친화.
[표] ECC vs RSA 키 길이 (같은 안전성)
| RSA 키 | ECC 키 | 비율 |
|---|---|---|
| 2048비트 | 224비트 | 약 9 : 1 |
| 3072비트 | 256비트 | 약 12 : 1 |
[표] ECC 핵심
| 항목 | 내용 |
|---|---|
| 안전성 근거 | 타원곡선 이산대수(ECDLP) |
| 키 길이 | 160~521비트 (보통 256) |
| 주 용도 | 서명(ECDSA) · 키 교환(ECDHE) · 암호화(ECIES) |
| 강점 | 짧은 키 + 빠른 연산 + 낮은 자원 = 모바일·IoT 최적 |
| 등장 | 1985년 |
🔑 암기 ★ECC=짧·강·모바일★ — 짧은 키·강한 안전성·모바일 친화. 안전성 근거 = 타원곡선 이산대수. RSA(소인수분해)와 근거가 다르다. ⚠️ 함정 "ECC 안전성 근거 = 소인수분해" ❌ → 타원곡선 이산대수(소인수분해는 RSA). "ECC가 RSA보다 긴 키를 쓴다" ❌ → 더 짧은 키로 동급 안전성. 🎯 빈출 ECC를 RSA보다 선호하는 이유(짧은 키·모바일/IoT)와 안전성 근거(타원곡선 이산대수)가 단골. 보기에 "이산대수" + "타원곡선"이 함께 보이면 ECC. 💡 ★상공나개★ 두 방식은 RSA·ECC에 동일하게 적용된다. ECDSA(서명)·ECDHE(키 교환)는 "ECC 기반의 DSA·DH" 정도로 알아두면 충분하다.
Diffie-Hellman·ElGamal·DSA + 5인방 종합 ·비대칭키 분류·시험 1순위·
[정의] 비대칭키 5인방을 한 장에 묶는다. 안전성 근거는 RSA만 소인수분해, 나머지 4종은 이산대수. 용도는 DH는 키 교환 전용, DSA는 서명 전용, 나머지는 만능이다. DH(1976)는 RSA(1977)보다 1년 앞선 최초의 비대칭키이며 키 교환 전용(메시지 직접 암호화 불가)이라는 점이 함정이다.
[표] 비대칭키 5인방
| 알고리즘 | 안전성 근거 | 주 용도 | 등장 |
|---|---|---|---|
| RSA | 소인수분해 | 만능 | 1977 |
| ECC | 타원곡선 이산대수 | 만능 | 1985 |
| DH | 이산대수 | 키 교환 전용 | 1976 (최초) |
| ElGamal | 이산대수 | 만능 (DH 확장) | 1985 |
| DSA | 이산대수 | 서명 전용 | 1991 (NIST) |
🔑 암기 5인방 = RSA·ECC·DH·ElGamal·DSA. 두 축 — 근거는 RSA만 소인수분해·나머지 이산대수 / 용도는 DH=키교환만·DSA=서명만·나머지 만능. DH = 1976 최초 비대칭키. ⚠️ 함정 "최초 비대칭키 = RSA" ❌ → DH(1976). "DH로 메시지를 직접 암호화" ❌ → DH는 키 교환 전용. DH는 MITM에 취약해 인증서(PKI)·서명과 반드시 함께 써야 안전. 🎯 빈출 "비대칭키가 아닌 것?" → 보기에 DES·AES·SEED·ARIA 같은 대칭키가 섞이면 그게 정답. 5인방을 통째로 외우면 어느 방향으로 물어도 즉답. 📝 기출 기출 1 (비대칭키 식별) 💡 ElGamal = DH를 메시지 암호화까지 확장한 변형, DSA = ECDSA로 진화해 블록체인 서명에 쓰인다. 페인트 섞기 비유 — 섞긴 쉽고 분리는 어렵다(이산대수).
대단원 3 — 해시 함수
해시 정의 + ★해시=일·충·고·눈★ — 4대 특성 ·해시·시험 1순위·
[정의] 해시 함수(Hash Function) = 임의 길이 입력 → 고정 길이 출력(다이제스트)으로 변환하는 일방향 함수. 암호화와 달리 키가 없고 되돌릴 수 없다. 암호학적으로 안전한 해시가 갖춰야 할 4대 특성을 ★해시=일·충·고·눈★으로 잡는다 — 일방향성·충돌저항성·고정 길이·눈사태 효과. 47강 케르크호프스 분류 지도의 [3] 해시가 여기서 본격이다.
[표] ★해시=일·충·고·눈★ — 4대 특성
| 두음 | 특성 | 의미 |
|---|---|---|
| 일 | 일방향성 | 해시값 → 원본 복원 불가 |
| 충 | 충돌저항성 | 같은 해시값을 갖는 다른 입력 찾기 어려움 |
| 고 | 고정 길이 | 입력 크기와 무관하게 출력 길이 일정 |
| 눈 | 눈사태 효과 | 입력 1비트 변경 → 출력 절반 이상 변경 |
[표] 입력이 달라도 출력 길이는 같다 (고정 길이)
| 입력 | SHA-256 출력 |
|---|---|
| "안녕" (2글자) | 256비트 (16진수 64자리) |
| 1GB 영화 파일 | 256비트 (16진수 64자리) |
🔑 암기 ★해시=일·충·고·눈★ — 일방향·충돌저항·고정길이·눈사태. 별칭 = 다이제스트(Digest)·메시지 다이제스트(MD)·체크섬. 주 용도 = 무결성·비밀번호 저장·디지털 서명·블록체인. ⚠️ 함정 "해시 4대 특성"에 가역성·양방향성·키 사용·복원 가능이 보이면 그게 오답 → 모두 암호화 설명. ★일·충·고·눈★ 네 글자에 없는 것이 정답. 🎯 빈출 "해시 특성으로 옳지 않은 것?"이 매 회차. 비밀번호를 해시값만 저장해 DB 유출에도 원본이 안 새는 것이 일방향성의 실제 활용. 📝 기출 기출 3 (해시 4대 특성) 💡 믹서기 비유 — 무엇을 넣어도 같은 크기 컵의 주스가 나오고(고정 길이), 갈아버린 주스에서 원래 과일은 못 되돌린다(일방향).
해시 알고리즘 비트 수 — SHA 뒤 숫자가 곧 비트 ·해시 알고리즘·시험 1순위·
[정의] 해시 알고리즘은 출력 비트 수와 안전성이 시험 단골이다. 규칙은 단순하다 — SHA 뒤 숫자 = 출력 비트 수(SHA-256→256, SHA-512→512). 단 MD5는 128, SHA-1은 160으로 이름의 숫자와 비트가 다른 두 예외만 따로 외운다.
[표] 해시 알고리즘 출력 비트·안전성
| 알고리즘 | 출력 비트 | 안전성 | 비고 |
|---|---|---|---|
| MD5 | 128 | 취약·사용 금지 | 2004 충돌 발견 |
| SHA-1 | 160 | 권장 안 함 | 2017 SHAttered 충돌 |
| SHA-256 | 256 | 현재 표준 | HTTPS·블록체인 |
| SHA-512 | 512 | 매우 안전 | 장기 보관 |
| SHA-3 | 가변 | 안전 | Keccak 구조·2015 NIST 표준 |
🔑 암기 SHA 뒤 숫자 = 출력 비트. 예외 둘 — MD5=128, SHA-1=160. 현재 표준 = SHA-256. SHA-3은 SHA-2와 내부 구조가 완전히 다른(Keccak) 백업 표준. ⚠️ 함정 "MD5=5비트", "SHA-1=1비트" ❌ → 128·160. "SHA-256은 256비트 키를 쓴다" ❌ → 해시는 키가 없고 256은 출력 길이. "SHA-3 = SHA-2 개선판" ❌ → 구조가 완전히 다른 별도 표준. 🎯 빈출 알고리즘-비트 매칭에서 한 값만 틀리게 끼운 "잘못 짝지어진 것" 유형이 매 회차. MD5·SHA-1의 폐기 사유(충돌 발견)도 출제. 📝 기출 기출 4 (SHA 출력 비트) 💡 MD5는 2004년, SHA-1은 2017년 SHAttered 공격으로 충돌이 실증돼 폐기됐다. 충돌 = 다른 입력이 같은 해시값을 갖는 사건.
해시 vs 암호화 — 일방향 vs 양방향 ·해시 구분·시험 1순위·
[정의] 학생이 가장 헷갈리는 구분. 해시는 키 없는 일방향(무결성), 암호화는 키 있는 양방향(기밀성)이다. 목적부터 다르다 — 해시는 변조 감지, 암호화는 내용 보호.
[표] 해시 vs 암호화
| 구분 | 해시 | 암호화 |
|---|---|---|
| 방향 | 일방향 | 양방향 |
| 키 | 없음 | 필수 |
| 출력 | 고정 길이 | 입력에 비례 |
| 주 용도 | 무결성 | 기밀성 |
🔑 암기 해시 = 일방향·키 없음·무결성. 암호화 = 양방향·키 필수·기밀성. "비밀번호를 암호화해 저장"은 틀린 표현 → 정확히는 해시해 저장. ⚠️ 함정 "키를 사용하지 않는 것 = 암호화" ❌ → 해시. "비밀번호 저장 = 암호화" ❌ → 해시(bcrypt·Argon2). 양방향·키 사용이 보이면 암호화다. 🎯 빈출 "키를 사용하지 않는 것?"·"양방향 변환 가능한 것?"·"비밀번호 저장 기술?"이 간헐. 한 글자(키 유무)로 답이 갈린다. 💡 택배 비유 — 암호화 = 자물쇠(내용 보호), 해시 = 봉인 스티커(열면 찢어져 변조가 드러남). 실무는 Salt + bcrypt/Argon2 같은 느린 해시로 무차별 대입을 지연시킨다.
대단원 4 — MAC · 디지털 서명
MAC — 해시 + 비밀키 = 무결성 + 인증 ·MAC·시험 1순위·
[정의] MAC(Message Authentication Code, 메시지 인증 코드) = 해시 계산에 공유 비밀키를 섞어 무결성 + 인증을 동시에 보장하는 기법. 일반 해시는 해커가 메시지와 해시값을 함께 바꿔치기하면 들키지 않지만, 비밀키를 모르면 올바른 MAC을 못 만들어 변조가 드러난다. 대표는 HMAC(Hash-based MAC).
[표] 해시 vs MAC
| 구분 | 해시 | MAC |
|---|---|---|
| 비밀키 | X | O (공유) |
| 보장 | 무결성만 | 무결성 + 인증 |
| 부인방지 | X | X |
| 대표 | SHA-256 | HMAC-SHA256 |
[표] HMAC 실무 두 영역
| 영역 | 동작 |
|---|---|
| OpenAPI 서명 | 비밀키 + 요청 본문 → HMAC-SHA256 → 헤더로 전송 |
| TOTP (30초 OTP) | HMAC(비밀키, 현재시각/30초) → 6자리 숫자 |
🔑 암기 MAC = 해시 + 비밀키(대칭) → 무결성 + 인증. 부인방지는 X(송수신자가 키를 공유해 누가 만들었는지 못 가림). HMAC = Hash 기반 MAC. ⚠️ 함정 "MAC이 부인방지를 보장" ❌ → 디지털 서명만 가능. "HMAC은 비밀키가 필요 없다" ❌ → 공유 비밀키 필수. 🎯 빈출 "해시에 비밀키를 결합한 것?" → MAC. "MAC이 보장 못하는 것?" → 부인방지. 비밀키(MAC) vs 개인키(디지털 서명) 구분이 핵심. 📝 기출 기출 6 (MAC 매트릭스) 💡 금융 앱 OTP가 30초마다 바뀌는 것이 TOTP = HMAC + 시간. 한 번 노출돼도 30초 뒤 무효라 재전송 공격(Replay)이 안 통한다.
디지털 서명 + ★디서=무인부★ — 기밀성 X 함정 ·디지털 서명·시험 1순위·
[정의] 디지털 서명(Digital Signature, 전자서명) = 비대칭키 + 해시를 결합해 "누가 보냈는지(인증)·변조되지 않았는지(무결성)·부인할 수 없는지(부인방지)"를 증명하는 기술. 3대 보장을 ★디서=무인부★로 잡는다 — 무결성·인증·부인방지. 기밀성은 보장하지 않는다(평문 전송)는 것이 함정 1순위.
[표] 디지털 서명 흐름 (해시값만 서명)
| 단계 | 송신자 | 수신자 |
|---|---|---|
| 1 | 메시지 해시 → H(M) | 받은 메시지 해시 → H(M)′ |
| 2 | H(M)을 나의 개인키로 서명 → S | S를 송신자 공개키로 복호화 → H(M) |
| 3 | 메시지 + S 전송 | H(M) == H(M)′ ? → 검증 성공 |
[표] ★디서=무인부★ — 3대 보장 (기밀성 X)
| 두음 | 보장 요소 | 근거 |
|---|---|---|
| 무 | 무결성 | 해시값으로 변조 확인 |
| 인 | 인증 | 개인키 소유자만 서명 가능 |
| 부 | 부인방지 | 개인키는 본인만 소유 → 부인 불가 |
| ✗ | 기밀성 | 보장 안 함 (메시지는 평문 전송) |
🔑 암기 ★디서=무인부★ — 무결성·인증·부인방지. 기밀성 X. 47강 CIA(★기무가★)와 공통은 무결성 하나뿐. 전체 메시지가 아니라 짧은 해시값만 서명(속도·효율). ⚠️ 함정 "디지털 서명이 기밀성을 보장" ❌ → 무인부만(기밀성 필요하면 별도 암호화 병행). "부인방지는 MAC도 가능" ❌ → 디지털 서명만(MAC은 비밀키 공유라 불가). 🎯 빈출 "디서가 보장하지 않는 것?" → 기밀성(또는 가용성·인가). "부인방지를 보장하는 유일한 기술?" → 디지털 서명. 거의 매 회차. 📝 기출 기출 5 (디서 보장 요소) 💡 서명과 암호화는 방향이 정반대 — 서명 = 개인키 → 공개키, 암호화 = 공개키 → 개인키. ★상공나개★의 나개(서명) vs 상공(암호화) 대비 그대로.
해시 vs MAC vs 디지털 서명 — 계단식 매트릭스 ·종합 매트릭스·시험 1순위·
[정의] 해시·MAC·디지털 서명·암호화를 한 장에 매핑하는 5과목 골격 카드. 오른쪽으로 갈수록 보장 요소가 하나씩 추가되는 계단식 구조다. 기밀성은 어느 단계에도 없어 별도 암호화가 필요하다.
[표] 보장 요소 매트릭스
| 구분 | 키 | 무결성 | 인증 | 부인방지 | 기밀성 |
|---|---|---|---|---|---|
| 해시 | 없음 | O | X | X | X |
| MAC | 비밀키(대칭) | O | O | X | X |
| 디지털 서명 | 개인키(비대칭) | O | O | O | X |
| 암호화 | 대칭/비대칭 키 | X | X | X | O |
[흐름] 계단식 — 보장 요소가 하나씩 추가
💡 해시(무결성) → MAC(무결성+인증) → 디지털 서명(무결성+인증+부인방지). 기밀성은 어디에도 없어 별도 암호화가 필요.
🔑 암기 키워드로 즉답 — 비밀키 → MAC / 개인키 → 디지털 서명 / 공개키 → 암호화·서명 검증 / 키 없음 → 해시. 계단 = 해시(무) → MAC(무+인) → 디서(무+인+부). ⚠️ 함정 보장 요소를 한 칸씩 밀거나 당겨 끼우는 변형이 단골. 부인방지 O는 디지털 서명 한 곳뿐, 기밀성 O는 암호화 한 곳뿐. 🎯 빈출 "무결성과 인증만 보장(부인방지 X)하는 것?" → MAC. "부인방지까지?" → 디지털 서명. 표 5열에 매핑하면 자동 정리. 💡 한 글자 차이로 답이 갈린다 — 비밀키냐 개인키냐, 키가 있냐 없냐.
대단원 5 — PKI
★PKI=CA·RA·저·인·사★ — 공개키 신뢰 인프라 + X.509 ·PKI·시험 1순위·
[정의] PKI(Public Key Infrastructure, 공개키 기반 구조) = "이 공개키가 진짜 그 사람 것인가(공개키 진위 문제)"를 해결하는 신뢰 인프라. 5대 구성요소를 ★PKI=CA·RA·저·인·사★로 잡는다 — CA(발급)·RA(신원확인)·저장소·인증서·사용자. 핵심 산출물인 인증서는 X.509(현재 v3) 표준을 따른다.
[표] ★PKI=CA·RA·저·인·사★ — 5대 구성요소
| 구성요소 | 역할 | 비유 |
|---|---|---|
| CA (Certificate Authority) | 인증서 발급·서명 | 정부 |
| RA (Registration Authority) | 신원 확인 | 동사무소 |
| 저장소 (Repository) | 인증서·폐기목록 공개 보관 | 게시판 |
| 인증서 (Certificate) | 공개키 + 소유자 묶음 (X.509) | 신분증 |
| 사용자 (End Entity) | 인증서 사용 주체 | 시민 |
[표] X.509 핵심 필드 + 인증서 폐기 2방식
| X.509 주요 필드 | 인증서 폐기 |
|---|---|
| 버전(v3)·일련번호·발급자(CA) | CRL — 주기적 폐기 목록 다운로드 |
| 유효기간·주체(소유자)·공개키 | OCSP — 실시간 개별 상태 조회 |
| CA 디지털 서명 (위 전체 봉인) | (현재 OCSP Stapling 방식이 표준) |
[흐름] 신뢰 사슬 (Chain of Trust)
- 루트 CA가 중간 CA에 서명
- 중간 CA가 End Entity(서버) 인증서에 서명
- 브라우저에 루트 CA 목록이 내장 → 사슬을 따라 검증
🔑 암기 ★PKI=CA·RA·저·인·사★ — CA(발급)·RA(신원확인)·저장소·인증서·사용자. 인증서 표준 = X.509 v3. 폐기 = CRL(목록)·OCSP(실시간). ⚠️ 함정 "RA가 인증서를 발급" ❌ → 발급은 CA, RA는 신원 확인만(함정 1순위). "PKI 구성요소"에 AES·HMAC·SHA 같은 암호 알고리즘이 보이면 오답 → PKI는 기관·저장소·인증서·사용자로 구성된 인프라. "공인인증서 폐지 = PKI 폐지" ❌ → PKI는 살아있고 민간 인증서로 다양화. 🎯 빈출 PKI 구성요소 식별(암호 알고리즘 골라내기)·RA vs CA 역할·X.509 버전(v3)·폐기 용어(CRL/OCSP)가 매 회차. 📝 기출 기출 8 (PKI 구성요소) 💡 신분증 비유 — CA는 정부, 인증서는 신분증. 위조하려 해도 CA 개인키 없이는 서명할 수 없다.
대단원 6 — 암호 공격
암호 공격 5분류 + 키 추측 공격 ·암호 공격·시험 1순위·
[정의] 알고리즘 자체를 노리는 암호 공격은 5분류로 나뉜다 — ① 키 추측 ② 평문 기반 ③ 프로토콜 ④ 확률 ⑤ 구현. 인프라 레벨(시스템·네트워크) 공격과는 결이 다르다. 그중 키 추측 공격 3종(Brute-force·사전·Rainbow Table)은 Salt 한 줄로 대부분 막힌다.
[표] 암호 공격 5분류
| 분류 | 대표 공격 | 방어 |
|---|---|---|
| ① 키 추측 | Brute-force·사전·Rainbow Table | 긴 키·Salt |
| ② 평문 기반 | KPA·CPA·CCA | CCA-안전 설계 |
| ③ 프로토콜 | MITM·Replay | PKI·Nonce |
| ④ 확률 | Birthday Attack | 해시 ≥ 256비트 |
| ⑤ 구현 | 부채널(Side-channel) | 보안 칩·더미 연산 |
[표] 키 추측 공격 3종
| 공격 | 정의 | 방어 |
|---|---|---|
| Brute-force | 가능한 모든 키 시도 | 키 길이 늘리기 |
| 사전 공격 | 자주 쓰는 비밀번호 사전 시도 | 강한 PW + Salt |
| Rainbow Table | 미리 계산된 PW-해시 표로 역추적 | Salt |
🔑 암기 5분류 = 키 추측·평문 기반·프로토콜·확률·구현. Rainbow Table 방어 = Salt(같은 비밀번호도 Salt가 다르면 해시가 완전히 달라져 미리 만든 표가 무력화). ⚠️ 함정 "Rainbow Table 방어 = 긴 키" ❌ → Salt. 암호 공격(알고리즘 레벨)과 시스템 공격(인프라 레벨)을 섞어 분류시키는 유형 주의. 🎯 빈출 이름·정의·방어법 매칭이 주류. 깊은 수학은 안 나오니 한 줄 정의만 정확히 잡으면 충분. 💡 bcrypt·scrypt·Argon2 같은 느린 해시는 Salt를 자동 포함하고 의도적으로 느려 Brute-force도 지연시킨다.
평문 기반 공격 ★K=알·P=골·C=고른암호문★ + 프로토콜 공격 ·암호 공격·시험 1순위·
[정의] 평문 기반 공격 3종은 공격자가 가진 정보량에 따라 강도가 갈린다. ★K=알·P=골·C=고른암호문★ — KPA는 평문-암호문 쌍을 알고 있음, CPA(P=골)는 평문을 골라 암호화 가능, CCA는 고른 암호문을 복호화 가능. 강도는 CCA > CPA > KPA. 프로토콜 공격(MITM·Replay)은 알고리즘이 멀쩡해도 프로토콜 약점을 노린다.
[표] ★K=알·P=골·C=고른암호문★ — 평문 기반 공격 3종
| 공격 | 공격자 정보 | 강도 |
|---|---|---|
| KPA (Known Plaintext) | 평문-암호문 쌍을 알고 있음 | 약 |
| CPA (Chosen Plaintext) | 평문을 골라 암호화 가능 | 중 |
| CCA (Chosen Ciphertext) | 고른 암호문을 복호화 가능 | 강 |
[표] 프로토콜 공격 2종 — MITM·Replay
| 공격 | 정의 | 방어 |
|---|---|---|
| MITM | 두 통신자 사이에 끼어 양쪽을 속임 | PKI 인증서·디지털 서명 |
| Replay | 가로챈 정상 메시지를 나중에 재전송 | Nonce·타임스탬프 |
🔑 암기 ★K=알·P=골·C=고른암호문★ — KPA(알려진)·CPA(평문 골라 암호화)·CCA(암호문 골라 복호화). 강도 CCA>CPA>KPA. MITM 방어 = PKI, Replay 방어 = Nonce·타임스탬프. ⚠️ 함정 "강도 KPA > CCA" ❌ → CCA가 가장 강함. "MITM = 나중에 재전송" ❌ → 그건 Replay. MITM은 중간에 끼어드는 것. 🎯 빈출 "평문을 골라 암호화 가능?" → CPA, "암호문을 골라 복호화?" → CCA. "중간에 끼어 양쪽을 속이는 공격?" → MITM이 매 회차. 📝 기출 기출 7 (MITM 공격) 💡 MITM은 DH 키 교환에 끼어드는 시나리오가 대표 — 그래서 DH는 PKI와 함께 써야 안전. MITM은 알고리즘 레벨뿐 아니라 인프라 레벨(ARP·DNS Spoofing)에도 걸쳐 있어, 시스템·네트워크 공격은 49강에서 본격으로 다룬다.
Birthday Attack + 부채널 — 확률·구현 공격 ·암호 공격·시험 단골·
[정의] 마지막 두 공격은 알고리즘 자체는 안전한데 확률과 구현 환경을 노린다. Birthday Attack은 생일 역설로 해시 충돌을 빠르게 찾고, 부채널(Side-channel) 공격은 전력·시간·전자파를 분석해 키를 추정한다.
[표] 확률·구현 공격
| 공격 | 정의 | 방어 |
|---|---|---|
| Birthday | 생일 역설로 해시 충돌을 빠르게 발견 | 해시 ≥ 256비트 |
| 부채널 | 전력·시간·전자파 분석으로 키 추정 | 보안 칩·더미 연산 |
🔑 암기 Birthday = 충돌저항성(★해시=일·충·고·눈★의 충)을 노림 — n비트 해시 충돌이 2ⁿ이 아니라 2^(n/2) 시도면 절반 확률로 발견. 부채널 = 구현 환경(전력·시간) 분석으로 키 추정. ⚠️ 함정 "Birthday는 일방향성을 노린다" ❌ → 충돌저항성. "부채널은 알고리즘 수학을 깬다" ❌ → 구현 환경(물리 정보)을 노림. 🎯 빈출 "Birthday Attack이 노리는 특성?" → 충돌저항성. "전력 분석으로 키를 빼내는 공격?" → 부채널. MD5·SHA-1 폐기의 결정적 이유가 Birthday Attack이라는 점도 출제. 💡 23명만 모여도 생일이 겹칠 확률이 50% — n비트 해시도 2^(n/2)면 충돌이 보인다. 그래서 해시는 충돌 여유를 둬 256비트 이상을 쓴다.
기출 다지기
[기출 1 출제] 다음 중 비대칭키(공개키) 암호 알고리즘이 아닌 것은? (해당하지 않는 것 고르기)
- ① RSA
- ② ECC
- ③ Diffie-Hellman
- ④ SEED
정답 및 해설 보기
정답: ④ SEED
| 보기 | 분류 | 판정 |
|---|---|---|
| ① RSA | 비대칭키 | 옳음 |
| ② ECC | 비대칭키 | 옳음 |
| ③ Diffie-Hellman | 비대칭키 (최초·키 교환) | 옳음 |
| ④ SEED | 국산 대칭키(47강 ★세아리히★) | ✅ 정답 |
🔑 암기 비대칭키 5인방 = RSA·ECC·DH·ElGamal·DSA. SEED·DES·AES·ARIA는 대칭키. 보기에 대칭키가 섞이면 그게 정답이다.
[기출 2 출제] RSA 알고리즘의 안전성 근거로 옳은 것은? (옳은 것 고르기)
- ① 큰 두 소수의 곱을 인수분해하기 어려움
- ② 이산대수 문제
- ③ 타원곡선 이산대수
- ④ 해시 일방향성
정답 및 해설 보기
정답: ① 큰 두 소수의 곱을 인수분해하기 어려움
| 보기 | 해당 | 판정 |
|---|---|---|
| ① 인수분해 | RSA | ✅ 정답 |
| ② 이산대수 | DH·ElGamal·DSA | ❌ |
| ③ 타원곡선 이산대수 | ECC | ❌ |
| ④ 일방향성 | 해시 | ❌ |
🔑 암기 ★RSA=리·샤·아·인수★ — RSA만 유일하게 소인수분해, 나머지 4종은 이산대수. "이산대수"로 답하면 함정에 걸린다(ECC·DH 쪽).
[기출 3 출제] 해시 함수의 특성으로 옳지 않은 것은? (옳지 않은 것 고르기)
- ① 일방향성
- ② 충돌 저항성
- ③ 고정 길이 출력
- ④ 가역성(키로 원본 복원)
정답 및 해설 보기
정답: ④ 가역성(키로 원본 복원)
| 보기 | ★해시=일·충·고·눈★ 대입 | 판정 |
|---|---|---|
| ① 일방향성 | 일 | 옳음 |
| ② 충돌 저항성 | 충 | 옳음 |
| ③ 고정 길이 | 고 | 옳음 |
| ④ 가역성 | 해시는 비가역 | ✅ 정답(틀림) |
🔑 암기 ★해시=일·충·고·눈★ 네 글자에 없는 것이 오답. "가역·양방향·키로 복호화·원본 복원"은 모두 암호화 설명이다.
[기출 4 출제] 해시 알고리즘과 출력 비트 수가 잘못 짝지어진 것은? (잘못 짝지어진 것 고르기)
- ① MD5 — 128비트
- ② SHA-1 — 160비트
- ③ SHA-256 — 256비트
- ④ SHA-512 — 256비트
정답 및 해설 보기
정답: ④ SHA-512 — 256비트 (실제 512비트)
| 보기 | 실제 출력 | 판정 |
|---|---|---|
| ① MD5 | 128 | 옳음 |
| ② SHA-1 | 160 | 옳음 |
| ③ SHA-256 | 256 | 옳음 |
| ④ SHA-512 | 512 | ✅ 정답(틀림) |
🔑 암기 SHA 뒤 숫자 = 출력 비트(SHA-512→512). 예외는 MD5(128)·SHA-1(160) 둘뿐. "SHA-256은 256비트 키 사용"류도 오답 — 해시는 키가 없다.
[기출 5 출제] 디지털 서명이 보장하는 보안 요소가 아닌 것은? (해당하지 않는 것 고르기)
- ① 무결성
- ② 인증
- ③ 부인방지
- ④ 기밀성
정답 및 해설 보기
정답: ④ 기밀성
| 보기 | ★디서=무인부★ 대입 | 판정 |
|---|---|---|
| ① 무결성 | 무 | 옳음 |
| ② 인증 | 인 | 옳음 |
| ③ 부인방지 | 부 | 옳음 |
| ④ 기밀성 | 보장 안 함(평문 전송) | ✅ 정답 |
🔑 암기 ★디서=무인부★ — 무결성·인증·부인방지. 기밀성은 보장하지 않는다(필요하면 별도 암호화 병행). 47강 CIA(★기무가★)와 공통은 무결성 하나뿐.
[기출 6 출제] 해시 함수와 비밀키를 결합하여 무결성과 인증을 동시에 보장하는 기법은? (해당하는 것 고르기)
- ① 일반 해시(SHA-256)
- ② MAC(HMAC)
- ③ 디지털 서명
- ④ 대칭키 암호
정답 및 해설 보기
정답: ② MAC(HMAC)
| 보기 | 판정 | 해설 |
|---|---|---|
| ① 일반 해시 | ❌ | 무결성만(비밀키 없음) |
| ② MAC(HMAC) | ✅ 정답 | 해시 + 비밀키 = 무결성 + 인증 |
| ③ 디지털 서명 | ❌ | 개인키 사용(무결성+인증+부인방지) |
| ④ 대칭키 암호 | ❌ | 기밀성 보장 기술 |
🔑 암기 비밀키 → MAC / 개인키 → 디지털 서명. 계단식 — 해시(무) → MAC(무+인) → 디서(무+인+부). MAC은 부인방지 X.
[기출 7 출제] 두 통신자 사이에 끼어들어 양쪽이 직접 통신한다고 믿게 만드는 공격은? (해당하는 것 고르기)
- ① Brute-force
- ② Birthday
- ③ MITM
- ④ Replay
정답 및 해설 보기
정답: ③ MITM
| 보기 | 정의 | 판정 |
|---|---|---|
| ① Brute-force | 모든 키 시도 | ❌ |
| ② Birthday | 해시 충돌 발견 | ❌ |
| ③ MITM | 중간에 끼어 양쪽 속임 | ✅ 정답 |
| ④ Replay | 가로챈 메시지 재전송 | ❌ |
🔑 암기 "중간에 끼어든다" → MITM(방어 = PKI·디지털 서명). "나중에 다시 보낸다" → Replay(방어 = Nonce·타임스탬프). DH 키 교환 끼어들기가 MITM의 대표 시나리오.
[기출 8 출제] PKI(공개키 기반 구조)의 구성요소가 아닌 것은? (해당하지 않는 것 고르기)
- ① CA (인증기관)
- ② RA (등록기관)
- ③ 인증서 저장소
- ④ AES (암호 알고리즘)
정답 및 해설 보기
정답: ④ AES (암호 알고리즘)
| 보기 | ★PKI=CA·RA·저·인·사★ 대입 | 판정 |
|---|---|---|
| ① CA | 발급 기관 | 구성요소 |
| ② RA | 신원 확인 | 구성요소 |
| ③ 저장소 | 인증서·폐기목록 보관 | 구성요소 |
| ④ AES | 대칭키 암호 알고리즘 | ✅ 정답 |
🔑 암기 ★PKI=CA·RA·저·인·사★ — 기관·저장소·인증서·사용자로 구성된 인프라. AES·HMAC·SHA 같은 암호 알고리즘이 보이면 그게 정답이다. RA(신원확인) vs CA(발급) 구분도 함정 1순위.
한 장 요약
시험장 1분 받아쓰기 — 핵심 두음
| 두음 | 풀이 |
|---|---|
| ★상공나개★ | 상대 공개키=기밀성 / 나의 개인키=인증·서명 |
| ★RSA=리·샤·아·인수★ | Rivest·Shamir·Adleman + 소인수분해 (1977·2048비트·만능) |
| ★ECC=짧·강·모바일★ | 짧은 키·강한 안전성·모바일 (타원곡선 이산대수) |
| ★해시=일·충·고·눈★ | 일방향·충돌저항·고정길이·눈사태 |
| ★디서=무인부★ | 무결성·인증·부인방지 (기밀성 X) |
| ★PKI=CA·RA·저·인·사★ | CA발급·RA신원·저장소·인증서(X.509 v3)·사용자 |
| ★K=알·P=골·C=고른암호문★ | KPA(알려진)·CPA(평문 골라)·CCA(암호문 골라) — 강도 CCA>CPA>KPA |
비대칭키 5인방 — 근거 · 용도
| 알고리즘 | 안전성 근거 | 용도 |
|---|---|---|
| RSA | 소인수분해 | 만능 |
| ECC | 타원곡선 이산대수 | 만능 |
| DH | 이산대수 | 키 교환 전용 (1976 최초) |
| ElGamal | 이산대수 | 만능 |
| DSA | 이산대수 | 서명 전용 |
핵심 수치·매핑
| 질문 | 즉답 |
|---|---|
| 최초 비대칭키 / 첫 구현 | DH 1976 / RSA 1977 |
| RSA 안전성 / 키 | 소인수분해 / 2048비트 |
| 해시 비트 | MD5=128 · SHA-1=160 · SHA-256=256 · SHA-512=512 |
| 계단식 보장 | 해시(무) → MAC(무+인) → 디서(무+인+부) |
| 키 구분 | 비밀키=MAC · 개인키=디지털서명 · 공개키=암호화·검증 · 키없음=해시 |
| 공격 5분류 | 키추측·평문기반·프로토콜·확률·구현 |
핵심 함정 (매년 1회 이상)
| 오답 ❌ | 정답 ✅ |
|---|---|
| RSA = 이산대수 기반 | 소인수분해 (이산대수는 ECC·DH) |
| 최초 비대칭키 = RSA | DH(1976) |
| DH로 메시지 직접 암호화 | DH = 키 교환 전용 |
| 비대칭키가 더 빠름 | 대칭키가 100배 이상 빠름 |
| 해시가 키를 사용 / 가역 | 해시 = 키 없음·일방향 |
| MD5 = 5비트 / SHA-256 = 256비트 키 | MD5=128 / 256은 출력 길이(키 아님) |
| 디지털 서명이 기밀성 보장 | 무인부만(기밀성 X) |
| MAC이 부인방지 보장 | 디지털 서명만 가능 |
| RA가 인증서 발급 | 발급은 CA, RA는 신원 확인 |
| Rainbow Table 방어 = 긴 키 | Salt |
| Birthday가 일방향성을 노림 | 충돌저항성 |
이름 헷갈림 3쌍: DSA(비대칭 서명) ↔ DES(대칭) · MD5(해시) ↔ AES(대칭) · SHA(해시) ↔ RSA(비대칭).
핵심 수치 (1): 비대칭키 = 공개키 암호(키 분배 해결) · 5인방 RSA·ECC·DH·ElGamal·DSA · RSA=소인수분해·2048 · ECC=타원곡선 이산대수·짧은 키 · 해시=일충고눈 · MD5 128·SHA-1 160.
핵심 수치 (2): MAC=해시+비밀키(부인방지 X) · 디서=무인부(기밀성 X) · PKI=CA·RA·저·인·사·X.509 v3 · 공격 5분류 · KPA<CPA<CCA · MITM=중간 끼어듦·Replay=재전송 · Birthday=충돌.
