[0006] 本发明的目的是针对现有技术的不足,提供一种用于开放式不安全网络环境的具有反跟踪特性的安全身份认证方法。本发明在保证高效相互认证的同时,可保护用户的隐私数据,实现用户身份反跟踪的特性。
[0007] 本发明包括如下依次进行的阶段:
[0008] 阶段A:系统初始化;
[0009] 身份注册中心IRC进行系统初始化,生成私钥x和公钥Q,并选择系统参数{Ep(a,b),n,P},具体的:
[0010] 首先身份注册中心IRC在有限素数域Fp上选择一条椭圆曲线Ep(a,b);
[0011] 然后在曲线上选择一个阶为n的基点P和随机数x,并计算Q=x·P;
[0012] 最后IRC公开系统参数{Ep(a,b),n,P},并将Q作为公钥,将只有其自身知道的x作为私钥;
[0013] 阶段B:用户身份注册;
[0014] 用户生成必要参数,向IRC申请注册身份,IRC使用用户发送的信息生成IRC认证密钥,并存储用户相关信息以备用户申请进行信息恢复,最后用户存储双方共同生成的系统认证密钥;
[0015] 阶段C:应用服务器身份注册;
[0016] 应用服务器向IRC申请注册身份,IRC使用应用服务器发送的信息生成IRC认证密钥,并存储应用服务器身份以备追责,最后应用服务器存储双方共同生成的系统认证密钥;
[0017] 阶段D:反跟踪相互认证和密钥协商;
[0018] 用户进行本地身份认证,若通过,则向应用服务器发起获取参数的请求,之后将身份验证值、时间戳信息发送给应用服务器,应用服务器验明用户身份后,生成会话密钥并用对称加密算法进行加密,之后将身份验证值、时间戳、会话密钥密文信息发送给用户,用户验明应用服务器身份后,计算获得对称加密密钥并解密出会话密钥。
[0019] 阶段B的用户身份注册,具体实现如下:
[0020] 定义1:Pxor(A,B)表示两点之间的异或计算,如公式(1)所示;
[0021] A,B都为点 (1)
[0022] 定义2:Pxor(a,B)表示数值和点之间的异或计算,如公式(2)所示;
[0023] a为数字且B为点 (2)
[0024] 1.用户生成参数:
[0025] 1‑1.用户Ui选择身份UIDi、密码PWi以及参数Ei作为恢复信息时使用的额外证书,并向智能设备SDi中输入{UIDi,PWi,Ei};SDi向IRC发送初始化请求以获取系统参数{Ep(a,b),n,P}和IRC公钥Q;
[0026] 1‑2.智能设备SDi生成随机参数noncei=(r1i,r2i),其中r1i、r2i都是随机整数;接着计算中间参数us er_secret= (mr1i ,mr2i) ,其中且mr1i,mr2i均起到对随机参数noncei的保护作用;计
算rIDi=h(UIDi||r1i)作为IRC认证密钥,EIDi=h(UIDi||Ei)作为用户的假名,VL=h(UIDi||h(PWi||r1i)||r2i)作为用户的本地身份验证值;
[0027] 2.交换IRC认证密钥:
[0028] 2‑1.智能设备SDi选取一个参数点MPi=(EIDi||mr1i,rIDi||mr2i)和一个随机数rtmp传输用户信息;SDi计算中间参数M1=PXor(MPi,rtmp·Q)和M2=rtmp·P,并将{M1,M2}发送给IRC;
[0029] 2‑2.IRC使用获取的中间参数M1和M2,计算还原出参数点MPi=PXor(M1,x·M2),并从点坐标中得到{EIDi,rIDi,user_secret},接着在数据库的合法用户列表legal_user_list中搜索条目索引EIDi;如果EIDi已经存在,IRC要求用户选取其他的假名;反之,IRC将在数据库中添加{EIDi,user_secret}作为身份恢复信息,计算 作为用户认证密钥,计算中间参数 并将{M3}发送给SDi;
[0030] 2‑3.SDi收到中间参数M3后,计算用户认证密钥 并在其内存中存储
[0031] 阶段C的应用服务器身份注册,具体实现如下:
[0032] (1)服务器生成参数:
[0033] (1‑1)应用服务器Sj选择身份SIDj,然后向IRC发送初始化请求以获取系统参数{Ep(a,b),n,P}和IRC公钥Q;
[0034] (1‑2)Sj生成随机参数noncej=(r1j,r2j),其中r1j,r2j都是随机整数,计算中间参数 计算rSIDj=h(SIDj||r1j)作为应用服务器Sj的假名和IRC认证密钥;
[0035] (2)交换IRC认证密钥:
[0036] (2‑1)应用服务器Sj选取一个参数点MPj=(rSIDj,mr2j)和一个随机数rtmp传输应用服务器信息;Sj计算中间参数M1=PXor(MPj,rtmp·Q)和M2=rtmp·P,并将{M1,M2}发送给IRC;
[0037] (2‑2)IRC计算还原出参数点MPj=PXor(M1,x·M2)并从点坐标中得到{rSIDj,mr2j},接着在数据库的合法服务器列表legal_server_list中搜索条目rSIDj;如果rSIDj已经存在,IRC要求应用服务器选取其他的假名;反之,IRC将在表中添加rSIDj,计算作为应用服务器认证密钥,计算中间参数并将{M3}发送给Sj;
[0038] (2‑3)Sj收到中间参数M3后,计算应用服务器认证密钥并在数据库中存储
[0039] 阶段D的反跟踪相互认证和密钥协商,具体实现如下:
[0040] I.提取参数和本地认证:
[0041] (1)用户在智能设备SDi中输入身份UIDi、密码PWi、SDi,从中间参数user_secret中获取随机参数noncei=(r1i,r2i),并且验证本地校验值VL=h(UIDi||h(PWi||r1i)||r2i);如果未通过验证,终止本次会话;反之,SDi计算用户公钥 并向Sj发送请求;
[0042] (2)Sj收到请求后,计算其假名和IRC认证密钥rSIDj=h(SIDj||r1j),应用服务器公钥 并向SDi发送
[0043] II.服务器验证用户IRC认证密钥
[0044] (3)SDi在内存中搜索rSIDj,获取对应条目 并验证从Sj收到的如果该条目不存在,令历史认证校验值Vold=None;如果条目存在且 一致,继续会话;否则终止该过程;
[0045] (4)SDi选取两个挑战k和t,计算中间参数M2=k·h(UIDi||r1i), 计算Ai=h(UIDi||h(PWi||r1i)||rSIDj)作为用
户的假名, 作为假名保护参数, 作
为用户的验证值;接着,SDi向Sj发送 其中T1为时间戳;
[0046] (5)Sj在T2时间收到消息,首先检查消息的有效性T2‑T1,如果超过设定阈值则拒绝请求;反之,Sj计算中间参数 用户假名用户验证值 如果 Sj则确认Ui曾被IRC授
权;否则,终止该会话;
[0047] III.服务器验证用户历史上下文及交换密钥:
[0048] (6)如果服务器收到的历史认证校验值Vold为None,且Ai在数据库中不存在,Sj随机选取一个新的会话密钥sk和随机数r;否则,转到步骤(7);
[0049] (7)如果服务器收到的历史认证校验值Vold不为None,Sj在数据库中搜索Ai读取条old old目{Ai,r ,h(sk )},并计算历史加密密钥 历史会话密钥
old* old
之后,Sj验证h(sk )=h(sk )是否成立,若成立,Sj则
确认Ui是上次会话中与其进行安全通信的认证用户,并生成一个新的会话密钥sk和随机数r;
[0050] (8)Sj计算加密密钥 加密会话密钥[sk]K=Sym.EncK(sk),中间参数 和 并将 作
为应用服务器的验证值, 作为会话密钥的验证值;接
着,Sj向SDi发送{M4,M5,Vs,Vsk,[sk]K,T3},其中T3为时间戳;
[0051] IV.用户两次认证服务器及密钥协商:
[0052] (9)SDi在T4时间收到消息后,首先检查消息的有效性T4‑T3,如果超过设定阈值则拒绝请求;反之 ,SDi计算历史加密密钥 历史会话密钥应 用服务 器验 证值
如果 Ui则确认Sj经过IRC授权,并且确实参与了上一次通信;需要注意
的是,只有拥有相应IRC认证密钥的Sj才能计算出有效的M1值,此次为第一次认证;只有Sj才old
拥有能够通过h(sk )值验证的会话密钥,此次为第二次认证;
[0053] (11)SDi计算参数 和会话密钥验证值如果 则新的会话密钥通过验证;否则,终
止该会话;
[0054] (11)SDi计算加密密钥 和会话密钥sk=Sym.Deck([sk]K),得到sk以在本次会话中进行安全通信;接着,SDi在内存中更新 其中历史认证
old old
校验值Vold=[sk]K,Sj也在数据库中将{Ai,r ,h(sk )}更新为{Ai,r,h(sk)}。
[0055] 本发明具有以下优点:
[0056] (1)去中心化的安全。为了提高系统对单点失效的抵抗力,协议的认证过程和机密性分布在用户、应用服务器和身份注册中心IRC三方之上,即实现了去中心化的安全。具体而言,在这种情况下就算IRC被攻破也不会造成毁灭性的后果,因为IRC既没有直接参与认证过程,也没有存储核心隐私。此外,就算攻击者能够成功攻破一个用户或一个应用服务器,他/她也无法依此对其他实体进行连锁攻击。
[0057] (2)无关联的假名。为了防止开放式网络环境中的追踪攻击,协议在用户与IRC、应用服务器通信的过程中,为用户应用了多种无关联的假名以隐藏其身份。在协议中,用户的真实ID没有出现在信息传输或应用服务器的计算过程中。当一个用户和不同应用服务器通信时,也使用不同的随机假名,因此攻击者无法推测出用户的行为,也无法重现用户的网络足迹。
[0058] (3)历史上下文和两次相互认证。为了抵抗冒充攻击,协议在用户和应用服务器的相互认证过程中,引入了前次通信中的会话密钥作为历史上下文进行认证。在此认证之前,用户用其和IRC共同生成的部分认证密钥向应用服务器证明自己在IRC的有效性,IRC也会向用户进行类似证明。这种两次相互认证增强了通信双方之间的信任。