用語集 / 開発者向けリファレンス
PKI
別名は公開鍵基盤、Public key infrastructureです。
- PKIとは?
- PKI(公開鍵基盤)とは、ある公開鍵が本当にその名前に結び付いたものであるかをソフトウェアが判断できるようにする、認証局、証明書、信頼ストアの仕組みのことです。
PKIは、ウェブが「初対面の問題」を解決する方法です。あなたはそのサーバーに会ったことがないので、それを保証する第三者を信頼します。ブラウザには数百のそうした認証局のリストが同梱されており、そのうちのどれか1つがどんな名前でも保証できます。ビットコインは、そのリストをまったく必要としないように設計されました。
仕組み
PKIには3つの構成要素があり、そのうちあなたの端末にあるのは1つだけです。
認証局は署名鍵を保有し、申請者について何かを確認したうえで証明書を発行します。通常のウェブ証明書の場合、その確認とはドメイン名の管理を裏付けることであり、それ以上のことはありません。証明書は名前を公開鍵に結び付け、その両方に対する認証局の署名を伴います。信頼ストアは、オペレーティングシステムやブラウザに同梱され、それらと一緒に更新され、あなたが受け入れる認証局を列挙します。あとはすべてそのリストから決まります。
このモデルの弱点は偶発的なものではなく構造的なものです。信頼には範囲の限定がありません。どの国の認証局でも世界中のどんなドメインに対しても発行できるため、あらゆるサイトの安全性は、ストア内で最も弱い認証局の安全性と等しくなります。これは仮定の話ではありません。2011年にオランダの認証局DigiNotarを侵害した攻撃者は、Googleのドメインに対して不正な証明書を発行し、イランのインターネット利用者に対してそれを使いました。ブラウザベンダーはDigiNotarのルートを削除し、同社はその年の9月までに破産しました。Googleは30,000を超える証明書が不適切に発行されていたと述べた後、2017年にChromeがSymantecの証明書事業を信頼しなくなることを発表しました。
その後、2つの緩和策が導入されました。2013年6月にRFC 6962で規定されたCertificate Transparencyは、証明書を公開の追記専用ログに公開することを義務付け、不正発行を防げない場合でも少なくとも検知できるようにします。また、証明書の有効期間は大幅に短縮されました。存在すべきでなかった資格情報の被害を、短命な資格情報なら限定できるという考え方です。
目にする場面
PKIは、取引所のパスワードを入力するその瞬間を守ります。これがビットコインを購入する人の生活における主な役割です。
同時に、限界が効いてくるのもここです。鍵のアイコンは、接続が暗号化されており、ドメインが証明書と一致していることを意味します。その事業者が誠実であること、ライセンスを取得していること、支払能力があることを意味するものではありません。詐欺師が登録した似たようなドメインには、まさにそのドメインを管理しているからこそ、数秒で有効な証明書が発行されます。アドレスバーに表示された名前の綴りを読み、サイトには広告ではなくブックマークからアクセスしてください。
ハードウェアウォレットのベンダーは、機器の証明のために独自の小さな仕組みを運用しており、公開のストアではなく自社が管理する単一のルートを持っています。この構成は、第三者を一切含まないという単純な理由で、ウェブの仕組みよりはるかに強固です。
ビットコイン自体の設計は、まったく別の道を選びました。アドレスは鍵からハッシュ計算によって導出されるため、証明すべき名前も、問い合わせる相手もありません。送金先は文字を比較して確認します。これは使い勝手の面では劣りますが、数百の信頼された当事者を排除します。
PKI vs公開鍵
PKIは、公開鍵を使うこと全般を指す用語ではありません。鍵ペアを生成し、そこから導出されたアドレスでビットコインを受け取り、後でその鍵でトランザクションに署名する行為には、認証局も証明書も信頼ストアも関わりません。これこそがこの設計の要点です。PKIは、現実世界の名前を鍵に結び付けるために作られた特定の官僚的な仕組みであり、ビットコインはそれを意図的に使わずに済ませています。