宁波格密链网络科技公司正在开发一种基于加密技术的指纹密文认证系统
扫描二维码
随时随地手机看文章
前不久,全球生物特征数据大范围泄露,涉及到83个国家以及2700多个公司与机构,导致许多国家的公司安全信誉岌岌可危。
生物特征(指纹、虹膜、人脸)作为识别个人身份的一种方式,带来了极大的方便。一方面生物特征对于个人是唯一的,另外一方面个人生物特征便于使用。不像口令与密码还需要记忆。
然而,这是一把双刃剑。生物特征一旦丢失将会带来无法挽回的损失。它不像口令和密码可以随时更改。就像这次大规模生物特征泄露事件,遭泄露的个人很可能将来无法再使用其生物特征作为认证方式。对其个人将来的生活带来极大的影响。
导致生物特征数据泄露的一个根本原因是没有保护好存储在数据库的中的生物特征模板。
宁波格密链网络科技有限公司一直致力于全同态加密的应用研究。早在几年前,陈智罡博士团队就意识到生物特征的弱点,开始研究如何在密态下构建生物特征认证系统。
基于全同态加密技术,陈智罡博士团队相继开发出指纹密文认证系统、虹膜密文认证系统,人脸安全识别系统。得到了业界广泛认可与关注,目前正在开展产业化阶段。
1. 问题的提出与解决
全同态加密能够在不解密的情况下,对密文进行任意计算。如果生物特征数据从存储到认证过程都是在密态下完成,即使生物特征数据丢失了,也不会对系统有任何影响。因为生物特征在系统中是加密的,敌手在无法获得密钥的情况下,将无法获得生物特征的明文数据。
这一场景非常适合全同态加密领域的应用。陈智罡博士团队就此展开了研究。
难点一
看似很容易,只要将虹膜或者指纹数据通过全同态加密就可以了。但是在构建整个系统中,陈博士团队发现一个问题,生物特征数据加密后发送给服务端进行虹膜(或者指纹)比对,尽管特征比对本质上是一个海明距离的计算,但是计算后是一个密文,服务器无从知晓比对的结果,也就无法给出通过(或是不通过)的判断。
如果将密文比对的结果发送给用户端,用户端再返还给服务端,敌手可能会篡改比对结果,或者发起中间人攻击。
为此我们构建了一个协议,引入一次MAC认证方法。
消息验证码(MAC)一般是利用可携带密钥的hash函数来检验传输数据的完整性。常用的hash函数有MD5、SHA-2和SHA-3等。我们的虹膜(指纹)特征密文的存储可以使用上述方法将密文进行压缩,然后数据库只需存放密文压缩后的摘要。
但是,我们考虑到最安全的方式是采用云端认证策略,即云服务器对密文同态操作后的结果进行认证,而解密操作只能由用户完成。因此,采用hash函数并不能满足设计的需要,所以我们设计了一种一次性MAC(OTM)认证方式,即MAC方案中的消息密钥算法生成的密钥只能使用一次,同时用户对密文解密后,云服务器可以对解密结果进行认证。
难点二
虹膜或指纹的识别方法是采用海明距离计算来对编码后的特征模板进行比对。它是通过统计两个模板上对应编码不同的个数作为这两个模板之间的距离。距离越小,表明两模板越匹配。
本质上计算海明距离是求两个向量异或的总和。如果虹膜(或指纹)初始模板是长度为n的二进制向量,则计算两个虹膜特征模板间的海明距离至少需要n次乘法。然而,全同态加密的密文乘法是其主要瓶颈。如果模板长度为2048,则需要进行2048次密文乘法。显然,对于实际应用这是不可接受的。
为此,团队采用了密文打包的方法,即将生物特征模板打包到一个密文中。因此,对该打包密文进行一次乘法,相当于原来的2048次乘法。这种并行的思路极大的提高了效率。使之从不可能到可能。
难点三
上面说过,计算海明距离相当于求两个向量异或的总和。
由于采用了密文打包的方法,导致对密文无法求和。为了求和,采用了自同态计算,对密文中的明文位进行旋转。这样每次加法后,对密文旋转一次,一共需要旋转2013次才能求得最终的结果。这也是影响效率的主要因素。
为此,团队对算法优化,才用了类似于二分法的方法,将加法约减到了log2013次。极大的提高了效率。
除了上述难点外,团队还在工程化的优化方面做出了很多尝试。例如:将模板分段并行处理,用户身份与生物特征模板哈希化保存,注册模块的安全防护等。
2. 系统架构
系统主要是对验证服务器进行设计,采用一对一的方式来验证每个用户。整个系统由两个参与者组成,即用户和认证服务器。用户U具有从他的虹膜特征中提取的二进制特征模板。服务器S具有丰富的计算资源和存储空间;因此它可以完成同态密文的任意函数计算,但不能解密自己生成的密文以及用户给出的密文。
系统整体采用C/S架构,客户端的主要功能是为用户提供注册和认证服务,而云服务器端则提供同态运算和认证服务。
系统的整体功能分为三个模块,首先是登录模块,当用户输入已经注册的基本信息后即可进入到认证界面,否则需要点击注册链接进入注册界面。其次是注册模块,它的主要功能有生成公钥和密钥、保存密钥到移动存储器中以及加密虹膜信息并将之与用户基本信息一同存放到数据库中;最后是认证模块,它的功能是加密当前虹膜信息并将之发送到服务器端,服务器端完成虹膜认证后,客户端通过密钥解密认证结果并提示用户。
3. 系统实现与效率
本系统是使用C#编程语言在Windows10上开发的,系统采用B/S架构。
为了加密一个2048位的二进制向量,多项式次数必须取n≥2048。但是当参数n过大时,密文计算时间过长,系统效率极低。于是我们将2048位的二进制向量分段进行研究,下表给出了在不同段数时,完成密文海明距离计算下的log2 q的最小值。
数据结果显示,分段后的密文模q降低的幅度不大,因此分段并不能明显提高系统的效率。
系统测试处理器为Intel Core i5-6200U,在128位安全等级下,认证过程大概需要100毫秒,系统在图形界面载入和通信部分用时最长,因此整个生物特征密文认证系统的效率是非常不错的。该系统设计在2017年已经申请专利。