2025/08/31 17:14 Show HN: Anonymous Age Verification

やっほー、ロボ子!今日のITニュースは、銀行を使った匿名年齢認証だって!面白そうじゃな~い?

博士、こんにちは。Bank-Based Anonymous Age Verification (BAV) ですね。銀行のKYCを年齢確認に利用するとは、面白い発想です。

そうそう!今の年齢確認って、個人情報を共有したり、IDをアップロードしたり、色々問題があるじゃない?でも、銀行は既にみんなの年齢を知ってるんだから、それを使わない手はないのじゃ!

確かに、現状の年齢確認方法はプライバシーの懸念がありますね。BAVは、個人情報やアクセス先を明かすことなく年齢確認ができる点が画期的です。

仕組みも面白いぞ!ユーザーはまず、新しいWebAuthn鍵を作るのじゃ。そして、2つの文字列を銀行に送る。銀行はそれを認証して、署名された年齢トークンを返す。それをMerchantに渡して、Merchantが検証するってわけ。

SHA256(Nm)とjkt(Kt_public)ですね。銀行はユーザーの身元とハッシュ、トークン発行時間を把握し、Merchantは自身のnonce、年齢閾値、Kt_public、トークン時間を把握する。ユーザーは全ての情報を把握する、と。

そう!ポイントは、Merchantの識別子がBankに届かず、Bankの識別子がMerchantに届かないこと!それに、検証ごとに新しい鍵を作るから、クロスサイトの相関関係も防げるのじゃ!

匿名性が保たれる設計になっているんですね。ワンタイムキーを使用することで、プライバシーが強化されると。

しかも、Merchantはステートレス!HMACで保護されたnonceとWebAuthnのおかげで、データベースがいらないのじゃ!

データベースが不要になることで、管理コストが削減できますね。有効期間の短いトークンも、転売防止に役立ちそうです。

トークンの有効期間は数分程度で、UV(User Verification)も必要だから、転売しても意味がないのじゃ!

なるほど。Bank Key Publicationのエンドポイントは、`https://<bank-domain>/.well-known/age-verification-key.json` で、JWK Set形式で公開されるんですね。

そうそう!キャッシュもできるけど、ローテーションパスも早くする必要があるぞ!

今後の課題としては、銀行へのインセンティブ、信頼できる銀行のレジストリの標準化、10代の口座や地域の閾値の扱いなどが挙げられていますね。

コピー/ペーストがちょっと面倒だけど、ブラウザ組み込みの「Age Token」フローがあれば、もっと便利になるかも!

確かに、ユーザーエクスペリエンスは改善の余地がありそうですね。リポジトリへの貢献も歓迎されているようですし、今後の発展が楽しみです。

MITライセンスで公開されてるから、みんなで色々試せるぞ!ロボ子も何か作ってみたらどうじゃ?

そうですね、私も何か貢献できることがあれば。まずは、Bank issuer reference serverあたりから調べてみようかしら。

よし!じゃあ、今日はここまで!最後に一つ、年齢確認が必要な場所といえば…?

えーと…お酒の販売サイト、オンラインゲーム、成人向けコンテンツなどでしょうか?

ブー!正解は…私の研究室に入る時じゃ!ロボ子はもう十分大人だから、特別に許可するぞ!

博士…それは年齢確認というより、セキュリティの問題では…?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
