椭圆曲线加密法(ECC)
(2015-07-21 15:19:12)
标签:
股票 |
分类: 计算机 |
椭圆曲线加密法(ECC)是一种公钥加密技术,以椭圆曲线理论为基础,在创建密钥时可做到更快、更小,并且更有效。ECC
利用椭圆曲线等式的性质来产生密钥,而不是采用传统的方法利用大质数的积来产生。
椭圆曲线加密法ECC(EllipticCurveCryptography)是一种公钥加密技术,以椭圆曲线理论为基础,利用有限域上椭圆曲线的点构成的Abel群离散对数难解性,实现加密、解密和数字签名,将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,就可以建立基于椭圆曲线的对应密码体制。椭圆曲线是由下列韦尔斯特拉斯Weierstrass方程所确定的平面曲线:
E:y2+a1xy+a3y=x3+a2x2+a4x+a6
椭圆曲线加密算法以其密钥长度小、安全性能高、整个数字签名耗时小,使其在智能终端应用中有很大的发展潜力,比如掌上电脑、移动手机等都能有更好的表现。而在网络中,ECC算法也保证了其协同工作的实时性,使用ECC算法加密敏感性级别较高的数据(如密钥),速度上能够满足大数据量要求,而且安全性高,能很好地保障系统的安全。
由于椭圆曲线密码体制的安全性只与椭圆曲线的安全性有关,而椭圆曲线安全性是由ECDLP求解的困难性决定的,因此,为了保证ECDLP是难解的,在选取椭圆曲线的时候除了选择合适的参数(a,b),使得相应的Weierstrass方程满足非超奇异椭圆曲线的要求外,还要选取合适的有限域GF(q),使得q满足#E能被一大素数(≥30位的整数)整除,或q本身就是一个大素数。安全的椭圆曲线也就是能抵抗各种已有攻击算法攻击的椭圆曲线。
在数学上,对椭圆曲线的性质和功能的研究已经有150年了。但是它们在加密技术上的应用是在1985年由华盛顿大学的NealKoblitz和IBM的VictorMiller首次提出的。椭圆曲线不是一个椭圆(椭圆形状),而是由交叉两个轴线(在一个图中用来说明点的位置的线)的环线表示。ECC基于一个数组产生的特定种类的方程式的性质,数组是由直线与轴线交叉的点组成的。用曲线上的点乘以一个数可以产生曲线上的另一个点,但是即使你知道原来的数和结果,你也很难找到乘的那个数。基于椭圆曲线的方程式有一个对加密技术来说非常有价值的性质:相对来说,方程式比较容易执行,但是反过来却非常困难。
工业上对椭圆曲线的使用还是有些保留。NigelSmart,惠普的研究员,发现了椭圆曲线的一个弱点,那就是一些曲线是极易受到攻击的。但是,Certicom公司的PhilipDeck说,虽然有一些曲线易受攻击,但那些正在使用ECC的人得知道哪些曲线是不能用的。他相信ECC作为一个技术可以提供一个独一无二的潜能,那就是它可以在世界范围内和所有设备中实现。依照Deck,“你要达到这个目的的唯一方法就是椭圆曲线。”
3应用编辑
基于椭圆曲线密码体制的网络身份认证系统
由于网络具有信息量大的特点,其主要威胁来自于非授权用户的非法访问,因此它对数据完整性的要求很高,需要最快的速度提供最高的安全性,保证信息的机密性、完整性和有效性。网络身份认证是依靠用户账号、口令或者生物特征等信息来实现的,这些认证方法在某种程度上存在着安全隐患,如账号、口令或指纹特征信息在存储、传输过程中可能被截取、被篡改等。在身份认证系统中,起关键作用的是其中的加密体系。本文设计的身份认证系统中,用户首先要通过认证模块进行注册,注册成功后,获得经过系统认证中心CA签名的公钥和私钥。用户公钥和CA的公钥都是公开信息,用户的私钥只有用户本人知道,由用户自己保存。
1.系统的总体结构
假设通信的是A与B双方,A与B处在同一个网络中,文本加解密采用对称算法AES,而密钥的传输与签名验签都采用非对称算法ECC.系统由服务器和客户端两部分组成,如图2所示,服务器端包括代理服务器、认证服务器、应用服务器;客户端包括代理客户端、认证客户端。代理客户端和代理服务器共同完成代理功能,认证客户端和认证服务器共同完成身份认证功能。
系统模型主要工作流程如下:
(1)将用户信息存放在系统数据库中;(2)客户端应用程序通过客户端代理向认证模块请求申请登录认证;(3)认证模块检查用户身份并完成认证过程,向客户端发放应用服务器的Ticket;(4)客户端向安全代理服务器请求获取访问策略数据;(5)安全代理服务器读取访问控制表中对应的策略控制记录,确定用户是否有权限访问相应的应用服务器资源;(6)确定用户有权访问后,连接到相应的应用服务器;(7)客户端与应用服务器间建立起了一条加密通道,双方通过此通道来交换数据。
2.系统功能模块及实现
(1)认证模块。认证模块主要实现身份认证、密钥分发等功能,采用基于公钥密码体制的改进Kerberos认证协议来对用户进行身份认证,是模型的核心部分。
认证模块由认证客户端模块、认证服务器端模块组成。当客户端代理接到来自客户端的任意请求时,先判断是否为客户端代理启动后接收到的第一个请求,如果是,则客户端代理必须先去认证服务器进行身份认证。
①认证客户端。认证客户端主要包括六个模块,分别为:AS请求模块、TGS请求模块、GSSAPI接口模块、KerberosGSSAPI模块、票据列出模块、票据销毁模块。
AS请求模块主要功能是用户获取TGS的票据TGT.当用户进行身份认证时,AS请求模块被调用,从AS服务器中获取TGT.AS请求模块包括获取Ticket模块和报错子模块。通过调用ECC加密模块,对每条信息进行必要的安全处理;TGS请求模块主要用于获得应用服务器的票据。在调用TGS请求之前,客户端必须己经得到TGT,以便用TGT向TG服务器证明自己的身份。GSSAPI接口模块用于实现与客户端代理的接口,客户端代理调用GSSAPI接口模块来进行身份认证;KerberosGSSAPI模块被GSSAPI接口模块调用,真正实现建立安全上下文,报文保护级别协商以及对每条报文的保护。通过调用KerberosGSSAPI模块,用户获得与代理服务器进行加密通信的会话密钥。票据列出模块用于列出保留在缓存中的主要实体名和当前所有活动票据的内容。票据销毁模块用于销毁所有的票据,以防止他人窃取票据,当用户断开与服务器的连接时,系统会调用该模块来销毁用户的票据。②认证服务器。认证服务器模块主要包括KDC模块、GSSAPI接口模块KerberosGSSAPI模块以及其他辅助模块。
KDC模块主要完成用户身份认证和票据分发等功能,包括AS请求处理子模块和TGS请求处理子模块。它与认证客户端的AS请求模块和TGS请求模块一起工作,来完成身份认证和票据分发功能;GSSAPI接口模块用于实现与代理服务器的接口,代理服务器调用GSSAPI接口模块来进行身份认证,而GSSAPI接口模块则调用KerberosGSSAPI,用于真正实现建立安全上下文,报文保护级别协商以及对每条报文的保护。
(2)代理模块。代理模块在模型中主要实现客户端应用程序通过代理客户端、代理服务器访问应用服务器的功能,通过采用Socks5协议实现。
代理模块分别在客户端和应用服务器端加载一个代理软件。客户端代理接受客户端的所有请求,经处理后转发给服务器端代理。客户端代理首先与代理服务器建立一个TCP连接,通常SOCKS端口为1080,通过安全隧道,代理服务器认证并接受所有来自客户端软件的通信。若身份得以认证,则安全服务器将请求递交应用服务器,处理请求后并将结果返回安全服务器,安全服务器将此结果返回给客户端。
安全代理服务器在确认客户端连接请求有效后接管连接,代为向应用服务器发出连接请求,安全代理服务器应根据应用服务器的应答,决定如何响应客户端请求,代理服务进程应当连接两个连接,客户端与代理服务进程间的连接、代理服务进程与应用服务器端的连接。为确认连接的唯一性与时效性,代理进程应当维护代理连接表或相关数据库。安全代理服务器为所有网络通信提供了一个安全隧道,在建立通道的过程中,存在用户认证的过程。用户经过认证和原始协议请求,通过GSSAPI建立的安全隧道传送。
3)加密模块。加密模块在系统中主要完成对数据的加解密处理,通过调用椭圆曲线加密算法具体实现。模型中采用ECIES加解密方案,具体实现过程采用borZoi算法库。borZoi是个免费的C++椭圆曲线加密库,含有完整的源代码,提供了定义在特征值为2的有限域上的算法,提供了加密模块
前一篇:NS2简介
后一篇:[转载]椭圆曲线加密