Share via


CMS/PKCS #7 메시지의 구성 요소

CMS/PKCS #7 메시지 구조를 사용하면 메시지에 하나 이상의 보안 서비스를 보다 쉽게 구현할 수 있습니다. 또한 특성은 메시지에 대한 추가 정보를 생성하는 CMS/PKCS #7 메시지와 연결될 수 있습니다.

보호할 데이터

CMS/PKCS #7을 사용하면 ContentInfo 개체에 저장하여 데이터에 여러 보안 서비스를 적용할 수 있습니다. 이 개체는 System.Security.Cryptography.Pkcs 네임스페이스에 있는 데이터를 보호하는 두 개의 기본 클래스 SignedCmsEnvelopedCms의 속성입니다. ContentInfo 개체는 보호되지 않는 데이터를 저장할 수 있지만 이전에 CMS/PKCS #7 보안 서비스에서 보호된 데이터를 캡슐화할 수도 있습니다. 캡슐화를 사용하면 데이터에 중첩된 보안 계층을 적용할 수 있습니다. 예를 들어, 이미 디지털 서명된 데이터를 디지털로 포함할 수 있습니다.

ContentInfo 개체에 있으며, CMS/PKCS #7 메시지의 새 보호 계층이 제공된 데이터를 CMS/PKCS #7 메시지 내의 내부 내용이라고 합니다. 이 보호 기능을 적용한 결과 데이터는 CMS/PKCS #7 메시지의 외부 내용이라고 합니다. 외부 내용은 CMS/PKCS #7 메시지 개체의 인코딩 방법을 호출하여 얻을 수 있습니다. 이는 실질적으로 System.Security.Cryptography.Pkcs.SignedCms.Encode 또는 System.Security.Cryptography.Pkcs.EnvelopedCms.Encode를 호출하는 것을 의미합니다.

여러 보안 서비스로 보호되는 데이터에 대한 자세한 내용은 포함 및 서명된 CMS/PKCS #7 메시지를 참조하십시오. 여러 보안 서비스로 보호되는 데이터의 코드 예제를 보려면 방법: 메시지 서명 및 포함을 참조하십시오.

특성

CMS/PKCS #7을 사용하면 보호되는 메시지에 특성을 배치할 수 있습니다. 특성은 특성 종류를 식별하는 개체 식별자(Oid) 및 특성 값을 보유하는 데이터로 구성되어 있습니다. 이러한 특성의 선택, 위치 및 특징은 CMS/PKCS #7 메시지 유형에 따라 다릅니다.

SignedCms 메시지는 메시지 내용과 함께 서명된 특성 및 서명되지 않은 특성의 서명별 특성 두 형식을 가질 수 있습니다. 자세한 내용은 SignedCms 메시지를 참조하십시오. EnvelopedCms 메시지는 암호화되지 않은 특성을 가질 수 있습니다. 자세한 내용은 EnvelopedCms 메시지를 참조하십시오.

다음 특성 클래스는 System.Security.Cryptography.Pkcs 네임스페이스에 포함되어 있습니다. 일부는 CMS/PKCS #7 표준에 필요하고 나머지는 다수의 응용 프로그램 시나리오에 유용한 특성입니다.

사용자 지정 특성은 응용 프로그램의 요구에 맞춰 변경될 수 있습니다. Pkcs9AttributeObject에서 사용자 지정 특성 클래스가 파생됩니다.

주체

CMS/PKCS #7 메시지의 주체는 메시지를 만들거나 사용하는 데 관련된 엔터티입니다. 응용 프로그램의 동작에 따라 주체는 여러 가지 다른 역할을 수행할 수 있습니다. 이러한 역할에는 보낸 사람, 작성자, 서명자, 연대 서명자, 받는 사람, 메시지 판독기 또는 이들의 결합이 포함됩니다. 주체는 사용자, 소프트웨어 응용 프로그램 또는 고유 ID가 있는 다른 엔터티일 수 있습니다. System.Security.Cryptography.Pkcs에서 주체를 포함하는 두 개의 주요 클래스는 CmsSignerCmsRecipient입니다.

CMS/PKCS #7의 주체는 암호화 자격 증명을 사용하여 작업을 수행합니다. 암호화 자격 증명은 연관된 개인 키가 있는 공개 키 인증서 양식으로 이루어져 있습니다. 주체를 식별하고 찾으려면 공개 키 인증서를 사용합니다. 두 가지 방법 중 하나를 사용하여 이 인증서를 고유하게 식별할 수 있습니다.

  • 발급자별 인증서 일련 번호와 함께 발급자의 고유 이름

  • 주체 키 식별자

이러한 식별 메커니즘은 SubjectIdentifierType 열거에 나타납니다. CmsSignerCmsRecipient 클래스에 사용되는 일부 생성자는 SubjectIdentifierType 멤버를 입력으로 간주합니다.

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.