다음을 통해 공유


PKCS #7 특성

PKCS #7은 암호화 메시지 구문 표준입니다. PKCS #7 메시지는 그 자체로 인증서 요청을 구성하지 않지만 다음 콘텐츠 형식 중 하나를 사용하여 ContentInfo ASN.1 구조에서 PKCS #10 또는 CMC 요청을 캡슐화할 수 있습니다. 캡슐화를 사용하면 사용할 수 없는 여러 서명과 같은 추가 기능을 추가할 수 있습니다.

  • Data
  • SignedData
  • EnvelopedData
  • SignedAndEnvelopedData
  • DigestedData
  • EncryptedData

특성은 SignedData 콘텐츠 형식의 authenticatedAttributesunauthenticatedAttributes 필드에 추가할 수 있습니다.

SignedData ::= SEQUENCE 
{
   version             INTEGER,
   digestAlgorithms    DigestAlgorithmIdentifiers,
   contentInfo         ContentInfo,
   certificates        [0] IMPLICIT Certificates OPTIONAL,
   crls                [1] IMPLICIT CertificateRevocationLists OPTIONAL,
   signerInfos         SignerInfos
}

SignerInfos ::= SET OF SignerInfo

SignerInfo ::= SEQUENCE 
{
    version                     INTEGER,
    sid                         CertIdentifier,
    digestAlgorithm             DigestAlgorithmIdentifier,
    authenticatedAttributes     [0] IMPLICIT Attributes OPTIONAL,
    digestEncryptionAlgorithm   DigestEncryptionAlgId,
    encryptedDigest             EncryptedDigest,
    unauthenticatedAttributes   [1] IMPLICIT Attributes
}

Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type       EncodedObjectID,
   values     AttributeSetValue
}

CA(인증 기관)에서 클라이언트의 프라이빗 키를 보관하는 데 필요한 프로세스는 인증된(서명된) 특성과 인증되지 않은 특성을 사용하는 방법에 대한 포괄적인 예제를 제공합니다.

  • 클라이언트는 IX509CertificateRequestPkcs10 개체를 만들고 요청되는 인증서 유형에 적절한 데이터를 추가합니다.

  • 클라이언트는 PKCS #10 요청을 사용하여 IX509CertificateRequestCmc 개체를 초기화합니다. PKCS #10 요청은 CMC 요청의 TaggedRequest 구조에 배치됩니다. 자세한 내용은 CMC 특성을 참조하세요.

  • 클라이언트는 프라이빗 키를 암호화하고 이를 사용하여 IX509AttributeArchiveKey 개체를 초기화합니다. 새 ArchiveKey 특성은 EnvelopedData 구조체에 캡슐화됩니다.

    EnvelopedData ::= SEQUENCE 
    {
        version                 INTEGER,
        recipientInfos          RecipientInfos,
        encryptedContentInfo    EncryptedContentInfo
    } 
    
    RecipientInfos ::= SET OF RecipientInfo
    
    EncryptedContentInfo ::= SEQUENCE 
    {
        contentType                 ContentType,
        contentEncryptionAlgorithm  ContentEncryptionAlgId,
        encryptedContent            [0] IMPLICIT EncryptedContent OPTIONAL
    } 
    
    EncryptedContent ::= OCTET STRING
    
    RecipientInfo ::= SEQUENCE 
    {
        version                 INTEGER,
        issuerAndSerialNumber   IssuerAndSerialNumber,
        keyEncryptionAlgorithm  KeyEncryptionAlgId,
        encryptedKey            EncryptedKey
    } 
    
  • 클라이언트는 암호화된 키의 SHA-1 해시를 만들고 이를 사용하여 IX509AttributeArchiveKeyHash 개체를 초기화합니다.

  • 클라이언트는 CMC 요청에서 CryptAttributes 컬렉션을 검색하고 ArchiveKey 및 ArchiveKeyHash 특성을 추가 합니다. 특성은 CMC 요청의 TaggedAttributes 구조에 배치됩니다.

  • 클라이언트는 CMC 요청을 사용하여 IX509CertificateRequestPkcs7 개체를 초기화합니다. 이렇게 하면 CMC 요청이 PKCS #7 SignedData 구조체의 contentInfo 필드에 배치됩니다.

  • ArchiveKeyHash 특성은 서명되어 SignerInfo 구조체의 authenticatedAttributes 시퀀스에 배치됩니다.

  • ArchiveKey 특성은 PKCS #7 메시지의 기본 서명자와 연결된 SignerInfo 구조체의 인증되지 않은Attributes 시퀀스에 배치됩니다.

지원되는 특성