Amazon Web Services ブログ
Amazon Rekognition Face Liveness を使用してなりすましを検出し悪意ある攻撃を防ぐ
金融サービス、ギグエコノミー、通信業、ヘルスケア、SNS 事業者などのお客様は、オンライン・オンボーディングやステップアップ認証、年齢によるアクセス制限、ボットの検出などを行う際に顔認証を利用しています。これらのお客様は、操作端末のカメラで撮影した自撮り写真に写っているユーザーの顔を、政府発行の ID カード写真やあらかじめ設定されたプロフィール写真と照合して、ユーザーの本人確認を実施します。また、年齢制限のあるコンテンツへのアクセスを許可する前に、顔の分析によるユーザーの年齢の推定も行います。しかし、悪意ある人物は、公開投稿されているユーザーの顔の画像や動画、密かに撮影したもの、あるいは合成により作成したものを使用してなりすまし攻撃を行い、ユーザーのアカウントに不正アクセスすることが増えています。このような不正行為を防ぎそれに伴うコストを削減するために、顔認証ワークフローにおいて、顔照合や年齢推定を実施する前に、カメラの前のユーザーが実在し生きていることを確認する生体検知機能を追加する必要があります。
今回は、顔認証時の不正行為を簡単かつ正確に抑止するための新機能である Amazon Rekognition Face Liveness をご紹介します。こちらの記事では、Face Liveness 機能の概要とそのユースケース、エンドユーザーエクスペリエンスやなりすまし検出機能の概要を説明し、Web アプリケーションやモバイルアプリに Face Liveness 機能を追加する方法について紹介します。
Face Liveness の概要
昨今、お客様は様々なソリューションを使用して生体検知を行っています。あるお客様は、Web やモバイルアプリケーションの中で、顔のランドマークを検出するオープンソースや商用の機械学習 ( Machine Learning; ML ) モデルを使用して、笑顔・頷き・首を振る・まばたき・口を開けるなどの特定のジェスチャーをユーザーが正確に行っているかを確認しています。ただ、これらのソリューションは構築や維持にかかるコストが高く、物理的な 3D マスクや動画の挿入による高度ななりすまし攻撃を阻止することができず、ユーザー側に生体検知の完了までに高い労力を必要とします。また、カメラに向かって提示されたなりすまし攻撃 ( 印刷された写真やデジタルの写真、スクリーン上の動画など ) のみを検出可能なサードパーティ製品の生体検知機能を使用するお客様もいらっしゃいますが、これらは特定の地域のユーザーのみにうまく機能し、また完全にお客様による管理となる場合も多いです。加えて、お客様のソリューションの中には、電話やパソコンのカメラに搭載されたハードウェアベースの赤外線やその他のセンサーを用いて生体検知を実施するものもありますが、これらのソリューションはコストがかかり、ハードウェアに特化しているため一部のハイエンド機器を持つユーザーにしか適用できません。
Face Liveness を使用すると、サービスにアクセスしているのが本物のユーザーであり、なりすましを行う悪意ある人物ではないことを数秒で検出できます。Face Liveness には以下の主要な機能があります:
- ユーザーの短い自撮り動画をリアルタイムで分析し、そのユーザーが本物の人間かなりすましかを検出します。
- liveness 信頼スコア(0~100の範囲で表されるメトリクスで、その人物が生きている確率を示す)を返します。
- 品質チェック済みの高品質なリファレンス画像を返し、後続の処理で Amazon Rekognition の顔照合や年齢推定を実施する場合にその画像を使用します。
- 最大4枚の監査用の画像(監査証跡の維持に使用可能な自撮り動画からのフレーム)を返します。
- 印刷された写真やデジタル写真、デジタル動画、3D マスクなどのカメラの前に提示されるようななりすましを検出し、事前に録画された動画やディープフェイク動画など、カメラを出し抜くなりすましも検出します。
- オープンソースでビルド済みの AWS Amplify UI コンポーネントを使用して、フロントカメラを持つ多くのデバイスで動作するアプリケーションに簡単に追加することができます。
また、インフラ管理やハードウェア固有の実装、ML の専門知識は必要ありません。この機能は需要に応じて自動的にスケールアップまたはスケールダウンし、お客様は実行した Face Liveness のチェックについての料金のみをお支払いいただきます。Face Liveness は、多様なデータセットで訓練された ML モデルを使用し、ユーザーの肌色や祖先、デバイスを問わず高い精度を提供します。
ユースケース
次の図は、Face Liveness を使用した典型的なワークフローを表しています。
Face Liveness は 以下のようなユーザー検証のワークフローにおいて使用することができます。
- ユーザー・オンボーディング – 後続の処理の前に Face Liveness を使用して新規ユーザーを検証することで、サービス上での不正なアカウント作成を減らすことができます。例えば、金融サービスのお客様は、Face Liveness を使用してユーザーが本物の人間であることを検出し、オンライン口座開設の前に顔照合を実行して正しいユーザーであることを確認することができます。これにより、悪意ある人物が他人の SNS 写真を利用して不正な銀行口座を開設することを防止することができます。
- ステップアップ認証 – デバイスの変更、パスワードの変更、送金など、自社サービスにおける重要度の高いユーザーアクティビティにおいて、そのアクティビティを実施する前に Face Liveness を実行することで、ユーザー検証を強化することができます。例えば、ライドシェアやフードデリバリーのお客様は、Face Liveness を使用してユーザーが本物の人間であることを検出し、プロフィール画像を使用して顔照合を行い、乗車や配達の前にドライバーや配達員の身元を検証して安全性を高めることができます。これにより、無許可の配達員やドライバーがエンドユーザーと関わることを防止できます。
- ユーザーの年齢確認 – 未成年のユーザーが制限されたオンラインコンテンツにアクセスすることを防止できます。例えば、オンラインのタバコ販売店やオンラインギャンブルを運営するお客様は、Face Liveness を使用してユーザーが本物の人間かどうかを検出し、その後顔分析を使用して年齢推定を行い、サービスコンテンツへのアクセスを許可する前にユーザーの年齢を確認できます。これにより、未成年のユーザーが親のクレジットカードや写真を使い、有害・不適切なコンテンツにアクセスすることを防止できます。
- ボット検知 – 「本物の人間」かどうかを判断する Captcha チェックの代わりに Face Liveness を使用することで、ボットによるサービス利用を回避することができます。例えば、ソーシャルメディアのお客様は、ボットを寄せ付けないために、Face Liveness を本物の人間かどうかのチェックに使用することができます。主なボットアクションを行うには Face Liveness チェックを通過する必要があるため、ボットによる攻撃を行うユーザーには大幅なコストや労力が必要となります。
エンドユーザーエクスペリエンス
Face Liveness は、エンドユーザーがアプリケーション上でオンボードや認証を行う必要がある場合に、ユーザーがデバイスの画面上にレンダリングされた楕円の中に顔を移動させる短い自撮り動画を素早く撮影するためのユーザーインターフェースとリアルタイムのフィードバックを提供します。ユーザーの顔が楕円の中に移動すると、デバイスの画面にカラーライトのシーケンスが表示され、自撮り動画は AWS Cloud API に安全にストリーミングされ、高度な ML モデルがリアルタイムで動画を分析します。解析が完了すると、liveness 予測スコア ( 0 から 100 までの値 ) 、リファレンス画像および監査画像を受け取ることができます。liveness スコアがお客様が設定した閾値を上回っているか下回っているかによって、ユーザーに対して後続の検証タスクを実行できます。liveness スコアが閾値を下回る場合、ユーザーに再試行を求めるか、別の検証方法へルーティングすることが可能になります。
エンドユーザに表示される画面の流れは以下の通りです。
- このシーケンスは、導入と光過敏性に関する警告を含む開始画面で始まります。この画面では、エンドユーザーに対して自身が実在の人物であることを証明するための指示に従うよう促しています。
- エンドユーザーが “Begin check” を選択すると、カメラ画面が表示され、3 から始まるカウントダウンが開始されます。
- カウントダウンが終わると、動画撮影が始まり画面に楕円が表示されます。エンドユーザーは、顔を楕円の中に移動させるように促されます。顔が正しい位置にあることを Face Liveness が検知すると、エンドユーザーは表示される一連の色に対して静止するように促されます。
- 動画は生体検知のためにクラウド側に送信され、”Verifying” と書かれたローディング画面が表示されます。
- エンドユーザーは、成功の通知または再試行のプロンプトを受け取ります。
以下の動画は、 Face Liveness を実装したサンプルにおける実際のユーザー エクスペリエンスを示したものです。
なりすまし検知
Face Liveness は、プレゼンテーション型攻撃の抑止やなりすまし攻撃の回避が可能です。ここでは主ななりすましの種類を概説し、Face Liveness がそれらを防ぐ様子を見ていきましょう。
プレゼンテーション型なりすまし攻撃
印刷物やデジタルアーティファクトを使用して、他のユーザーの顔をカメラに映すなりすまし攻撃です。悪意ある攻撃者は、ユーザーの顔の印刷物を使用したり、デバイスのディスプレイにユーザーの顔の写真や動画を表示したり、ユーザーに似せた 3D フェイスマスクを着用したりします。Face Liveness は、以下の例で示すように、このようなタイプのプレゼンテーション型のなりすまし攻撃をうまく検出することができます。
以下は、デバイスディスプレイに表示したデジタル動画を使ったプレゼンテーション型なりすまし攻撃の例です。
次はデバイスディスプレイに表示したデジタル画像を使ったプレゼンテーション型なりすまし攻撃の例です。
続いて 3D マスクを用いたプレゼンテーション型なりすまし攻撃の例です。
そして、印刷した写真を用いたプレゼンテーション型なりすまし攻撃の例が以下となります。
バイパス(動画インジェクション攻撃)
こちらは、悪意ある攻撃者がカメラをバイパスし、仮想カメラを使用して自撮り動画をアプリケーションに直接送信するなりすまし攻撃です。
Face Liveness のコンポーネント
Amazon Rekognition Face Liveness は複数のコンポーネントを使用しています:
FaceLivenessDetector
コンポーネントを使用した AWS Amplify Web およびモバイル SDKs- AWS SDKs
- AWS Cloud API
各コンポーネントの役割と、これらのコンポーネントを一緒に使ってわずか数日でアプリケーションに Face Liveness を簡単に追加する方法を確認していきましょう。
FaceLivenessDetector コンポーネントを使用した Amplify の Web およびモバイル SDKs
Amplify の FaceLivenessDetector
コンポーネントは、Face Liveness 機能をお客様のアプリケーションに統合するものです。このコンポーネントは、ユーザーが自撮り動画を撮影している間にユーザーインターフェイスとリアルタイムフィードバックをハンドリングします。
クライアントアプリケーションが FaceLivenessDetector
コンポーネントをレンダリングすると、Amazon Rekognition Streaming サービスへの接続を確立し、エンドユーザーの画面上に楕円をレンダリングし、色のついたライトのシーケンスを表示します。また、Amazon Rekognitionストリーミングサービスにリアルタイムでビデオを録画・配信し、成功または失敗のメッセージを適切に表示します。
AWS SDK と AWS Cloud APIs
アプリケーションを Face Liveness 機能と連携するように設定する際、以下の API オペレーションを使用します。
- CreateFaceLivenessSession – Face Liveness セッションを開始し、Face Liveness 検出モデルのアプリケーションでの使用を開始します。作成されたセッションの
SessionId
を返します。 - StartFaceLivenessSession –
FaceLivenessDetector
コンポーネントによって呼び出されます。現在のセッションの関連イベントと属性に関する情報を含むイベントストリームを開始します。 - GetFaceLivenessSessionResults – Face Liveness 信頼スコアやリファレンス画像、監査画像など、特定の Face Liveness セッションの結果を取得します。
Amazon Rekognition Face Liveness は、AWS Python SDK Boto3 や AWS SDK for Java V2 など、サポートされているすべての AWS SDK でテストが可能です。
開発者のエクスペリエンス
以下にソリューションの構成図を示します。
Face Liveness チェックのプロセスにはいくつかのステップがあります。
- エンドユーザーは、クライアントアプリで Face Liveness チェックを開始します。
- クライアントアプリはお客様が実装したバックエンドを呼び出し、バックエンドは Amazon Rekognition を呼び出します。サービスは Face Liveness セッションを作成し、一意の
SessionId
を返します。 - クライアントアプリは、取得した
SessionId
と適切なコールバックを使用してFaceLivenessDetector
コンポーネントをレンダリングします。 FaceLivenessDetector
コンポーネントは、Amazon Rekognition Streaming サービスへの接続を確立し、ユーザーの画面上に楕円をレンダリングしカラーライトのシーケンスを表示します。FaceLivenessDetector
は、Amazon Rekognition Streaming サービスにリアルタイムで動画を記録しストリームします。- Amazon Rekognition はリアルタイムで動画を処理し、Amazon Simple Storage Service ( S3 ) バケットに格納されているリファレンス画像と監査画像を含む結果を保存します。ストリーミングが完了すると
FaceLivenessDetector
コンポーネントにDisconnectEvent
を返します。 FaceLivenessDetector
コンポーネントは、適切なコールバックを呼び出し、ストリーミングが完了しスコアを取得する準備ができたことをクライアントアプリに通知します。- クライアントアプリは、お客様のバックエンドを呼び出し、ユーザーが本物の人間かどうかを示すブール値のフラグを取得します。お客様のバックエンドは、Amazon Rekognition にリクエストを行い、信頼スコアとリファレンス画像および監査画像を取得します。お客様のバックエンドは、これらの属性を使用してユーザーが本物の人間であるかどうかを判断し、クライアントアプリに適切な応答を返します。
- 最後に、クライアントアプリはレスポンスを
FaceLivenessDetector
コンポーネントに渡し、成功または失敗のメッセージを適切にレンダリングしてフローを完了します。
まとめ
この記事では、Amazon Rekognition の新機能である Face Liveness が、顔認証プロセスを通過するユーザーがカメラの前に物理的に存在し、なりすましを行う攻撃者ではないかどうかを検出する方法を示しました。Face Liveness を使用することで、人物の顔ベースのユーザー認証ワークフローにおける不正行為を防止することができます。
Face Liveness の機能ページで詳細情報を確認し、開発者ガイドにアクセスすることで今すぐ使用を開始できます。Amazon Rekognition Face Liveness Cloud API は、米国東部 ( バージニア北部 )、米国西部 ( オレゴン ) 、欧州 ( アイルランド ) 、アジアパシフィック ( ムンバイ ) 、アジアパシフィック ( 東京 ) リージョンで利用可能です。
本記事は Detect real and live users and deter bad actors using Amazon Rekognition Face Liveness を翻訳したものです。翻訳はソリューションアーキテクトの森下裕介が担当しました。
著者について
Zuhayr Raghibは AWS の AI サービスソリューションアーキテクトです。Applied AI/ML を専門とし、お客様がクラウドを利用してより速くイノベーションを起こしビジネスを変革できるようにすることに情熱を注いでいます。
Pavan Prasanna Kumarは、AWS のシニアプロダクトマネージャーです。AI を通じてお客様のビジネス課題の解決を支援することに情熱を注いでいます。スカッシュ、ビジネスポッドキャストの視聴、新しいカフェやレストランの開拓が趣味です。
Tushar Agrawalは、Amazon Rekognition のプロダクトマネジメントを担当しています。AWS のお客様にとって重要なビジネス課題を解決するコンピュータビジョン機能の構築に注力しています。趣味は家族と過ごすことと音楽を聴くことです。