Metaは認証を使って、サービスのエンドポイントを不正使用から保護している。個人を特定できる情報を削除するためにアクセスデータを後処理することは、リソースを大量に消費するアプローチであることがわかった。どのようにMetaが匿名化された認証を活用して、サービスとユーザのプライバシーを同時に保護するかを説明する記事が最近公開された。
匿名化された認証は、プライバシーに配慮した認証形式である。それは、匿名のクレデンシャルを使って、つまり特定のユーザを識別するために使用できるクレデンシャルメタデータを使わずに実行されるためである。
Metaは匿名の資格情報を使って、匿名資格情報サービス(ACS)と呼ばれる可用性の高いコアサービスに匿名化された認証を実装した。これは、MetaのコンテナオーケストレーションフレームワークであるTwine上に構築されている。
匿名のクレデンシャルは匿名化された認証で機能する。これは、認証プロセスがセットアップフェーズの後に2つのフェーズ(トークン発行と匿名化された認証)に分けられるためである。
出典: https://engineering.fb.com/2022/03/30/security/de-identified-authentication-at-scale/
クライアントは、セットアップフェーズ中に、公開キーを含むサーバの公開情報を最初に取得する。
トークン発行フェーズでは、ブラインド署名を使用する。最終的に、クライアントは、ランダムに作成されたトークンとサーバのトークン署名から計算された共有シークレットを所有する。署名が見えないため、サーバは元のトークンを見ることはない。
認証されたリクエストは、匿名化された認証をもって行われる。これらのリクエストでは、クライアントは元のトークン、リクエストペイロード、共有シークレットを持つペイロードのHMACを送信する。サーバはこの情報を使って、発行フェーズ中にトークンが検証されたことを確認する。
ACSサービスの重要な要件はトークンスコープの独立性である。そのため、あるユースケースで発行されたトークンを別のユースケースで使用することはできない。このような独立性は、各ACS APIリクエストでユースケース名を義務付け、ユースケースごとに異なるサーバキーを使用することで実現される。
Metaは、ACSサービスに必要なリソースの数を減らすために3つの手法を実装した。
1つ目は、以前に発行されたトークンをユースケース固有のしきい値で限定的に再利用できるようにすることである。これにより、ACSに対して行われるトークン発行呼び出しの数を減らした。 2つ目は、トラフィックの急増を回避するために、クライアントがACSに関連するバッチ要求を時間軸でランダムに分散させることである。これらの手法により、コンピューティングリソースの使用が最小限に抑えられた。
3番目の手法では、ACSチームは新しいユースケースをオンボーディングするために必要な手動の作業を排除した。これは、プロビジョニングを自動化するセルフサービスのオンボーディングポータルを実装することで実現した。
Metaは、匿名化された認証を活用して、ログ要求に対してユーザIDを収集することなくWhatsAppテレメトリを公開する。Metaで匿名化された認証を使用するユースケースのもう1つの例は、連合学習である。この手法により、デバイスが未加工のデータではなくモデルの更新をサーバと共有することで、クライアントデバイスに機密データを保持しながら、機械学習モデルをトレーニングできる。
ユーザのプライバシーと匿名化は、業界で広く懸念されている。Akita SoftwareのCEO Jean Yangは、QCon 2019で、プライバシーとコンプライアンスの運用化について話し、匿名化について言及している。