| X.509 | |
|---|---|
| 情報技術 - オープンシステム相互接続 - ディレクトリ: 公開鍵証明書と属性証明書のフレームワーク | |
| 状態 | 施行中(勧告) |
| 初版 | 1988年11月25日 1.0 (1988年11月25日) |
| 最新バージョン | 9.2 2023年10月29日 ( 2023-10-29 ) |
| 組織 | ITU-T |
| 委員会 | ITU-T研究グループ17 |
| シリーズ | X |
| 基本基準 | ASN.1 |
| 関連規格 | ISO/IEC 9594-8:2020、X.500 |
| ドメイン | 暗号化 |
| Webサイト | www |
暗号技術において、X.509は公開鍵証明書のフォーマットを定義する国際電気通信連合(ITU)標準規格です。[ 1 ] X.509証明書は、ウェブ閲覧のための安全なプロトコルであるHTTPSの基盤となるTLS/SSLを含む多くのインターネットプロトコルで使用されています。 [ 2 ]また、電子署名などのオフラインアプリケーションでも使用されています。[ 1 ]
X.509 証明書は、デジタル署名を使用して、ID を公開鍵に結び付けます。証明書には、ID(ホスト名、組織名、個人名)と公開鍵(RSA、DSA、ECDSA、ed25519など)が含まれており、証明機関によって署名されるか、自己署名されます。証明書が信頼できる証明機関によって署名されるか、または他の手段によって検証されると、その証明書の所有者は、証明書に含まれる公開鍵を使用して、別の相手との安全な通信を確立したり、対応する秘密鍵によってデジタル署名された文書を検証したりすることができます。
X.509 では、署名機関によって無効と判断された証明書に関する情報を配布する手段である証明書失効リストと、中間 CA 証明書によって証明書に署名し、その証明書がさらに他の証明書によって署名されて最終的に信頼アンカーに到達することを可能にする証明書パス検証アルゴリズムも定義されています。
X.509 は、ITU の「標準化部門」(ITU-TのSG17 )の ITU-T 研究グループ 17 によって定義され、別の ITU-T 標準 である抽象構文記法 1 (ASN.1)に基づいています。
X.509は1988年7月3日に初めて発行され、X.500規格と連携して開発が進められました。その最初の目的は、ユーザーに情報リソースへの安全なアクセスを提供し、暗号中間者攻撃を回避することでした。証明書の発行には、厳格な階層構造の認証局(CA)システムを前提としています。これは、 PGPのような信頼の輪モデルとは対照的です。PGPでは、特別なCAだけでなく誰でも署名し、他者の鍵証明書の有効性を証明できます。
X.509 バージョン 3 には、ブリッジやメッシュなどの他のトポロジをサポートする柔軟性が含まれています。[ 2 ]これは、ピアツーピアのOpenPGPのような信頼のウェブで使用できますが、2004 年時点ではそのように使用されることはほとんどありませんでした。X.500 システムは、国家 ID 情報共有条約の履行目的で主権国家によってのみ実装されており、IETFの公開鍵インフラストラクチャ (X.509) (PKIX) ワーキンググループは、標準をより柔軟なインターネットの構成に適合させました。実際、X.509 証明書という用語は通常、 RFC 5280で指定されているIETF の PKIX 証明書とX.509 v3 証明書標準のCRLプロファイルを指し、一般に PKIX は公開鍵インフラストラクチャ (X.509)と呼ばれます。[ 3 ]
公開鍵基盤(PKI)とX.509証明書の初期の問題として、よく知られた「どのディレクトリか」問題がありました。これは、グローバルX.500ディレクトリが実現しなかったため、クライアントが不足している中間証明書をどこで取得すればよいか分からないという問題です。この問題は、リクエストにすべての中間証明書を含めることで軽減されました。例えば、初期のWebサーバーはWebサーバーの証明書のみをクライアントに送信していました。中間CA証明書を持っていない場合、またはその場所がわからないクライアントは、CAからサーバーの証明書への有効なパスを構築できませんでした。この問題を回避するために、現在ではWebサーバーはWebサーバーの証明書に加えてすべての中間証明書も送信しています。[ 4 ]
PKIX は IETF またはインターネットの PKI 標準を指しますが、異なるポリシーを持つ PKI は他にも多数存在します。たとえば、米国政府は独自のポリシーを持つ PKI を持っており、CA/ブラウザフォーラムも独自のポリシーを持つ PKI を持っています。米国政府の PKI は 2500 ページを超える大冊です。組織の PKI が IETF または CA/ブラウザフォーラムの PKI と大きく異なる場合、その組織はWeb ブラウザ、cURL、Wgetなどの一般的なツールとの相互運用性を失うリスクがあります。たとえば、PKI が月曜日にのみ証明書を発行するというポリシーを持っている場合、cURL や Wget などの一般的なツールはそのポリシーを強制せず、火曜日に発行された証明書を許可します。[ 4 ]
| X.509証明書 | |
|---|---|
| インターネットメディアの種類 | アプリケーション/pkix-cert [ 5 ] |
| 統一型識別子(UTI) | 公開.x509証明書[ 6 ] |
X.509証明書は、デジタル署名を使用してIDと公開鍵を結び付けます。X.509システムには、2種類の証明書があります。1つ目はCA証明書です。2つ目はエンドエンティティ証明書です。CA証明書は他の証明書を発行できます。最上位レベルの自己署名CA証明書は、ルートCA証明書と呼ばれることもあります。その他のCA証明書は、中間CA証明書または下位CA証明書と呼ばれます。エンドエンティティ証明書は、個人、組織、企業などのユーザーを識別します。エンドエンティティ証明書は他の証明書を発行できません。エンドエンティティ証明書は、その下に他の証明書を発行できないため、リーフ証明書と呼ばれることもあります。
署名付き証明書を希望する組織は、証明書署名要求(CSR)、簡易証明書登録プロトコル(SCEP) 、証明書管理プロトコル(CMP)などのプロトコルを使用して、CAに証明書を要求します。組織はまず鍵ペアを生成し、秘密鍵を秘密に保ち、それを用いてCSRに署名します。CSRには、申請者を識別する情報と、CSRの署名を検証するために使用される申請者の公開鍵、そして個人、組織、または企業に固有の識別名(DN)が含まれます。CSRには、認証局が要求するその他の資格情報や身元証明が添付される場合があります。
CSRは登録局(RA)によって検証され、認証局は公開鍵と特定の識別名を結び付けた証明書を発行します。登録局と認証局の役割は通常、詐欺のリスクを軽減するために 職務分離に基づき、別々の事業部門として運営されます。
組織の信頼されたルート証明書を全従業員に配布することで、企業のPKIシステムを利用できるようになります。Internet Explorer、Firefox、Opera、Safari、Chromeなどのブラウザには、事前に設定されたルート証明書のセットがプリインストールされているため、主要な認証局(CA)のSSL証明書は即座に機能します。つまり、ブラウザの開発者が、ブラウザのユーザーにとってどのCAが信頼できる第三者機関であるかを決定します。例えば、Firefoxは、含まれるCAのリストを含むCSVファイルまたはHTMLファイルを提供しています。[ 7 ]
X.509と RFC 5280には、証明書失効リスト(CRL)の実装に関する標準も含まれています。IETFが承認した証明書の有効性を確認するもう1つの方法は、オンライン証明書ステータスプロトコル(OCSP)です。Firefox 3.0ではOCSPチェックがデフォルトで有効になっており、 Windowsでも少なくともVista以降のバージョンでは有効になっています。 [ 8 ]
標準によって想定される構造は、形式言語である抽象構文記法 1 (ASN.1) で表現されます。
X.509 v3デジタル証明書の構造は次のとおりです。
Extensionsフィールドは、存在する場合、1つ以上の証明書の拡張機能のシーケンスです。[ 9 ]:§4.1.2.9:拡張機能 各拡張機能には、オブジェクト識別子(OID)として表現される独自の一意のIDがあります。これは、重要な拡張機能または重要でない拡張機能のいずれかを示す値の集合です。証明書を使用するシステムは、認識できない重要な拡張機能、または処理できない情報を含む重要な拡張機能に遭遇した場合、証明書を拒否する必要があります。重要でない拡張機能は認識されない場合は無視できますが、認識された場合は処理する必要があります。[ 9 ]:§4.2:証明書の拡張機能
バージョン 1 の構造はRFC 1422に記載されています。
X.520 ディレクトリ: 選択された属性タイプの推奨事項で指定されている発行者およびサブジェクトの一意の識別子の内部形式。
ITU-Tはバージョン2で発行者と主体者の一意の識別子を導入し、発行者名または主体者名を一定期間後に再利用できるようにしました。再利用の例としては、CAが破産し、その名称が国の公開リストから削除された場合などが挙げられます。一定期間後、最初のCAとは無関係であっても、同じ名称の別のCAが登録される可能性があります。しかし、IETFは発行者名と主体者名の再利用を推奨していません。そのため、バージョン2はインターネットで広く普及していません。
拡張機能はバージョン 3 で導入されました。CA は拡張機能を使用して、特定の目的 (デジタル オブジェクトの署名専用など) にのみ証明書を発行できます。
すべてのバージョンにおいて、シリアル番号は特定の CA によって発行された証明書ごとに一意である必要があります ( RFC 5280に記載されているとおり)。
RFC 5280(およびその前身)では、証明書の使用方法を示す証明書拡張機能が数多く定義されています。そのほとんどはjoint-iso-ccitt(2) ds(5) id-ce(29)OIDから派生したものです。セクション4.2.1で定義されている最も一般的な拡張機能は以下のとおりです。
{ id-ce 19 }[ 9 ] : §4.2.1.9 は、証明書がCA証明書であり、他の証明書を認証または発行できるかどうかを示すために使用されます。制約はクリティカルとしてマークすることができます。制約がクリティカルとしてマークされている場合、エージェントは、その制約を理解していない場合、証明書の処理を失敗しなければなりません。エージェントは、理解できないクリティカルではない制約の処理を続行できます。{ id-ce 15 }[ 9 ] : §4.2.1.3は 、証明書に含まれる公開鍵を使用して実行できる暗号化操作を指定するビットマップを提供します。たとえば、鍵は署名には使用すべきだが暗号化には使用すべきではないことを示すことができます。{ id-ce 37 } 9 ] : §4.2.1.12 は、通常リーフ証明書において、証明書に含まれる公開鍵の用途を示すために使用されます。この仕様にはOIDのリストが含まれており、各OIDは許可された用途を示します。例えば、は鍵がTLSまたはSSL接続のサーバー側で使用できることを示します。は鍵が電子メールのセキュリティ保護に使用できることを示します。{ id-pkix 3 1 }{ id-pkix 3 4 }RFC 5280 を使用する場合、一般的に、証明書にその用途を制限する複数の拡張機能がある場合、特定の用途が適切であるためには、すべての制限を満たす必要があります。RFCでは、keyUsageとextendedKeyUsageの両方を含む証明書の具体的な例が示されています。この場合、両方の拡張機能を処理する必要があり、証明書の用途を指定する際に両方の拡張機能が一貫している場合にのみ、証明書を使用できます。例えば、NSSは証明書の用途を指定するために両方の拡張機能を使用しています。[ 10 ]
CA/ブラウザフォーラムのPKIに基づいて運営されている認証局は、様々なレベルの検証を伴う証明書を発行します。これらの検証は、証明書が本来の目的を果たせるという保証のレベルが異なります。例えば、Webサーバーは、ドメイン検証(DV)と呼ばれる電子メールを用いた最も低いレベルの保証で検証できます。また、より詳細な方法である拡張検証(EV)を用いた、より高いレベルの保証で検証することもできます。
実際には、DV証明書とは、 のようなドメインに対してexample.com、例えば 宛てのメールへの返信などにより、そのドメインに対する制御権が主張された後に証明書が発行されたことwebmaster@example.comを意味します。EV証明書とは、 のようなドメインに対して証明書が発行されexample.com、Example, LLC のような会社がドメインの所有者であり、その所有者が定款によって確認されたことを意味します。
拡張検証では追加のセキュリティ制御は追加されないため、EV 証明書を使用したセキュリティ チャネル設定は、DV などの異なるレベルの検証を使用したチャネル設定よりも「強力」ではありません。
拡張検証は、X.509 v3拡張機能を使用した証明書で示されます。各CAは、異なるオブジェクト識別子(OID)を使用して拡張検証をアサートします。拡張検証を示す単一のOIDは存在しないため、ユーザーエージェントのプログラミングが複雑になります。各ユーザーエージェントは、拡張検証を示すOIDのリストを持っている必要があります。
CA/ブラウザフォーラムのPKIは、拡張検証を認識しています。インターネットのPKI(PKIX)などの他のPKIは、拡張検証を特に重視していません。cURLやWgetなどのPKIXポリシーを使用するツールは、EV証明書を他の証明書と同様に扱います。2019年まで、多くのブラウザは、サイトがEV証明書を提供していることを示すために、URLバーに強力な視覚的フィードバックをユーザーに提供していました。EV証明書の無効性と、犯罪者がブラウザのUIの中央部分に誤解を招く要素を挿入するためにEV証明書が有用であることを示す研究とレポートを受けて、すべての主要ブラウザは、以前の目立つ視覚的フィードバックをURLバーから削除しました。[ 11 ] [ 12 ] [ 13 ]代わりに、2019年以降、 ChromiumやFirefox などのブラウザは、EV発行先情報をサブメニューに隠し、拡張検証を強調表示したり言及したりすることなく、中立的な方法で表示しています。
セキュリティ専門家のピーター・ガットマン氏は、CAがEV証明書を作成した理由は、価格競争による利益減少の後、利益水準を回復するためだと述べています。価格競争が続く中、CAは消費者に証明書を購入させるために価格を引き下げました。その結果、利益は減少し、CAは証明書の検証レベルを低下させ、証明書の信頼性がほぼ失われました。[ 4 ]
X.509証明書には、一般的に使用されるファイル名拡張子がいくつかあります。これらの拡張子の一部は、秘密鍵などの他のデータにも使用されます。
.pem– (プライバシー強化電子メール) Base64エンコードされたDER証明書(-----BEGIN CERTIFICATE-----との間に囲まれている)-----END CERTIFICATE-----.cer、、.crt–.der通常はバイナリDER形式ですが、Base64 でエンコードされた証明書も一般的です (.pem上記を参照).p8, .p8e, – PKCS#8.pk8で規定されているエクスポートされた秘密鍵。DER または PEM 形式で、 で始まります。暗号化された鍵は で始まり、拡張子は になる場合があります。-----BEGIN PRIVATE KEY----------BEGIN ENCRYPTED PRIVATE KEY-----.p8e.p10, .csr– PKCS#10証明書署名要求(CSR)。PEM形式では で始まります-----BEGIN CERTIFICATE REQUEST-----。これらは証明機関(CA)への提出用に生成されます。これには、要求された証明書の共通名(/CN)、サブジェクト、組織、州、国、および署名する証明書の公開鍵などの重要な詳細が含まれます。これらはCAによって署名され、証明書が返されます。返される証明書は公開証明書(公開鍵は含まれますが秘密鍵は含まれません)であり、それ自体はいくつかの形式がありますが、通常は です.p7r。[ 14 ].p7r– CSRに対するPKCS#7レスポンス。新しく署名された証明書とCA自身の証明書が含まれます。.p7s– PKCS#7デジタル署名。署名された元のファイルまたはメッセージが含まれる場合があります。S /MIMEで電子メールの署名に使用されます。RFC 2311で定義されています。.p7m– PKCS#7 (SignedData, EnvelopedData) メッセージ(例:暗号化された(「エンベロープ」された)ファイル、メッセージ、またはMIME電子メール)。RFC 2311で定義されています。.p7c– PKCS#7 の縮退型 SignedData は、署名するデータを含まない「証明書のみ」の構造です。RFC 2311 で定義されています。.p7b, .keystore– PKCS#7 SignedData 構造。データなし。証明書バンドルと/またはCRL(まれに)のみで、秘密鍵は含まれません。で始まるDER形式、BER-----BEGIN PKCS7-----形式、または PEM 形式を使用します。Windows で証明書交換に使用される形式です。Java でもサポートされていますが、多くの場合、.keystore代わりに という拡張子が付けられています。.pemスタイル証明書とは異なり、この形式では証明書パス証明書を含める方法が定義されています。.p12、、.pfx– PKCS#12では、証明書 (公開) と秘密キー (パスワードで保護) が 1 つのファイルに含まれている場合があります。.pkcs12– Personal Information eXchange PFX は、PKCS#12 の前身です (通常は PKCS#12 形式のデータが含まれます ( IISで生成された PFX ファイルなど))。.pfx.crl–証明書失効リスト(CRL)。証明機関は、有効期限が切れる前に証明書の認証を取り消すためにCRLを作成します。PKCS#7は、データの署名または暗号化(正式には「エンベロープ」と呼ばれます)のための標準です。署名されたデータの検証には証明書が必要となるため、SignedData構造体に証明書を含めることができます。
証明書チェーン(「証明書パス」[ 9 ]:§3.2 とも呼ばれる)は、証明書のリスト(通常はエンドエンティティ証明書から始まる)と、それに続く1つ以上のCA証明書(通常は最後の証明書は自己署名証明書)で構成され、次の特性を持つ:
証明書チェーンは、対象証明書(チェーンの最初の証明書)に含まれる公開鍵(PK)と、それに含まれるその他のデータが、その対象者に事実上属していることを確認するために使用されます。これを確認するため、対象証明書の署名は、次の証明書に含まれるPKを使用して検証され、その署名はさらに次の証明書を使用して検証されます。これを繰り返し、チェーンの最後の証明書に到達します。最後の証明書はトラストアンカーであるため、そこに到達できれば、対象証明書が信頼できることが証明されます。
前の段落の説明は、証明書パス検証プロセスに関する簡略化された見解であり、[ 9 ]:§6 には、証明書の有効期限の検証、 CRLの検索などの追加のチェックが含まれます。


証明書チェーンの構築と検証方法を検討する際には、具体的な証明書が、それぞれ全く異なる証明書チェーン(全て有効)の一部となり得ることに留意することが重要です。これは、同一の主体と公開鍵に対して複数のCA証明書が生成され、異なる秘密鍵(異なるCAのもの、あるいは同じCAの異なる秘密鍵のもの)で署名される可能性があるためです。したがって、単一のX.509証明書には発行者とCA署名が1つしか存在できませんが、複数の証明書に有効にリンクされ、全く異なる証明書チェーンが構築される可能性があります。これは、PKIと他のアプリケーション間の相互認証において非常に重要です。[ 15 ] 以下の例を参照してください。
これらの図では、
PKI 2に存在するユーザー証明書(「ユーザー2」など)がPKI 1によって信頼されるようにするために、CA1はCA2の公開鍵を含む証明書(cert2.1)を生成します。[ 16 ] これで、「cert2」と「cert2.1」(緑色)の両方が同じサブジェクトと公開鍵を持つため、cert2.2(ユーザー2)には「cert2.2 → cert2」と「cert2.2 → cert2.1 → cert1」という2つの有効なチェーンが存在します。
同様に、CA2 は CA1 の公開キーを含む証明書 (cert1.1) を生成して、PKI 1 に存在するユーザー証明書 (「ユーザー 1」など) が PKI 2 によって信頼されるようにすることができます。
証明パス構築の理解(PDF)。PKIフォーラム。2002年9月。オリジナル(PDF)から2019年2月4日にアーカイブ。 2014年11月7日閲覧。古い署名鍵ペアから新しい署名鍵ペアへのスムーズな移行を可能にするために、CAは、新しい秘密署名鍵で署名された古い公開鍵を含む証明書と、古い秘密署名鍵で署名された新しい公開鍵を含む証明書を発行する必要があります。これらの証明書はどちらも自己発行されますが、どちらも自己署名ではありません。これらは、2つの自己署名証明書(1つは古いもの、もう1つは新しいもの)に加えて発行されることに注意してください。
cert1とcert3はどちらも同じ公開鍵(古いもの)を持っているため、cert5には「cert5 → cert1」と「cert5 → cert3 → cert2」という2つの有効な証明書チェーンがあり、cert6についても同様です。これにより、新しいCA鍵への移行期間中、新しいルートCA証明書または古い証明書をトラストアンカーとして持つ当事者は、古いユーザー証明書(cert5など)と新しい証明書(cert6など)を区別なく信頼することができます。[ 17 ]
これは、wikipedia.org および他のいくつかの Wikipedia ウェブサイトで過去に使用されていた、デコードされた X.509 証明書の例です。発行者フィールドに記載されているように、 GlobalSignによって発行されました。Subject フィールドには組織名として Wikipedia が記述され、DNS の Subject Alternative Name (SAN) フィールドには、証明書が使用可能なホスト名が記述されています。Subject Public Key Info フィールドにはECDSA公開鍵が記述されており、下部の署名は GlobalSign のRSA秘密鍵によって生成されています。(これらの例の署名は一部省略されています。)
証明書: データ: バージョン: 3 (0x2) シリアルナンバー: 10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6 署名アルゴリズム: sha256WithRSAEncryption 発行者: C=BE、O=GlobalSign nv-sa、CN=GlobalSign 組織検証 CA - SHA256 - G2 有効 2016年11月21日 08:00:00 GMT 以前ではありません それ以降:2017年11月22日 07:59:59 GMT 件名: C=米国、ST=カリフォルニア、L=サンフランシスコ、O=ウィキメディア財団、CN=*.wikipedia.org サブジェクト公開鍵情報: 公開鍵アルゴリズム: id-ecPublicKey 公開鍵: (256 ビット) パブ: 00: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: 9d:3b:ef ASN1 OID: prime256v1 NIST曲線: P-256 X509v3 拡張: X509v3 キーの使用法: 重要 デジタル署名、鍵合意 権限情報アクセス: CA 発行者 - URI: http://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt OCSP - URI: http://ocsp2.globalsign.com/gsorganizationvalsha2g2 X509v3 証明書ポリシー: ポリシー: 1.3.6.1.4.1.4146.1.20 CPS: https://www.globalsign.com/repository/ ポリシー: 2.23.140.1.2.2 X509v3 基本制約: CA:偽 X509v3 CRL配布ポイント: フルネーム: URI: http://crl.globalsign.com/gs/gsorganizationvalsha2g2.crl X509v3 サブジェクト別名: 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 拡張キー使用法: TLS Webサーバー認証、TLS Webクライアント認証 X509v3 サブジェクトキー識別子: 28:2A:26:2A:57:8B:3B:CE:B4:D6:AB:54:EF:D7:38:21:2C:49:5C:36 X509v3 権限キー識別子: キーID:96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C
署名アルゴリズム: sha256WithRSAEncryption 8b:c3:ed:d1:9d:39:6f:af:40:72:bd:1e:18:5e:30:54:23:35: ...
このエンドエンティティ証明書を検証するには、発行者と認証局キー識別子に一致する中間証明書が必要です。
| 発行者 | C=BE、O=GlobalSign nv-sa、CN=GlobalSign 組織検証 CA - SHA256 - G2 |
|---|---|
| 権限キー識別子 | 96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C |
TLS接続では、適切に設定されたサーバーはハンドシェイクの一環として中間証明書を提供します。ただし、エンドエンティティ証明書から「CA Issuers」URLを取得することで中間証明書を取得することも可能です。
これは、証明機関に属する中間証明書の例です。この証明書は、上記のエンドエンティティ証明書に署名し、下記のルート証明書によって署名されています。この中間証明書の「サブジェクト」フィールドは、署名したエンドエンティティ証明書の「発行者」フィールドと一致していることに注意してください。また、中間証明書の「サブジェクト鍵識別子」フィールドは、エンドエンティティ証明書の「認証局鍵識別子」フィールドと一致しています。
証明書: データ: バージョン: 3 (0x2) シリアルナンバー: 04:00:00:00:00:01:44:4e:f0:42:47 署名アルゴリズム: sha256WithRSAEncryption 発行者: C=BE、O=GlobalSign nv-sa、OU=ルートCA、CN=GlobalSignルートCA 有効 2014年2月20日 10:00:00 GMT 以前ではありません 2024年2月20日 10:00:00 GMT以降 件名: C=BE、O=GlobalSign nv-sa、CN=GlobalSign 組織検証 CA - SHA256 - G2 サブジェクト公開鍵情報: 公開鍵アルゴリズム: rsaEncryption 公開鍵: (2048 ビット) 係数: 00:c7:0e:6c:3f:23:93:7f:cc:70:a5:9d:20:c3:0e: ... 指数: 65537 (0x10001) X509v3 拡張: X509v3 キーの使用法: 重要 証明書署名、CRL署名 X509v3 基本制約: 重要 CA:TRUE、パス長:0 X509v3 サブジェクトキー識別子: 96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C X509v3 証明書ポリシー: ポリシー: X509v3 任意のポリシー CPS: https://www.globalsign.com/repository/ X509v3 CRL配布ポイント: フルネーム: URI: http://crl.globalsign.net/root.crl 権限情報アクセス: OCSP - URI: http://ocsp.globalsign.com/rootr1 X509v3 権限キー識別子: キーID:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B 署名アルゴリズム: sha256WithRSAEncryption 46:2a:ee:5e:bd:ae:01:60:37:31:11:86:71:74:b6:46:49:c8: ...
これは、証明機関を表す自己署名ルート証明書の例です。発行者フィールドとサブジェクトフィールドは同じであり、署名は自身の公開鍵で検証できます。信頼チェーンの検証はここで終了する必要があります。検証プログラムの信頼ストアにこのルート証明書が含まれている場合、エンドエンティティ証明書はTLS接続での使用に信頼できるとみなされます。そうでない場合、エンドエンティティ証明書は信頼できないとみなされます。
証明書: [ 18 ] データ: バージョン: 3 (0x2) シリアルナンバー: 04:00:00:00:00:01:15:4b:5a:c3:94 署名アルゴリズム: sha1WithRSAEncryption 発行者: C=BE、O=GlobalSign nv-sa、OU=ルートCA、CN=GlobalSignルートCA 有効 1998年9月1日 12:00:00 GMT以前 それ以降:2028年1月28日 12:00:00 GMT サブジェクト: C=BE、O=GlobalSign nv-sa、OU=ルートCA、CN=GlobalSignルートCA サブジェクト公開鍵情報: 公開鍵アルゴリズム: rsaEncryption 公開鍵: (2048 ビット) 係数: 00:da:0e:e6:99:8d:ce:a3:e3:4f:8a:7e:fb:f1:8b: ... 指数: 65537 (0x10001) X509v3 拡張: X509v3 キーの使用法: 重要 証明書署名、CRL署名 X509v3 基本制約: 重要 CA:TRUE X509v3 サブジェクトキー識別子: 60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B 署名アルゴリズム: sha1WithRSAEncryption d6:73:e7:7c:4f:76:d0:8d:bf:ec:ba:a2:be:34:c5:28:32:b5: ...
PKIの問題については、ブルース・シュナイアー、ピーター・ガットマン、その他のセキュリティ専門家による多数の出版物がある。 [ 19 ] [ 20 ] [ 21 ]
実装には、設計上の欠陥、バグ、標準規格の解釈の違い、そして異なる標準規格間の相互運用性の欠如といった問題が伴います。例えば、以下のような問題が挙げられます。
デジタル署名システムは、安全な暗号ハッシュ関数に依存して動作します。公開鍵基盤(PKI)が安全ではなくなったハッシュ関数の使用を許可している場合、攻撃者はハッシュ関数の脆弱性を悪用して証明書を偽造できます。具体的には、攻撃者がハッシュ衝突(Hash Collision)を発生できれば、CAに無害な内容を持つ証明書に署名させることができます。その証明書のハッシュ値は、攻撃者が任意の値で作成した別の悪意のある証明書内容セットのハッシュ値と一致します。攻撃者は、CAが提供した署名を悪意のある証明書内容に追加することで、CAによって署名されたように見える悪意のある証明書を作成できます。悪意のある証明書内容は攻撃者によってのみ選択されるため、無害な証明書とは異なる有効期限やホスト名を持つ可能性があります。悪意のある証明書には「CA: true」フィールドが含まれることさえあり、これによりさらに信頼できる証明書を発行できるようになります。
ハッシュ衝突を悪用してX.509署名を偽造するには、攻撃者が認証局が署名するデータを予測できる必要があります。これは、認証局が署名する証明書にランダムな要素(通常はシリアル番号)を生成することで、ある程度軽減できます。CA /ブラウザフォーラムは、 2011年以降、基本要件セクション7.1においてシリアル番号のエントロピーを必須としています。 [ 40 ]
2016年1月1日現在、ベースライン要件ではSHA-1を使用した証明書の発行が禁止されています。2017年初頭現在、Chrome [ 41 ]とFirefox [ 42 ]はSHA-1を使用した証明書を拒否しています。2017年5月現在、Edge [ 43 ]とSafari [ 44 ]もSHA-1証明書を拒否しています。OpenSSLは、2021年9月にリリースされたバージョン3.0から、SHA-1証明書をデフォルトで拒否するようになりました。[ 45 ]
1995年、インターネット技術特別調査委員会(IETF)は米国国立標準技術研究所(NIST) [ 50 ]と共同で、公開鍵基盤(X.509)ワーキンググループを結成しました。このワーキンググループは2014年6月に終了し、[ 51 ]、一般に「PKIX」と呼ばれています。このワーキンググループは、X.509の実際の使用と展開に関するRFCやその他の標準文書を作成しました。特に、インターネットプロトコルにおけるX.509の使用方法を定義した RFC 3280とその後継RFC 5280を作成しました。
TLS/SSLとHTTPSは、X.509のRFC 5280プロファイルを使用します。S /MIME(Secure Multipurpose Internet Mail Extensions)やWi-Fi認証のEAP-TLS方式も同様です。SMTP、POP、IMAP、LDAP、 XMPPなど、 TLSを使用するプロトコルはすべて、本質的にX.509を使用します。
IPsec はピアの認証に RFC 4945プロファイルを使用できます。
OpenCableセキュリティ仕様は、ケーブル業界で使用するための独自の X.509 プロファイルを定義します。
スマートカードやTPMなどのデバイスは、自身や所有者を識別するための証明書を搭載していることがよくあります。これらの証明書はX.509形式です。
WS -Security標準では、TLSまたは独自の証明書プロファイルを介して認証を定義しています。[ 18 ]どちらの方法でもX.509が使用されます。
Microsoft Authenticodeコード署名システムは、X.509を使用してコンピュータプログラムの作者を識別します。UEFIのセキュアブート機能は、起動時にX.509を使用してUEFIドライバまたはブートローダを認証し、ブロックリストに登録されたドライバまたはブートローダを(Forbidden Key Exchangeまたはdbxデータベースを使用して)禁止します。[ 52 ]
OPC UA産業オートメーション通信規格では、X.509 が使用されます。
SSHは一般的にTrust On First Use(初回使用時の信頼)セキュリティモデルを採用しており、証明書は必要ありません。しかし、広く普及しているOpenSSH実装は、独自の非X.509証明書形式に基づくCA署名IDモデルをサポートしています。[ 53 ]
公開鍵基盤で想定されるアーキテクチャモデルの簡略図である。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク)