发明名称 一种P2P服务请求用户身份认证方法
摘要 本发明涉及一种P2P服务请求用户身份认证方法。现有P2P网络认证方式存在一定的局限性。本发明方法的步骤是:用户注册,就是用户向服务器提交注册请求后获得合法的账号,通过该账号,用户可以登陆到P2P网络获取服务;登录认证,就是用户在装有客户端软件的主机上通过输入用户名和密码登陆到认证服务器并进行身份认证,登录认证包括本地登录和服务器验证;服务请求认证,就是收到来自P2P网络的资源服务请求的用户,通过向认证服务器进行查询,对发出该请求的用户的身份进行认证;本发明方法对用户的身份认证过程采用了双元认证,安全系数较高,可以防止同一个账户同时多人登陆;另外认证服务器中并没有需要保存用户的密码,用户的账号和密码不会泄露。
申请公布号 CN101697540A 申请公布日期 2010.04.21
申请号 CN200910152784.9 申请日期 2009.10.15
申请人 浙江大学 发明人 陈惠芳;谢磊;陈高翔;沈佳峰
分类号 H04L29/06(2006.01)I;H04L29/08(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 1.一种P2P服务请求用户身份认证方法,其特征在于该方法的具体步骤是:步骤(1).用户注册;用户注册是指用户向服务器提交注册请求后获得一个合法的账号,通过所述的账号,用户可以登陆到P2P网络获取服务,具体方法是:a.用户提交自己的用户名ID和密码PASSWD,并发送注册请求到注册服务器;b.注册服务器在收到用户的注册请求后,首先计算保密参数N,<maths num="0001"><![CDATA[<math> <mrow> <mi>N</mi> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>ID</mi> <mo>|</mo> <mo>|</mo> <mi>PASSWD</mi> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>KEY</mi> <mo>)</mo> </mrow> <mo>;</mo> </mrow></math>]]></maths>其中KEY为只有注册服务器知道的对称密码,||为比特连接符号,用于将一个比特串连接到另一个比特串上,h(x)为单向哈希函数,<img file="F2009101527849C0000012.GIF" wi="32" he="32" />为异或运算;然后将包括保密参数ID、N、h(PASSWD)和α以及单向哈希函数h(x)保存到一张虚拟智能卡中;其中h(PASSWD)为密码PASSWD的哈希值,α为由注册服务器产生的参数,只保存在注册服务器和该用户的虚拟智能卡中,不同的用户具有不同的α值;所述的虚拟智能卡是在用户注册时生成的;c.注册服务器将所述的虚拟智能卡嵌入到客户端软件中,用户下载并安装服务器提供的客户端软件同时也获得了虚拟智能卡;d.服务器将该用户名ID、保密参数N和参数α,通过通信链路发送给认证服务器;本发明方法中用到的哈希函数h(x)和对称密码KEY可以由注册服务器和认证服务器事先约定或者也可以由注册服务器生成后通过安全的方式告知认证服务器;步骤(2).登录认证登陆认证是指用户在装有所述客户端软件的主机上通过输入用户名和密码登陆到认证服务器并进行身份认证;登录认证包括本地登录和服务器验证;本地登陆是指客户端软件在本地验证用户输入用户名和密码的正确性,具体方法是:e.用户在装有虚拟智能卡的客户端软件中输入用户名和密码,客户端软件利用虚拟智能卡中的哈希函数对用户输入的密码进行哈希运算,得到h(PASSWD)’;f.将用户输入的用户名和步骤e中计算得到的h(PASSWD)’跟存储在虚拟智能卡中的对应参数进行比较;若两者一致,则表明用户输入的用户名和密码正确,本地登陆通过,进入下一个步骤;若两者不一致,则表明用户输入的用户名和密码有误,本地登陆失败;本地登陆成功后,需要发送登陆认证信息到认证服务器进行验证,服务器验证的具体方法是:g.客户端软件根据虚拟智能卡中的信息计算用户的动态DID<maths num="0002"><![CDATA[<math> <mrow> <mi>DID</mi> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>ID</mi> <mo>|</mo> <mo>|</mo> <mi>PASSWD</mi> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>&alpha;</mi> <mo>|</mo> <mo>|</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow></math>]]></maths>和C=h(N||α||T);其中T为该用户的本地时戳,DID是在用户登录时动态生成的ID,该DID为用户本次登录的临时动态身份标识,也是向认证服务器发送的认证参数之一;由于DID的生产跟本地时戳T有关,同一用户在不同时间登陆会生成不同的DID;C为验证参数,即客户端软件发送给认证服务器,用于验证用户身份的一个参数;然后客户端将DID、C和T三个参数发送到服务器进行认证;h.认证服务器在T’时间收到用户的认证请求和所述的三个参数后,首先验证用户发起请求的时间T;如果T’-T≤ΔT,则表明该消息是在少于规定的时间ΔT内收到的,继续进入下一步骤;如果T’-T>ΔT,表明该消息的传输超过了ΔT,消息可能被篡改或重放,直接退出认证过程,认证失败;T’为服务器收到认证请求和所述的三个参数的时间,ΔT为系统规定的表示用户和认证服务器之间传输时延的时间参数;i.认证服务器计算C’并验证C’和收到的C是否一致,其中<maths num="0003"><![CDATA[<math> <mrow> <msup> <mi>C</mi> <mo>,</mo> </msup> <mo>=</mo> <mi>h</mi> <mrow> <mrow> <mo>(</mo> <mrow> <mo>(</mo> <mi>h</mi> <msup> <mrow> <mo>(</mo> <mi>ID</mi> <mo>|</mo> <mo>|</mo> <mi>PASSWD</mi> <mo>)</mo> </mrow> <mo>,</mo> </msup> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>KEY</mi> <mo>)</mo> </mrow> </mrow> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> <mi>&alpha;</mi> <mo>|</mo> <mo>|</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>,</mo> </mrow></math>]]></maths><maths num="0004"><![CDATA[<math> <mrow> <mi>h</mi> <msup> <mrow> <mo>(</mo> <mi>ID</mi> <mo>|</mo> <mo>|</mo> <mi>PASSWD</mi> <mo>)</mo> </mrow> <mo>,</mo> </msup> <mo>=</mo> <mi>DID</mi> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>&alpha;</mi> <mo>|</mo> <mo>|</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>;</mo> </mrow></math>]]></maths>若C’=C,表明该用户为合法用户,认证服务器记录该用户的相关信息并返回认证成功的消息给用户,用户登录认证成功;若C’≠C,,则认证服务器返回认证失败的消息给用户;步骤(3).服务请求认证服务请求认证是指收到来自P2P网络的资源服务请求的用户,通过向认证服务器进行查询,对发出该请求的用户的身份进行认证,具体方法是:j.索引服务器根据用户发起的查询请求,将查找结果返回给用户;用户选择其中适合的一个或多个提供服务的目的用户,并向所选择的目的用户发送服务请求;k.目的用户收到该用户的服务请求后,向认证服务器查询请求用户的身份认证信息;认证服务器首先计算验证参数WW=h(DID<sub>A</sub>||ID<sub>B</sub>||α<sub>B</sub>||T<sub>2</sub>)其中DID<sub>A</sub>为发起服务请求的用户的动态ID,ID<sub>B</sub>为目的用户的ID,α<sub>B</sub>为目的用户的α值;然后认证服务器将DID<sub>A</sub>、W和T<sub>2</sub>发送给目的用户,其中T<sub>2</sub>为认证服务器本地时戳;W为认证服务器发给目的用户的一个验证参数,用于验证请求用户的合法身份;1.目的用户将在T<sub>2</sub>’时间收到认证服务器发来的消息,并用步骤h中相同的方法验证T<sub>2</sub>的真实性;T<sub>2</sub>’为目的用户收到认证服务器返回消息的时间;m.计算W’=h(DID<sub>A</sub>||ID<sub>B</sub>||α<sub>B</sub>||T<sub>2</sub>),和收到的W进行比较;如果W’=W,表明该消息确实由服务器所发,并且目的用户确认了发起服务请求的用户的合法身份,用户之间可以建立连接并传输数据;如果两者不一致,则目的用户无法确认服务请求用户的合法身份,不予提供服务。
地址 310027 浙江省杭州市西湖区浙大路38号