公開鍵証明書符号化解読
10814 ワード
一、ファイルコード
PEM(Privacy Enhancement Message)、定義はRFC 1421を参照してbase 64ベースの符号化フォーマットであり、linux/unixで一般的な証明書符号化である.
構造構成={header}body{tail}例
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMYfnvWtC8Id5bPKae5yXSxQTt
+Zpul6AnnZWfI2TtIarvjHBFUtXRo96y7hoL4VWOPKGCsRqMFDkrbeUjRrx8iL91
4/srnyf6sh9c8Zk04xEOpK1ypvBz+Ks4uZObtjnnitf0NBGdjMKxveTq+VE7BWUI
yQjtQ8mbDOsiLLvh7wIDAQAB
-----END PUBLIC KEY-----
DER(Distinguished Encoding Rules)、定義はウィキペディア-SN.1.DERはASNからのものである.1システムのバイナリ符号化フォーマットで、windows/macの証明書符号化によく使われる
符号化方式==DER uses a pattern of type-length-value triplets
二、公開鍵標準
PKCS(Public Key Cryptography Standards)、定義はウィキペディア-PCCSを参照して公開鍵暗号学の標準であり、その定義範囲は証明書署名、暗号化アルゴリズム、充填モード、検証プロセスなどをカバーしている.
一般的なPKCS標準
バージョン#バージョン#
マイルストーン
PKCS#1
RFC 8017は、公開鍵秘密鍵の符号化フォーマット(ASN.1符号化)を定義し、基礎アルゴリズムおよび符号化/充填モード、署名検証、opensslのデフォルト標準フォーマットを含む
PKCS#3
DiffieHellman Key Agreement,DH鍵交換規格を定義
PKCS#5
RFC 8018は、パスワードの暗号化基準に基づいてPBKDF 2アルゴリズムを定義する
PKCS#7
RFC 2315は、鍵情報構文基準、PKIシステムにおける情報署名及び暗号化基準を定義し、S/MIMEの一部である
PKCS#8
RFC 5958は、証明書鍵ペアの共通フォーマット(RSAに限定されない)を記述するための秘密鍵情報構文基準を定義する
PKCS#11
鍵Tokenインタフェースが定義、単点登録/公開鍵アルゴリズム/ディスク暗号化システムによく用いられる.(ハードウェア暗号化)
PKCS#12
RFC 7292、個人情報交換文法標準、秘密鍵と公開鍵証明書の記憶方式(パスワードをサポート)を定義し、よく使われるPFX略称、Java Key Storeの符号化フォーマット
三、RSA鍵
RSA公開鍵符号化
PublicKey-PKCS#1-PEM
-----BEGIN RSA PUBLIC KEY-----
BASE64 ENCODED DATA
-----END RSA PUBLIC KEY-----
PublicKey-PKCS#1-DER
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}
PublicKey-PKCS#8-PEM
-----BEGIN PUBLIC KEY-----
BASE64 ENCODED DATA
-----END PUBLIC KEY-----
PublicKey-PKCS#8-DER
PublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
PublicKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
RSA公開鍵の場合、OIDは(1.2.84.13549.1.1)である.
RSA秘密鍵符号化
PrivateKey-PKCS#1-PEM
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
PrivateKey-PKCS#1-DER
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
}
PrivateKey-PKCS#8-PEM
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
PrivateKey-PKCS#8-DER
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey OCTET STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
秘密鍵ファイルは暗号化方式で保存でき、暗号化後のフォーマット:EncryptedPrivateKey-PCCS#8-PEM
-----BEGIN ENCRYPTED PRIVATE KEY-----
BASE64 ENCODED DATA
-----END ENCRYPTED PRIVATE KEY-----
Encrypted-PrivateKey-PKCS#8-DER
EncryptedPrivateKeyInfo ::= SEQUENCE {
encryptionAlgorithm EncryptionAlgorithmIdentifier,
encryptedData EncryptedData
}
EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
EncryptedData ::= OCTET STRING
四、証明書
X.509証明書、ウィキペディア-X.509は、現在流行している公開鍵証明書の標準です.X.509証明書には、公開鍵と対応するエンティティ名(hostname/organization/individual)が含まれています.証明書は通常、証明書認証機関によって署名または自己署名される.証明書所有者が他方に信頼されている場合(公開鍵署名によって検証される)、両者は、公開鍵アルゴリズムに基づいて安全な伝送チャネルを確立することができる.
証明書構造
Certificate
Version Number
Serial Number
Signature Algorithm ID
Issuer Name
Validity period
Not Before
Not After
Subject name
Subject Public Key Info
Public Key Algorithm
Subject Public Key
Issuer Unique Identifier (optional)
Subject Unique Identifier (optional)
Extensions (optional)
...
Certificate Signature Algorithm
Certificate Signature
プライマリフィールド
フィールド
説明
バージョン番号
証明書がどのバージョンのX.509規格(バージョン1、バージョン2、またはバージョン3)を使用しているかを示します.バージョン番号は証明書の特定の情報に影響します.
シリアル番号
証明書を識別する一意の整数、証明書発行者によって割り当てられた本証明書の一意の識別子
署名アルゴリズム識別子
ビザ書に用いるアルゴリズム識別は、対象識別子に関連するパラメータを加えて構成され、本証明書に用いるデジタル署名アルゴリズムを説明するために用いられる.例えば、SHA-1-RSA
発行者名
証明書発行者の識別可能な別名(DN)は、その証明書を発行したエンティティの唯一のCAのX.500名である
有効期間
証明書の開始日時および終了日時
マスター名
証明書所有者の一意の識別子(またはDN-distinguished name)
公開鍵情報
証明書所有者を含む公開鍵、アルゴリズム
発行者固有識別子
識別子-証明書発行者の一意の識別子.バージョン2およびバージョン3でのみ必要であり、オプションです.
マスター固有識別子
識別子-証明書発行者の一意の識別子.バージョン2およびバージョン3でのみ必要であり、オプションです.
発行者のデジタル署名
これは、発行者の秘密鍵を使用して生成された署名であり、この証明書が発行された後に作成されていないことを確認します.
拡張情報
..
拡張フィールド
フィールド
説明
発行者キー識別子
証明書に含まれる鍵の一意の識別子.同じ証明書所有者の複数対の鍵を区別するために使用されます.
鍵の使用
証明書署名、データ暗号化など、証明書の公開鍵が完了できる機能またはサービスを示すビット列.証明書がKeyUsage拡張子を「極めて重要」としてマークし、「keyCertSign」に設定されている場合、SSL通信中に証明書が表示されると拒否されます.証明書拡張子は、関連する秘密鍵がSSLではなく、証明書の署名にのみ使用されるべきであることを示します.
CRL分布点
CRLの分布場所を示す
秘密鍵の使用期間
証明書に公開鍵が関連付けられている秘密鍵の使用期限を指定します.Not BeforeとNot Afterで構成されています.これが存在しない場合、公開秘密鍵の使用期間は同じです.
証明書ポリシー
証明書の発行と使用ポリシーに関するオブジェクト識別子と制限子から構成されます.
ポリシーマッピング
2つのCAドメイン間の1つまたは複数のポリシーオブジェクト識別子の等価関係を示し、CA証明書にのみ存在する
マスター別名
証明書所有者の別名、例えば電子メールアドレス、IPアドレスなどを指摘し、別名はDNにバインドされている.
発行者別名
電子メールアドレス、IPアドレスなどの証明書発行者の別名を示しますが、発行者のDNは証明書の発行者フィールドに表示される必要があります.
マスターディレクトリのプロパティ
証明書所有者の一連のプロパティを指定します.これを使用してアクセス制御情報を渡すことができます
サンプル-ウィキペディア証明書
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2
Validity
Not Before: Nov 21 08:00:00 2016 GMT
Not After : Nov 22 07:59:59 2017 GMT
Subject: C=US, ST=California, L=San Francisco, O=Wikimedia Foundation, Inc., CN=*.wikipedia.org
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:c9:22:69:31:8a:d6:6c:ea:da:c3:7f:2c:ac:a5:
af:c0:02:ea:81:cb:65:b9:fd:0c:6d:46:5b:c9:1e:
ed:b2:ac:2a:1b:4a:ec:80:7b:e7:1a:51:e0:df:f7:
c7:4a:20:7b:91:4b:20:07:21:ce:cf:68:65:8c:c6:
9d:3b:ef:d5:c1
ASN1 OID: prime256v1
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Agreement
Authority Information Access:
CA Issuers - URI:http://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt
OCSP - URI:http://ocsp2.globalsign.com/gsorganizationvalsha2g2
X509v3 Certificate Policies:
Policy: 1.3.6.1.4.1.4146.1.20
CPS: https://www.globalsign.com/repository/
Policy: 2.23.140.1.2.2
X509v3 Basic Constraints:
CA:FALSE
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.globalsign.com/gs/gsorganizationvalsha2g2.crl
X509v3 Subject Alternative Name:
DNS:*.wikipedia.org, DNS:*.m.mediawiki.org, DNS:*.m.wikibooks.org, DNS:*.m.wikidata.org, DNS:*.m.wikimedia.org, DNS:*.m.wikimediafoundation.org, DNS:*.m.wikinews.org, DNS:*.m.wikipedia.org, DNS:*.m.wikiquote.org, DNS:*.m.wikisource.org, DNS:*.m.wikiversity.org, DNS:*.m.wikivoyage.org, DNS:*.m.wiktionary.org, DNS:*.mediawiki.org, DNS:*.planet.wikimedia.org, DNS:*.wikibooks.org, DNS:*.wikidata.org, DNS:*.wikimedia.org, DNS:*.wikimediafoundation.org, DNS:*.wikinews.org, DNS:*.wikiquote.org, DNS:*.wikisource.org, DNS:*.wikiversity.org, DNS:*.wikivoyage.org, DNS:*.wiktionary.org, DNS:*.wmfusercontent.org, DNS:*.zero.wikipedia.org, DNS:mediawiki.org, DNS:w.wiki, DNS:wikibooks.org, DNS:wikidata.org, DNS:wikimedia.org, DNS:wikimediafoundation.org, DNS:wikinews.org, DNS:wikiquote.org, DNS:wikisource.org, DNS:wikiversity.org, DNS:wikivoyage.org, DNS:wiktionary.org, DNS:wmfusercontent.org, DNS:wikipedia.org
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
X509v3 Subject Key Identifier:
28:2A:26:2A:57:8B:3B:CE:B4:D6:AB:54:EF:D7:38:21:2C:49:5C:36
X509v3 Authority Key Identifier:
keyid:96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C
Signature Algorithm: sha256WithRSAEncryption
8b:c3:ed:d1:9d:39:6f:af:40:72:bd:1e:18:5e:30:54:23:35:
66:5e:62:d5:01:e2:63:47:70:cb:6d:1b:17:b0:f5:4d:11:e4:
ad:94:51:c5:5e:72:03:b0:d5:ab:18:eb:b5:3a:08:a8:73:95:
f3:7f:41:1a:28:7b:45:7c:83:2e:d3:14:95:d8:d5:d1:5f:99:
4b:0c:f4:c3:9b:0b:4f:e9:49:f4:2c:b5:ae:c3:1d:7d:2a:80:
f6:70:29:4c:0c:e6:e0:cb:88:8a:8a:02:ee:a5:d1:73:c2:93:
58:24:ff:43:1b:e3:fd:7b:aa:f0:15:0c:60:52:8f:21:7d:87:
3a:14:fa:81:41:00:60:4f:96:9a:62:94:58:de:cb:15:5c:3c:
f4:c1:4d:33:e3:ff:39:fe:28:fb:b0:41:3e:d2:8a:11:d1:06:
01:28:74:7d:71:d4:2a:ef:1f:e3:25:4b:2d:f0:66:ef:26:fb:
4c:f0:81:85:bb:1a:99:06:c9:37:87:de:8d:49:f7:00:91:a9:
42:31:4a:b9:40:a0:7d:4f:4f:a6:ea:d4:58:07:3c:01:e0:1a:
53:54:66:e1:a3:7e:30:cd:3b:f8:69:59:a3:48:92:48:e1:9e:
63:ab:08:70:91:f2:48:d2:83:4b:98:06:fa:fd:bc:99:02:da:
9c:98:b1:a3
証明書の形式
コーディング形式
X.509CRT-PEM
-----BEGIN CERTIFICATE-----
BASE64 ENCODED DATA
-----END CERTIFICATE-----
重要な機能
リファレンスドキュメント
mbedドキュメント-公開鍵のderとpem符号化フォーマット比較Chen-PKIシステムとデジタル証明書構造