本稿でも何度か紹介しているWeb5というウェブアプリケーションの構成を変えることでベンダロックインやプライバシーの問題を改善する構想がありますが、今回はその一角を担うVerifiable Credentials (VC; 検証可能な資格情報)について深掘りしてみました。
VCとして考えられるものはたくさんあり、例えばツイッターのアカウントの所有権や運転免許証、保証書やレシートのようなものもあります。そして、その中には有効期限を待たずして失効しうるものもあります。(免停を受けた、アカウントを削除したなど)
しかし、VCの仕様には失効させる手順や有効性の確認方法は定義されていません。あくまで資格情報自体についての仕様だからです。
というわけで、一般的なPKIやLNDで使われているMacaroonでどのように資格を失効させたり、有効性を確認しているのか調べてみました。
一般的なPKIの場合
インターネットで利用されるTLS (SSL)など、公開鍵暗号を利用して通信する仕組みには多くの場合「信頼できる認証局 (CA)」が存在して、全体がPKI (公開鍵暗号基盤)として成り立っています。このとき、認証局の役割は証明書の内容が正当であることにお墨付きを与えることです。
CAが持つ情報に失効リスト(CRL)というものがあり、例えば証明書が不正に発行されていたことが発覚した場合や証明書に対応する秘密鍵が流出した際に、既存の証明書を失効させたという情報が載ります。通信を開始する際にクライアントはCRLを問い合わせることで、通信相手の証明書が失効していないことを確認します。
ただ、CRLに依存することはそのCAに依存することであるため、PKIの仕組みの単一障害点になりうることは注意すべきかもしれません。
逆にTorなどでは公開鍵・秘密鍵の保有のみをもって相手を認証するためCAは存在しませんが、Torに使用している秘密鍵が流出すればそれを失効させる手段はなく、なりすまされてしまう可能性があります。
MACAROONの場合
MacaroonはGoogleが内部で使用している認証トークンの規格の1つで、それ以外に採用例は少ないのですが、奇しくもLNDでAPIの認証に採用されています。