APP下载

一种利用属性加密进行身份认证的隐私保护方案

2020-03-07

网络安全技术与应用 2020年2期
关键词:服务器端公钥解密

(山西财经大学信息管理学院 山西 030006)

随着移动会联网的全面普及和飞速发展,越来越多的基于移动设备的服务程序被开发出来,为我们的生活提供了极大的方便,但同时也带来了许多隐私问题,其中的一个问题就是使用账号和密码进行登录的程序,由于账号和密码被盗或者账号和密码被熟人使用或者是借用,而带来的用户活动轨迹的隐私泄露问题,如假如有亲近的朋友向我们借用淘宝账号使用,而我们却不好意思拒绝,那我们的账号和密码会被其知道,进而我们的历史购买会被其知道,从而泄露我们的隐私,如何设计一种技术,即使别人知道了我们的用户名密码,但没有我们的身份特征信息进行进一步验证,也无法访问我们在服务提供商储存的信息,从而保护我们的隐私和安全;账号和密码被盗用或者会被其他人使用,也是OpenId 等技术不能被广泛使用的一个因素。

1 相关工作

目前已有的一种基于账号丢失的隐私保护技术是在用户登录后不直接进入主页面,而是要求用户选择历史购买的物品,通过这种方法确认是否是本人,如淘宝等都使用这种技术;另一种识别账号被盗的方法是使用一个手机账号,登录前先通过短信验证,确保是用户自己的手机,如果他人使用账号登录,因为不是用户本人的手机,所以无法收到短信验证码而无法登录,从而保护用户隐私,这种方法在金融APP中被广泛使用;但是这两种方法都难以防止熟人询问;Shamir 于1984年首次提出了基于身份的加密方案[1],即以用户的身份信息如身份证号、邮件地址等唯一代表用户身份的信息作为公钥,然后生成用户的私钥,基于身份的加密的方案没有了传统公钥密码体系中的公钥管理和证书管理;2005年Sahai和Waters 通过多次提取同一生物信息,如虹膜、指纹等生物信息,产生其多个特征,以多个特征作为公钥进行加密的方案[2],引申出了基于属性加密的方案和(t,n)门陷结构,只有当解密密钥的属性个数大于等于t 时,才能解密成功,实现了属性之间的与(and)或(or)操作;2006年Goyal[3]提出了基于属性的密钥策略加密方案(KP-ABE),将访问控制结构部署到密钥中;2007年Bethencourt提出了基于属性的密文策略的加密方案(CP-ABE)[4],将访问控制结构部署到密文中;文献[4]提出了根据双曲线配对思想,实现了(t,n)门限秘密共享方案,给出了访问控制树的构建方法;文献[5]提出了基于属性的签名算法(ABS),密钥生成中心根据用户的属性生成解密密钥,发送给用户,对消息进行签名;文献[6]、[7]、[3]、[8]提出了基于ABE的应用方案。

本文使用指纹的特征作为身份信息,因为指纹提取时会有多个取值,所以使用了基于属性的方案,而不是基于身份的方案;又本文构建的隐私保护模型需要将访问结构部署在密文中,而不是密钥中,所以选择了CP-ABE方案,而不是KP-ABE方案;作为身份认证模型,签名似乎比加密更适合,但由于本文的私钥是用来解密,而不是签名,所以签名不适合本文的方案,故本文最后选择了CP-ABE方案。

本文创建了一个独立的移动客户端的身份认证APP,专门为本机上的所有需要身份认证的应用程序提供身份认证服务,本方案以指纹的多个特征值为属性构建了访问控制结构,巧妙地构建了一个CP-ABE的身份认证方案,以保护由于用户账户和密码泄露带来的隐私问题,当用户输入正确的用户名和密码后,对其进一步进行基于身份特征的身份验证,这里我们选择的身份特征为指纹信息,由于指纹信息多次采集时,表现得不具备唯一性,我们选择多个指纹特征作为指纹的特征信息,所以使用的身份验证方法为基于属性加密的身份验证,为了保护用户的指纹信息,我们将属性加密的公钥和私钥都在客户端APP中生成,从而阻止了服务器端获取指纹信息的可能性。

本文的主要贡献如下:

(1)对纹特征值的属性集和用户从客户端输入的指纹的计算都在客户端,而不是服务器端,从而保护了用户的指纹隐私;

(2)改进的算法中提出了一种动态解密密钥法,防止了由于密钥被截获,带来的冒充攻击;

(3)密钥中心在移动APP端,而不是服务器端,公共参数、主密钥和解密密钥都由移动APP 生成,充分保护了用户的隐私和安全;

(4)本方案只做身份认证,只为本移动端的用户(移动应用程序)服务,不需要管理大量的密钥,时间开销和内存开销都很小;

(5)本方案中的移动APP 独立于服务提供商的移动APP和客户端页面,可以为所有的移动服务提供身份认证,只需要为每一种服务生成公共参数和主密钥,而指纹特征值的属性集可以共用。

2 方案设计

本方案是在用户输入用户名和密码完全正确后,进行的下一步工作:身份认证,用户提前可以设置是否进行身份认证。

2.1 CP-ABE 算法思想

CP-ABE是一种将访问控制策略部署到密文中的属性加密方法,设有一套属性为S={si|i=1,2..n},(话没完,问作者)

2.2 本方案的体系结构

本方案中的角色包括:身份验证APP、可信第三方TTPS、服务提供商服务器端SP 以及位于本机的服务提供商客户端SP_APP,体系结构图如图1所示,TTPS是可信第三方服务器,负责生产和管理身份认证APP,每一个用户从TTPS下载安装了身份认证APP后,都要去TTPS 进行注册,然后由TTPS为其生成公钥和私钥,这里使用RSA 算法进行公钥和私钥的生成,身份认证APP 独自完成身份认证,然后将认证结果使用自己的公钥加密,传递给TTPS,TTPS对其进行签名,将签名后的结果发送给SP。

身份认证APP中存储着用户的指纹信息,在用户首次安装了此APP后,就对其进行指纹采集,然后存储,每一个需要进行身份认证的SP_APP,在首次访问身份认证APP 时,身份认证APP为其生成属性加密的主密钥MK,并将其保存,其工作流程为:

(1)用户访问SP,在登录界面输入用户名和密码,提交给SP;

(2)SP验证通过后,如果需要进行身份认证,则将请求转发给身份认证APP;

(3)身份认证APP 调用公钥PK;

(4)身份认证APP 生成一个随机数M,用公钥PK对其加密,生成密文C;

(5)身份认证APP 要求用户输入指纹,然后使用这个指纹和主密钥MK,生成解密密钥SK;

(6)身份认证APP 使用SK对C 进行解密;

(7)如果解密成功,则身份认证通过,发送一个成功的标志给TTPS,TTPS 签名后发送给SP;

本方案的基本想法分为两个阶段,分别为:验证码生成阶段和验证阶段。

图1 体系结构图

2.3 验证码生成阶段

构建一个移动端身份认证APP:

(1)Setup:作为密钥生成中心,输入一个秘密参数,生成公共参数PK和主密钥MK;

(2)GenAttributes:提取用户的多个指纹特征,形成属性集S(s1,s2个指纹特,基于S 构建的访问控制结构为s1||s2||构为特征,;其中(||表示逻辑或的关系),最终将会被部署到密文中,在第4 步中实现,访问门陷为(1,n),其中用户的指纹特征的提取因为需要时间,且不需要传输,可以离线提取,且一直保存在APP中,在加密时随时使用;

(3)GenRandom:生成一个随机数M;

(4)Encrypt(PK,MK,S,M):以S、MK、PK 作为输入,对M进行加密,生成密文M 行;

(5)SendToServer(PK,M,M:将PK和MK 发送给服务器端保存;

2.4 验证阶段

当服务器端请求客户端进行身份认证时,其过程为:

(6)Key Generation(MK,sk):身份认证APP 要求用户输入指纹sk(sk∈S),然后以MK、{sk}作为输入,生成解密密钥SK;

(7)SendToServer(SK):将SK 发送给服务器端;

(8)Decrypt(PK,MS,SK):服务器端对M服进行解密,如果成功,则证明用户输入的指纹和其输入的账户和密码是同一个人所有,如果不成功,则拒绝登录。

2.5 攻击模型

攻击模型1:假设Alice 已经拥有了Bob的用户名和密码,然后拦截了Bob的解密密钥SK,模拟移动APP,不进行SK 生成,直接将其发送给服务器端,攻击成功。

2.6 改进的方案

基于攻击1,本文提出了一种改进的身份认证方案,主要思路是:通过改变属性集S、访问控制结构和解密密钥的属性集A,生成动态解密密钥。主要方法为:(1)每次生成一个随机数x,将其加入属性集S中,改变访问控制结构,由原来的逻辑或关系变成逻辑或和逻辑与的关系;(2)每当用户退出登录时,服务器端要求身份认证APP 利用新的属性集S对M 用进行重新生成;(3)生成解密密钥的属性集变成了{sk,x}。

新方案对原有方案的影响主要表现在第一阶段的第(2)、(4)步和第二阶段的第(6)步,第一阶段的第(1)步,其他步骤不变,改进过程为:

第一阶段第(2)步改进后为(new2):将属性集S中添加一个随机数x,属性集S 变为S{s1,s2数变,改进过,由其构成访问控制结构为:s1||s2||制结构为:程为:,其中(||表示逻辑或,&&表示逻辑与),最终被部署到密文中,在第4)步予以实现,访问门陷变为(2,n),这一步不需要对指纹进行重新采集;

第一阶段第(4)步改进后为(new4);

第二阶段第(6)步改进后为(new6):Key Generation(MK,sk,x):身份认证APP 要求用户输入指纹sk(sk∈S),然后以MK、{sk,x}作为输入,生成解密密钥SK,解密属性集由{sk}变成{sk,x}。

改进后的方案由三部分组成,分别为:首次验证码生成阶段、每次退出时验证码重新生成阶段和每次登陆后的身份认证阶段,其执行过程分别为:

首次验证码生成阶段:

(1)(new2)(3)(new4)(5);

每次退出登录时验证码重新生成阶段:

(new2)(3)(new4)(5);

每次登录后的身份认证阶段:

(new6)(7)(8)

3 安全性分析

攻击模型2:假设Bob的身份认证APP 被攻击,指纹属性集S,MK,PK都被泄露给Alice,Alice 利用其中的一个指纹生成密钥,但因为不知道x的值,所以无法生成相应的解密密钥,从而证明本方案是安全的。

4 效率分析

本文中CP-ABE的实现是按照文献[6]中基于双线性配对原理实现的。

4.1 实验数据分析

文献[6]中得出了CP-ABE中每一阶段的时间效率,如表1所示,其中BP 表示双线性对计算,G1M 表示在群G中的标量乘法。

表1 文献[6]中CP-ABE计算次数

本方案的效率分析,如表2所示,其中计算次数等于BP+GM+其他。

表2 本方案各阶段的计算次数

文献[11]在3.2G 处理器的64 位的工作站上,在512 位的有限域屮,根据椭圆曲线:y=x3+x,通过pbc 工具包对双线性对计算所用的时间约为5.2ms,在群G1上所用的时间分别为0.6ms,根据表1,生成的对应关系如表3所示。

表3 文献[6]中CP-ABE计算次数和计算时间

根据表3中的数据,将时间分布到表2的每一个阶段,对应关系如表4所示。

通过实验分析可知,每次推出登录时消耗0.15ms,每次验证时大概耗时6.35ms都是可以接受的,所以通过本方案进行身份认证是可行的。

4.2 理论分析

文献[11]通过分析得出Key Generation 阶段的运时时间同解密属性集合中的属性数量呈同步线性增长;Encrypt 阶段的运行时间受访问树中的叶子节点多少的影响很大;Decrypt 阶段的运行时间和解密属性集合的大小和访问结构有关;而本方案中的解密属性集合{sk,x}的大小为2,访问结构的叶子节点大小为n+1,指纹特征个数小于10,所以,叶子节点大小小于11,访问结构中的逻辑关系为与和或,分别为:s1&&x||s2&&x||别为:结构有关,结构简单,所以从理论上分析,可以推断本方案的运行时间不会太长。

表4 本方案中计算时间和计算次数对应表

5 总结

本文构建了一种基于CP-ABE的移动身份认证方案,保护由于用户账户和密码泄露带来的隐私泄露,通过安全性分析和时间效率分析,证明本方案是可行的。

猜你喜欢

服务器端公钥解密
炫词解密
解密“一包三改”
Linux环境下基于Socket的数据传输软件设计
炫词解密
炫词解密
神奇的公钥密码
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计