一次性口令认证方法

文档序号:7893241阅读:882来源:国知局
专利名称:一次性口令认证方法
技术领域
本发明涉及加密认证技术。
技术背景一次性口令0TP (One-Time Password)的原理是在登陆过程中加入不确定因素,使每次 的密码都不相同,系统接收到登陆口令后,以同样的算法做一次运算即可验证用户的身份。 OTP是一种摘要认证,可以抵抗重放攻击和外部被动攻击,是一种切实可行、安全有效的认 证方案。常见的基于hash链算法的一次性口令身份认证机制可以克服重放攻击等弱点,因为 登录口令是以不可逆的hash函数形式发给服务器,每登录一次,登录口令的哈希次数减l。 因此,可以有效的抵抗重放攻击。然而,基于哈希运算的一次性口令机制很容易遭受小数攻 击。服务器或用户端在每次认证中需要做多次的哈希运算,运算量大;而且,登录次数有限 ,每隔一段时间之后,需要重新初始化系统。RSA算法(以发明者的名字命名Ron Rivest, AdiShamir和Leonard Adleman。)是第 一个能同时用于加密和数字签名的算法,从1978提出到现在已近三十年,经历了各种攻击的 考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数 的因子分解。公钥和私钥都是两个大素数(大于100个十进制位)的函数。密钥对的产生先选择两个大素数,P和q 。计算n = p * q;然后随机选择加密密 钥e,要求e和(p - 1 ) * ( q - 1 )互质。最后,利用Euclid算法计算解密密钥d, 满足e *d=l(mod(p- l)*(q- l));其中n和d也要互质。得到的e是公钥, d是私钥。加密信息m (二进制表示)时,首先把m分成等长数据块ml , m2, . . . , mi ,块长 s,其中2's《n, s尽可能的大。对应的密文是ci = mi'e ( mod n )。解密时作计算 :mi = ci"d ( mod n )。显然,敌方可以截获到加密密文。但即使敌方借火到密文,因为 离散对数的难解性,也无法获得密文mi。 RAS的缺点在于,由于产生密钥很麻烦,受到素数 产生技术的限制,难以做到一次一密。发明内容本发明所要解决的技术问题是,提供一种基于RSA加密的一次性口令认证方法。 本发明为解决上述技术问题所采用的技术方案是, 一次性口令认证方法,包括以下步骤 a、 用户端产生一对RSA密钥对以及一个认证依据,将公钥、认证依据发送至服务器端;b、 用户端在登录时,产生并保存一个用户端秘密随机数,采用该用户端秘密随机数对 认证依据进行第一处理,得到第一结果;并将第一结果发送至服务器端;c、 服务器端产生一个服务器端秘密随机数,采用该用户端秘密随机数对第一结果进行 第二处理,得到第二结果,并将第二结果发送至用户端;服务器端将得到认证依据采用秘密 随机数进行第二处理后,得到并保存第四结果;d、 用户端采用保存的用户端秘密随机数对第二结果进行逆第一处理,得到第三结果, 并用私钥对第三结果进行加密,将加密后的第三结果发送至服务器端;e、 服务端得到加密后的第三结果,采用公钥对第三结果进行解密,第三结果与保存的 第四结果是否相同,如是,则通过认证;若否,则认证失败。本发明引入随机数,具有一次性口令认证机制的优点,基于RSA非对称密钥加密方法, 具有离散对数的难解性,能有效抵抗重放攻击,还克服了常见的基于HASH链算法的一次性口 令认证机制的弱点,不用每个一段时间就必须重新初始化系统。步骤d中逆第一处理,意为 将输入的数据处理成没有经第一处理的效果。如输入一个数a,对a朴,其中朴为对a进行第 一处理,那么逆第一处理为对/b,即对(a*b) /b,逆处理后的结果与原始输入a相同,即逆 处理后的结果与没有经过第一处理的输入a相同。进一步的,为了提高安全性能,认证依据在设定时间内更新;用户端在登录时,还传送 用户端ID至服务器端;服务器端对用户端ID的合法性进行验证。优选的,为了减小运算量,认证过程用尽量采用采用幂指数和异或运算。 具体的,步骤a中,用户端还传送对RSA密钥对产生过程中一个随机的本原元至服务器端 ;步骤d中,用私钥对第三结果进行加密,具体为,采用私钥对所述本原元加密后与第三结 果进行异或运算;步骤e中,采用公钥对第三结果进行解密,判断第三结果与保存的第四结 果是否相同,具体为,将第三结果、第四结果、加密后的本原元进行异或运算,得到第五结 果,再用公钥对第五结果进行解密处理,判断是否能成功解密得到本原元,若是,则表示第 三结果与保存的第四结果;若则不相同。或者,步骤a中,用户端在RSA密钥对产生过程中生成一个随机的本原元; 步骤b中,还包括采用用户端采用用户端秘密随机数对本原元进行处理,得到加密本原 元,并将加密本原元传送至服务器端;步骤d中,用私钥对第三结果进行加密,具体为,采 用私钥对所述加密本原元再加密后与第三结果进行异或运算;步骤e中,采用公钥对第三结 果进行解密,判断第三结果与保存的第四结果是否相同,具体为,将第三结果、第四结果、
加密后的加密本原元进行异或运算,得到第五结果,再用公钥对第五结果进行解密处理,判 断是否能成功解密得到加密本原元,若是,则表示第三结果与保存的第四结果;若则不相同本发明的有益效果是,相比现有技术的一次性口令认证方法,本发明安全性能提高,运 算复杂度降低。
具体实施方式
实施例采用的符号如表所示p、q、 u大素数RSA生成的公钥dRSA生成的私钥s用户选取的秘密种子x、 y用户端和服务器端在每一次认证中随即产生的随机因子t乘法群Zu的生成元.............fc^普通信道.....4安全信道(秘密信道)认证方法主要步骤如下A、注册阶段(Registration)(1) 基于RSA算法产生密钥对e、 d;a) 用户端随机选择两个大素数p、 q,计算『pq, C (n) = (p-1) (q-1),且p、 q、 C (n)用户保密;b) 选公钥e:l〈e〈C (n),满足gcd(e, C(n))=l;c) 求私钥d:使得de^ mod C (n) , d用户保密;则有任意gEZn , g是Zn的一个本原元,有g" =g modn成立。(2) 基于有限域上的离散对数难题生成认证依据t;a) 用户端再产生一个大素数U, tEZ u是一个本原元;b) 随机选取自己的秘密种子S (1《S《U-1) , S用户保密;c) 计算ts mod u,然后向服务器发送注册请求和下所示注册信息用户端 (ro'g^nw) 服务器端
其中s为用户的秘密种子。服务器收到注册请求后,存储该用户的信息( ID, g, ts, e, ii, u, t)。B、 登录和验证阶段(Login and Authentication) (1)登录时,用户端随机产生一个xEZu ,计算gx modn、 tx mod u,根据Zu的定义,x 为(0, u-1)之间的一个整数,而tx则不一定在这个范围,对u取模运算后,保证了tx为0, u-l之间的数值,传送的tx (tx modu重新赋给了tx)是(0, u-1)之间的值,本实施例中, 其他的取模运算也是类似的,传送的gx为gx modn重新赋值给gx,与用户ID和登录请求一起发 给服务器(x用户保密)(sx , tx , ID 〕用户端 、g' J 服务器端其中x为用户本次登录产生的秘密随机数。 (2)服务器接收到用户登录请求消息和(gx, tx, ID)后,首先比对数据库中存储的 用户ID,若找不到该用户,则中断通信;ID若为合法用户名,则产生随机数yEZu ,并计算 t(x+s)y作为本次质询消息(y服务器保密)(f一y 〕用户端 服务器端 ...............................................>其中t(x+s)5^ (tx ts)y, y为服务器本次质询产生的秘密随机数。(3)用户收到服务器发送的质询信息后,计算ty、t(x+s)y"x+s)-1 (此步骤为一个逆处理过程),并计算登录口令(ty' gdx) mod n发送给服务器用户端 )m0dn服务器端其中d为RSA算法产生的用户私钥。 (4)服务器验证用户登录口令若(一' gdx ty)e= gx modn等式成立,则验证通过, 否则拒绝登录。因为gEZn,所以此处对n取模。这个mod n是为了让最后的结果在(0, n-1)之间。因为只有合法用户才知道d和(x+s) —^才能计算出ty'=t(x+s)y。
(x+s)-l=tY下面等式才成立 tY, gdX ty= gdx(ty 十 gdx ty)e= gdex= gx modn (ged =g modn) c、更改认证依据阶段当用户想要更改认证依据时,只需要重新选取一个秘密种子S'即可。具体步骤如下(1) 用户成功登录后,向服务器发送更改认证依据的请求信息,并将生成的新的认证依据ts'发送给服务器。(2) 服务器接收到用户的更改请求信息和新的认证依据ts'后,将ts'代替ts存储在该用户的记录中。本方法优点在于服务器无法泄露用户登录口令,因为d只有用户知道,且x是用户每次随机产生,故gdx从服务器处无法得知。该方案还具有一次性和单向性。即使攻击者截获了某一次登录口令也无法推知下一次登录口令。因为攻击者没有获得用户的秘密s、 d,而且x和y都是用户和服务器每次随机产生的,故每次登录的口令gdx ty都不相同且无法预知。本实施例在本发明原有思路的基础上才增加了加密种子s对认证依据t进行处理,另外增加了用户端随机数X对认证依据t进行处理;当然,仅采用t在认证过程总也是可行的。当然,基于本发明的思路,对上述实施的认证方法可以做进一步的简化,或增加一些数据增加其 运算复杂度。
权利要求
权利要求1一次性口令认证方法,其特征在于,包括以下步骤a、用户端产生一对RSA密钥对以及一个认证依据,将公钥、认证依据发送至服务器端;b、用户端在登录时,产生并保存一个用户端秘密随机数,采用该用户端秘密随机数对认证依据进行第一处理,得到第一结果;并将第一结果发送至服务器端;c、服务器端产生一个服务器端秘密随机数,采用该用户端秘密随机数对第一结果进行第二处理,得到第二结果,并将第二结果发送至用户端;服务器端将得到认证依据采用秘密随机数进行第二处理后,得到并保存第四结果;d、用户端采用保存的用户端秘密随机数对第二结果进行逆第一处理,得到第三结果,并用私钥对第三结果进行加密,将加密后的第三结果发送至服务器端;e、服务端得到加密后的第三结果,采用公钥对第三结果进行解密,第三结果与保存的第四结果是否相同,如是,则通过认证;若否,则认证失败。
2.如权利要求l所述一次性口令认证方法,其特征在于,所述认证依 据在设定时间内更新。
3.如权利要求l所述一次性口令认证方法,其特征在于,所述步骤b 中,用户端在登录时,还传送用户端ID至服务器端;步骤c中,服务器端还对用户端ID进行验证,判断是否合法,如是,则进入步骤c;如 否,则认证失败。
4.如权利要求l所述一次性口令认证方法,其特征在于,所述第一处 理、第二处理为幂指数运算。
5.如1一4任一项权利要求所述一次性口令认证方法,其特征在于, 步骤a中,用户端还传送对RSA密钥对产生过程中一个随机的本原元至服务器端;步骤d中,用私钥对第三结果进行加密,具体为,采用私钥对所述本原元加密后与第三 结果进行异或运算; 步骤e中,采用公钥对第三结果进行解密,判断第三结果与保存的第四结果是否相同, 具体为,将第三结果、第四结果、加密后的本原元进行异或运算,得到第五结果,再用公钥 对第五结果进行解密处理,判断是否能成功解密得到本原元,若是,则表示第三结果与保存 的第四结果;若则不相同。
6.如1一4任一项权利要求所述一次性口令认证方法,其特征在于, 步骤a中,用户端在RSA密钥对产生过程中生成一个随机的本原元;步骤b中,还包括采用用户端秘密随机数对本原元进行处理,得到加密本原元,并将加 密本原元传送至服务器端;步骤d中,用私钥对第三结果进行加密,具体为,采用私钥对所述加密本原元再加密后 与第三结果进行异或运算;步骤e中,采用公钥对第三结果进行解密,判断第三结果与保存的第四结果是否相同, 具体为,将第三结果、第四结果、加密后的加密本原元进行异或运算,得到第五结果,再用 公钥对第五结果进行解密处理,判断是否能成功解密得到加密本原元,若是,则表示第三结 果与保存的第四结果;若则不相同。
全文摘要
本发明涉及加密认证技术,提供一种基于RSA加密的一次性口令认证方法。在本发明一次性口令认证方法中引入随机数,具有一次性口令认证机制的优点,基于RSA非对称密钥加密方法,具有离散对数的难解性,能有效抵抗重放攻击,还克服了常见的基于HASH链算法的一次性口令认证机制的弱点,不用每个一段时间就必须重新初始化系统。本发明的有益效果是,相比现有技术的一次性口令认证方法,本发明安全性能提高,运算复杂度降低。
文档编号H04L9/32GK101394284SQ20081030553
公开日2009年3月25日 申请日期2008年11月13日 优先权日2008年11月13日
发明者刘贤洪, 康红娟, 王艳艳 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1