使用电话号码验证 API,以防钓鱼式攻击的方式从用户的移动运营商处检索已验证的电话号码。这是一种更快速、更安全且更具成本效益的验证方法,不依赖于通过短信发送的一次性验证码 (OTP)。
概览
传统的手机验证严重依赖基于短信的动态密码 (OTP)。短信验证会给用户带来不便,并导致延迟。此外,它还容易受到 SIM 卡交换或拦截攻击,并会产生高昂的电信费用。
Android 的电话号码验证 API 利用数字凭证解决了这些难题。应用不会发送短信,而是直接通过 Android 的 Credential Manager 请求数字令牌。在用户同意分享此令牌后,应用后端会与移动网络聚合器或移动运营商交换此令牌,以检索经过验证的电话号码。
经过验证的电话号码检索流程
请按照以下步骤检索已验证的电话号码:
- 您的应用向 Digital Credentials API 发出请求,以获取电话号码。
- 系统会显示 Credential Manager 底部动作条,以确认是否共享电话号码。
- 该 API 通过对 SIM 卡进行身份验证,从用户的运营商处检索加密的 TS.43 令牌。
- Credential Manager 会与您的应用共享令牌。您的应用会将令牌发送到应用服务器,应用服务器会与聚合器或移动运营商端点交换令牌。此时也会产生电话费用。
- 聚合器或运营商会将经过验证的电话号码返回给您的应用。
主要优势
此 API 具有诸多优势:
- 降低验证成本 - 您只需为成功送达应用的验证付费,从而降低了递送成本。
- 更安全、更顺畅的用户体验 - 用户只需点按一下即可批准系统底部动作条提示,而无需在应用外部查看短信验证码。这也消除了短信钓鱼式攻击的可能性。
- 更高的转化率 - 短信发送失败和延迟是导致用户流失的主要原因。直接运营商验证完全绕过了短信传输,从而提高了完成率。
- 身份保证 - 验证 Android 设备上实际处于活跃状态的实体 SIM 卡/eSIM 卡,确保身份直接与有效的运营商订阅相关联。
安全和隐私设置
Android 的手机验证功能基于开放标准和由硬件支持的加密安全机制。
关键安全标准:
- GSMA TS.43 标准:用于身份断言和令牌生成的标准化运营商协议。
- SD-JWT VC(选择性披露 JWT 可验证凭证):确保凭证完整性(防篡改)和选择性数据披露。
- OpenID4VP 协议:用于请求可验证凭证的业界标准规范。
加密 Nonce 和密钥绑定
每个验证请求都包含服务器生成的 Nonce 和密钥绑定签名。这些元素可防止重放攻击、中间人 (PiTM) 篡改和凭证欺骗。
端到端加密
Android Telephony 会对返回到客户端应用的 TS.43 令牌进行加密。只有获得授权的聚合器或移动运营商端点才能解密该令牌,这可确保系统不会在传输过程中泄露原始用户凭据。
透明的用户同意机制
Android 会显示 Credential Manager 底部动作条,在向应用传输任何数据之前,告知用户具体共享了哪些身份信息。
后续步骤
如需在应用中实现此功能,请参阅实现指南。