主权项 |
一种面向移动终端的动态多属性多级别的身份认证方法,其特征在于:选取一个安全的消息认证算法MA,在移动终端中设有和后台数据库DB共享的固化在芯片内部的密钥S,并在后台数据库中存储移动终端的两个不同密钥,移动终端用户拥有以下数据:消息认证算法MA模块和AES加密模块, n个属性att<sub>1</sub>、att<sub>2</sub>…att<sub>n</sub>和固化密钥S,用户共享密钥key<sub>1</sub>和 key<sub>2</sub>;后台数据库DB拥有以下数据:消息认证算法MA模块和AES加密模块,移动终端的n个属性<i>att<sub>1</sub>, att<sub>2</sub></i><i>…</i><i>att<sub>n</sub></i>和固化密钥S,用户共享密钥<i>key<sub>1</sub></i>和 <i>key<sub>2</sub></i>;在认证过程中,(1). 终端阅读器向需要认证的移动终端用户发送一个随机数R<sub>d</sub>和特征值C;(2). 移动终端用户自行生成一个随机数<i>R<sub>t</sub></i>,并根据特征值<i>C</i>判断认证级别e<sub>i</sub>,i=1,2,3;(3). 移动终端用户调用消息认证算法模块,计算σ<sub>1</sub>=h<sub>s</sub>(e<sub>i</sub>,R<sub>d</sub>,R<sub>t</sub>),并分为左右两部分:σ<sub>1L</sub>和σ<sub>1R</sub>,若认证级别为e1则存储σ<sub>1R</sub>,否则不予存储;同时将σ<sub>1</sub>、 R<sub>t</sub>、认证级别e<sub>i</sub>和移动终端ID号发送给终端阅读器;(4). 终端阅读器将σ<sub>1L</sub>、R<sub>d</sub>、 R<sub>t</sub>、认证级别e<sub>i</sub>和移动终端ID号发送给后台数据库DB;(5). 后台数据库DB通过ID号查找出相应的固化密钥<i>S</i>,调用消息认证算法MA模块,计算σ<sub>1</sub>’=h<sub>s</sub>(e<sub>i</sub>’,R<sub>d</sub>,R<sub>t</sub>),通过对比σ’<sub>1L</sub>和σ<sub>1L</sub>是否相同,验证移动终端用户的合法性,如相同,则移动终端用户验证通过;此时根据认证级别执行相应的操作;(6). 若认证级别为e1,则执行如下操作:(7). 后台数据库DB将σ’<sub>1R</sub>发送给移动终端用户;(8)移动终端用户在收到σ’<sub>1R</sub>后,将其与σ<sub>1R</sub>进行对比,如通过则验证通过,否则验证失败,结束通信;(9). 若认证级别为e2,则执行如下操作:(10). 后台数据库DB按照相关要求对移动终端用户进行认证控制,选取一个随机数R<sub>b</sub>和门限值t,并将R<sub>b</sub>和t发送给移动终端用户;(11). 移动终端用户在收到R<sub>b</sub>和门限值t后,选定一个t‑1次插值多项式<i>f</i>(x)=a<sub>t‑1</sub>x<sup>t‑1</sup>+ a<sub>t‑2</sub>x<sup>t‑2</sup>+…+a<sub>1</sub>x<sup>1</sup>+a<sub>0 </sub>mod q,其中,q为一个大素数,Z<sub>q</sub>为整数域,a<sub>0</sub>,a<sub>1</sub>,…,a<sub>t‑1 </sub>mod q,输入移动终端的n个属性att<sub>1</sub>、att<sub>2</sub>…att<sub>n</sub>,得到对应值 <i>f</i>(att<sub>1</sub>)、<i>f</i>(att<sub>2</sub>)…<i>f</i>(att<sub>n</sub>),调用AES加密模块,计算c<sub>i</sub>=D<sub>s</sub>(<i> f</i>(att<sub>i</sub>)),计算σ<sub>2</sub>=h<sub>key1</sub>(a<sub>0</sub>, σ<sub>1</sub>),将{att<sub>1</sub>, att<sub>2</sub>,…, att<sub>n</sub>, c<sub>1</sub>,c<sub>2</sub>, …, c<sub>n</sub>, σ<sub>2</sub>}发送给后台数据库DB;<sub />(12). 后台数据库DB在收到相关数据后,将属性att<sub>1</sub>、att<sub>2</sub>…att<sub>n</sub>同后台数据库中存储的属性进行对比,如吻合的属性数目小于t个或必需属性不包含在内,则拒绝认证,否则调用AES模块对c<sub>i</sub>进行解密,并用拉格朗日插值多项式计算出a<sub>0</sub>’,同时计算σ<sub>2</sub>’= h<sub>key1</sub>(a<sub>0</sub>’,σ<sub>1</sub>),并将σ<sub>2</sub>’与σ<sub>2</sub>进行对比,如吻合则验证通过,否则验证失败,结束通信;(13). 若认证级别为e3,则执行如下操作:(14). 后台数据库DB按照相关要求对移动终端用户进行认证控制,选取一个随机数R<sub>b</sub>和门限值t,并将R<sub>b</sub>和 t发送给移动终端用户;(15). 移动终端用户在收到R<sub>b</sub>和门限值t后,选定一个t‑1次插值多项式<i>f</i>(x)=a<sub>t‑1</sub>x<sup>t‑1</sup>+ a<sub>t‑2</sub>x<sup>t‑2</sup>+…+a<sub>1</sub>x<sup>1</sup>+a<sub>0 </sub>mod q,其中,q为一个大素数,Z<sub>q</sub>为整数域,a<sub>0</sub>,a<sub>1</sub>,…<sub></sub>,a<sub>t‑1 </sub>mod q,输入移动终端的n个属性att<sub>1</sub>、att<sub>2</sub>…att<sub>n</sub>,得到对应值<i>f</i>(att<sub>1</sub>)、<i>f</i>(att<sub>2</sub>)…<i>f</i>(att<sub>n</sub>),调用AES加密模块,计算c<sub>i</sub>=D<sub>s</sub>(<i> f</i>(att<sub>i</sub>)),σ<sub>2</sub>=<i>h<sub>key1</sub></i>(a<sub>0</sub>,σ<sub>1</sub>,key<sub>2</sub>),将{att<sub>1</sub>、att<sub>2</sub>…att<sub>n</sub>,c<sub>1</sub>,c<sub>2</sub>,…,c<sub>n</sub>,σ<sub>2</sub>}发送给后台数据库DB;(16). 后台数据库DB在收到相关数据后,将属性att<sub>1</sub>、att<sub>2</sub>…att<sub>n</sub>同后台数据库DB中存储的属性进行对比,如吻合的属性数目小于<i>t</i>个或必需属性不包含在内,则拒绝认证,否则调用AES模块对c<sub>i</sub>进行解密,并用拉格朗日插值多项式计算出a<sub>0</sub>’,同时计算σ<sub>2</sub>’=h<sub>key1</sub>(a<sub>0</sub>’,σ<sub>1</sub>,key<sub>2</sub>),并将σ<sub>2</sub>’与σ<sub>2</sub>进行对比,如吻合则验证通过,否则验证失败,结束通信。 |