2.PKI-構文[ASN.1]、仕様[PCCS、X.509]、符号化[DER、PEM]
11500 ワード
2.PKI-構文[ASN.1]、仕様[PCCS、X.509]、符号化[DER、PEM]
1. ASN.1 - Abstract Syntax Notation One
In telecommunications and computer networking, Abstract Syntax Notation One (ASN.1) is a standard and flexible notation that describes data structures for representing, encoding, transmitting, and decoding data. It provides a set of formal rules for describing the structure of objects that are independent of machine-specific encoding techniques and is a precise, formal notation that removes ambiguities.
ASN.1抽象文法タグ(Abstract Syntax Notation One)ASN.1はISO/ITU-T規格であり、データの表示、符号化、伝送、復号を行うデータフォーマットを記述する.言語的にどのように実行され、これらのデータの具体的な世代を指しても、どのようなアプリケーションであるかにかかわらず、オブジェクトを記述するための正規のフォーマットが提供されます.
ポイント:ASN.1は言語であり、タグ言語であり、データ構造を記述する役割を果たす.このようなデータ構造に基づいて、データの表現、符号化、伝送、復号を行うことができる.
2.ASNに基づく.1のデータ記述
PKCSプロトコルグループとX.509プロトコルはいずれもASNを採用している.1で、鍵または証明書のデータ構造を定義します.
2.1 PKCS
The Public-Key Cryptography Standards(PKCS)は、証明書申請、証明書更新、証明書廃棄表の発行、証明書内容の拡張、デジタル署名、デジタル封筒のフォーマットなど、米国RSAデータセキュリティ会社とそのパートナーによって制定された公開鍵暗号化基準のセットである.
1999年末現在、PKCSはPCKS#1~15の15規格を公表している.その中で比較的よく使われるのがPKCS#1,PKCS#7,PKCS#8およびPKCS#12である.
PKCS #1 : RSA Cryptography Standard
PKCSプロトコルグループとX.509プロトコルはいずれもASNを採用している.1で、鍵または証明書のデータ構造を定義します.
2.1 PKCS
The Public-Key Cryptography Standards(PKCS)は、証明書申請、証明書更新、証明書廃棄表の発行、証明書内容の拡張、デジタル署名、デジタル封筒のフォーマットなど、米国RSAデータセキュリティ会社とそのパートナーによって制定された公開鍵暗号化基準のセットである.
1999年末現在、PKCSはPCKS#1~15の15規格を公表している.その中で比較的よく使われるのがPKCS#1,PKCS#7,PKCS#8およびPKCS#12である.
PKCS #1 : RSA Cryptography Standard
PKCS #7 : Cryptographic Message Syntax Standard
PKCS #8 : Private-Key Information Syntax Standard
PKCS #12 : Personal Information Exchange Syntax Standard
以下に、いくつかの構文の説明を示します.
PKCS#1: RSA Public Key Syntax
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}
PKCS#1: RSA Private Key Syntax
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
PKCS#8: Private Key Syntax
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
PKCS#8: Encrypted Private Key Syntax
EncryptedPrivateKeyInfo ::= SEQUENCE {
encryptionAlgorithm EncryptionAlgorithmIdentifier,
encryptedData EncryptedData
}
EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
EncryptedData ::= OCTET STRING
2.2 X.509
X.509は暗号学における公開鍵証明書のフォーマット基準である.X.509証明書はTLS/SSL(WWW万維網安全閲覧の礎)を含む多くのインターネットプロトコルに応用されている.電子署名サービスなど、多くの非オンラインアプリケーションシーンでも使用されています.X.509証明書には、公開鍵、アイデンティティ情報(例えば、ネットワークホスト名、組織名または個人名など)と署名情報(証明書発行機関CAの署名であってもよいし、自己署名であってもよい)が含まれている.信頼できる証明書発行機関を介して署名したり、他の方法で検証したりできる証明書については、証明書の所有者は、証明書と対応する秘密鍵で安全な通信を作成し、ドキュメントにデジタル署名することができます.
また、証明書自体の機能に加えて、X.509には、証明書の取り消しリストと、最終的に証明書に署名する証明書発行機関から最終的な信頼性ポイントまでの証明書正当性検証アルゴリズムが付属しています.
X.509はITU-T標準化部門が彼らの前のASNに基づいている.1定義された一連の証明書基準.
ポイント:
The X.509 v3 certificate basic syntax is as follows.
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
}
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
Validity ::= SEQUENCE {
notBefore Time,
notAfter Time }
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- contains the DER encoding of an ASN.1 value
-- corresponding to the extension type identified
-- by extnID
}
3. ASN.1相関符号化
ASNと.1関連する符号化規則は
4.PEMコード
Privacy-Enhanced Mail (PEM) is a de facto file format for storing and sending cryptographic keys, certificates, and other data, based on a set of 1993 IETF standards defining “privacy-enhanced mail.”
PEMは、暗号学key、証明書、および他のデータを格納および送信するためのファイルフォーマットの事実基準である.ASNを多く使用する.1の暗号学的基準(例えばX.509とPKCS)はいずれもDER符号化を用いているが、DER符号化の内容はバイナリであり、メールとの転送には適していない(初期のEmailでは添付ファイルを送信できない)ため、PEMを用いてバイナリコンテンツをASCII符号に変換する.ファイルの内容のフォーマットは次のとおりです.-----BEGIN label-----
BASE64 Encoded
-----END label-----
PEMは、実際にはDER符号化されたファイルのバイナリコンテンツをbase 64で符号化し、その上に----BEGIN label-----というヘッダと----END label-----という末尾を付けて、真ん中がDERファイルのBase 64符号化である.
4.1 PEMリファレンス
PKCS #1 RSA Private Key -----BEGIN RSA PRIVATE KEY-----
BASE64 Encoded
-----END RSA PRIVATE KEY-----
PKCS #1 RSA Public Key -----BEGIN RSA PUBLIC KEY-----
BASE64 Encoded
-----END RSA PUBLIC KEY-----
PKCS #8 Private Key -----BEGIN PRIVATE KEY-----
BASE64 Encoded
-----END PRIVATE KEY-----
PKCS #8 Encrypted Private Key -----BEGIN ENCRYPTED PRIVATE KEY-----
BASE64 Encoded
-----END ENCRYPTED PRIVATE KEY-----
X.509 Certificate -----BEGIN CERTIFICATE-----
BASE64 Encoded
-----END CERTIFICATE-----
X.509 Certificate Subject Public Key Info -----BEGIN PUBLIC KEY-----
BASE64 Encoded
-----END PUBLIC KEY-----
5.鍵、証明書ファイル接尾辞
鍵や証明書ファイルの接尾辞は乱雑に見え、どのような接尾辞が適切か分からないものもあります.鍵、証明書ファイルの接尾辞の命名は実は一定の規則があって、それは大体以下のいくつかの種類に分けることができます:
-----BEGIN label-----
BASE64 Encoded
-----END label-----
-----BEGIN RSA PRIVATE KEY-----
BASE64 Encoded
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PUBLIC KEY-----
BASE64 Encoded
-----END RSA PUBLIC KEY-----
-----BEGIN PRIVATE KEY-----
BASE64 Encoded
-----END PRIVATE KEY-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
BASE64 Encoded
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
BASE64 Encoded
-----END CERTIFICATE-----
-----BEGIN PUBLIC KEY-----
BASE64 Encoded
-----END PUBLIC KEY-----
鍵や証明書ファイルの接尾辞は乱雑に見え、どのような接尾辞が適切か分からないものもあります.鍵、証明書ファイルの接尾辞の命名は実は一定の規則があって、それは大体以下のいくつかの種類に分けることができます:
したがって、同一のファイルについては複数の接尾辞を用いる命名することができる、例えば、1つの証明書ファイルについては、PEM符号化を用いる場合に用いることができる接尾辞がある.cer,.crt,.pem.