一种高安全性的口令认证方法与流程

文档序号:13763390阅读:462来源:国知局
一种高安全性的口令认证方法与流程

本发明属于信息安全和密码学技术领域,具体涉及一种结合智能卡并具有高安全性的口令认证方法。



背景技术:

在计算机网络技术高速发展的当下,云计算以及云存储技术使得大量原本存储在用户端的数据可以存储在云端服务器中。这不但大幅度释放了用户端的存储空间,减轻了本地存储数据的压力,同时也大大扩展了用户存储数据的空间范围,实现了不同用户之间数据的共享。然而,随着使用云服务的用户数量的增加,如何保障用户隐私不受侵害成为社会信息化发展进程中一个无法忽视的问题。

针对以上问题,人们根据现代密码学中对称加密以及非对称加密技术设计了多种认证机制。口令认证作为一种高效、简洁的身份认证方法广泛使用于金融、网购、社交、安保等各个领域。大多数社交网络软件,公司门禁等基于硬件或者软件的身份认证机制都将口令认证作为其最为核心的部分。但是,口令认证因为其操作简单,认证因素不足等特性,极易受到攻击者不同类型的攻击,比如中间人攻击和字典攻击等。针对这类攻击,现有技术中比较有代表性的措施是通过网络中的可信主机存储各终端的加密密钥,发送方使用本端的加密密钥对信息进行加密,然后将密文以及本端的身份信息发送给接收方。接收方收到信息后,将发送方的身份信息发送给可信主机,由可信主机对发送方的合法性进行判断。如公开号为CN105471845A、名称为“防止中间人攻击的通信方法及系统”,公开号为CN104936170A、名称为“检测中间人攻击的方法与装置”的发明专利都属于这种技术。但是这种纯粹依赖加密技术的数据共享技术依然存在着算法复杂、算法需要适时更新以防被解密的风险。



技术实现要素:

本发明要解决的技术问题是提出一种能够实现用户认证信息的机密性,允许用户随时更改密码,在提高安全性的同时又具有较低能耗和较高效率的方法。

为此,为了在保证较高安全性的同时尽可能地实现操作简单和高效,我们将一些加密后的身份认证信息存储在硬件中以分担软件中存储身份认证信息被攻击者获取的风险,设计出了基于硬件和软件相结合的身份认证技术。相对于传统口令认证技术,这种方式能有效抵抗多种类型攻击。

具体的技术方案为:一种高安全性的口令认证方法,包含以下步骤:

步骤一,用户注册阶段,在这个阶段,注册的用户需要先申请一张智能卡,智能卡中存储了用户的个人信息;

步骤1-1,在用户注册的初始化阶段,用户Ui可以自由选择他的用户名(IDi)以及密码(PWi)。

步骤1-2,智能卡使用单向哈希函数h()对用户名(IDi)以及密码(PWi)进行加密,得到信息对(h(IDi||PWi),h(IDi))并将其通过一个安全的信道发送给服务器S。

步骤1-3,服务器S使用单向哈希函数h()以及服务器密钥x和y对发送过来的用户信息进行加密,得到:

<mrow> <mi>A</mi> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>B</mi> <mo>=</mo> <mi>A</mi> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

C=h(A)

<mrow> <mi>D</mi> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>.</mo> </mrow>

步骤1-4,服务器S将(B,C,D)通过一个安全的信道返回给用户Ui

步骤1-5,用户Ui将(B,C,D)存入智能卡中。

步骤二,登录阶段,用户Ui登录时,需要将智能卡插入对应设备中并输入他的用户名(IDi)以及密码(PWi);

步骤2-1,智能卡调用存储的信息计算:

<mrow> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>B</mi> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow>

Ci=h(Ai)

步骤2-2,智能卡比较Ci=C是否成立,如果成立,则证明了用户Ui的合法身份;

步骤2-3,智能卡随机生成一个整数N并做如下计算:

<mrow> <msub> <mi>E</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <mi>N</mi> </mrow>

<mrow> <msub> <mi>CID</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>N</mi> </mrow>

Fi=h(Ai||Di||N)

步骤2-4,智能卡将登录请求(h(IDi),Ei,CIDi,Fi)发送给服务器S;

步骤三,认证阶段,本阶段实现了服务器和用户的相互认证,主要步骤如下:

步骤3-1,接收到用户Ui请求(h(IDi),Ei,CIDi,Fi)后,服务器S计算:

<mrow> <msup> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow>

<mrow> <msup> <msub> <mi>N</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <msub> <mi>E</mi> <mi>i</mi> </msub> </mrow>

<mrow> <mi>h</mi> <msup> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&prime;</mo> </msup> <mo>=</mo> <msub> <mi>CID</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <mi>x</mi> </mrow>

<mrow> <msup> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <msup> <mrow> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> </mrow> <mo>&prime;</mo> </msup> <mo>&CirclePlus;</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow>

Fi′=h(Ai′||Di′||Ni′)

步骤3-2,服务器S比较Fi'=Fi是否成立,如果不成立,则服务器对用户的认证失败,服务器拒绝用户的登录请求。如果成立,则服务器完成对用户的认证,服务器S选择一个大于1024bits的随机数N'并进行如下计算:

SK'=h(Ai'||Di'||Ni'||N')

其中SK'为服务器和用户之间服务器端的对称加密密钥。

使用SK'进行加密得到:

步骤3-3,服务器S将(G',N')发送给用户Ui

步骤3-4,收到(G',N')后,用户Ui执行如下计算:

SKi=h(Ai||Di||Ni||N')

其中SKi为服务器和用户之间用户端的对称加密密钥。

使用SKi进行解密得到:Gi=SKi(G')

步骤3-5,用户Ui验证是否成立,如果不成立,则用户对服务器的身份认证失败,用户断开连接;如果成功,则完成服务器和用户的双向身份认证。

为提高本发明方法的使用效果,本发明还可以完成用户密码修改,系统允许用户自由更改自己的密码而不需要再次登录服务器,假设一个用户希望将他的密码更改为PWnew,那么在他需要输入用户名(IDi)以及密码(PWi)后遵循如下步骤:

步骤1,智能卡执行如下操作:

<mrow> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>B</mi> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

Ci=h(Ai);

步骤2,智能卡比较Ci=C是否成立,如果成立,则证明了用户Ui的合法身份;

步骤3,用户选择一个新的密码PWnew

步骤4,智能卡计算并将内部存储的B替换为Bnew,如此则完成用户密码的修改。

进一步,步骤一中的个人信息包含出生日期、电话号码、住址以及签名。

进一步,步骤2-3中的整数大于1024bits。

与现有技术相比,本发明的有益效果在于:

(1)相对于传统口令认证,本发明提出的方法能实现远端服务器不存储用户密码的功能。这极大减轻了服务器数据存储的压力,并且保护了用户数据不会在服务器端被盗取,既保护了用户信息,又消除了服务器承担丢失用户信息责任的隐患。

(2)相对于其他口令认证方案,本发明在注册阶段、登录阶段、认证阶段以及用户密码修改阶段实现了用户名和密码的保密性,即将用户名和密码都进行加密传输,提高了整个系统的安全性。

(3)本发明的口令认证协议中加入每次登录产生的随机数,能够有效防范重放攻击以及信息拦截攻击,增加了整个系统的安全性。

(4)用户可以在任何时间更改密码而不需要向服务器提出申请,这体现了系统良好的用户体验。

附图说明

图1为本发明注册信息交流图。

图2为本发明服务器认证信息交流图。

图3为认证信息交流图。

图4为用户修改密码交流图。

图5为本发明主要步骤的流程图。

具体实施方式

现结合附图对本发明的具体实施方式作进一步详细的说明。

本发明要实现的目标为:

(1)用户密码可以被用户自定义修改或者删除。

(2)用户名以及密码是以密文形式进行传输的。

(3)没有人能够假冒某一个用户进行登录。

(4)用户名和密码的明文形式无法被服务器端人员获取。

(5)认证系统能够抵御重放攻击、口令猜测攻击和伪装攻击等攻击。

(6)认证系统具有较高效率。

(7)如果智能卡丢失,持有智能卡的攻击者不能通过猜测密码登录系统。

本发明包含以下四个步骤:

步骤一,用户注册阶段。如图1所示,用户自行选择方便自己记忆的用户名(ID)以及密码(PW)。通过智能卡加密后以密文的形式发送给服务器。服务器使用服务器端密钥计算相应安全参数并将其返回并存储在智能卡中。

步骤二,登录阶段。用户将智能卡插入终端并输入自己的用户名(ID)以及密码(PW)。智能卡将用户登录信息进行处理后与自身存储的认证信息进行比对以确定用户身份是否合法。如果合法,智能卡计算相应安全参数并将其发送给服务器。

步骤三,认证阶段。如图2和3所示,服务器将智能卡发送来的信息进行处理后校验用户信息是否合法,如果合法,服务器将身份信息加密后发送给智能卡,智能卡对数据进行处理后校验服务器信息是否合法。如果合法则完成用户登录,两者建立联系。步骤四,用户密码修改阶段,如图4所示。本阶段允许用户自行修改密码。

重要术语及约束:

对称加密算法:对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。

单向哈希函数:单向哈希函数又称单向散列函数、杂凑函数,就是把任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数。这个输出串称为该消息的散列值。一个安全的单向散列函数应该至少满足以下几个条件:(1)输入长度是任意的;(2)输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击;(3)对每一个给定的输入,计算输出即散列值是很容易的;(4)给定散列函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。

异或运算法则:

异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:

1.

2.

3.

4.可以推出

5.

下面对本发明的具体步骤再作进一步的说明。

图5为本发明主要步骤的流程图,用户注册后进行登录,然后与服务器完成双向认证,并可以修改密码,整个流程是基于智能卡与口令认证这种软硬件结合的方式实现的。现予以详细说明如下:

步骤一,用户注册阶段。在这个阶段,注册的用户需要先申请一张智能卡,智能卡中存储了用户的各种信息,比如出生日期、家庭住址、手机号码以及本人的亲笔签名等。步骤1,在用户注册的初始化阶段,用户Ui可以自由选择他的用户名(IDi)以及密码(PWi)。

步骤2,智能卡使用单向哈希函数h()对用户名(IDi)以及密码(PWi)进行加密,得到信息对(h(IDi||PWi),h(IDi))并将其通过一个安全的信道发送给服务器S。

步骤3,服务器S使用单向哈希函数h()以及服务器密钥x和y对发送过来的用户信息进行加密,得到:

<mrow> <mi>A</mi> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>B</mi> <mo>=</mo> <mi>A</mi> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

C=h(A)

<mrow> <mi>D</mi> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>.</mo> </mrow>

步骤4,服务器S将(B,C,D)通过一个安全的信道返回给用户Ui

步骤5,用户Ui将(B,C,D)存入智能卡中。

步骤二,登录阶段。用户Ui登录时,需要将智能卡插入对应设备中并输入他的用户名(IDi)以及密码(PWi)。

步骤1,智能卡调用存储的信息计算:

<mrow> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>B</mi> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow>

Ci=h(Ai)

步骤2,智能卡比较Ci=C是否成立,如果成立,则证明了用户Ui的合法身份。

步骤3,智能卡随机生成一个大于1024bits的整数N并做如下计算:

<mrow> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <mi>N</mi> </mrow>

<mrow> <msub> <mi>CID</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>N</mi> </mrow>

Fi=h(Ai||Di||N)

步骤4,智能卡将登录请求(h(IDi),Ei,CIDi,Fi)发送给服务器S。

步骤三,认证阶段。本阶段实现了服务器和用户的相互认证。主要步骤如下。

步骤1,接收到用户Ui请求(h(IDi),Ei,CIDi,Fi)后,服务器S计算:

<mrow> <msup> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow>

<mrow> <msup> <msub> <mi>N</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <msub> <mi>E</mi> <mi>i</mi> </msub> </mrow>

<mrow> <mi>h</mi> <msup> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&prime;</mo> </msup> <mo>=</mo> <msub> <mi>CID</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <mi>x</mi> </mrow>

<mrow> <msup> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <mi>h</mi> <msup> <mrow> <mo>(</mo> <mrow> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> </mrow> <mo>&prime;</mo> </msup> <mo>&CirclePlus;</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow>

Fi′=h(Ai′||Di′||Ni′)

步骤2,服务器S比较Fi'=Fi是否成立,如果不成立,则服务器对用户的认证失败,服务器拒绝用户的登录请求。如果成立,则服务器完成对用户的认证,服务器S选择一个大于1024bits的随机数N'并进行如下计算:

SK'=h(Ai'||Di'||Ni'||N')

其中SK'为服务器和用户之间服务器端的对称加密密钥。

使用SK'进行加密得到:

步骤3,服务器S将(G',N')发送给用户Ui

步骤4,收到(G',N')后,用户Ui执行如下计算:

SKi=h(Ai||Di||Ni||N')

其中SKi为服务器和用户之间用户端的对称加密密钥。

使用SKi进行解密得到:Gi=SKi(G')

步骤5,用户Ui验证是否成立,如果不成立,则用户对服务器的身份认证失败,用户断开连接。如果成功,则完成服务器和用户的双向身份认证。

步骤四,用户密码修改阶段。系统允许用户自由更改自己的密码而不需要再次登录服务器。假设一个用户希望将他的密码更改为PWnew,那么在他需要输入用户名(IDi)以及密码(PWi)后遵循如下步骤:

步骤1,智能卡执行如下操作:

<mrow> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>B</mi> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>PW</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <mi>h</mi> <mrow> <mo>(</mo> <msub> <mi>ID</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

Ci=h(Ai)

步骤2,智能卡比较Ci=C是否成立,如果成立,则证明了用户Ui的合法身份。

步骤3,用户选择一个新的密码PWnew

步骤4,智能卡计算并将内部存储的B替换为Bnew。如此则完成用户密码的修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1