亚马逊AWS官方博客
通过 Amazon Rekognition Face Liveness,进行用户真人检测、防止欺诈攻击
金融服务、零工经济、电信、健康、社交网络和其他客户通常在在线登录、设置身份验证、基于年龄的访问限制和机器人检测时使用人脸验证。这些用户将设备摄像头拍摄的自拍与政府发放的身份证照片或先前填写的个人资料照片比对,验证是否与用户的人脸相同,从而识别用户身份。此外,在访问有年龄限制的内容之前,他们也会通过脸部分析来预估用户年龄。但恶意攻击者越来越多地使用公开发布,秘密获取或合成的用户人脸图像或视频,发布欺诈攻击,或者未经授权访问用户的账户。为阻止此类欺诈,并降低与之相关的成本,客户需要在人脸验证工作流中执行人脸匹配或年龄估计前添加活体检测,确认摄像头前的用户是否是真实的用户本人。
我们很高兴推出 Amazon Rekognition Face Liveness,帮您在人脸验证过程中轻松准确地防止欺诈。在本文中,我们先概述 Face Liveness 功能,应用场景和用户体验;提供欺诈检测功能能力概览,并展示如何将将 Face Liveness 添加到您的网页和移动应用程序中。
1. Face Liveness 概览
如今,客户使用多种解决方案检测人脸活体。部分客户在 Web 和移动应用程序中使用开源或商业化的面部标志检测机器学习模型,检测用户是否正确地执行特定的手势,例如微笑、点头、摇头、眨眼或张嘴。这些解决方案的构建和维护成本很高,无法防止使用实体 3D 面具或注入视频进行的高级欺诈攻击,而且需要用户付出很多努力才可以完成。部分客户使用第三方人脸活体识别功能,这些功能仅可检测到呈现在摄像头前的欺诈攻击(例如打印或数字照片或屏幕上的视频),并适用于通常完全由客户管理的特定地区的用户。最后,一些客户解决方案依赖基于硬件的红外和手机或电脑摄像头的其他传感器,检测面部活跃度,但这些解决方案成本高昂,有硬件局限,并仅适用于使用特定高端设备的用户。
使用 Face Liveness,您可在几秒钟内检测正在访问服务的用户是否为真人,而非使用欺诈方式的恶意攻击者。Face Liveness 包括以下关键功能:
- 实时分析用户的人脸视频,检测用户是真人还是欺诈的;
- 返回“用户是真人”的可信度得分——可信度水平 0-100 的指标,表明“用户是真人”的概率;
- 返回一张高质量的参考图像——通过质量检查的用户的人脸照片(视频帧),用于下游任务中进一步使用 Amazon Rekognition 人脸比对或年龄评估分析;
- 返回最多四张审计图像——来自用户的人脸视频(视频帧),可用于维护审计记录;
- 检测呈现在摄像头前的欺诈攻击,例如,打印照片、数字照片、数字视频或 3D 面具,以及绕过摄像头的欺诈攻击,例如,预先录制好的或深度伪造的视频;
- 通过开源预构建的 Amazon Amplify UI 组件,可被轻松添加到更多带有前置摄像头的应用程序中。
此外,您无需进行基础设施管理、硬件部署,或具备机器学习专业知识。Face Liveness 会根据您的需求自动伸缩资源,您仅需根据 Face Liveness 的使用次数进行付费 — 按需付费。Face Liveness 使用不同数据集训练机器学习模型,从而可以保证在不同用户肤色、人种和设备等数据维度上提供高准确度。
2. 应用场景
下图说明了使用 Face Liveness 的典型工作流。
您可以将 Face Liveness 功能,应用在以下四个用户验证场景中:
- 用户登录/注册——您可以在处理下游任务前,通过 Face Liveness 验证新用户身份,从而减少用户创建用于欺诈的帐户。例如,金融服务公司,可以使用 Face Liveness 进行用户真人检测。然后,通过人脸比对,来判断用户是否正确,并为正确的用户创建一个在线账户。这可以阻止恶意攻击者利用他人的社交媒体照片,来创建用于欺诈的银行账户。
- 加强用户身份审核——您可以在您的服务上,加强对高价值用户在进行帐户操作时的身份审核。例如,当用户进行设备更换、密码更新和资金转移时,使其在进行这些操作之前,通过 Face Liveness 进行身份审核。例如,拼车或送餐公司,可以使用 Face Liveness 进行用户真人检测。然后,通过人像库进行人脸比对,在最终用户乘车或收到送餐前,验证司机或送餐员的身份,加强最终用户的安全。这可以避免未经授权的司机或送餐员与最终用户接触。
- 评估用户年龄——您可以防止未成年用户访问受限制的在线内容。例如,在线烟草零售商或在线赌博客户,可以使用 Face Liveness 进行用户真人检测。然后,通过人脸分析,对用户进行年龄评估,进而授予他们对不同服务内容的访问权限。这可以防止未成年用户使用父母的信用卡或照片,并访问有害的或不适当的内容。
- 检测机器人恶意攻击——您可以使用 Face Liveness 代替“真人”验证码进行用户真人检测,避免机器人恶意攻击您的服务。例如,社交媒体客户,可以使用 Face Liveness 进行用户真人检测,防止用户进行机器人恶意攻击。由于当机器人进行恶意攻击时,需要通过一个面部的活体检测,因此这会大量增加用户使用机器人进行恶意攻击的成本和精力。
3. 用户体验
当用户在您的应用程序上登录或进行身份验证时,Face Liveness 会为用户提供用户界面,并会快速捕捉一段简短的用户人脸视频。用户需要将人脸移动到设备屏幕上显示的椭圆形内。在用户将人脸移到椭圆形内后,设备屏幕会显示一系列彩色灯光,用户人脸视频会安全地传输到云 API,机器学习模型会进行实时的视频分析。在完成分析后,您将收到一个可信度得分(介于 0-100 之间的值)、一张参照图片和最多四张审计图片。根据您设置的可信度得分阈值,可为用户执行下游验证任务。如果可信度得分低于阈值,可要求用户重试或切换到另一种验证方法。
用户交互顺序如下:
1. 首先看到的是开始屏幕,屏幕显示指示内容和光敏警告。提示用户需按照指示进行操作,以证明用户自己是一个“真人”。
2. 在用户选择“开始检查”后,屏幕启动摄像头(用户可以看到自己),屏幕提示 3 秒倒计时。
3. 在倒计时结束后,屏幕开始录像,屏幕将显示一个椭圆形,并提示用户需要将人脸移到椭圆形内。在 Face Liveness 检测到人脸处于正确位置时,提示用户保持位置不动,同时,屏幕会显示一系列彩色灯光。
4. 当屏幕显示“正在验证”时,用户的人脸视频已被提交进行视频分析和真人检测。
5. 用户将在屏幕上看到“验证通过”或者“再试一次”的提示。
以下是用户使用 Face Liveness 的示例展示。
4. 欺诈检测
Face Liveness 可以用来检测呈现在摄像头前的欺诈攻击和绕过摄像头的欺诈攻击。让我们概述几个关键的欺诈方式,看看Face Liveness如何阻止这些攻击。
4.1 检测呈现在摄像头前的欺诈攻击
恶意攻击者通过将他人的人脸呈现在摄像头前的方式进行欺诈攻击。恶意攻击者会打印他人照片,或者通过电子设备展示他人的照片或视频,或者头戴 3D 面具。Face Liveness 可以成功检测这些欺诈攻击,如下所示。
检测通过电子设备展示他人视频的欺诈攻击。
检测通过电子设备展示他人照片的欺诈攻击。
检测通过头戴 3D 面具的欺诈攻击。
检测通过打印他人照片的欺诈攻击。
4.2 检测绕过摄像头的欺诈攻击
恶意攻击者绕过真实的摄像头,而使用虚拟摄像头直接向应用程序直接发送一段人脸视频(预先录制好的或深度伪造的视频)。
5. Face Liveness 组件
Amazon Rekognition Face Liveness 包含多个组件:
- 采用
FaceLivenessDetector
组件的 Amazon Amplify Web 和移动 SDK - Amazon SDK
- 云 API
我们来看看每个组件的作用,以及如何在短时间内轻松将这些组件组合在一起,添加到您的应用程序。
采用 FaceLivenessDetector 组件的 Amazon Amplify Web 和移动 SDK
Amplify FaceLivenessDetector
组件将 Face Liveness 功能集成到您的应用程序。在用户拍摄自拍视频时,可处理用户交互并实时反馈。
在客户端应用程序显示 FaceLivenessDetector
组件时,将建立与 Amazon Rekognition 流服务的连接,在用户的屏幕显示椭圆形,以及一系列彩色灯光。此外,也实时记录视频,并将其传输到 Amazon Rekognition 流媒体服务,并准确地显示成功或失败的消息。
Amazon SDK 和云 API
在配置应用程序与 Face Liveness 功能集成时,使用以下 API 操作:
- CreateFaceLivenessSession – 启动 Face Liveness 会话,将 Face Liveness 检测模型用于应用程序。返回 SessionId,用于创建的会话。
- StartFaceLivenessSession – 由
FaceLivenessDetector
组件调用。启动包含当前会话中的相关事件和属性信息的事件流。 - GetFaceLivenessSessionResults – 检索特定 Face Liveness 会话的结果,其中包含 Face Liveness 置信度评分、参考图片和审计图片。
可使用任何支持的 Amazon SDK(例如 AmazonPython SDK Boto3 或 Amazon SDK for Java V2)测试 Amazon Rekognition Face Liveness。
6. 方案架构和开发步骤
下图是解决方案架构:
Face Liveness 的检测流程包括以下几个步骤:
1. 用户在客户端应用程序中启动 Face Liveness 检查。
2. 客户端应用程序调用客户的后端,然后再调用 Amazon Rekognition 服务;Amazon Rekognition 服务将创建 Face Liveness 会话,并返回唯一的 SessionId
。
3. 客户端应用程序使用获得的 SessionId
和回调显示 FaceLivenessDetector
组件。
4. FaceLivenessDetector
组件建立与 Amazon Rekognition 流服务的连接,在用户的屏幕上显示椭圆形,以及一系列彩色灯光。FaceLivenessDetector
录制并实时流式传输视频到 Amazon Rekognition 流媒体服务。
5. Amazon Rekognition 对视频进行实时处理,并将结果(包括参考图片和审计图片)存储到 Amazon Simple Storage Service(S3);当流传输完时,将 DisconnectEvent
事件返回到 FaceLivenessDetector
组件。
6. FaceLivenessDetector
组件调用适当的回调,向客户端应用程序发出信号,表示流式传输已完成、检测分数也可检索。
7. 客户端应用程序调用客户的后端,获取表示用户是否真人在线的布尔标志。客户的后端向 Amazon Rekognition 发出请求,获得置信度分数、参考图片和审计图片。客户的后端使用这些属性,确定用户是否真人在线,并向客户端应用程序返回合适的响应。
8. 最后,客户端应用程序将响应报文返回到 FaceLivenessDetector
组件,该组件显示成功或失败消息,并结束整个检测流程。
结论
在本文中,我们介绍了 Amazon Rekognition 中的新功能 Face Liveness 如何检测正在进行人脸验证过程的用户是否真实地出现在摄像头前,而非是使用欺诈行为的恶意攻击者。使用 Face Liveness,可在基于人脸的用户验证场景中防止欺诈行为。
请访问 Face Liveness 功能页面查询更多有关信息并浏览《开发人员指南》。目前,您可在美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)、欧洲(爱尔兰)、亚太地区(孟买)和亚太地区(东京)地区使用 Amazon Rekognition Face Liveness 功能。