[郭茂文]
基于FIDO协议的指纹认证方案研究
[郭茂文]
摘要首先简单介绍了FIDO协议,然后提出了基于FIDO协议和移动终端可信执行环境(TEE)的指纹认证方案总体框架和业务流程,并设计了指纹认证安全性提升方案,最后指出了指纹认证应用和推广还需要移动终端增加指纹识别能力并开放TEE能力。
关键词:FIDO 指纹校验 可信执行环境 身份认证
郭茂文
中国电信股份有限公司广州研究院。
近年来,随着移动互联网蓬勃发展,智能移动设备普及率越来越高,越来越多的支付操作基于移动终端完成。但是,移动支付服务所采用的身份认证手段大多采取“账号+口令+短信验证码”模式,其安全性不高,而且,在移动终端设备中输入账号和口令不如在PC上方便。近两年来,生物识别技术逐渐应用于移动终端设备,特别是指纹识别,多数移动终端将指纹识别用于手机屏幕解锁等安全应用,其本质是采用指纹识别技术替代口令输入。这种新的身份认证技术在某种程度上既增强了移动终端的安全性,又改善了用户体验。移动终端指纹识别技术的引入为实现指纹支付提供了可能。
FIDO (Fast Identity Online,即线上快速身份验证)联盟成立于2012年7月,其宗旨为满足市场需求和应付网上验证要求。FIDO联盟成员包括Google、BlackBerry、ARM、英特尔、PayPal、Lenovo、阿里巴巴和MasterCard等。这些成员通过协助界定市场需求,制定了在线与数码验证方面的首个开放行业标准,并于2014年12月发布,包括fido-u2f-v1.0和fido-uaf-v1.0两套协议。这两套协议可以很好地提高身份认证安全性、保护隐私及改善用户体验。
FIDO规范是一套开放的标准协议,保证各个厂商开发的强认证技术之间的互操作性,并通过两套协议来支持多种硬件设备。主要如下:
UAF( Universal Authentication Framework protocol)支持指纹、语音、虹膜、脸部识别等生物身份识别方式。无需用户密码介入,直接进行认证。用户在注册阶段,根据服务器支持的本地验证方式,选择一种验证方式,如:指纹识别,人脸识别,语音识别等等,服务器也可保留密码验证方式,将密码和生物识别相结合,增强用户账户安全性。
U2F(Universal Second Factor protocol)支持U盾、NFC芯片、TPM(可信赖平台模块)等硬件设备,使用双因子(密码和硬件设备)保护用户账户和隐私。用户在注册阶段,使用服务器支持的加密设备,将账户和设备绑定。当进行登录验证操作时,服务器在合适的时候,提示用户插入设备并进行按键操作,加密设备对数据签名,发送给服务器,服务器做验证,如果验证成功,用户则可登录成功。由于有了第二因子(加密硬件设备)的保护,用户可以选择不设置密码或者使用一串简单易记的4位密码。
FIDO协议最基本的技术特征就是本地身份识别与在线身份认证相结合,而在线身份认证技术则采用非对称公私钥对来提供安全保障,如图1 所示。
图1 FIDO协议示意图
具体来说,使用FIDO协议时涉及两个主要步骤:注册和认证。
当用户登录服务器注册时,用户端产生一对非对称密钥对,并与用户本地的身份信息(如生物特征、专用硬件设备等)进行关联。私钥在用户端本地设备中保留,黑客无法读取,公钥传给服务器,服务器将此公钥和用户对应的应用账户相关联。
当用户登录服务器认证时,用户端设备中的私钥对服务器的挑战数据做签名,服务器使用对应的公钥做验证。用户端设备中的私钥,必须经过本地用户身份识别(如按键,按下指纹等),才能被用来做签名操作。
目前,随着智能终端的发展,指纹识别技术已经成为中高端手机必备的基本功能,而基于智能终端的移动支付应用也已经非常普及,不仅各个银行有自己的手机银行APP,各互联网巨头公司都推出了自己的移动支付应用,如阿里巴巴支付宝、微信钱包、百度钱包等。因此,在支付环节通过与智能终端本地指纹识别技术结合不仅可以提升用户账号安全性,还可以改善用户业务体验,避免输入复杂、难以记忆的个人密码。
我们在FIDO规范的UAF协议框架下,根据支付应用的业务特点,遵循“非对称”和“可撤销”两个基本原则,设计了指纹认证系统方案,如图2所示。整个指纹认证系统以非对称加密算法为基础,非对称密钥对由客户移动终端的可执行环境(TEE)产生,其中,私钥保存在TEE内,而公钥由TEE传给服务器,并保存在服务器端的数据库中,移动终端与服务器之间的通信使用SSL/TLS协议加密保护。系统采用指纹认证技术作为本地验证用户身份的手段,用户指纹信息的采集、计算、存储与匹配等操作均在本地移动终端TEE环境中完成。只有通过本地身份鉴别后,才能正确使用用户私钥进行加密和签名等操作。移动终端存储的指纹信息与用户之间是一一对应的可撤销(可重置)的关系。
图2 基于UAF协议的指纹认证系统方案示意图
备注:REE(Rich Execution Environment),即普通执行环境
ASM(Authenticator Specific Module),认证器接口模块
CA(Client Application),即TEE应用的运行于REE的客户端应用
TA(Trusted Application),即TEE应用的运行于TEE内部的可行应用
指纹认证方案涉及的主要业务流程包括指纹认证注册、指纹认证签名和指纹认证注销。
4.1指纹认证注册
指纹认证注册指用户同意并开始使用指纹认证业务。开通时需设置用户用于支付的指纹信息,并需通过业务密码的校验。注册时,终端侧需要采集与校验用户指纹信息,产生非对称密钥对,并建立私钥、指纹信息和应用之间的对应关系;平台侧需要保存终端侧发送的注册信息,建立用户应用账号与公钥之间的对应关系。
每台移动终端只能有一个用户设定一个指纹信息用于支付。若想要变更用于支付的指纹信息,那么必须先注销指纹认证业务然后再重新注册,才能设置新的指纹信息。具体的指纹认证注册流程如图3所示。
4.2指纹认证签名与验签
指纹认证签名指用户端在本地进行指纹识别并校验后,对服务器侧发送过来的交易数据采用私钥进行签名确认并返回给服务器。服务器接收到签名数据后采用注册时保存的公钥对签名结果进行验签。具体的指纹认证签名与验签流程如图4所示。
4.3指纹认证注销
指纹认证注销指在终端侧解除应用、私钥以及指纹信息之间的对应关系,并删除用户密钥对,在服务器侧删除用户应用账号与公钥之间的对应关系。在指纹认证注销时,需要校验用户的应用业务密码。由于指纹认证注销流程比较简单,这里省略不提。
如何实现指纹认证系统的安全性是设计指纹认证方案的关键。本指纹认证方案除了通用的在服务器与用户端的会话中增加Challenge、nonce等随机数参数防止重复攻击外,还采用多种安全措施来提高指纹认证系统的安全性。
图3 指纹认证注册业务流程
5.1用户端与服务器端的双向认证机制
用户端加密设备(如TEE)产生的密钥对与指纹认证服务器是关联的,一对密钥对应一个指纹认证服务器。在注册的时候,服务器相关信息传给用户端加密设备,加密设备产生一对密钥对,将此密钥对和服务器相关信息相关联,给此密钥对分配一个句柄(Key Handle),并将其和公钥传给指纹认证服务器,服务器将注册的用户账户信息,公钥和Key Handle全部关联在一起并保存。
当用户需要认证签名,服务器端产生挑战数据,此时服务器将Key Handle和服务器信息通过浏览器传给用户端加密设备,用户端加密设备使用Key Handle,寻找对应的密钥对,如果密钥对存在,检验密钥对应的服务器信息是否和传入的服务器信息匹配,如果不匹配,说明服务器是伪造或者不正确的。如果正确,用户端加密设备等待用户指纹校验,用户指纹校验后,加密设备对挑战数据做签名,签名值返回给服务器,服务器验证签名值,如果签名正确,说明此公钥对应的唯一私钥是正确的,表明用户身份合法,如果签名不正确,说明此用户正在伪造身份登录。可见,指纹认证系统验证身份是双向的,用户端验证服务器的真伪,服务器验证用户端的真假。
图4 指纹认证签名业务流程
5.2计数器机制
在指纹认证方案中,使用了计数器机制。在用户指纹认证注册完成后,服务器会初始化计数器(从0开始),在用户端加密设备内部,对应的密钥对也有一个计数器。用户每认证一次,用户端加密设备的计数器加一,此计数器会传给服务器,服务器端会比较这两个计数器,如果服务器的计数器小于等于用户端加密设备的计数器,属于正常操作,服务器验证成功后,将计数器更新为用户端当前的计数器。如果服务器的计数器大于用户端加密设备的计数器,说明用户端加密设备已经被克隆。例如,用户注册完成后,登陆时,服务器的计数器更新为1,用户端加密设备的计数器也为1。下次用户再次登陆,服务器和用户端都更新为2。如果用户端加密设备被克隆,其它人使用该设备登陆,服务器计数器会随着恶意使用者的登陆,计数器会递增。当真正的用户登陆时,服务器发现它的计数比服务器上的小,服务器就会发现用户端加密设备已经被克隆,并给用户发出警告信息。
5.3防钓鱼网站机制
指纹认证注册时,用户端会保存应用的网址信息(即App_ID)。如果钓鱼网站在注册时获取到了Key Handle和公钥信息。当进行指纹认证时,用户端获取的网址和注册时的网址是不一样的,这样,将Key Handle 、App_ID信息传入加密设备中,加密设备会发现自身存储的Key Handle对应的App_ID和传入的App_ID不一致而中止进行签名操作。
5.4指纹认证TA的访问机制
指纹认证方案中,对指纹认证TA的访问采用“Trust on First Use”的策略。在指纹认证注册阶段,指纹认证CA会产生一个随机的API Key,并结合App_ID和用户个人化ID(即Personal_ID)信息生成一个Access Key。指纹认证CA访问指纹认证TA时携带Access Key,指纹认证TA记录并保存指纹认证CA所携带的Access Key信息。以后每次认证时,指纹认证TA均会比较指纹认证CA所携带的Access Key信息是否与自己保存的Access Key信息一致,如果一致,则允许指纹认证CA访问;否则,拒绝来自指纹认证CA的访问。
基于FIDO协议的指纹认证方案通过硬件与软件、指纹本地认证与移动智能终端在线认证的结合实现了高安全等级但又很便捷的用户身份认证,明显地提升移动支付安全和用户业务体验。目前,一些互联网/电商企业已经开始支持基于FIDO协议的指纹认证支付应用,如京东钱包、微信钱包等。但是,指纹认证的大规模应用和推广还有赖于移动终端技术和相关标准的发展,如支持FIDO协议的指纹识别器技术,移动终端TEE技术等。此外,各终端厂商还需要开放其终端内部的指纹校验和TEE接口能力,以便指纹认证系统调用这些能力。
参考文献
1FIDO Alliance,FIDO UAF Protocol Specification v1.0 2014 年12月8日
DOI:10.3969/j.issn.1006-6403.2016.04.001
收稿日期:(2016-03-18)