签名加密算法(精选5篇)
签名加密算法 篇1
随着信息技术和互联网的不断发展,信息安全成了信息传输过程中应该考虑的首要问题,而图像作为信息传输的主要载体,因此,图像加密技术受到了人们越来越多的关注。
近年来,图像加密技术成了信息安全领域研究的热点之一,人们也相继提出了许多图像加密的方法[1—8]。文献[1]提出了一种基于像素扰乱的图像加密方法,即对图像的行和列进行置乱,这也是目前用的最广泛的一种图像加密方法;文献[2]利用斜帐篷映射对初值的敏感及其随机性的特点提出了一种高效的图像加密算法,由于其逆变换简单,故易于解码;文献[3]结合数字改良逻辑映射和线性反馈移位寄存器,提出了一种随机性较高安全二进制算术编码,该算法保证了很好的计算开销;文献[4,5]提出了一种新的基于扩散策略的像素间置换的快速图像加密算法,证明了两个像素异或之后,其分布更均匀,从而保证了加密过程的高随机性;文献[6]利用耦合映像格子产生的密钥生成两个简单的扩散序列,设计了一种时间复杂度较低图像加密算法,通过该算法生成的密钥流,其密钥空间大且随机性很高。综上文献所述,图像加密过程中一般会考虑两点:①计算开销是否在可接受的范围之内;②随机性是否满足要求。本文提出了一种新的密钥流的生成方法,结合耦合映像格子和SBox,通过一个对称矩阵变换(SMT)生成SBox系数,然后与初始密钥异或,循环迭代N次,得到一串密钥流,再通过该密钥流分别对原始图像的行、列进行置乱,最后对扰乱后的像素进行列处理,即每一列与等长度的密钥流进行异或,同时为了保证随机性,从第二列开始每一列密文都与前一列的密文异或。
1 密钥流发生器
基于耦合映像格子(CML)提出了一种新的密钥流生成方法,框图如图1所示。CML采用二维动态映射[6]:
式(1)中,ε是耦合映像格子的耦合强度,f是混沌映射函数。f1是下帐篷映射:
式(2)中,x是系统初始状态,x∈(0,1];p是系统的控制参数,p∈(0,1)。f2是逻辑映射:
式(3)中,a是控制参数,a取3.999 73。
生成密钥流的具体流程如下:
(1)给定一组初始值(x0,y0),x0,y0∈(0,1],CML输出(x,y);
(2)用SMT变换将(x,y)的初始区间(0,1)变换到指定的区间,即SMT的输出x',y'∈(0,15],具体变换如下:
(1)令对称矩阵
②取x',y'的下限作为SMT的输出,即floor(x'),floor(y'),将其作为初始密钥流。
(3)分别提取x0,y0的前8位,记为x1_b,y1_b,令c1=floor(x'),d1=floor(y'),则
其中,SBox是一个16×16的二维表,对应有16×16个(0,255)的十进制数,通过下标c1,d1可以找到SBox中对应的数,将其作为SBox的输出;
(4)从第二列开始,xi_b,y1_b,i=2,3,…,n分别是前一个密钥的输出左移3bit、右移3bit得到,则最终密钥流φ(i)=SBox(ci,di)⊕xi_b⊕yi_b。
2 加密与解密
传统的图像加密方案有两种[7—15]:①结合置乱和扩散操作,置乱即对图像的像素进行扰乱处理,扩散是对图像像素值进行改变;②先对图像进行分块,然后对每一块进行编码。本文结合这两种加密方案对图像进行加密,整体加密流程图如图2所示:
2.1 置乱
假设输入为一个大小为M×N的灰度图像,用CML产生的一组密钥流,即(xi,yi),i∈max{M,N},作为循环移位的密钥。对于xi,取i=M,x1,x2,…,xM组成一个一维数组(x1,x2,…,xM),然后对这个一维数组的数值进行E-R处理,即扩值取整,记为Rshift=floor[N(x1,x2,…,,xM)],用Rshitf对该灰度图像的行进行移位,即数组第一个参数控制图像第一行右移的位数,第二个参数控制图像第二行右移的位数,依次类推;同理,对于yi,取i=N,y1,y2,…,yN组成一个一维数组(y1,y2,…,yN),对其数值进行E-R处理,记为Cshift=floor[M(y1,y2,…,yN)],用Cshif对灰度图像的每一列进行下移位。
2.2 扩散和分块编码
经过置乱后的图像还是大小为M×N的图像,对置乱后的图像进行分块处理,即对图像像素进行列处理,如图3所示。令置乱后第i(i=1,2,…,N)列的像素值为Pi(j)(j=1,2,…,M),扩散后的像素值为Ci(j),前一个扩散的像素值为Ci(j-1)。编码过程如下:
Step1:第1列的像素值与密钥流异或,记为
Step2:第2列采用同样的方法编码,即,然后用第1列的密文与第2列进行异或,即
Step3:同理,每一列像素值与密钥流进行异或后再与前一列密文进行异或
2.3 解密过程
是加密过程的逆过程,即先提取密文序列,对每一块密文序列进行编号,从第N列开始每一列与前一列异或;然后恢复加密过程中使用的密钥流,分别与(1)中的每一列异或,异或的结果组成一个M×N的矩阵;最后利用2.1节中的两个一维数组,即Rshift、Cshif,分别对矩阵的列、行进行移位,移位后的结果即为原始图像。
3 实验结果与分析
为了分析该算法的可行性,做了以下实验。输入图像为256×256的Lena灰度图像,密钥系统的初始值选取x0=0.27,y0=0.837 0,p=0.7,a=3.999 73。
3.1 密钥空间分析
一种加密算法密钥空间的大小代表该算法可用于加密的不同密钥的总个数。本文算法密钥系统有四个初始值,x0,y0,p∈(0,1),a∈(3.57,4)。根据IEEE 754标准,64位双精度数的精确度为10-15,则该算法的密钥空间可以大至2197。因此,该密钥空间可以很好地抵抗暴力攻击。
3.2 信源熵
信源熵是用来描述信源符号随机出现程度的指标。信源熵可定义为
式(4)中,P(mi)为信源符号mi出现的概率。对于一副理想的随机图像,其信源熵理论上可以达到8。原图像和加密图像的信息熵如表1所示。
3.3 直方图分析
直方图是反映一幅图像在同一灰度级的像素的分布情况。一个好的加密系统,其加密图的直方图应该呈统一分布,以抵抗外界的数学统计攻击。本文的原图和加密图的直方图如图4所示。直方图显示,加密前的图像的直方图呈不规则变化,而加密后的图像的直方图基本呈统一分布,这说明密文不能为非法用户提供有效信息,从而可以有效地抵抗外界的统计攻击。
3.4 像素相关性分析
对于一幅普通的图像来说,其相邻像素,包括水平、垂直、对角线方向,理论上是高度相关的。加密图像相邻像素的相关性是衡量一个加密系统的一个重要指标,相邻像素相关性越低,其加密效果更好。本文选取了5 000对相邻像素点测试其相邻像素的相关性,原图像和加密图像的相关性如图5所示。像素相关性rxy的计算公式如下:
式中,x、y为图像相邻像素的灰度值。原图和加密图的相关系数如表2所示。
3.5 差分攻击分析
差分攻击是一种选择明文类攻击,为了抵抗这类攻击,则要求输入图像中少数像素点变化会导致密文大量像素的改变。像素个数改变率(NPCR)和统一平均变化强度(UACI)经常用来作为该类特性的分析指标,NPCR值越接近100,UACI值越接近34,其加密效果越好。NPCR和UACI的定义如下:
式中,C1、C2分别为两幅只有一个像素差别的密文图像,C1(r,c)、C2(r,c)分别为C1、C2在点(r,c)处的像素值,size(D)为对应图像的大小。该算法的NPCR和UACI的仿真结果如表3所示.可以看出,本文算法经过一轮加密就基本可以达到较为理想的效果,两轮迭代之后可以保证NPCR>0.996和UA-CI>33.4,而要得到同样的效果,其他两种算法至少要迭代两次以上才能实现。
4 结束语
本文基于传统加密算法的安全性及复杂度的问题,设计了一种新的基于二次密钥加密的快速图像加密算法。算法两次用到密钥流,像素置乱过程取初始密钥流,像素扩散过程取最终密钥流,在提高了算法安全性的同时很好地降低了算法的计算复杂度。仿真结果表明,该算法还拥有很大的密钥空间,具备较好的抵抗穷举攻击的能力;加密后图像的信源熵接近理想值,说明加密图像的灰度分布比较均匀;加密直方图基本呈统一分布,相邻像素相关性可以达到预期的要求,可以有效地抵抗统计攻击;NPCR值和UACI值接近理想值,可以很好的抵抗差分攻击。为了增强算法的抗攻击能力,还可以对算法进行多次迭代,以保证算法的安全性。
签名加密算法 篇2
【关键词】网络安全;加密;密码
一、前言
随着计算机网络技术的飞速发展,计算机系统的安全问题也越来越引起世界各国的广泛关注,信息网络的大规模全球互连趋势,以及人们的社会生活对计算机网络依赖性的与日俱增,使得计算机网络的安全性成为信息化建设的核心问题。
二、网络安全概况
1.网络安全的基本概念
浅析RSA加密算法 篇3
在传输信息过程中,为确保信息的安全性和保密性,信息加密成为一种主要措施。加密算法的种类不胜枚举。从2012年为期5天的RSA大会中,可见RSA已经运用到社会中的各个领域,受到了全世界的关注。这主要基于RSA加密算法不仅易于理解和实现,而且安全性好。
1 RSA加密算法
1.1 算法原理
文献[1]中描述RSA算法是在1977年由Rivest、Scha Mir和Adle Man发明的。RSA算法是一种既用于数据加密也可以数字签名的非对称密码算法,其安全性依赖于因子分解大数问题。
RSA密码算法是利用陷门单向函数的一种可逆模指数运算,它的安全性是基于大数分解的困难性。下面给出RSA体制的算法流程:
1)RSA加解密算法的初始化
第一,加解密系统随机地选取两个非公开的大素数p和q。
第二,计算出公开的模数N和非公开的欧拉函数,N=pq,φ(N)=(p-1)(q-1)。
第三,随机生成一个整数e作为加密秘钥,并使成立。
第四,计算d(私钥),使得)成立,即,为安全起见立即销毁p、q及e。
2 RSA算法存在攻击
尽管对于RSA的密码分析已经研究了三十多年,但它依然是流行和可靠的。可是,在RSA算法实现的细节上存在一些缺陷,这导致了RSA的安全性下降,从而使RSA被攻击者攻破。下面简单地概述一下目前对RSA算法攻击的几种主要方法。
2.1 数学攻击
实质上就是直接对两个素数乘积N的因式分解。这是一种最直接和最困难的的方法。一旦对N进行分解成功,就很容易得到密钥e。大整数因子分解一直是数论和密码学理论研究中的主要课题。根据目前的研究表明,目前最快的因式分解算法的复杂度为。此外,在文献[4]中,作者提出了用于分解强素数乘积构成的RSA模数N的算法,能够进一步提高了运算效率。
2.2 时间攻击
依赖解密算法的运行时间。P.Kocher提出,利用测定RSA解密所进行的模指数的运算时间来估计解密指数d,然后再确定d的值;可以通过将解密运算量与参数d无关来挫败时间攻击;不断强力穷举密钥。
2.3 密文攻击
攻击者非法获取密文通,过对密文反复用公开密钥加密,可以使明文出现。例:如果取RSA参数(N,e)为(35,17),明文M为33,加密明文:c=3317mod 35=3;再次加密:317mod 35=33,从而得到明文。
2.4 RSA的部分明文攻击
另外,攻击者不仅对可以密文进行攻击,也可以通过获取明文消息的部分信息进行破译或恢复整个明文。这也是RSA存在的另一个安全性的重要问题。
2.5 对RSA小指数的攻击
此攻击方法主要针对RSA算法实现中的细节。如果为了加快加密和验证,选较小的e,并且用这些e向多个用户加密同一个消息(N不同),利用中国剩余定理可以联立方程求解明文。
2.6 公用模攻击
如果需要多个密钥对,有一种做法:不再重新寻找p、q,而只是重新选d、e,即若干对密钥使用同一个模N。这时可以不用重新分组,也方便管理。但可能遭到公用模攻击。这样,如果同一信息用两个不同的指数e加密,并且两个指数e是互素的,则不需要任何解密密钥便能恢复出明文。设M是明文,两个互素的加密密钥分别是e1、e2,共同的模数为N,两个密文分别c1=Me1mod N、c2=Me2mod N。由于e1、e2互素,根据扩展Euclid算法可以找到a和b,使其满足ae1+be2=1。假设a是负数(在a、b中,肯定有一个是负数),再次使用Euclid算法可以计算出c1-1故可得到((c1-1)-rc2s)≡M mod N。
3 参数的选择
RSA体制是将安全性基于因子分解的第一个系统。虽然无法证明因子分解等于破解RSA系统,但若能分解因子N,便能破解RSA系统,所以RSA对公开的N的选择是很关键的。对于公开密钥e和解密密钥d也需要加以限制,否则会使RSA不安全。选择参数会影响RSA整个系统的安全,常用的参数选择应注意要求如下:
3.1 p,q的选择
要想提高RSA的效率和安全性,可以从p、q两个参数以下两个方面着手:素数的检测算法和对p、q的破解。
素数的检测算法。在RSA算法中,首先要产生两个大素数。但是要判断一个大整数是否为素数却一直是个难点。素数检测算法有确定性素数检测法和概率性素数检测法两类。目前,在RSA密码的应用中都使用概率性检测法来判断一个大数是否是素数。但是通过概率性监测算法的检测,还是存在伪素数的情况。
对p、q的破解。从RSA算法原理中,我们知道欧拉函数φ(N)和模数N:φ(N)=(p-1)(q-1)和N=pq。那么根据这两个式子可以构造关于p、q的一元二次方程,即χ2-(N-φ(N)+1)χ+N=0。其中p、q满足:
由文献[4]提出的一种强素数的量子算法,可求得φ(N),这样就可以得到p、q的值,即分解了模数N,RSA就被破解了。
总之,为了抗穷举,p、q都要大;p、q的差要大,如果p、q的差不大,可以用N开方估算p、q;p-1、q-1要有大的素因子,p、q要为强素数;p-1、q-1的公因数要小。
3.2 模数N取几个素数乘积
从RSA算法原理,我们知道模数N是由两个素数相乘得到的。那么模数N可以由多个素数相乘得到吗?答案是肯定的。Euler函数φ(N)表示小于N并且与N互素的正整数个数。如果模数N可因式分解为(其中,ai>0,ai互不相同),则φ(N)=∏Piai×(1-1/Pi)即:。文献[1]已经证明了该推断的正确性。
无论取多个素数还是两个素数相乘,一旦计算出模数N的值,就会都被丢掉。所以这多个素数和两个素数的保密性是一样的,RSA的加密和解密过程是相同的。那么在确定N时应尽可能的选择多个素数相乘。但是如果通过量子算法[4]来对多个素数乘积的模数N进行分解的话,那么就不能构成一元二次方程,分解模数N的难度就更大。
3.3 e,d的选择
e不能太小,如果e小,则可能而未取模,这样可以直接对密文开方求出明文;e太小易遭低指数攻击。为了有效防止被攻击,同时有较快的加解密速度,通常加密密钥e选取16位的素数,并且为modφ(N)的阶数,即i要达到(p-1)(q-1)/2。
d不能太小,应该。解密密钥d的值越小,系统签名和解密运算的速度越快,这对于我们常用的智能卡的加密、银行系统的签名特别重要。
4 小结
综上所述,RSA是一种安全性较好的非对称密码算法。它的安全性依赖于对模数N的因式分解。在日常生活中,RSA算法已广泛地运用到各个领域。那么对RSA算法的攻击无时不在。特别地,当选择的参数不当时,RSA很容易被攻击。要确保RSA的效率和保密性,我们应注意以下几点:对素数检测算法进行改进;用量子算法来研究RSA算法。
摘要:RSA算法不但能用于数据加密,也能用于数字签名,还能检测素数的算法,所以它是目前最有影响力的公钥加密算法,能够抵抗到目前为止已知的所有密码攻击。其安全性依赖于大素数因数分解的困难性。文章主要介绍RSA的加密算法原理、加密与解密过程,存在的攻击,以及参数选择。
关键词:非对称密码,RSA算法,加密,素数,参数,量子算法
参考文献
[1]武亚宁.RSA公钥算法的新探讨及改进[J].信息安全与技术,2012(9):27-28.
[2]白洁.RSA大会,安全领袖眼中的世界[J].信息安全与通信保密,2010(4):16-19.
[3]张宏,刘方圆.四素数RSA加密算法的研究与分析[J].2010:29-30.
[4]潘峰,申军伟.一种强素数因式分解的量子算法[J].2010,46(10):73-74.
签名加密算法 篇4
摘要 随着网络技术的发展,引发各种竞争,网络安全问题也被提上议事日程。在加密技术应用中,数字签名和数字证书技术都是信息保密的重要技术方法,如果把数字签名和数字证书结合起来,综合应用,则更能有效提高网络信息安全程度,而且过程简洁,两种技术无缝接轨,能有效保证网络信息传递的安全,值得在实践中进一步发展创新。
关键词 数字签名;数字证书;网络;加密
中图分类号TP39 文献标识码A 文章编号 1674-6708(2010)31-0200-02
0 引言
随着计算机技术的快速发展,信息网络技术广泛推普应用,与之相应的网络安全问题也被提上议事日程。因为信息与网络涉及到国家的各个方面,包括政治的、经济的、军事的、文化的等诸多领域,在计算机网络中存储、传输和处理的信息,包括政府部门的宏观调控决策、国家安全信息、商业经济信息、银行资金转账、股票证券、能源资源数据和高科技科研数据等息,其中有很多是敏感信息和国家机密,所以承载和集散这些数据信息的载体,如网络、计算机等,难免会成为各种攻击和破坏的对象。万维网络因之不断地遭遇黑客的攻击、破坏捣乱,许多国家机密及重要情报资料被窃取和破坏,甚至造成局部网络系统的瘫痪等,这些破坏行为已经给各个国家、众多使用计算机网络的部门和个人造成程度不同的损失。特别是,当许多安全保密应对措施出现的时候,网络攻击又更猖獗,近乎达到无孔不入的地步。因此,提高安全意识,加强网络技术的安保措施,实施网络技术加密,保障网络使用安全,已经成为网络技术应用和发展的重要内容。
目前,最常用的网络安全防护技术主要有:加密技术、身份验证技术、网络防病毒技术和防火墙技术等。这些技术各有千秋,都能对网络信息安全保障,立下汗马功劳,但又各有不足。尤其是,以往的安全防范措施多是各自为政,互不关联,其防范效果也就有限了。我们设想,如果把几种加密技术和措施结合起来使用,可能有效提高加密层级,比如,把加密技术和身份验证技术结合应用,其安全效果当大幅度提高,保障性更强。其初步的界定是:加密技术和身份验证技术相结合,是指对在网络中所发送的明文消息,用加密密钥加密成密文进行传送,同时给以数字签名和数字证书保障,接收方用解密密钥进行解密,核对证书,确认身份,再现明文消息,从而保证传输过程中密文信息即使被泄露,在无密钥的情况下仍是安全保密的。通过数字签名和数字证书技术的结合应用,以很小的投入和代价,提供可靠的安全保护,目的是保护有关数据、文件、口令和控制信息,保护网上集散的信息数据,能有效地保证网络技术应用和信息资料的安全。数字签名
1.1 数字签名的界定
所谓数字签名(Digital Signature),是公开密钥加密技术的一种应用,是指用发送方的私有密钥加密报文摘要,然后将其与原始的信息附加在一起,合称为数字签名。
1.2 数字签名的使用方法
数字签名的具体使用方法是:报文的发送方从报文文本中生成一个128位或160位的单向散列值(或报文摘要),并用自己的私有的密钥对这个散列值进行加密,形成发送方的数字签名;然后将这个数字签名作文的附件和报文一起发送给报文的接收方;报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公开密钥对报文附加的数字签名进行解密;如果这两个散列值相同,那么接收方就能确认数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别和验证,保证报文的完整性、权威性和发送者对报文的不可抵赖性。数字签名机制提供了一种鉴别方法,普遍用于银行、电子商务等,以解决伪造、抵赖、冒充、篡改等问题。
1.3 数字签名的技术实现
在技术实现上,数字签名的步骤一般有如下几步:
1)发送方用一个Hash函数对消息进行处理,产生消息摘要(Message Digest);
2)发送方将自己的私人密钥和消息摘要进行DSA算法(Digital Signature Algorithm)计算,产生数字签名;
3)将数字签名和消息一起发送出去;
4)接收方用同样的Hash函数对消息进行计算,产生消息摘要;
5)接收方用DSA算法消息摘要和发送方的公开密钥进行计算,产生数字签名S1。同时从接收到的消息中可以得到附加的数字签名S2。对比数字签名S1和S2,若S1与S2相等,则该数字签名得到验证,否则数字签名验证失败,消息发出后可能曾被修改或者是伪造的。整个过程如图1。
图1数字签名及其验证过程
数字签名因其使用方便,技术层级高,在网络信息传递的保密过程中,最常应用。数字证书
2.1 数字证书的概念
顾名思义,数字证书是一个文件。数字证书(Digital Certification,Digital ID)是网络上用以证实一个用户的身份和证实其对网络资源的访问权限。它是一个加密并用口令保护的文件,一般的数字证书总是把一个密钥同一个用户的一个或多个属性进行绑定。数字证书包含有证书拥有者的个人主要信息,可以编码的信息、证书验证机构CA(Certification Authority)和证实的有效期等。其中,个人信息包括证书持有者的姓名、证件编号和电子邮件地址等等,编码的信息指文件中包含一个公开密钥以用来验证消息发送者事先用匹配的私有密钥签过的数字签名。数字证书的内部格式由CC ITTX.509国际标准所规定。
2.2 数字证书的传输
一般是每一个公钥做一张数字证书,私钥用最安全的方式交给用户或自己生产密钥对,数字证书的内容包括用户的公钥、姓名、发证机构的数字签名及用户的其他信息,对方可以借此来验证身份的真假。当然,证书必须预防密钥丢失,可采用恢复密钥和密钥托管等方式处理丢失问题。证书的有效期超过后,必须重新签发,如果私钥丢失或被非法使用,则应废止证书。数字签名与数字证书的综合使用
把数字签名和数字证书技术两者综合起来,一起用于信息传递过程的保密工作,可以有效地提高加密层级,保障网络信息安全。这主要是因为其保密过程增加了几道防范措施。数字签名和数字证书综合应用于网络信息加密,其过程依附在信息传递过程中的。
3.1 数字签名和数字证书的综合应用流程
1)发送者A将一个签名的证书请求(包含她的名字、公钥、可能还有其他一些信息)发送到CA。
2)CA使用发送者A 的请求创建一个消息。CA使用其私钥对消息进行签名,以便创建一个单独的签名。CA将消息和签名返回给发送者A。消息和签名共同构成了发送者A的证书。
3)发送者A将证书发送给发送者B,以便授权他访问发送者A的公钥。
4)发送者B使用CA的公钥对证书签名进行验证。如果证书签名是有效的,就承认证书中的公钥是发送者A的公钥。
图2数字认证过程
与数字签名的情况一样,任何有权访问CA公钥的接收者都可以确定证书是否由特定CA 签名的。这个过程不要求访问任何机密信息。上面这个方案假定发送者B有权访问CA的公钥。如果发送者B拥有发含该公钥的CA证书副本,则他有权访问该密钥。具体的认证过程如图2。
从这过程看来,数字签名和数字证书两种技术,其应用过程并不矛盾,不会产生排斥,倒是能互相照应,无缝接轨,过程也很简洁,使用方便。
3.2 数字签名和数字证书的综合应用举例
把数字加密和数字证书结合起来,可以加大网络信息保密的力度。假如甲方要给乙方供应商发送一份业务合同,其步骤可以是:
第一步,在文字处理软件中填写合同内容细节,在文档地步,插入电子签名,表示甲方已经确认合同;
第二步,用数字签名来生成一个唯一的数字,这就使得合同有了甲方的电子签名和数字签名,附在文件中,以保证合同条款年内容不被修改;
第三步,用私有数字证书对这合同文件进行签名。然后,用电子邮箱把合同文件发给乙方供应商。
乙方供应商收到合同文件之后,现获得甲方的公钥数字证书,确保电子邮件的确来自甲方。乙方运行数字签名持续来验证合同文件在甲方发出之后没有被修改。最后乙方打开文件,在文件底部的电子签名处,看到甲方同意合同条款的签名。这样,几个环节和程序都获得证实,合同文件确实来自甲方,并未被泄密或被修改。然后,乙方即可处理甲方来件,即处理合同订单。这就是经过数字证书和数字签名等保密技术保护的网络信息传递过程。作为比较可靠的数字加密技术,数字签名和数字证书的结合,可以应用于电子邮件、电子支付、电子基金转移等各种用途,以保障其信息安全。结论
随着计算机网络技术的迅猛发展,网络安全问题日益成为人们关注的焦点,加密技术与网络安全密切相关,网络加密的技术和理论也将不断完善和发展,在网络安全中的应用也将越来越广。作为具体的加密技术应用,数字签名和数字证书这两种技术,各有千秋,而把两者结合起来,综合应用,则更能有效保证网络信息传递的安全,值得在实践中进一步发展创新。
参考文献
签名加密算法 篇5
随着社会信息化建设的日趋深入和国内软件产业的迅速发展,计算机软件作为一种特殊的商品,已随着计算机硬件的普及进入社会生活的各个领域。但是作为一种技术高消费型产品,软件产品在研发过程中投入了大量的人力物力,开发成本较高、风险系数较大、技术难度较强、系统安全性较低等诸多因素制约着软件产品的推广。本文以实际开发的共享软件(在VB.NET开发环境下,实现简单的干洗店前台管理系统)为例介绍了不同加密算法在软件加密保护中的综合应用。
1 使用RES算法实现软件注册加密
由于计算机软件的易复制性,为有效保护软件开发者的知识产权,需要使用相应的加密技术,实现对软件的注册加密。就目前来说,最为行之有效的办法就是采用“一机一码”的注册机制对软件进行注册。大量研究表明,通过读取计算机CPU序列号、硬盘序列号、网卡MAC地址等硬件参数作为加密的明文,生成软件的注册码,并通过注册表来保存注册码,能够有效地防止软件的非法复制。而生成注册码的关键是要采用高强度的加密算法,否则,很容易被解密者通过逆向分析写出注册机,导致软件保护彻底失败。RSA是最流行的非对称算法加密之一,它的突出特点是破解者即使分析出软件中的注册验证算法,也很难推导出注册机的算法,非常适合软件注册码的加密算法。
因此,干洗店前台管理系统作为一个共享软件,采用该算法实现软件注册加密是一种行之有效的方法。
1.1 RSA算法的实现
选择两个大素数p、q,尽量使p、q的差值大,并且(p-1)、(q-1)的因子有素数。
计算n=p*q,&(n)=(p-1)*(q-1)注册码的长度取决于n的长度,n的位数越多越安全,在注册码软件加密保护的实际应用中,一般认为RSA算法的密钥需要1024位以上是有安全保障的。
在这个过程中d和n互素,(e,n)为公开密钥,(d,n)为私人密钥,大素数p和q在生成密钥以后不再需要,可以将它们舍弃,但绝不可泄露。
1.2 软件注册的实现
生成软件注册码,需要获取用户端机器的硬件参数所构成的明文。该明文可以采用多种方式进行加解密,由客户端获取,如图1,在客户端可以获取机器码。
用户在未注册状态下获取机器码后,通过多种方式将用户的机器码发送给软件开发人员,由软件开发人员通过软件注册机生成注册码(图2),并将注册码反馈给用户进行注册,以取得软件的使用权。其中在注册码生成的过程中,机器码作为明文信息m,使用私人密钥(d,n)对机器码m进行加密,得到注册码密文s=(m^d)mod n。
用户获取注册码后,将注册码输入后(图1)进行对注册码校验,使用公开密钥(e,n)对注册码s进行解密得到明文信息m’=(s^e)mod n,比较m与m’,如果相等,则s是软件作者给的合法注册码,软件正常运行,并将注册信息写入系统注册表,否则软件注册失败,软件拒绝运行。
由于RSA算法需要进行的都是大数计算,运算速度成为制约RSA算法的瓶颈。无论是软件还是硬件实现,速度一直是RSA算法的缺陷,所以RSA算法一般情况下只用于少量数据的加密,因此在软件注册验证时可以采用RSA算法进行加密。但是在对系统文件和配置文件的加密上,RSA算法显得无能为力了。
2 使用DES算法实现系统文件和配置文件加密
DES(Data Encryption Standard)是典型的并且应用最为广泛的加密算法之一,它是由IBM公司1975年研究并发布的,1977年它得到了美国政府的正式许可,成为一种标准的加密算法。目前已被应用于许多需要安全加密的场合(如银行数据加密等)。DES算法把64位的明文进行16轮编码变换为64位的密文输出块,它使用64位的密钥(实际为56位,8位是奇偶校验位)。DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。
在共享软件开发过程中,对于系统配置文件、系统源文件、系统生成文件的加密,可以采用DES算法进行加密。一方面它具有极强的安全性,另一方面该算法的执行效率较高。
例如,在干洗店前台管理系统中的数据库配置文件中,数据库初始化时的相关数据库服务器、数据库用户名和密码等信息,可以用DES算法加密后存放在数据库配置文件中如图3。
实现方法如下:
3 使用MD5算法实现系统登录加密
MD5加密算法是Hash算法的一种,它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。使用MD5算法加密后的密文具有不可逆性,也就是说即便是密文被别人获取,也很难被破解成明文,因此MD5算法在用户身份验证方面得到广泛应用。
当用户登录系统的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在数据库文件中的密码值进行比较,进而确定输入的密码是否正确。通过这样的步骤,软件系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
在用户登录界面,系统需要将用户输入的密码字符串使用Fun_MD5()函数进行加密,生成用户密码的密文,然后将用户密码的密文字符串与数据库中的用户密码字符串进行比对,如果相同则登录成功,否则登录失败。
在用户注册界面,用户所输入的用户密码字符串,需要先经过Fun_MD5()函数生成用户密码的密文,然后将用户密码的密文保存在数据库中。
因为用户密码的密文具有不可逆性,如果用户的密码遗失,只能将该用户的密码初始化后重新修改。
4 总结
伴随着加密技术的日益成熟,各种加密算法在保护个人隐私及软件传播上做出了巨大的贡献。但是,软件加密所带来的安全只是相对的、暂时的,软件在设计开发的过程中不可避免地存在着一定的隐患和漏洞。随着解密技术的不断发展进步,软件加密技术也在不断完善。
参考文献
[1]卢开澄.计算机密码学.计算机网络中的保密与安全.清华大学出版社.2005.
[2]黄俊,许娟,左洪福.基于RSA算法的注册码软件加密保护.计算机应用.2005.
【签名加密算法】推荐阅读:
加密算法08-06
信息加密算法10-12
公钥加密算法11-13
对称密钥加密算法06-12
RSA加密算法08-15
常用加密算法比较研究07-23
基于DES的加密算法08-30
对称和非对称加密算法06-30
加密不可盲目,有关无线加密协议兼容疑问06-13
加密通信07-15