用語集 / 開発者向けリファレンス
ルート証明書
- ルート証明書とは?
- ルート証明書とは、証明書チェーンの最上位にある自己署名の信頼の起点であり、お使いのオペレーティングシステムまたはブラウザのベンダーがそれを置いたという理由だけで信頼されています。
証明書の検証はすべてルートで終わります。ルート証明書は自身に署名し、お使いの端末のルートストアに同梱されているという理由だけで信頼されます。最もよく知られた例であるDST Root CA X3は2000年9月30日に発行され、ちょうど21年後に失効しました。取引所を南京錠のマークだけで判断するなら、あなたは取引所そのものではなく、そのルートの一覧を信頼していることになります。
仕組み
ルート証明書は、発行者フィールドとサブジェクトフィールドの両方に同じ組織名を記し、それに署名した鍵が、その証明書が証明する鍵そのものです。この循環性こそが要点です。ルートより上位でそれを保証するものは何もないため、検証者はそれをさらに上位のものと照合できません。手元の一覧でその証明書を調べ、その一覧を権威あるものとして扱うことしかできないのです。
そうした一覧は一握りの企業によって管理されています。Apple、Microsoft、Mozilla、Googleはそれぞれ、公開された掲載基準、監査要件、削除手順を備えたルートプログラムを運営しており、お使いのノートPCやスマートフォンのストアは、ベンダーがソフトウェアに同梱したものになります。ルートを引き抜くには、それを保持するすべての端末にアップデートを配布する必要があるため、掲載は非常に長期間にわたって続きます。Let's Encryptを支える起点であるISRG Root X1は2015年6月4日に発行され、2035年6月4日まで失効しません。
構造上の弱点は、ストア内のどのルートも、あらゆる名前を保証できることです。オランダの認証局をオランダのドメインに結びつける規則はないため、1つの認証局が侵害されれば、すべてのサイトが一度に損なわれます。DigiNotarは2011年にそれを証明しました。攻撃者はその年の7月10日にgoogle.comに対する不正な証明書を発行し、それを使ってイランのユーザーの通信を傍受したのです。Mozilla、Google、Microsoftは2011年9月の最初の数日でDigiNotarのルートを引き抜き、同社はその月が終わる前に破産しました。
どこで見かけるか
ルート証明書はBIP70を通じてビットコインに入りました。これは、支払い画面に企業名を表示する前に、ウォレットに商人の証明書チェーンを信頼されたルートまで検証するよう求めるものでした。デスクトップソフトウェアはそのためにオペレーティングシステムのストアを流用し、モバイルソフトウェアはしばしばそれを誤って実装し、Bitcoin Coreはリリース0.20.0でこの機能を完全に削除しました。bitcoin.orgの開発者向けリファレンスには今もこの用語が掲載されており、今日誰かがこの用語を調べる主な理由はそこにあります。
より有用な比較は、ビットコイン自身の起点との比較です。フルノードは2009年1月3日の日付を持つジェネシスブロックから開始し、これはソフトウェアにハードコードされており、そこからすべての規則を自ら検証します。誰かがお使いのスマートフォンにアップデートを配信してその起点に項目を追加することはなく、規則に反するブロックを保証するよう、どの認証局も侵害されたり圧力をかけられたりすることはありません。ルートストアは逆方向に機能します。信頼は、あなたが書いておらず監査もできない一覧から下向きに流れるのです。
ルート証明書vsリーフ証明書
ルート証明書は認証局を識別し、リーフ証明書はサーバーを識別します。ルートは自己署名で、20年間有効であり、秘密鍵をオフラインのハードウェアモジュールに保管し、年に数回、立会いのもとで取り出されます。リーフはあなたが実際に接続したホスト名を記し、数か月間有効で、その秘密鍵はインターネットに公開された稼働中のウェブサーバー上にあります。人は「証明書は有効だ」と言いますが、それはリーフが解析できて日付が一致したという意味であり、接続が信頼できるかどうかを決める問いは、チェーンがどのルートで終わるかです。