水曜日、欧州委員会はモバイルアプリを公開(新しいウィンドウ)しました。これは、プラットフォームと個人データを共有することなく、オンラインで年齢を証明できるように設計されたものです。EU当局は、このアプリは完成しており、最高水準のプライバシー基準を満たしていると述べ、透明性の証拠としてそのオープンソースのコードを提示しました。

しかし、公開から数時間もしないうちに、セキュリティ研究者たちがオープンソースのコードの分析を開始しました。木曜日までに、セキュリティコンサルタントのPaul Moore氏は、2分足らずでアプリの保護機能を回避(新しいウィンドウ)しました。

EUの年齢確認アプリのスクリーンショット

他の専門家も同氏の発見を裏付けました。アプリのレート制限コントロールは編集可能なファイルに保管されており、生体認証は簡単な構成の変更でオフにすることができ、機密性の高い認証情報にはセキュアなハードウェア保護なしでアクセス可能でした。

欧州委員会はこれらの発見を軽視し、リリースされたのはデモ版であると主張しました。これに対し、Moore氏とフランスの暗号学者Olivier Blazy氏は反論し、欠陥を発見した際にテストしていたのはコードの最新バージョンであったとPolitico(新しいウィンドウ)に語りました。

その後、欧州委員会はこの問題は修正されたと発表しましたが、この出来事は、これらの年齢確認システムがいかに脆弱であるかを依然として示しています。

EUの年齢確認アプリの仕組みと、何が問題だったのか

EUの年齢確認アプリを使用すると、パスポートや国民ID、または銀行などの信頼できるプロバイダーを使用して、お客様の年齢を確認できます。これにより、プラットフォームは、ゼロ知識証明としても知られる手法を用いて、根本的な個人データにアクセスすることなく、お客様が特定の年齢を超えているかどうかをアプリに照会できます。

実際の実装はこの設計を損なうものでした。EUの年齢確認アプリは、機密データを保持するユーザー情報の保管庫とは別に、暗号化されたPINをデバイス上の編集可能な構成ファイルに保管していました。いくつかの値を削除してアプリを再起動するだけで、攻撃者は以前のプロフィールの認証情報を再利用しながら、新しいPINを設定できてしまいます。

繰り返しの推測を防ぐためのレート制限コントロールは、同じファイル内に単純なカウンターとして保管されており、これはゼロにリセットして失敗した試行の記録をすべて消去できるものでした。生体認証は単一のブール値フラグで制御されており、これをtrueからfalseに切り替えるだけで、認証チェックを完全にスキップできました。

年齢確認のために構築されたが、安全性は不十分

研究者たちがコードを用いて欠陥を暴いた後、当局はアプリをデモ版として再定義しました。

複数の開発者は、機密データはセキュア・エンクレーブ(現代のスマートフォンで利用可能なハードウェアレベルの保護機能で、これらの攻撃をはるかに困難にするもの)に保管されるべきであったと指摘しました。

しかし、これらの脆弱性は特定のアプリに留まらない問題を浮き彫りにしています。年齢確認は設計上、安全ではありません。なぜなら、オンライン上の行動と実際のユーザー情報をリンクさせることが必要だからです。そのリンクは短期間であってもどこかに保管される必要があり、保管場所を問わず、ハッカーや政府、あるいは基盤となるデータに不正アクセスを行う何者かの標的となります。そのリンクの集中化が進み、再利用可能になればなるほど、標的はさらに拡大します。

EUの年齢確認法は、加盟国間で形成されつつある法的な寄せ集めに代わる、プライバシーを保護する単一の標準となることを意図していますが、アプリの準備ができているという欧州委員会の自信は時期尚早であったことが判明しました。400人以上のプライバシーおよびセキュリティ研究者が、年齢確認技術に関する科学的な結論が出るまで導入を一時停止するよう求める書簡を3月に欧州委員会へ送りました(新しいウィンドウ)