发明名称 一种基于N维球面的身份认证方法
摘要 本发明公开了一种基于N维球面的身份认证方法,认证服务器初始化后接受用户注册和身份验证;当有新用户注册时,用户根据自身选定的口令通过安全单向函数计算出向量提交给认证服务器,认证服务器为该用户指定一个IDg作为用户身份的标识;认证服务器结合自身的秘密向量和用户提交的向量确定一个N维球面;认证服务器在这个N维球面随机选择若干不同点,组成加密文件,通过安全信道传递给用户;当用户要求进行身份认证时,利用自身口令和含有身份认证标识的加密文件进行运算,并将结果传递给认证服务器,认证服务器进行计算后检查确定是否接受该用户身份。本发明能有效地减少认证服务器存储信息、计算量,防止假冒认证服务器。
申请公布号 CN101510875B 申请公布日期 2012.02.22
申请号 CN200910038249.0 申请日期 2009.03.27
申请人 华南理工大学 发明人 唐韶华;张华;卢伯荣
分类号 H04L29/06(2006.01)I;H04L9/30(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 广州市华学知识产权代理有限公司 44245 代理人 杨晓松
主权项 一种基于N维球面的身份认证方法,包括以下步骤:(1)认证服务器初始化:认证服务器选择有限域GF(p)和安全单向函数f,同时选择若干秘密向量;其中GF(p)确定了群组运算所在的有限域,即所有的群组运算过程都在有限域GF(p)中进行,p是一个大素数;(2)用户注册:用户根据自身选定的口令PWg通过安全单向函数f计算出一个向量提交给认证服务器,认证服务器检查用户身份,为用户指定一个IDg作为用户身份的标识,各用户身份的标识是各不相同的;认证服务器结合自身的秘密向量和用户提交的向量唯一确定一个N维球面,如果不能构造这样的N维球面,则认证服务器重新选择该用户身份的标识IDg再进行计算;最后认证服务器通过安全信道将在这个N维球面随机选择的若干不相同的点,与用户身份的标识IDg、大素数p和安全单向函数f组成的加密文件传递给用户;(3)用户生成认证信息:当用户需要认证服务器识别其身份时利用认证服务器传回的加密文件,并结合自身选定的口令PWg,重新构造一个N维球面,同时选择这个N维球面上的几何特征作为认证信息传递给认证服务器进行验证;(4)认证服务器验证用户认证信息:认证服务器接受用户的认证信息同时利用自身的秘密向量重新构造一个N维球面,并计算用户约定使用的N维球面上的几何特征,最后将计算结果和用户提交的认证信息进行比较,如果相同则接受用户身份,否则拒绝用户身份;所述步骤(1)中的选择若干秘密向量是指认证服务器秘密选定N个线性无关的N维向量:(S11、S12、...、S1N),......,(SN1、SN2、...、SNN),其中Skl在有限域GF(p)中随机选择,k=1、...、N,l=1、...、N;认证服务器公开N值,但是这N个N维向量只能由认证服务器秘密保存,且一旦选定就不再改变;所述步骤(2)用户注册,具体包括以下步骤:(2.1)用户Ug选定一个口令PWg,其中Ug是下标为g的用户,PWg是下标为g的用户Ug所选定的口令,该口令由字母和数字组成,因字符串能转换为数字,以下所述的PWg是指转换以后的整数,下面各个步骤所有计算均在有限域GF(p)中进行;用户计算向量Ag0=(f(PWg),f(2×PWg),...,f(N×PWg))并传递给认证服务器;(2.2)认证服务器为该用户指定一个唯一的IDg,并计算N维球面方程:(a)认证服务器根据自身秘密保存的N个N维向量,计算N个向量: <mfenced open='' close='}'> <mtable> <mtr> <mtd> <msub> <mi>A</mi> <mrow> <mi>g</mi> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>g</mi> </msub> <mo>&times;</mo> <msub> <mi>S</mi> <mn>11</mn> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>g</mi> </msub> <mo>&times;</mo> <msub> <mi>S</mi> <mn>12</mn> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>,</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>g</mi> </msub> <mo>&times;</mo> <msub> <mi>S</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>A</mi> <mi>gN</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>g</mi> </msub> <mo>&times;</mo> <msub> <mi>S</mi> <mrow> <mi>N</mi> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>g</mi> </msub> <mo>&times;</mo> <msub> <mi>S</mi> <mrow> <mi>N</mi> <mn>2</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>,</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>g</mi> </msub> <mo>&times;</mo> <msub> <mi>S</mi> <mi>NN</mi> </msub> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced>(b)把Agi的坐标记为(ai1,ai2,...,aiN),其中i=1、2、...、N,再加上用户传递的Ag0,Ag0坐标记为(a01,a02,...,a0N),利用N+1个向量Ag0、Ag1、...、AgN构造N维球面方程,代入球面方程:(x1‑c1)2+(x2‑c2)2+...+(xN‑cN)2=R2其中(c1,c2,...,cN)为N维球面的中心,R为该N维球面的半径,(x1,x2,...,xN)是球面上任意点;得: <mfenced open='' close='}'> <mtable> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>01</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>02</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mn>0</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>11</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>12</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>N</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>N</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>NN</mi> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>然后分别将它们前一式减后一式,得到关于c1、c2、...、cN的线性方程组: <mfenced open='' close='}'> <mtable> <mtr> <mtd> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>11</mn> </msub> <mo>-</mo> <msub> <mi>a</mi> <mn>01</mn> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>a</mi> <mrow> <mn>0</mn> <mi>N</mi> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mrow> <mn>1</mn> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>-</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mrow> <mn>0</mn> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>N</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>a</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>NN</mi> </msub> <mo>-</mo> <msub> <mi>a</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mi>N</mi> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mi>Nj</mi> <mn>2</mn> </msubsup> <mo>-</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>如果在计算过程中,方程组的系数矩阵行列式为零,则重新选择IDg进行计算,这样保证方程组唯一确定该球面的中心C(c1,c2,...,cN);继而得到R2;然后就根据c1、c2、...、cN和R2确定球面方程,确定的球面方程就是下标为g的用户和认证服务器共享的秘密球面UCg,设该方程为:(x1‑c1)2+(x2‑c2)2+...+(xN‑cN)2≡R2 mod p(2.3)认证服务器随机选择秘密球面UCg上除Ag0、Ag1、...、AgN以外的N个点Bgi,Bgi中的i=1、2、...、N,Bgi=(bi1,bi2,...,biN);Bgi的每个坐标分量均在有限域GF(p)内找,Bgi的每个坐标具体求解如下:(a)找到N‑2个数对即二次剩余对(eiq,diq),使得eiq≡diq2 mod p,其中q=1、...、N‑2,eiq、diq是有限域GF(p)中满足eiq≡diq2 mod p条件的任意两个整数,并且满足bi1≡(di1+c1)mod pbi2≡(di2+c2)mod p......bi(N‑2)≡(di(N‑2)+cN‑2)mod p(b)再选择两对二次剩余对(eiz,diz),使得eiz≡diz2 mod p,其中z=N‑1、N,eiz、diz是有限域GF(p)中满足eiz≡diz2 mod p条件的任意两个整数,并且满足 <mrow> <msub> <mi>e</mi> <mrow> <mi>i</mi> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </msub> <mo>+</mo> <msub> <mi>e</mi> <mi>iN</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mo>-</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>y</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>N</mi> <mo>-</mo> <mn>2</mn> </mrow> </munderover> <msub> <mi>e</mi> <mi>iy</mi> </msub> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mrow>令bi(N‑1)≡(di(N‑1)+cN‑1)mod pbiN≡(diN+cN)mod p上述步骤(a)和步骤(b)是N≥3时适用的情况,当N=2时则直接使用步骤(b);重复N次计算,得到N个Bgi点,每次计算后验证一下,确保得到的N个点是互不相同的;(2.4)认证服务器把p、f、IDg和Bg1、Bg2、...、BgN以加密的形式保存在文件中并发送给用户,加密算法是使用现有的安全加密算法,用户保存加密后的文件,用户输入PIN码解密文件并得到所需信息,我们称该加密文件为“userInfo”;所述步骤(3)用户生成认证信息,具体包括以下步骤:(3.1)下标为g的用户Ug输入PIN码解密认证服务器传递的含有注册成功信息的加密文件“userInfo”,得到p、f、IDg以及Bg1、Bg2、...、BgN;(3.2)用户在客户端输入自身口令PWg,计算出Bg0=(f(PWg),f(2×PWg),...,f(N×PWg)),Ag0=Bg0;(3.3)用户根据Bg0加上文件“userInfo”中存储的N点Bg1、Bg2、...、BgN,一共N+1个点,利用这N+1个向量构造N维球面方程,重构出原来的秘密球面UCg;即将Bg0和Bg1、Bg2、...、BgN代入N维球面方程,得方程组: <mfenced open='' close='}'> <mtable> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>01</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>02</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mn>0</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>11</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>12</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mi>N</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mi>N</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mi>NN</mi> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>分别将它们前一式减后一式,得到关于c1、c2、...、cN的线性方程组: <mfenced open='' close='}'> <mtable> <mtr> <mtd> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>11</mn> </msub> <mo>-</mo> <msub> <mi>b</mi> <mn>01</mn> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>b</mi> <mrow> <mn>0</mn> <mi>N</mi> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>b</mi> <mrow> <mn>1</mn> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>-</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>b</mi> <mrow> <mn>0</mn> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mi>N</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>b</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mi>NN</mi> </msub> <mo>-</mo> <msub> <mi>b</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mi>N</mi> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>b</mi> <mi>Nj</mi> <mn>2</mn> </msubsup> <mo>-</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>b</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>于是求解线性方程组即得中心坐标C(c1,c2,...,cN);(3.4)用户计算w1=f(c1×t),w2=f(c2×t),...,WN=f(cN×t),其中t为时间戳,令Wg=(w1,w2,...,wN);(3.5)过Wg和C做直线L,在极少见的情况下,如果Wg和C相同,重新选择时间戳t,再计算Wg;直线L的参数方程如下: <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>y</mi> <mn>1</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>2</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>其中k为自变量参数,y1、...、yN为因变量;取L上除Wg和C之外的任意一点Mg(m1,...,mN),即k取除0和1外的有限域GF(p)中的任意数时对应的(y1,...,yN)值;(3.6)用户将认证消息Meg={t,IDg,Bg1,Mg}发送给认证服务器,其中,t为时间戳,IDg是代表下标为g的用户身份的标识,Bg1是存储在文件“userInfo”中的在N维球面UCg上的一个点,Mg是生成的直线L上除Wg和C之外的任意一点,同一个用户每次生成的认证消息中,t和Mg分别相对于之前生成的认证消息中的t和Mg是不同的,IDg和Bg1分别相对于之前生成的认证消息中的IDg和Bg1总是相同的;所述步骤(4)认证服务器验证用户认证信息,具体包括以下步骤:(4.1)认证服务器收到用户Ug的认证消息Meg,先检查时间戳是否有效,无效则认证失败,有效则进入下一步;(4.2)认证服务器根据IDg及自身秘密向量集计算向量Agi=(f(IDg×Si1),f(IDg×Si2),...,f(IDg×SiN))把Agi的坐标记为(ai1,ai2,...,aiN),其中i=1、2、...、N,这样N个向量再加上认证消息中的点Bg1,一共N+1个向量,于是认证服务器能够重构与用户共享的球面UCg,利用这N+1个向量构造N维球面方程,即将Bg1、Ag1、Ag2、...、AgN代入N维球面方程: <mfenced open='' close='}'> <mtable> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>11</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>12</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>11</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>12</mn> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>N</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>N</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>NN</mi> </msub> <mo>-</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&equiv;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>分别将它们的前一式减后一式,得到关于c1、c2、...、cN的线性方程组: <mfenced open='' close='}'> <mtable> <mtr> <mtd> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>11</mn> </msub> <mo>-</mo> <msub> <mi>b</mi> <mn>11</mn> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>b</mi> <mrow> <mn>1</mn> <mi>N</mi> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mrow> <mn>1</mn> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>-</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mrow> <mn>1</mn> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>N</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>a</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>NN</mi> </msub> <mo>-</mo> <msub> <mi>a</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mi>N</mi> </mrow> </msub> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mi>Nj</mi> <mn>2</mn> </msubsup> <mo>-</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msubsup> <mi>a</mi> <mrow> <mrow> <mo>(</mo> <mi>N</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mi>j</mi> </mrow> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>于是求解线性方程组的中心坐标C(c1,c2,...,cN);(4.3)认证服务器计算Wg=(f(c1×t),f(c2×t),...,f(cN×t)),重构过点Wg及中心C的直线L: <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>y</mi> <mn>1</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>2</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>(4.4)认证服务器验证点Mg(m1,...,mN)是否在直线L上,若是则通过认证,否则认证失败,验证的过程如下:把m1、...、mN分别代入直线方程的每一个子式进行计算,得到: <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>m</mi> <mn>1</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <msub> <mi>k</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mn>2</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <msub> <mi>k</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mi>N</mi> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <msub> <mi>k</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>则有: <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>k</mi> <mn>1</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>m</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <msub> <mi>k</mi> <mn>2</mn> </msub> <mo>&equiv;</mo> <mrow> <mo>(</mo> <msub> <mi>m</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>k</mi> <mi>N</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>m</mi> <mi>N</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mo>&times;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mi>N</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>N</mi> </msub> <mo>)</mo> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mi>mod</mi> <mi>p</mi> </mtd> </mtr> </mtable> </mfenced>若k1=k2=...=kN,则说明点Mg在直线L上,认证服务器接受用户身份;否则点Mg不在直线L上,用户身份验证失败。
地址 510640 广东省广州市天河区五山路381号
您可能感兴趣的专利