보안/전자 서명 / / 2025. 3. 26. 17:13

CMS란? 비유를 들어 설명한 보안 메시지 포맷

1. CMS 개요 :  보안 메시지 포맷의 이해

CMS(Cryptographic Message Syntax)는 디지털 환경이나 암호화를 통해 데이터를 안전하게 보호하는 데 사용하는 표준 형식이다. 예를 들어 파일이나 이메일을 주고받을 때, 누군가 내용을 몰래 바꾸거나 훔쳐보지 못하도록 감싸는 역할을 한다. CMS는 다양한 방식으로 정보를 보호할 수 있어서 상황에 따라 적절한 형태를 선택하여 사용할 수 있다. 이러한 CMS 기술 덕분에 우리는 디지털 환경에서 메일을 보내거나 중요한 문서를 공유할 때 보다 안심할 수 있다. 쉽게 말해, CMS는 데이터를 안전하게 포장하고 보호해 주는 '보안 포맷'이라고 할 수 있다.

 

< CMS : Cryptographic Message Syntax >

 

2. CMS의 이해를 돕기 위한 비유

CMS에 대한 이해를 돕기 위해 딱딱한 정의보다는 비유를 들고자 한다. 닝닝이가 윈터에게 편지를 보내고 싶다고 가정하자. 다만, 편지를 그냥 보내면 다른 사람이 내용을 엿볼 수 있으니, 닝닝이는 자물쇠가 달린 상자를 사용한다.

 

  1. ✉️ 닝닝이는 편지를 작성한다.
  2. ✍🏻 닝닝이는 작성한 편지와 자신의 서명을 상자에 넣는다.
  3. 🔐 닝닝이는 윈터의 공개 키로 상자를 잠가 윈터에게 보낸다.
  4. 🔑 상자를 받은 윈터는 자신의 개인 키로 잠금을 해제한다.
  5. 📦 윈터는 상자 안의 서명을 확인하여 닝닝이가 보낸 것임을 증명한다.
  6. 📝 윈터는 닝닝이의 편지를 열람한다.

 

이 예시에서 상자가 바로 CMS이다. CMS는 메시지를 안전하게 담을 수 있고, 누가 보냈는지 확인할 수 있게 하며(디지털 서명), 다른 사람이 볼 수 없도록 보호할 수 있다.(암호화)

 

요약하자면, CMS는 보안 메시지를 안전하게 포장하고 해석하는 규칙이자 형식이다. 필요한 보안 기능에 따라 CMS 상자에 어떤 데이터를 포함하고 해석하는지는 달라지지만 큰 틀에서 보는 CMS는 디지털 환경에서 신뢰할 수 있는 메시지 전달을 가능하게 한다.

 

3. CMS의 주요 타입 소개

CMS에는 다양한 보안 기능을 제공하며, 각 기능은 다른 구조를 가진다. 즉, 상자의 종류에 따라 담기는 내용과 기능이 달라진다. 주요 CMS 타입은 다음과 같다.

 

  • SignedData
  • EnvelopedData
  • SignedAndEnvelopedData
  • DigestedData
  • EncryptedData
  • AuthenticatedData

 

각각의 종류에 따라 담기는 데이터와 그 데이터를 해석하고 검증하는 방식은 각기 다르지만 해당 글에서는 앞서 든 비유를 기반으로 각 구조의 차이점을 살펴보는 것을 기준으로 설명한다.

 

3-1. SignedData

닝닝이는 📦 SignedData에 다음의 데이터를 포함시킨다.

  • ✉️ 편지
  • ✍🏻 디지털 서명
  • 💿 검증에 필요한 부가 정보

 

윈터는 📦 상자를 전달받아 내용을 열람한 후 서명 검증을 통해 메시지가 위변조 되지 않았고 윈터가 보낸 것임을 확인할 수 있다. 하지만 암호화가 적용되지 않았기 때문에 메시지의 내용은 전송 중 제삼자에게 노출될 수 있다. 즉, 서명만 있고 암호화는 없는 구조이다.

 

SignedData의 구조와 검증 예시는 링크를 참조한다.

 

3-2. EnvelopedData

닝닝이는 📦 EnvelopedData에 다음의 데이터를 포함시킨다.

  • ✉️ 암호화된 편지
  • 🔐 암호화된 (수신저 전용) 열쇠 정보
  • 💿 필요한 부가 정보

 

윈터는 📦 상자를 전달받아 자신의 개인 키로 열쇠를 복호화한 뒤 편지를 볼 수 있다. 이 구조는 전송 중 편지 내용이 노출되지 않도록 보호하는데 중점이 있다. 즉, 내용 보호를 위해 암호화하지만 서명은 없는 구조이다.

 

EnvelopedData의 구조와 검증 예시는 링크를 참조한다.

 

3-3. SignedAndEnvelopedData

닝닝이는 📦 SignedAndEnvelopedData에 다음의 데이터를 포함시킨다.

  • ✉️ 암호화된 편지
  • 🔐 암호화된 열쇠 정보
  • ✍🏻 디지털 서명
  • 💿 검증에 필요한 부가 정보

 

윈터는 📦 상자를 전달받아 자신의 개인 키로 열쇠를 복호화한 뒤 편지를 열고, 서명을 검증함으로써 내용의 위변조 여부와 발신자 확인까지 모두 가능하다. 즉, SignedData와 EnvelopedData가 결합된 조합이다. 

 

※ 주의

SignedAndEnvelopedData의 경우 현재 사용되지 않으며, 최신 표준에서는 아예 구조 자체가 제외되었다. 따라서 암호화와 서명을 통한 무결성 및 서명자 인증이 모두 필요한 경우 SignedData를 우선 생성 후 이를 EnvelopedData로 감싸는 방식으로 대체한다.

출처 : #RFC 2315, #RFC 5652

 

3-4. DigestedData

닝닝이는 📦 DigestedData에 다음의 데이터를 포함시킨다.

  • ✉️ 편지
  • ⭐️ 편지의 요약본 (=해시값)
  • 💿 검증에 필요한 부가 정보

 

윈터는 📦 상자를 전달받아 편지를 열람하고, 스스로 생성한 해시값과 상자에 담긴 해시값을 비교하여 무결성을 확인할 수 있다. 하지만 서명이 없기 때문에 발신자가 누구인지 확인할 수 없고 암호화가 적용되지 않아 내용이 외부에 노출될 수도 있다. 즉, 이 구조는 무결성만 확인 가능한 가벼운 구조이다.

 

DigestedData의 검증 예시는 링크를 참조한다.

 

3-5. EncryptedData

닝닝이는 📦 EncryptedData에 다음의 데이터를 포함시킨다.

  • ✉️ 암호화된 편지

 

윈터는 닝닝이와 사전에 공유한 대칭 키를 이용해 암호화된 편지 내용을 복호화한다. 이 구조는 한 명의 수신자에게만 보낼 때 적합하다. 즉, 단순한 암호화 구조이나 수신자와 키를 사전에 공유해야 한다.

 

3-6. AuthenticatedData

닝닝이는 📦 AuthenticatedData에 다음의 데이터를 포함시킨다.

  • ✉️ 편지
  • ❗️인증 코드(MAC, Message Authentication Code)
  • 💿 검증에 필요한 부가 정보

 

윈터는 📦 상자를 전달받아 편지를 열람하고, MAC 값을 확인함으로써 무결성을 검증할 수 있다. 하지만 서명이 없기 때문에 누가 보냈는지는 확인할 수 없다. 즉, 이 구조는 MAC을 통한 빠른 무결성 검증이 필요할 때 사용된다.

 

4. 마무리

이번 글을 정리하면 다음과 같다.

 

  • CMS는 디지털 메시지의 보안과 신뢰성을 위한 표준 포맷이다.
  • CMS는 암호화를 통해 메시지의 비밀성을 보장하고, 서명을 통해 발신자 확인 및 위변조 검증이 가능하다.
  • 필요한 보안 기능에 따라 다양한 CMS의 종류 중 하나를 선택해 사용할 수 있다.
  • CMS는 이메일 보안, 전자 서명, 인증서 기반 통신 등 다양한 분야에서 핵심 역할을 한다.

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유