本发明涉及数据加密与匿名身份认证技术领域,具体地说是一种适用于移动网络中保护用户身份隐私及数据机密性的匿名认证方法。
背景技术:
在一般需要身份匿名化认证的客户服务器网络模型中,主要存在两种不同的参与方:客户端以及服务器。客户端向服务器请求服务时,只有在确认客户端身份的合法性之后,服务器才能为该客户端提供服务。目前客户端身份匿名性主要体现在两个方面:一方面,只对网络中的其他用户进行匿名,对服务器公布身份信息;另一方面,不仅对网络的其他用户进行匿名,也对服务器匿名。显然,后者的隐私性级别更高。应用场景图如图1所示,如在无线体域网远程医疗应用中,作为服务提供方的医疗中心,对于病患的真实身份并不感兴趣,却对生理数据感兴趣。另一方面,在此模型中,病患需要更高的隐私性,即使是辅助医疗也希望不泄露自己的身份隐私。匿名认证以及密钥协商协议可以使客户端在公开网络中能够隐藏自己的身份,并将数据加密传输到特定的远程服务提供方。
已有很多匿名认证协议都提供了用户匿名性与相互认证。这些方案的计算主要放在请求服务的客户端和提供服务的服务器端,而且这些方案中用户匿名性主要体现在:
1)使用假名来隐藏用户的真实身份,为了确保假名的无规律性,用户需要存储一个假名池,以及与假名相对应的密钥。显然,这样会大大增加计算能力和存储能力都较低的客户端的存储代价;
2)服务器维护一个验证表,客户端尽管在本地计算中隐藏自己的身份,服务提供方也能够使用验证表来验证请求服务用户的合法身份。但是验证表的维护不仅会增加服务器的存储代价,而且会存在信息不同步的风险。
目前,基于假名池的方案占主流。但是这样会导致存储代价大大增加。这对于存储能力受限的移动客户端来说,会是移动网络发展的一个瓶颈。此外,这些假名只能有限次使用,而每次请求服务需要消耗一个假名,所以需要频繁更新用户假名池,而更新假名池需要消耗很多的系统资源。
技术实现要素:
本发明为了解决上述现有技术存在的不足之处,提供一种基于安全硬件的匿名认证方法,以期能有效的解决现有移动网络中客户端匿名认证过程中存储代价和计算代价高以及认证效率低的问题,同时提高客户端的隐私性、以及应用服务器的安全性。
本发明为解决技术问题所采用的技术方案是:
本发明一种基于安全硬件sh的匿名认证方法,是应用于一个可信中心kgc、若干个移动客户端和若干个应用服务器构成的互联网环境中,所述可信中心kgc用于生成和管理密钥;记任意一个移动客户端为c、任意一个应用服务器为s;其特点是,在所述若干个应用服务器的网关处设置一个安全硬件sh,并基于所述安全硬件sh按如下步骤进行匿名认证:
步骤1、所述可信中心kgc生成并公布系统参数,同时,生成所有移动客户端、应用服务器和安全硬件sh的私钥和公钥;
步骤2、所述任意一个移动客户端c根据所述系统参数、自身的私钥以及所需请求服务的应用服务器s的公钥生成签名σ;
步骤3、所述移动客户端c根据密钥协商协议和所述系统参数生成与所述安全硬件sh共享的密钥k,并利用所述密钥k对所述签名σ进行加密,形成密文ek(σ)并发送给所述安全硬件sh;
步骤4、所述安全硬件sh根据所述密钥协商协议和所述系统参数生成与所述移动客户端c共享的密钥k,并利用所述密钥k对所述密文ek(σ)进行解密,得到所述签名σ;
步骤5、所述安全硬件sh利用自身的私钥和所述移动客户端c的公钥对所述签名σ进行变换,得到重签名σ′,并发送给所述应用服务器s;
步骤6、所述应用服务器s利用自身的私钥对所述重签名σ′进行验证;当验证通过时,表示所述移动客户端c签名σ为有效签名,则所述应用服务器s根据所述密钥协商协议得到与所述移动客户端c共享的会话密钥key,并利用所述会话密钥key生成认证码mackey及相关消息后发给所述安全硬件sh;
步骤7、所述安全硬件sh转发所述认证码mackey及相关消息给所述移动客户端c;
步骤8、所述移动客户端c根据所述系统参数和所述相关消息得到所述会话密钥key,并利用所述会话密钥key对所述认证码mackey进行验证;当验证通过时,从而能利用所述会话密钥key得到所述应用服务器s的后继服务。
与现有的匿名认证技术相比,本发明的有益效果体现在:
1.相对于利用假名池与验证表来实现客户端匿名性的已有工作来说,本发明在两方匿名认证模型中引入一个安全硬件,安全硬件将移动客户端的签名消息直接转换为其自己的签名,使得服务器只能验证来自安全硬件的签名,从而实现了客户端的匿名性,并有效降低了存储能力有限的移动客户端的存储代价以及服务器端的维护代价。
2.本发明中客户端产生的签名只有客户端指定的应用服务器才能进行验证,即使签名消息被截获,攻击者也无法验证签名的合法性,进而无法辨别签名者的身份,从而提高了系统的安全性。
3.本发明中通过引入安全硬件来承担客户端的部分运算工作,相对于已有工作来说,有效降低了计算能力有限的客户端的计算代价,从而在一定程度上提高了认证效率。
4.本发明中,客户端只需要发送一个签名消息至安全硬件,不需要因为隐藏身份而产生额外的参数,所以相对于已有匿名认证工作来说,通信代价也较低。
5.本发明中,服务器端只验证来自安全硬件的签名,而客户端的签名转换工作在安全硬件上完成,所以安全硬件的引入使得网络攻击大部分集中到安全硬件,反而使得服务器更安全。
附图说明
图1为本发明应用场景图;
图2为本发明的网络模型图;
图3为本发明的消息签名及认证的详细流程图。
具体实施方式
如图1中所示,本实施例中,一种基于安全硬件sh的匿名认证方法,是应用于一个可信中心kgc、若干个移动客户端和若干个应用服务器构成的互联网环境中,该应用环境中具体的实体模型如图2所示为:①可信中心kgc。一种安全服务器,初始化整个系统,为系统用户提供安全服务,用于生成和管理密钥。②记任意一个移动客户端为c。一般为移动智能设备,如智能手机,ipad等。特点为可移动,方便携带,存储空间有限,计算能力低。接入服务之前需要到kgc处注册,并获取相关安全参数。③记任意一个提供服务的应用服务器为s。为系统中用户提供远程服务,如远程健康监护、数据查询等。④安全硬件sh。并布置在若干个应用服务器的接入网关处,相当于一个黑盒。该硬件在可信中心注册后,只执行可信中心事先烧制的程序,程序不可篡改,其他参与方也无法对其进行更改,只能进行计算。
具体实施中,一种基于安全硬件sh的匿名认证方法是按如下步骤进行:
步骤1、可信中心kgc生成并公布系统参数,同时,生成所有移动客户端、应用服务器和安全硬件sh的私钥和公钥。
(1.1)kgc初始化系统参数。给定一个安全参数l,kgc建立有限域
a)确定大素数p的位长d;根据具体的安全需求,如设定安全参数l=1024,则在椭圆曲线密码体制中,d=160;
b)随机生成一个位长为d比特的末位为1的奇数q;如160比特solinas素数q=2159+217+1;
c)采用素数检测方法判断q是否为素数,若是则令p=12qr-1,否则重新执行步骤b。
(1.2)kgc定义两个阶为q的乘法循环群g1和g2。并由此定义一个双线性映射e:g1×g1→g2,假设g和h为群g1的生成元,其中基于离散对数问题是难解的。假设
a)双线性:对于任意的g1,g2∈g1,
b)非退化性:
c)可计算性:存在有效地算法,对于
(1.3)kgc选取一个随机数
(1.4)kgc将{p,q,g,h,e,ppub,ps,psh,g1,g2,h1,h2,h3}作为系统公共参数,并将这些参数预加载到客户端应用软件中。
(1.5)请求服务的客户端c在正常使用软件之前都需要在可信中心kgc处注册,并获取相应的密钥。具体的注册过程如下:
(1.5.1)客户端向kgc提交自己的唯一标识符,即真实身份idc∈{0,1}*,如电子邮箱、身份证号等,kgc检验身份的合法性,若合法,选取一个随机数
(1.5.2)客户端收到{rc,dc}后,验证等式
是否成立,若成立,则接受dc,并将dc作为自己的私钥,将rc作为自己的公钥参数,将其真实身份idc作为自己的公钥。将{idc,rc,dc}在本地进行存储。
步骤1中的密钥安全性基于离散对数问题(discretelogarithmproblem,dlp):给定元素ga∈g1,求解
步骤2、任意一个移动客户端c根据系统参数、自身的私钥以及所需请求服务的应用服务器s的公钥生成签名σ;
(2.1)c生成请求消息m∈{0,1}*,定义m={m||tc'},其中tc=gs,
(2.2)c生成签名σ=dc+h2(m)·s·h3(tc,ps)(modp);
步骤2中的签名σ不可伪造性基于dlp。在随机语言模型性,签名的伪造形式可为:rc=ga,tc=gs=gu·rcv,σ=u-u/v(modp),e1=h2(m,tc),e2=h3(tc,ps)=1/w(modp),e3=h1(idc,rc)=u/x(modp),得到σ与原签名形式相同,所以利用分叉引理,当两个伪造原始签名(m,tc,σ),(m',tc',σ')满足m=m',tc=tc'时,挑战者可以计算σ=a+e3·x+e1·s·e2,σ'=a+e3'·x+e1'·s'·e2',由e1e2≠e1'e2'推出σ≠σ',所以得到等式
由此可以解决ecdlp,所以原始签名不可伪造。
步骤3、移动客户端c根据密钥协商协议和系统参数生成与安全硬件sh共享的密钥k,并利用密钥k对签名σ进行加密,形成密文ek(σ)并发送给安全硬件sh;具体实施如图3虚线框步骤4所示;
(3.1)c选取随机数
(3.2)c选取当前时间tc,将{ct,y,tc}发送到安全硬件sh处。
步骤4、安全硬件sh根据密钥协商协议和系统参数生成与移动客户端c共享的密钥k,并利用密钥k对密文ek(σ)进行解密,得到签名σ;如图3虚线框步骤4所示;
(4.1)sh收到{ct,y,tc}后,首先检查t-tc≤δt是否成立,若不成立,则认为该消息在时间上失效,丢弃该消息,否则,执行4.2;
(4.2)sh计算
步骤5、安全硬件sh利用自身的私钥和移动客户端c的公钥对签名σ进行变换,得到重签名σ′,并发送给应用服务器s;具体实施如图3虚线框步骤5所示;
(5.1)sh计算重签名密钥
(5.2)sh生成重签名σ'=rk·gσ;
(5.3)sh选取当前时间tsh,将{σ',m,tsh}发送给服务器s。
步骤5中的重签名σ′的不可伪造性基于计算性diffie-hellman问题(computationdiffie-hellmanproblem,cdh问题):给定ga∈g1,gb∈g1,求解gab∈g1。在随机预言模型下,由原始签名不可伪造性可知,rc=ga,rsh=gb,令
步骤6、应用服务器s利用自身的私钥对重签名σ′进行验证;当验证通过时,表示移动客户端c签名σ为有效签名,则应用服务器s根据密钥协商协议得到与移动客户端c共享的会话密钥key,并利用会话密钥key生成认证码mackey及相关消息后发给安全硬件sh;具体实施如图3虚线框步骤6所示;
(6.1)s收到{σ',m,tsh}后,首先检查t-tsh≤δt是否成立,若不成立,则认为该消息在时间上失效,丢弃该消息。否则,执行6.2;
(6.2)s解析m={m||tc'}得到tc',并计算
(6.3)s验证等式
是否成立。若验证不通过,丢弃消息,否则,执行6.4。
(6.4)s选取随机数
(6.5)s将{ts,mackey(ts)}发给安全硬件sh。
步骤6中等式(3)的正确性在于
步骤6中的会话密钥安全性基于cdh问题。采用diffie-hellman密钥协商方式,而diffie-hellman密钥协商协议的安全性基于cdh问题。
步骤7、安全硬件sh转发认证码mackey及相关消息给移动客户端c;
(7.1)安全硬件直接转发{ts,mackey(ts)}给客户端c。
步骤8、移动客户端c根据系统参数和相关消息得到会话密钥key,并利用会话密钥key对认证码mackey进行验证;当验证通过时,从而能利用会话密钥key得到应用服务器s的后继服务。
(8.1)c利用ts生成key=h3((ts)s,tc·ts),利用key检验mac码mackey(ts)的合法性。若合法,将key作为后面与s通信的会话密钥。
从步骤5-8中可以看出,安全硬件sh对移动客户端c的签名进行转换,并将转换后的重签名发给指定应用服务器s,只有指定应用服务器s才能验证重签名的有效性,进而证明移动客户端签名的有效性,以此实现移动客户端c的匿名性。
下面通过实施例中的匿名认证中所需的计算代价、存储代价以及通信代价来进一步详细说明本发明。
实施例:
基于验证表的已有方案中,比如liu等人的方案。基于假名池的已有方案中,比如zhao的方案。为达到rsa1024比特安全级别,双线性映射e:g1×g1→g2中的q阶群g1定义在椭圆曲线y2=x3+x(modp)上,其中p为512比特的大素数,q为160比特的solinas素数。其中一些主要的密码学操作定义如下,tp表示一次双线性配对操作的运行时间,te表示一次幂操作的运行时间,tsm表示一次基于配对的标乘操作的运行时间,th表示一次哈希到点的哈希操作的运行时间。在inter(r)pxa270624mhz的处理器、linux系统的个人数字设备硬件环境中,使用miracl密码函数库得到的各个操作的运行时间结果如下:tp=96.20ms,te=53.85ms,tsm=30.67ms,th=14.62ms。在windowsxpos系统,piv3.0ghz处理器和512mb内存的硬件环境中,使用miracl密码函数库得到的各个操作的运行时间结果如下:tp=20.04ms,te=13.21ms,tsm=6.38ms,th=3.04ms。
a)计算代价比较
将本发明中的认证过程移动客户端产生主要的计算代价与已有实施例进行对比。因为生成密钥标记操作可以离线进行,因此不计入在线计算代价。在liu等人安全级别较高的第二个方案中,生成消息的签名需要1个幂操作以及2个标乘操作,因此,liu等人的第二个方案中客户端所需要的主要计算代价为2tsm+1te=115.19ms。在zhao的方案中,生成消息的签名需要1个标乘操作,因此,zhao的方案中客户端所需要的主要计算代价为1tsm=30.67ms。本发明中生成消息的签名需要1个标乘操作。因此,本发明中客户端所需要的主要计算代价为1tsm=30.67ms,与zhao方法的计算代价持平,相比liu等方法较低。
b)存储代价比较
将本发明中的移动客户端与服务器端需要的存储代价与已有实施例进行对比。如表1所示。
表1本发明与实施例存储代价比较结果
在liu等人安全级别较高的第二个方案中,移动客户端需要存储
c)通信代价比较
将本发明中的移动客户端与服务器端认证过程中产生的通信代价与已有实施例进行对比。在liu等的第二个安全加强的方法中,需要发送(v,u,tc,t',i')给服务器,其中u,t',i'为g1群中的三个元素,v由哈希函数产生,tc为时间戳。因此,liu等产生的通信代价为160+1024+32+1024+1024=3264比特。在zhao的方法中,需要发送
综上所述,虽然本发明客户端的计算代价与基于假名池的zhao方法相同,通信代价比zhao方法稍高,但是本发明的移动客户端的存储代价相比zhao方法低。虽然本发明通信代价相比liu方法稍高,但本发明的服务器的存储代价相比liu方法低。另外,本方案的服务器安全性也更高,所以,本发明很好的解决了现有移动网络中客户端匿名认证过程中存储代价和计算代价高以及认证效率低的问题,而且能提供更高的安全性。