다음을 통해 공유


EnvelopedCms 메시지

CMS/PKCS #7에서는 EnvelopedCms 클래스를 제공하여 메시지를 디지털로 포함합니다.

메시지를 디지털로 포함하면 데이터 기밀성이라는 보안 서비스를 적용하여 해당 메시지를 보호합니다.

디지털로 포함 기능은 암호화를 사용하여 메시지 기밀성을 유지합니다. 하나의 세션 키를 생성하고 메시지 암호화에 사용합니다. 그런 다음 받는 사람의 공개 키를 사용하여 세션 키 자체를 암호화합니다. 암호화된 메시지와 암호화된 세션 키의 조합이 디지털로 포함 기능을 구성합니다. 메시지를 받으면 받는 사람의 개인 키를 사용하여 세션 키를 해독합니다. 해당 세션 키를 사용하여 메시지를 해독합니다. 세션 키는 대칭 키이므로 메시지 암호화 및 해독 모두에 사용할 수 있습니다.

가장 높은 수준의 데이터 기밀성이 요구되는 모든 응용 프로그램에는 EnvelopedCms 클래스를 사용합니다. S/MIME 보안 표준을 사용하는 전자 메일은 EnvelopedCms 클래스를 사용하여 보안을 제공하는 방법에 대한 예제입니다. 다른 보안 서비스 외에 S/MIME는 여러 받는 사람에 대해 전자 메일 메시지를 암호화할 수 있는 기능을 지정합니다. 디지털로 포함 기능은 이러한 요구에 맞게 수정됩니다.

EnvelopedCms 클래스의 Encrypt 메서드 중 하나를 사용하여 메시지를 암호화합니다. System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipient) 메서드를 사용하려면 먼저 응용 프로그램에서 CmsRecipient 개체를 생성하여 메시지 받는 사람의 특징을 설정해야 합니다. CmsRecipient 클래스는 받는 사람의 X509 인증서와 메시지 보낸 사람 및 받는 사람 간에 세션 키를 설정하는 기술을 저장합니다. System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt 메서드는 사용자가 적절한 받는 사람의 인증서를 선택할 수 있도록 대화 상자를 표시합니다.

EnvelopedCms 클래스는 여러 받는 사람에 대한 메시지 포함 기능을 지원합니다. CmsRecipientCollection 컬렉션에 받는 사람 그룹을 설정하여 System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipientCollection) 메서드에 대한 입력으로 사용합니다.

메시지 보낸 사람 및 받는 사람 간에 세션 키를 설정하는 두 가지 기술이 있습니다. 키 전송 알고리즘은 일반적으로 RSA(https://go.microsoft.com/fwlink/?LinkId=98038) 알고리즘을 사용합니다. 이 알고리즘에서 작성기는 공유 암호화 키를 생성한 다음 받는 사람에게 전송하여 받는 사람과 공유 암호화 키를 설정합니다. 키 계약 알고리즘은 일반적으로 Diffie-Hellman 키 계약(https://go.microsoft.com/fwlink/?LinkId=98039) 알고리즘을 사용합니다. 이 알고리즘에서 보낸 사람과 받는 사람은 공유 암호화 키 생성에 모두 참여하고 해당 키를 정의하고 동의하여 공유 암호화 키를 설정합니다.

EnvelopedCms 메시지를 받는 사람 각각에 대한 정보는 System.Security.Cryptography.Pkcs.EnvelopedCms.RecipientInfos 속성에 있습니다. 키 전송 알고리즘을 사용하여 보낸 사람과 세션 키를 설정하는 받는 사람에 대한 정보는 KeyTransRecipientInfo 개체에 있습니다. 키 계약 알고리즘을 사용하여 보낸 사람과 세션 키를 설정하는 받는 사람에 대한 정보는 KeyAgreeRecipientInfo 개체에 있습니다.

EnvelopedCms 메시지에는 보호되지 않는 특성을 포함할 수 있습니다. 보호되지 않는 특성은 암호화되어 있지 않으며 데이터 기밀성이 없습니다. 이러한 특성은 System.Security.Cryptography.Pkcs.EnvelopedCms.UnprotectedAttributes 속성에 저장됩니다.

EnvelopedCms 클래스의 Decrypt 메서드 중 하나를 사용하여 포함된 메시지를 해독합니다. EnvelopedCms 메시지에는 해독에 필요한 받는 사람의 식별 정보가 포함됩니다. 이 정보는 RecipientInfos 속성에 포함되어 있습니다.

EnvelopedCms 메시지를 사용하는 여러 코드 예제는 System.Security.Cryptography.Pkcs 사용을 참조하십시오.

참고 항목

작업

방법: 한 명의 받는 사람의 메시지 포함
방법: 여러 명의 받는 사람의 메시지 포함

참조

CmsRecipient
CmsRecipientCollection
EnvelopedCms
KeyAgreeRecipientInfo
KeyTransRecipientInfo

개념

방법: 메시지 서명 및 포함
CMS/PKCS #7 메시지 유형

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.