所有提交的EM系统将被重定向到网上投稿系统.作者被要求将文章直接提交给网上投稿系统各自的日志。

利用ECC进行高效的双服务器认证验证

Seema P. Nakhate1, R. M. Goudar教授2
  1. 麻省理工学院工程学院计算机工程系,Alandi (D),印度浦那
  2. 麻省理工学院工程学院计算机工程系,Alandi (D),印度浦那
有关文章载于Pubmed谷歌学者

更多相关文章请访问国际计算机与通信工程创新研究杂志

摘要

PAKE (Password Authenticated Key Exchange)协议是一种加密协议,允许客户端和服务器端共享密码知识,通过交换消息而不显式地透露密码来相互验证并建立加密密钥。一般来说,客户端认证所需的所有密码都存储在一个服务器上。但是,当这样的服务器受到威胁时,大量客户的密码就会立刻暴露出来。在这种方案中,验证密码的能力被分散在两个或多个服务器之间。如果任何服务器被泄露,攻击者仍然不能假装是客户端,他/她不能从泄露的服务器上访问信息。目前的双服务器PAKE解决方案要么是对称的,即两个对等服务器对身份验证的贡献相同,要么是不对称的,即一个服务器在另一个服务器的帮助下对客户端进行身份验证。本文提出了一种双服务器PAKE的对称解决方案,当用户注册为客户端时,用户名和密码的相关信息将通过web服务转发到web服务器,通过Diffie-Hellman密钥交换和ECC算法对其进行加密,生成一个公钥并通知客户端进行解密。加密的数据被破坏并在没有。系统的活动服务器,当且仅当可信用户登录系统时,这些服务器将被统一。为了保护隐私,系统还提供了两步移动验证系统,通过向真实用户的手机发送随机数。

关键字

Diffie-Hellman密钥交换,椭圆曲线加密,密码验证密钥交换

介绍

密码是在访问受保护数据、帐户和用户计算机本身时最常用的证明用户身份的方法。因此,为了保护用户的安全和身份,使用强密码是必不可少的。如果恶意的人拥有合法的用户名和密码,那么世界上最好的安全也没有用。如今,每一笔数字交易都需要密码,并且需要在数据库中跟踪密码。因此,密码的安全性是一个非常重要的问题。因此,高度要求对每个攻击者保存密码。以前基于密码的身份验证系统通过公共通道传输密码的加密哈希,但是攻击者有可能根据真实密码的哈希值猜测密码。基于密码的身份验证的最新研究进展允许客户端和服务器相互使用密码进行身份验证,同时在身份验证后建立用于安全通信的加密密钥。
当前基于密码的身份验证解决方案遵循两种策略。在第一种策略中,假设客户端除了与服务器共享密码外,还保留服务器的公钥,并且客户端可以通过公钥加密将密码发送给服务器。第二种策略称为仅密码策略,其中密码被用作秘密密钥,用于加密随机数以进行密钥交换。
以前基于密码的身份验证协议假定一个服务器存储验证客户端所需的所有密码。因此,当攻击者攻击服务器时,关于密码的全部有意义的信息将以加密的形式提供给攻击者,并使用一些加密工具&猜测,攻击者可以解码所需的密码,从而访问系统信息。因此,为了避免这样的问题,提出的工作提供了一个解决方案,使用高效的服务器认证和验证使用ECC。
在该系统中,用户通过使用两个服务器的密码认证过程以及适当的移动验证来确保安全。当用户输入密码时,它将被转发到web服务器使用SOAP(简单对象访问协议)。SOAP是一种安全且有状态的协议,用于保存并将输入的密码发送到web服务器。在web服务器上,密码使用Diffie-hellman密钥交换协议和ECC方案进行加密,如下所述。在web服务器上加密后,加密字符除以总no。即,如果C是密码明文P的密文,N为no。存储密码的服务器,然后每个服务器(Si)将获得
如果= C / N
意思是,如果没有。如果我们存储密码的服务器数量是2个,密文字符的数量是10个,那么每个服务器将存储5个密文字符。例如,如果pwd1存储在server1中的数据是S1和pwd吗2是存储在服务器2上的数据,比如S2,那么整个密文C被获得为
C = pwd1+ pwd2
因此,攻击者在攻击服务器时,无法获得足够的加密信息。因此整个密码不能被泄露。
在客户端,为两个服务器生成加密和解密密钥对,并在客户端注册期间通过不同的安全通道传递到服务器。客户端的双服务器PAKE协议将密码的两部分秘密地发送给两个服务器。实际上,服务器不应该知道另一个服务器的加密密钥,基于ECC方案的全纯性,限制服务器对密码的加密进行操作。
与此同时,当数据从客户端转发到web服务器时,web服务器将生成一个唯一的识别号码,该号码将转发到用户注册的移动电话号码。用户只有在输入的唯一识别号码与web服务器的唯一识别号码相匹配时才能访问其数据,以便进行进一步处理。
该系统适用于多台服务器的分布式系统。这项工作的目标是设计和实现最少两个服务器密码认证系统,其中我们将加密的密码存储在不同的服务器上,数据将只对真实的用户解密。系统应该是健壮的和安全的,以防故障攻击。通过两步移动验证,防止未经授权的人访问系统和数据库。

文献调查

2005年,Katz et al.[2]提出了第一个双服务器密码认证密钥交换协议,并在标准模型中证明了安全性。他们的协议扩展并建立在Katz-Ostrovsky-Yung PAKE协议[3]的基础上,称为KOY协议。该协议的优点是支持两台服务器并行计算,缺点是实际使用效率低。在Brainard等人2005年[4]工作的基础上,Yang等人[5]提出了非对称设置,其中前端服务器(称为服务服务器(SS))与客户端交互,而后端服务器(称为控制服务器(CS))帮助SS进行身份验证,最后只有SS和客户端就秘密会话密钥达成一致。他们在2005年提出了一个基于pki的非对称双服务器PAKE协议[5],并在2006年提出了几个非对称仅密码的双服务器PAKE协议[6,7]。Yang等人的协议的安全性是基于一个假设,即后端服务器不能被活跃的对手破坏。这个假设后来被取消了,代价是进行了更多的计算和通信回合。优点是它的实际使用效率高。Yang等人的协议在通信和计算复杂度方面比Katz等人的协议更高效,缺点是其协议结构需要两台服务器串联计算,需要更多的通信轮数。Jin进一步改进了Yang等人的[8]协议,提出了一种通信轮数较少的双服务器PAKE协议。优点是它比Yang等人的协议需要更少的通信轮数而不会增加额外的计算复杂度,缺点是它的协议结构需要两台服务器串联计算。
今天的应用程序在DCOM和CORBA等对象之间使用远程过程调用(RPC)进行通信,但HTTP不是为此而设计的。RPC代表了一个兼容性和安全性问题。防火墙和代理服务器通常会阻止这种流量。应用程序之间更好的通信方式是通过HTTP,因为所有的Internet浏览器和服务器都支持HTTP。SOAP的创建就是为了实现这一点,它提供了一种在不同操作系统上、使用不同技术和编程语言的应用程序之间进行通信的方法。

初步的算法

Diffie-Hellman建立了一个共享秘密,可以用于秘密通信,同时在公共网络上交换数据。为了实现Diffie-Hellman[12],两个终端用户Alice和Bob,在通过信道通信时,他们相互同意两个正整数q和g,这样q是质数,g是q的生成器。生成器g是一个数,当被提升到小于q的正整数幂时,对于任何两个这样的整数都不会产生相同的结果。q的值可能很大,但g的值通常很小。一旦Alice和Bob私下就q和g达成一致,他们选择随机正整数m和n,接下来,Alice和Bob根据公式根据他们的个人密钥计算公钥A和B
= g国防部问
B = gn国防部问
两个用户可以通过假定为不安全的通信媒介(如Internet或公司广域网)共享他们的公钥A和B。根据这些公钥,任何用户都可以根据自己的个人密钥生成一个数字x。爱丽丝用公式计算K1
K1= (B)国防部问
Bob计算K2使用公式
K2= (A) n mod q
ObviouslyK1= K2这将是Alice和Bob之间的共享密钥。椭圆曲线加密(ECC)是一种高效、安全的加密方法。ECC利用较小的密钥大小来保证相应的安全性。ECC的这个方面使其能够应用于无线网络,其中有与内存和计算能力相关的限制。

加密与解密的数学概念

考虑一个质数p,另一个质数m和e,其中e
其中c是m和e乘以质数p得到的余数,我们得到数字d,使得:e*d =1(mod p) (2)
以上操作采用扩展欧几里得算法完成。最后m恢复如下:d*c= m (mod p) (3)
所以实际操作
C =(m*e) mod (p)
D *c (mod p)= D *(m*e)=(m*1)=m (mod p)
用这种方法恢复M。d使用Extended计算
(1)是加密操作,(3)是解密操作。椭圆曲线密码方案要求点和标量的乘法定义如下:Q=kP=P+P+…+P (k次)
P表示椭圆曲线上的一点,k为随机整数。在标量乘法算法中,点相加和点加倍起着关键作用,如下图所示:

键初始化和处理

我们计算SK为SK=rQ。SK有两个分量,分别是x坐标和y坐标。SK表示表示密钥的会话密钥,数据实际上是用该密钥加密的。

加密

设密钥的比特大小为n。要加密的消息的块大小为n。消息的块通过简单地将消息中每个字符的Base 2表示形式连接起来表示为n位数字。
步骤1
我们选择一个大小为n的消息块m。SK的x坐标成为加密密钥,在这一步中,我们完成了关于私有密钥k的模块化操作。剩余生成的是tempc。m * (SK.x) =tempc (mod k)
步骤2
在这里,我们将在step1中生成的tempc与会话密钥的对应y坐标相乘,SK与step1中加密执行的x坐标相乘。该操作是关于字段素数p完成的。在此步骤中获得的余数形成最终的密文。用c表示。
tempc * (SK.y)=c (mod p)
使用k的原因是,我们没有在加密过程中引入一个新的变量,因此传输秘密组件的开销减少了,因为私钥直接涉及到密钥生成和加密、解密过程。最后,R被追加到密文。

解密

我们使用El-Gamal方案来生成会话密钥。在接收到密钥后,我们执行标量乘法来计算D=kR,其中R是从加密过程中附加的密文中检索到的。
但R = rP。
所以,D = krP。
在加密过程中,我们将SK计算为SK=rQ,其中Q是公钥。但是Q = kP。
所以,SK=rkP=krP=D。
因此,SK在这里被重新计算为D,在解密时也是如此。
步骤1
Block的大小保持不变,n。将这个数据块表示为一个n位的数字c,并将其与对应的解密密钥d1相乘,其中d1*D。y 1(mod p),因为该操作是在加密操作期间执行的。这是相对于字段素数p完成的。生成的余数是tempc。C *d1 =tempc (mod p)
步骤2
这里我们将在step1中生成的tempc与step2对应的解密密钥d2相乘,其中
d2 * D。x = 1 (mod p)
此操作是针对密钥k进行的。获得的余数是原始消息。因此,原来的错误恢复。如果private Key, k
tempc* d2 =c (mod k)如果private Key, k>p (tempc+p)* d2 =c (mod k)得到的余数为原始消息。这样就恢复了原貌。

算法

输入:P a k
输出:Q = kP
Q = 0;
对于i= k-1到0
如果k[我]= 1
Q<=2Q(点加倍);
如果我= !0
Q<=P+Q(点相加);
如果
如果
结束了
返回问;

系统实现

根据本文,我们实现了安全的双服务器密码认证系统。系统基本流程如下图3所示。目标系统由客户端注册模块、Web服务操作模块、存储密码的服务器模块和两步移动验证模块组成。

A)客户端注册模块

在这个模块中,客户端通过输入用户名、密码、个人手机号码和其他必要的信息来注册自己为一个真实的用户。输入的数据将使用SOAP协议定向到web服务器进行进一步处理。

B) Web服务操作

在该模块中,输入的密码信息使用Diffie-Hellman密钥交换协议和ecc方案进行加密。加密后的密码根据总密码长度分为两个子密码,即如果加密后的密码长度为10个字符,则每个子密码包含5个字符。所有子密码将定向和存储在两个不同的服务器。

C)服务器模块(双服务器)

该模块将存储来自web服务器的密码,仅在身份验证时检索,以维护系统中的安全性。

D)两步移动验证系统

该模块通过涉及移动验证过程,提高了系统的安全性。在该模块中,当用户注册系统时,web服务器将生成一个唯一的随机验证码发送到客户端手机进行验证。如果用户输入正确的验证码,那么只有他/她才能获得进一步处理和数据访问的权限。该模块类似于谷歌验证系统。为了完成两步验证过程,我们使用android手机API接口。

结论

总体而言,项目设计将实现其目标。该项目将提供一个高效、有意义和安全的双服务器密码认证系统,以及基于移动的验证系统,仅供真实用户访问。为了插入用户的精确信息,如密码,我们使用SOAP协议。为了配置SOAP,我们使用web服务。

数字一览

图1 图2
图2 图3

参考文献

















全球科技峰会