# 메시지 키 (Message Key)

메시지 키(Message Key)는 메시지와 함께 전송되어 메시지 해독에 사용되는 키입니다. 일반적으로 메시지 키는 하나의 메시지를 위해 새로 만드는 큰 무작위 값으로, 그 메시지의 데이터를 암호화하는 대칭 키가 됩니다. 메시지 키 자체는 사용자 키로 암호화된 상태로 메시지에 붙여 보냅니다. 문맥에 따라 데이터 암호화 키(DEK), 세션 키라고도 부릅니다.

**하이브리드 암호에서의 역할**

공개 키 암호는 긴 데이터를 직접 암호화하기에는 느리고, 대칭 키 암호는 빠르지만 키를 안전하게 전달하기 어렵습니다. 메시지 키는 두 방식을 결합하는 하이브리드 암호의 핵심입니다.

1. 송신자는 메시지마다 무작위 메시지 키를 생성합니다.
2. 메시지 본문은 이 키로 AES 같은 대칭 키 알고리즘을 써서 암호화합니다.
3. 메시지 키는 수신자의 공개 키나 미리 공유된 사용자 키(키 암호화 키, KEK)로 암호화합니다.
4. 암호화된 본문과 암호화된 메시지 키를 함께 보냅니다.
5. 수신자는 자신의 개인 키나 사용자 키로 메시지 키를 먼저 복호화한 다음, 그 메시지 키로 본문을 복호화합니다.

OpenPGP 이메일 암호화의 세션 키가 대표적인 예입니다. 클라우드 서비스에서는 같은 구조를 봉투 암호화(envelope encryption)라고 부르며, 데이터는 DEK로 암호화하고 DEK는 키 관리 서비스(KMS)가 보관하는 마스터 키로 암호화합니다. 최근 표준에서는 공개 키로 메시지 키를 직접 암호화하는 대신, 키 캡슐화 메커니즘(KEM)으로 송신자와 수신자가 공유 비밀을 만들고 그로부터 메시지 키를 유도하기도 합니다.

**논스와의 차이**

메시지 키는 비밀로 유지해야 하는 키이고, 논스(nonce)나 초기화 벡터(IV)는 같은 키로 여러 번 암호화할 때 결과가 겹치지 않도록 넣는 값으로 보통 공개됩니다. 두 값은 역할이 다르므로 혼동하지 않아야 합니다.

**이점**

- **피해 범위 제한:** 메시지마다 키가 다르므로 하나의 메시지 키가 유출되어도 피해가 해당 메시지로 한정됩니다. 다만 사용자 키가 유출되면 그 키로 보호된 메시지 키가 모두 위험해집니다.
- **효율성:** 느린 공개 키 연산은 짧은 메시지 키에만 쓰고, 긴 본문은 빠른 대칭 키 암호로 처리합니다.
- **여러 수신자:** 본문은 한 번만 암호화하고, 같은 메시지 키를 수신자별 키로 각각 암호화해 붙이면 여러 사람에게 보낼 수 있습니다.

**주의할 점**

- **난수 품질:** 메시지 키를 예측 가능한 난수로 만들면 암호화 전체가 무력해집니다. 암호학적으로 안전한 난수 생성기를 써야 합니다.
- **사용자 키 보호:** 시스템의 안전성은 결국 메시지 키를 감싸는 사용자 키나 개인 키를 얼마나 안전하게 보관하느냐에 달려 있습니다.
- **오버헤드:** 메시지마다 암호화된 키가 붙으므로 전송 데이터가 조금 늘어납니다.

---
출처: https://achivx.kr/glossary/message-key-%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%82%A4/ · ACHIVX 용어 사전 · 수정일 2026-10-20
