전자봉투(Digital Envelope) 생성·개봉 절차
1. 개요
가. 정의
대칭키의 빠른 암호화 성능과 공개키의 안전한 키 분배를 결합해, 데이터는 대칭 세션키로 암호화하고 그 세션키만 수신자 공개키로 암호화하여 함께 전달하는 하이브리드 암호(Hybrid Cryptography) 기법.
전자봉투는 이름 그대로 "봉투" 은유로 이해하면 명확하다. 편지 본문(평문)은 값싸고 빠른 자물쇠(대칭 세션키)로 잠그고, 그 자물쇠 열쇠(세션키)는 오직 수신자만 열 수 있는 특수 봉투(수신자 공개키)에 넣어 함께 보낸다. 이렇게 하면 대량 데이터는 빠른 대칭키로 처리하면서도, 정작 어려운 키 전달 문제는 공개키로 안전하게 해결한다. 즉 전자봉투는 하나의 새로운 암호 알고리즘이 아니라, 이미 검증된 두 종류의 암호를 역할에 맞게 조합한 프로토콜적 설계라는 점이 핵심이다.
나. 등장 배경 및 필요성
대칭키 암호(AES 등)는 빠르고 대용량에 적합하지만, 송·수신자가 같은 키를 사전에 공유해야 하는 키 분배 문제(Key Distribution Problem)가 근본 약점이다. 네트워크로 대칭키를 그냥 보내면 도청당하고, 미리 안전하게 나눠 갖는 것은 대규모 통신에서 비현실적이다. 통신 상대가 n명이면 서로 다른 키가 n(n-1)/2개 필요하다는 키 폭증 문제도 여기서 비롯된다. 반대로 공개키 암호(RSA 등)는 상대의 공개키만 알면 되므로 키 분배가 우아하지만, 모듈러 지수 연산이 무거워 대용량 데이터를 직접 암호화하기엔 지나치게 느리다. 통상 RSA는 같은 데이터를 처리할 때 AES보다 수백~수천 배 느린 것으로 알려져 있어, 파일 전체를 RSA로 암호화하는 것은 현실적 선택지가 아니다.
전자봉투는 "빠른 암호화는 대칭키가, 안전한 키 교환은 공개키가"라는 역할 분담으로 두 방식의 단점을 서로 상쇄한다. 이 구조 덕에 실제로 암호화되는 데이터 양이 아무리 커도 공개키 연산은 짧은 세션키(예: 256비트) 한 번에만 쓰여 성능 부담이 최소화된다. 데이터가 1GB든 1TB든 무거운 공개키 연산의 대상은 언제나 수십 바이트짜리 세션키 하나뿐이라는 점이 전자봉투가 실용성을 얻는 결정적 이유다.
다. 특징
전자봉투의 특징은 성능과 안전성의 동시 달성, 일회성 세션키에 의한 위험 격리, 그리고 전자서명과의 결합 확장성이다. 세션키를 통신마다 새로 생성해 버림으로써 한 세션의 키가 노출돼도 다른 세션에는 영향이 없고, 봉투 구조에 전자서명을 덧붙이면 기밀성뿐 아니라 무결성·인증·부인방지까지 하나의 메시지로 제공할 수 있다.
2. 전체 구조
전자봉투의 전체 구조는 "두 개의 암호화가 서로 다른 대상에 적용된다"는 점을 이해하는 것이 핵심이다. 하나는 평문에 대한 대칭 암호화이고, 다른 하나는 그 대칭키(세션키)에 대한 공개키 암호화다. 아래 구조도는 송신 측에서 두 갈래의 암호화가 하나의 봉투로 합쳐지는 전체 그림을 보여 준다.
flowchart LR
subgraph 송신자
M["평문(대용량)"] -->|"세션키로 대칭 암호화"| C["암호문"]
K["세션키 생성(일회성)"] -->|"수신자 공개키로 암호화"| EK["암호화된 세션키"]
end
C --> ENV["전자봉투"]
EK --> ENV
ENV -->|"네트워크 전송"| RCV["수신자"]
구조도에서 주목할 점은 비대칭성이다. 데이터(평문)는 크고 빠르게 처리돼야 하므로 대칭키가 담당하고, 키(세션키)는 작지만 안전하게 전달돼야 하므로 공개키가 담당한다. 이 두 갈래가 하나의 봉투(암호문 + 암호화된 세션키)로 묶여 전송된다. 수신자는 이 봉투 하나만 받으면 별도의 사전 키 공유 없이도 복호에 필요한 모든 재료를 갖게 된다는 점이 전자봉투가 "사전 공유 없는 안전 통신"을 실현하는 원리다.
3. 생성 절차(송신자)
핵심은 세션키를 매번 새로 생성한다는 점이다. 세션키는 해당 통신 한 번에만 쓰고 버리는 임시 대칭키로, 노출되더라도 과거·미래 통신에 영향을 주지 않아 안전성을 높인다. 이 일회성 성질 덕분에 설령 한 세션의 세션키가 어떤 이유로 탈취되어도 피해가 그 한 세션으로 국한된다.
아래 절차도는 송신자가 봉투를 만드는 순서를 나타낸다. 세션키 생성과 평문 암호화, 세션키 암호화가 순차적으로 이어져 최종적으로 하나의 봉투로 결합된다.
flowchart TD
S1["1. 일회성 세션키(대칭키) 생성"] --> S2["2. 세션키로 평문 대칭 암호화 → 암호문"]
S2 --> S3["3. 수신자 공개키로 세션키 암호화 → 암호화된 세션키"]
S3 --> S4["4. 암호문 + 암호화된 세션키 결합 → 전자봉투"]
S4 --> S5["5. 전자봉투 전송"]
첫째, 세션키 생성 단계에서는 예측 불가능한 난수 기반의 임시 대칭키를 만든다. 이때 난수의 품질이 곧 보안의 품질이므로, 암호학적으로 안전한 난수 생성기(CSPRNG)를 써야 한다. 난수가 약하면 세션키가 추측 가능해져 공개키로 아무리 잘 감싸도 무의미해진다.
둘째, 평문의 대칭 암호화 단계에서는 방금 만든 세션키로 대용량 평문을 빠르게 암호화한다. 이 단계가 전자봉투의 성능을 담당하는 부분으로, 데이터가 크더라도 대칭 암호의 처리량이 높아 실시간 통신에도 무리가 없다.
셋째, 세션키의 공개키 암호화 단계가 안전성을 담당한다. 세션키를 수신자의 공개키로 암호화하므로, 이 암호화된 세션키는 오직 수신자의 개인키로만 풀 수 있다. 따라서 봉투가 도중에 가로채여도 개인키가 없는 제3자는 세션키를 얻지 못하고, 세션키가 없으면 암호문도 풀 수 없다.
넷째·다섯째, 결합과 전송 단계에서는 암호문과 암호화된 세션키를 하나로 묶어 전송한다. 둘을 함께 보내는 이유는 수신자가 복호에 필요한 재료(암호문 + 감싸진 세션키)를 한 번에 받도록 하기 위함이다. 여기서 봉투에 담기는 것은 "감싸진 세션키"이지 세션키 원본이 아니라는 점이 반복 강조할 만하다. 세션키 원본은 송신자 메모리에만 잠시 존재했다가 사용 후 폐기되므로, 네트워크 상에는 결코 평문 상태의 세션키가 노출되지 않는다. 이것이 "키를 함께 보내면서도 안전한" 역설을 성립시키는 지점이다.
| 순서 | 내용 | 이유 |
|---|---|---|
| 1 | 일회성 세션키(대칭키) 생성 | 통신마다 일회성 → 노출 피해 최소화 |
| 2 | 세션키로 평문을 대칭 암호화 → 암호문 | 대용량을 빠르게 처리 |
| 3 | 수신자 공개키로 세션키 암호화 | 수신자만 개인키로 풀 수 있게 |
| 4 | 암호문 + 암호화된 세션키 = 전자봉투 전송 | 데이터와 키를 함께 전달 |
4. 개봉 절차(수신자)
개봉은 생성의 정확한 역순이다. 수신자는 자신만 가진 개인키로 봉투 속 세션키를 먼저 꺼낸 뒤, 그 세션키로 암호문을 대칭 복호화해 평문을 복원한다. 공개키로 잠근 것은 오직 짝이 되는 개인키로만 열리는 공개키 암호의 성질 덕분에, 도중에 봉투를 가로챈 제3자는 개인키가 없어 세션키를 얻지 못한다. 세션키를 얻지 못하면 암호문 자체는 대칭키로 튼튼히 잠겨 있어 풀 수 없다.
순서를 분해하면 다음과 같다. 먼저 수신자는 수신한 봉투에서 "암호화된 세션키" 부분을 자신의 개인키로 복호해 원래의 세션키를 복원한다. 이 단계가 성공한다는 것은 곧 이 봉투가 자신을 수신자로 지정해 만들어졌음을 의미한다. 이어서 복원한 세션키로 암호문을 대칭 복호화하면 원래의 평문이 그대로 돌아온다. 개인키 복호는 짧은 세션키 하나에만 적용되므로 무거운 공개키 연산의 부담이 개봉 측에서도 최소화된다.
| 순서 | 내용 |
|---|---|
| 1 | 수신자 개인키로 암호화된 세션키 복호 → 세션키 획득 |
| 2 | 세션키로 암호문 대칭 복호화 → 평문 복원 |
5. 전자서명 결합(보안 서비스)
전자봉투만으로는 기밀성(내용 은닉)만 확보된다. 그러나 실제 보안 통신은 "이 메시지가 위조·변조되지 않았는가(무결성)", "정말 그 사람이 보냈는가(인증)", "보낸 사실을 부인할 수 없는가(부인방지)"까지 요구한다. 기밀성만으로는 내용이 감춰지긴 해도, 그 내용이 진짜 그 사람이 보낸 온전한 것인지는 보장되지 않는다.
이를 위해 송신자가 메시지 해시를 자신의 개인키로 서명한 전자서명을 봉투와 함께 보낸다. 여기서 키의 사용 방향이 전자봉투와 정반대라는 점이 중요하다. 전자봉투는 수신자의 공개키로 감싸 수신자의 개인키로만 풀리게 하는 반면, 전자서명은 송신자의 개인키로 서명해 송신자의 공개키로 누구나 검증할 수 있게 한다. 수신자는 송신자 공개키로 서명을 검증하여, 서명이 성립하면 곧 그 개인키 소유자가 보냈고(인증·부인방지) 메시지 해시가 일치하므로 변조가 없음(무결성)을 동시에 확인한다.
| 서비스 | 실현 방법 | 사용하는 키 |
|---|---|---|
| 기밀성 | 전자봉투(세션키를 수신자 공개키로 암호화) | 수신자 공개키/개인키 |
| 무결성 | 메시지 해시 비교 | 해시 함수 |
| 인증·부인방지 | 송신자 개인키로 전자서명, 공개키로 검증 | 송신자 개인키/공개키 |
이처럼 전자봉투(수신자 키 사용)와 전자서명(송신자 키 사용)을 결합하면 기밀성·무결성·인증·부인방지 4대 보안 서비스를 하나의 메시지로 제공할 수 있다. 실제로 S/MIME·PGP 같은 이메일 보안 표준은 정확히 이 조합을 사용해, 한 통의 메일이 감춰지고(기밀성) 동시에 서명되어(무결성·인증·부인방지) 전달되도록 한다.
적용 순서에도 실무적 함의가 있다. 통상 "먼저 서명하고 그다음 암호화(Sign-then-Encrypt)"하는 순서가 권장되는데, 이렇게 하면 서명이 암호문 내부에 감춰져 서명자의 신원이 외부에 노출되지 않는다. 반대로 암호화 후 서명하면 봉투 겉면에 서명이 남아, 누가 보냈는지가 제3자에게 드러날 수 있다. 이처럼 같은 구성요소라도 결합 순서에 따라 보안 속성이 달라지므로, 전자봉투 설계는 알고리즘 선택뿐 아니라 프로토콜 순서까지 함께 고려해야 한다.
6. 실제 적용 사례와 유사 개념 비교
전자봉투는 추상적 이론이 아니라 우리가 매일 쓰는 보안 통신의 실제 골격이다. 첫째, TLS의 RSA 키 교환 방식은 클라이언트가 세션키(정확히는 프리마스터 시크릿)를 서버 공개키로 암호화해 보내는 전형적 전자봉투 구조다. 둘째, S/MIME·PGP의 이메일 암호화는 본문을 세션키로 암호화하고 세션키를 수신자 공개키로 감싸 전송한다. 셋째, 다수 수신자에게 같은 문서를 안전하게 배포할 때도 본문은 세션키로 한 번만 암호화하고, 세션키만 각 수신자의 공개키로 여러 번 감싸 붙이는 방식으로 효율을 확보한다.
여기서 유사 개념인 키 합의(Key Agreement) 방식과의 차이를 짚어야 한다. 전자봉투(키 수송, Key Transport)는 송신자가 세션키를 직접 생성해 수신자 공개키로 감싸 "전달"하는 방식인 반면, 디피-헬만(DH) 계열의 키 합의는 양측이 각자 값을 주고받아 세션키를 "공동 계산"한다. 이 차이가 순방향 비밀성에서 결정적 결과를 낳는다. 키 수송 방식은 서버 개인키가 훗날 유출되면 과거에 캡처해 둔 트래픽의 세션키까지 복호되지만, DH 키 합의는 세션마다 임시 키를 쓰면 개인키가 유출돼도 과거 세션키를 되살릴 수 없다. 이 때문에 최신 TLS는 전자봉투식 RSA 키 수송에서 DH 계열 키 합의로 이동해 왔다.
또 하나 구분할 개념은 전자서명과의 관계다. 전자봉투와 전자서명은 모두 공개키 암호를 쓰지만 목적과 키 방향이 정반대다. 전자봉투는 "감추기"가 목적이라 수신자 공개키로 감싸고, 전자서명은 "증명하기"가 목적이라 송신자 개인키로 서명한다. 초심자가 둘을 혼동하기 쉬운 이유는 둘 다 "공개키와 개인키 한 쌍"을 쓰기 때문인데, 어느 쪽의 키 쌍을 쓰느냐로 명확히 갈린다. 기밀성이 필요하면 상대(수신자)의 키 쌍을, 인증·부인방지가 필요하면 나(송신자)의 키 쌍을 쓴다고 정리하면 시험에서 혼동을 피할 수 있다.
7. 심화 — 순방향 비밀성과 양자내성암호(PQC)
기술사 관점의 핵심은 전자봉투 구조의 "약한 고리"가 어디인지를 짚는 것이다. 전자봉투의 안전성은 두 축, 즉 세션키의 일회성과 수신자 공개키의 신뢰성에 달려 있다. 세션키는 통신마다 새로 만들어 격리되지만, 세션키를 감싸는 공개키 부분은 상대적으로 장기간 고정되므로 여기가 공격의 표적이 된다.
첫째 쟁점은 순방향 비밀성(PFS, Perfect Forward Secrecy)이다. RSA 키 수송 기반 전자봉투는 서버 개인키가 유출되면 과거 트래픽까지 소급 복호될 위험이 있다. 공격자가 암호문을 미리 대량 저장해 두었다가("Harvest Now, Decrypt Later") 나중에 개인키를 확보하면 과거 통신이 통째로 열리는 것이다. 이 위험 때문에 TLS 1.3은 RSA 키 수송을 폐기하고 임시 키를 쓰는 ECDHE 계열 키 합의만 허용하여 PFS를 기본으로 보장한다.
둘째 쟁점은 양자컴퓨터의 위협이다. 봉투를 여는 공개키 부분(RSA·ECC)은 쇼어 알고리즘을 실행하는 대규모 양자컴퓨터가 등장하면 무력화될 수 있다. 이때도 봉투 안의 대칭 세션키(AES) 자체는 상대적으로 안전하므로, 핵심 과제는 세션키를 감싸는 공개키 부분을 양자내성암호(PQC, Post-Quantum Cryptography)로 대체하는 것이다. 이 흐름에서 미국 NIST는 격자 기반 키 캡슐화 메커니즘(KEM)인 ML-KEM(구 CRYSTALS-Kyber)을 표준으로 채택했으며, 현재는 기존 알고리즘과 PQC를 함께 쓰는 하이브리드 전환이 논의되고 있다. 정확한 표준 번호·채택 시점 등 세부는 최신 문서로 재확인이 필요하다.
시험 답안 전략으로는, 전자봉투의 생성·개봉 절차를 다이어그램과 함께 정확히 서술한 뒤, "왜 하이브리드인가(성능 vs 키분배 트레이드오프)"라는 근본 이유와 "PFS·PQC라는 진화 방향"을 함께 논하면 단순 암기 답안과 뚜렷이 차별화된다.
8. 고려사항 및 시사점
- 신뢰의 뿌리(Root of Trust) 관리: 수신자 공개키가 진짜 그 사람의 것인지 보증하려면 PKI·인증서(CA) 기반 신뢰 체계가 전제되어야 한다. 그렇지 않으면 공격자가 자신의 공개키를 수신자 것으로 위장하는 중간자 공격(MITM)에 세션키가 탈취된다.
- 키 수명주기와 HSM: 개인키·세션키의 생성·보관·폐기를 안전하게 하려면 하드웨어 보안 모듈(HSM)과 체계적인 키 수명주기 관리가 필수다. 특히 서버 개인키는 유출 시 피해가 크므로 물리적으로 격리된 저장이 요구된다.
- 순방향 비밀성 확보: RSA 키 수송 방식은 개인키 유출 시 과거 트래픽까지 위험하므로, 신규 설계에서는 ECDHE 등 PFS를 제공하는 키 합의 방식을 기본으로 채택하는 것이 바람직하다.
- 양자내성으로의 전환 준비: "Harvest Now, Decrypt Later" 위협에 대비해, 장기 기밀성이 필요한 데이터는 지금부터 PQC 기반 키 캡슐화로의 하이브리드 전환 로드맵을 마련해야 한다.
- 난수 품질과 구현 보안: 세션키 생성에 쓰이는 난수의 품질이 곧 전체 보안의 하한선이 된다. 약한 난수, 패딩 오라클 같은 구현 취약점은 알고리즘이 안전해도 전체를 무너뜨리므로, 검증된 라이브러리와 안전한 패딩·모드 사용이 필수다.
참고자료
- NIST, "Post-Quantum Cryptography Standardization" — https://csrc.nist.gov/projects/post-quantum-cryptography
- IETF RFC 8446, "The Transport Layer Security (TLS) Protocol Version 1.3" — https://datatracker.ietf.org/doc/html/rfc8446
한 줄 요약: 전자봉투는 평문을 일회성 세션키로 빠르게 대칭 암호화하고 그 세션키만 수신자 공개키로 암호화 해 함께 보내는 하이브리드 기법으로, 수신자는 개인키로 세션키를 풀어 복원하며, 전자서명과 결합하면 기밀성·무결성·인증·부인방지 4대 서비스를 제공하고, 순방향 비밀성(PFS)·양자내성암호(PQC)로 진화 중이다.