260331 전자서명의 원리와 공개키 신뢰 체계
31 Mar 2026
260331 전자서명의 원리와 공개키 신뢰 체계
🔐 “내가 서명했다”는 것을 수학적으로 증명하는 방법, 그리고 그 신뢰는 어디서 오는가
🧩 1. 전자서명이란?
전자서명(Digital Signature)은 종이 문서의 도장/서명을 디지털 세계로 가져온 것입니다.
핵심 목적은 두 가지입니다:
| 목적 | 의미 |
|---|---|
| 인증(Authentication) | 이 문서는 정말 A가 보냈다 |
| 무결성(Integrity) | 문서가 중간에 변조되지 않았다 |
전자서명은 비대칭키 암호화(Asymmetric Cryptography) 를 기반으로 동작합니다.
🔑 2. 비대칭키 암호화: 개인키 & 공개키
비대칭키 암호화에서는 수학적으로 연관된 한 쌍의 키를 사용합니다.
🔒 개인키 (Private Key) → 오직 나만 보관, 절대 공개하지 않음
🔓 공개키 (Public Key) → 누구에게나 공개 가능
이 두 키의 수학적 특성:
\[\text{Decrypt}_{PubKey}(\text{Encrypt}_{PrivKey}(M)) = M\] \[\text{Decrypt}_{PrivKey}(\text{Encrypt}_{PubKey}(M)) = M\]즉, 개인키로 암호화한 것은 공개키로만 복호화 할 수 있고, 그 반대도 마찬가지입니다.
✍️ 3. 전자서명의 동작 원리
서명 생성 (Signing)
원본 문서 (M)
│
▼
해시 함수 적용 → Hash(M) = 고정길이 다이제스트
│
▼
개인키로 암호화 → Signature = Encrypt_PrivKey(Hash(M))
수식:
\[\text{Signature} = E_{PrivKey}(H(M))\]서명 검증 (Verification)
수신: 원본 문서 (M') + Signature
│
├── Hash(M') 계산
│
└── Decrypt_PubKey(Signature) = Hash(M)
✅ Hash(M') == Hash(M) → 서명 유효, 문서 변조 없음
❌ 다르면 → 서명 무효 또는 문서 변조됨
수식:
\[\text{Valid} \iff D_{PubKey}(\text{Signature}) = H(M)\]⚠️ 4. 핵심 문제: 공개키를 어떻게 신뢰하나?
“A의 공개키입니다” 라고 누군가 주장한다면… 정말 A의 것일까? 🤔
공격자 Eve가 자신의 공개키를 A의 것이라고 속인다면 (중간자 공격, MITM) 서명 검증이 아무 의미가 없습니다.
A의 공개키 ← 진짜인지 어떻게 알지?
Eve의 공개키 ← A의 것이라고 속일 수 있음
이 문제를 해결하는 것이 바로 PKI (Public Key Infrastructure) 입니다.
🏛️ 5. PKI와 인증서(Certificate)
인증서란?
인증서는 “이 공개키는 정말 이 사람/서버의 것이다” 라고 제3자(CA)가 보증해주는 디지털 문서입니다.
┌──────────────────────────────────────────┐
│ 디지털 인증서 │
├──────────────────────────────────────────┤
│ Subject (소유자): example.com │
│ Public Key: [공개키 데이터] │
│ Issuer (발급자): GlobalSign CA │
│ Valid From: 2025-01-01 │
│ Valid Until: 2026-01-01 │
│ Serial Number: 12:34:AB:CD:... │
│ Signature: [CA의 개인키로 서명한 값] │ ← 핵심!
└──────────────────────────────────────────┘
CA(Certificate Authority, 인증기관)가 자신의 개인키로 이 인증서에 서명합니다.
“GlobalSign이 서명했다” → “GlobalSign이 이 공개키의 소유자를 보증한다”
🔗 6. 인증서 체인 (Chain of Trust)
CA 자체의 신뢰는 어떻게 보장할까요?
답: 상위 CA가 하위 CA를 보증하는 계층 구조로 해결합니다.
🌳 Root CA
(Self-signed)
자기 자신을 서명
│
│ Root CA의 개인키로 서명
▼
🌿 Intermediate CA
(루트 CA가 신뢰 보증)
│
│ Intermediate CA의 개인키로 서명
▼
🍃 End-Entity 인증서
(example.com 서버 인증서)
각 단계:
| 인증서 | 서명자 | 신뢰 근거 |
|---|---|---|
| Root CA | 자기 자신 (Self-signed) | OS/브라우저에 사전 내장 |
| Intermediate CA | Root CA | Root CA의 서명 |
| 서버 인증서 | Intermediate CA | Intermediate CA의 서명 |
👑 7. Root CA는 누가 신뢰하나?
체인의 최상단, Root CA를 누가 보증하는가?
여기서 기술적 신뢰는 사회적/정책적 신뢰로 전환됩니다.
OS/브라우저 신뢰 저장소 (Trust Store)
Windows → certmgr.msc → 신뢰할 수 있는 루트 인증 기관
macOS/iOS → Apple이 심사하여 사전 내장
Android → Google이 관리
Firefox → Mozilla가 독립적으로 CCADB(Common CA Database) 운영
Root CA 등재 기준:
- ✅ 엄격한 보안 감사 (WebTrust, ETSI 인증)
- ✅ 물리적 보안이 검증된 시설
- ✅ HSM(Hardware Security Module)에 개인키 보관
- ✅ 정기적인 외부 감사 통과
- 🚫 기준 미달 시 브라우저/OS에서 신뢰 취소
Root CA 개인키의 특별한 보안
Root CA의 개인키는 특별히 중요하기 때문에:
- 대부분의 시간 동안 오프라인 상태 유지 (Air-gapped)
- HSM에 저장, 물리적으로 보호된 금고에 보관
- 사용 시 다수의 인원이 동시에 참석하는 의식(ceremony) 진행
🚫 8. 인증서 폐기: CRL & OCSP
인증서가 유효 기간 내에 더 이상 신뢰할 수 없게 되면 폐기가 필요합니다.
CRL (Certificate Revocation List)
CA가 주기적으로 폐기된 인증서 목록을 발행
→ 클라이언트가 다운로드하여 대조
→ 단점: 목록이 크고, 업데이트 주기가 있어 실시간성 부족
OCSP (Online Certificate Status Protocol)
클라이언트 → OCSP 서버에 "이 인증서 유효해?" 실시간 조회
OCSP 서버 → Good / Revoked / Unknown 응답
→ 단점: OCSP 서버 가용성 의존, 프라이버시 우려
OCSP Stapling (현재 주로 사용)
서버가 미리 OCSP 응답을 받아 캐싱
→ TLS 핸드셰이크 시 클라이언트에게 함께 전달
→ 클라이언트가 OCSP 서버에 직접 접속할 필요 없음 ✅
🔍 9. 브라우저 HTTPS 검증 전체 흐름
1. 브라우저가 https://example.com 접속 시도
│
2. 서버가 인증서 체인 전송 (서버 인증서 + Intermediate CA 인증서)
│
3. 브라우저: 서버 인증서의 서명 검증
└─ Intermediate CA 공개키로 서명 확인
│
4. 브라우저: Intermediate CA 인증서의 서명 검증
└─ Root CA 공개키로 서명 확인
│
5. 브라우저: Root CA가 내장 신뢰 목록(Trust Store)에 있는지 확인
│
6. 인증서 유효 기간, 도메인명 일치 여부 확인
│
7. CRL/OCSP로 폐기 여부 확인
│
▼
✅ 🔒 신뢰 확립 → 보안 연결 수립 (TLS Handshake 완료)
💡 10. 핵심 요약
| 질문 | 답 |
|---|---|
| 🖊️ 전자서명이란? | 개인키로 문서 해시를 암호화한 값 |
| 🔍 서명 검증 방법 | 공개키로 복호화 후 해시 비교 |
| ❓ 공개키 신뢰 근거 | CA가 서명한 인증서 |
| ❓ CA 신뢰 근거 | 상위 CA의 서명 (인증서 체인) |
| ❓ Root CA 신뢰 근거 | OS/브라우저에 사전 내장 |
| 🏛️ 최종 신뢰 근거 | 인간의 정책 + 엄격한 심사 + 물리적 보안 |
| 🚫 폐기 처리 | CRL, OCSP, OCSP Stapling |
핵심: 아무리 정교한 수학 알고리즘도 결국 “사회적 신뢰 체계” 위에서 작동한다. 🤝
🌐 참고 자료
- 🇰🇷 RSA 인증서와 전자서명의 원리 - RSEC.KR
- 🇰🇷 전자서명과 PKI - Nira’s Study Room
- 🇰🇷 공개 키 인증서 - 위키백과
- 🇰🇷 PKI 기술 이해와 활용 - PentaSecurity Labs
- 🇰🇷 Private key, Public key - Medium
- 🌏 Certificate Chain of Trust - Sectigo
- 🌏 How Certificate Chains Work - DigiCert
- 🌏 Certificate Chain of Trust - CyberArk
- 🌏 What are Root Certificates - SSL.com
- 🌏 Chain of trust - Wikipedia
전자서명의 원리
- 개인키 서명, 공개키 확인
- 그렇다면 공개키의 유효성은 그 인증기관의 유효성은 어떻게 확인하는가?