您现在的位置是: 首页 > 励志语录 励志语录
列举5个数字签名算法_列举5个数字签名算法
ysladmin 2024-05-12 人已围观
简介列举5个数字签名算法_列举5个数字签名算法 谢谢大家给我提供关于列举5个数字签名算法的问题集合。我将从不同的角度回答每个问题,并提供一些相关资源和参考资料,以便大家进一步学
谢谢大家给我提供关于列举5个数字签名算法的问题集合。我将从不同的角度回答每个问题,并提供一些相关资源和参考资料,以便大家进一步学习和了解。
1.�о�5������ǩ���㷨
2.数字签名
3.什么是数字签名?谈谈原理以及收费情况。
4.SSL常见加密算法
�о�5������ǩ���㷨
答案:A
RSA:公钥加密算法(RSA)是第一个既能用于数据加密也能用于数字签名算法。 IDEA:国际数据加密算法(IDEA)是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整加密密钥中生成一个子密钥。 RC4:RC4算法是一种在电子信息领域加密技术手段,用于无线通信网络,是一种电子密码,只有经过授权(缴纳相应费用)用户才能享受该服务。 MD5:MD5全称是Message-Digest Algorithm 5(信息-摘要算法),是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密格式。
数字签名
签名算法是公钥密码学的“消息认证码”,它主要包括3个部分:
签名算法可以在加密算法的基础上构建。使用一个私钥,可以对一个消息产生一个值,通常是使用hash算法来生成。任何人都可以用公钥来检查这个值,计算该值是否由消息计算得到,然后将两者进行验证。和公钥加密算法一个明显的不同是,使用私钥来产生消息(这个情形下就是签名),使用公钥去解析它,这个和加密的过程是反过来的。
上面的说明是对后面很多重要细节的概述。本文将继续讨论一些细节。
数字签名算法(Digital Signature Algorithm DSA)是英国联邦政府的一个数字签名标准。它由NIST(National Institute of Standards and Technology)在1991年第一次提出,用来作为数字签名的标准(Digital Signature Standard DDS)。该算法由NSA的技术顾问David W.Kravitz发布。
DSA的密钥生成分为两步:第一步,选择在用户中共享的参数。第二步,为每一个用户生成一份公私钥对。
首先需要挑选一个被推荐的密码hash函数H,密钥长度L和一个素数长度N。原始的DSS中推荐L的长度为512和1024之间,现在NIST推荐密钥的长度为3072位这样密钥的安全生命周期就可以到2030年。随着L的增长,N也需要增长。
接下来选择素数q,其长度为N位。N需要小于或者等于hash输出的长度。再选择一个L位长度的素数p,使得p-1是q的倍数。
最后一部分是最容易让人困惑的。需要找到一个数字g,它的乘法序模p是q。最简单的方法是设
也可以尝试其他比2大,比p-1小的数。
一旦确定了(p,q,g),可以将其在用户中共享。
有了参数,就该来位用户计算公钥和私钥了。首先,选择随机数x (0<x<q), 接下来计算y y=g^x(mod p).这样私钥就是x,公钥为(p,q,g,y)。
为了对消息进行签名,签名者在0-q之间挑选一个随机数k。如何挑选k是一个很敏感和相关的过程,这个在之后进行讨论。当k选定后,可以计算消息m的签名的两部分r和s:
如果两者中任意一个是0(罕见时间),再重新选择一个k。
验证签名需要一个复杂的计算。给定消息m和签名(r,s):
如果签名是有效的,那么v就会等于r,也就是签名的第二部分。
虽然目前DSA算法自身没有什么问题,但是它却很容易出错。进一步说,DSA是非常敏感的,仅仅是一个很小的实现上的错误就可以毁掉整个机制。
特殊来看,签名参数k的选择是非常严格的。可以说是密码系统中对于随机数选择中最严格的。例如,很多算法需要一个nonce值。nonce值仅仅需要唯一,它不需要私密。它也不需要不可预测。nonce值通常可以使用简单的计数器或者时钟。很多其他算法例如CBC模式,需要一个初始化向量。它不需要是唯一的,只需要是不可预测的。它也不需要是私密的:初始化向量通常和密文一起。但是DSA算法的随机数k是以上的组合:
如果没有满足这些特性,攻击者可以尝试从一定数量的签名中得到你的私钥。例如,攻击者只要知道k的一些位,和比较多的有效签名,就可以恢复出私钥。[NS00]
实际中DSA的很多实现都不能保证唯一性,愉快地重用随机数k。这就使得只需要使用简单的数学就可以恢复密钥。因为这个攻击很容易理解,应用非常广泛并且可以造成非常严重的影响,本节将讨论它的细节。
假设攻击者看到了很多对于不同消息mi的签名(ri,si),它们使用了相同的k。攻击者可以挑选出两个签名(r1,s1)和(r2,s2),假设它们的原消息位m1和m2.s1和s2的是通过如下计算得到的
攻击者可以推断出r1和r2是相同的,因为
重用了相同的k,而r仅仅依赖于k,所以r是相同的。另外由于签名者使用的是同一个密钥,两个公式中的x也是相同的。
将两个s相减,得到一下的计算:
可以得到k
两个hash值H(m1)和H(m2)很容易计算。它们并没有加密,被签名的消息是公开的。签名的两个s1和s2是签名的组成部分,攻击者都可以看到。所以攻击者可以计算得到k。目前它还没有得到私钥x,然后用私钥去伪造签名。
再次看下s的计算过程,这次把k当作是已知项,x作为需要解决的变量。
所有有效的签名都满足这个等式,所以可以尝试任意一个签名。来解出x
同样的H(m)是公开的,攻击者可以计算出k。假设他们已经计算出了k,s本身就是签名的一部分。现在只需要计算r^(-1)(mod q)(也就是r相对于模q的逆元),这个同样也可以计算出来。(更多信息可以查看附录中有关于现代数学,记住q是个素数,所以这个模的逆元是可以直接计算的)。这也就意味着攻击者,只要发现了任何签名的k,就可以得到私钥的值。
目前为止,本节中假设的是签名者一直使用的同一个随机数k。更糟的是,签名者只要在攻击者可以看到的签名中,有两个签名复用k一次。如上,k重复了,r就会重复。而r是签名的一部分,签名者的这个错误非常容易被观察到。这样即便签名者只是很罕见地重用了k(比方说随机数生成器的问题),只一次,攻击者就可以打破这个DSA系统。
简而言之,在DSA签名算法中重用参数k就意味着攻击者可以破解出私钥。
TODO:
和一般的DSA相同,k的选择是极为严格的。攻击者可以使用几千个签名,这些签名的nonce仅仅有一些位泄漏,攻击者便可以破解出签名的私钥。
本章描述的签名算法有一个特点被称为:不可抵赖性。简单说,它意味着不可以否认自己就是签名消息的发送者。任何人都可以验证你用私钥签署的签名。但是签名只有你可以做。
这通常并不是一个有用的特性,只有少数接受者可以验证签名可能更加谨慎。这种算法通常需要只有接受者才可以计算出这个特殊的值。
这些消息是可以拒绝的,例如一种通常被称为“可以否认的消息认证”。一个发送者认证一条消息给接收者,发送者之后可以否认它发送了这条消息。接收者也无法向任何人证明发送者给他发送了特定的消息。
什么是数字签名?谈谈原理以及收费情况。
0、引言
随着信息时代的到来,人们希望能通过网络信息传输对文
件、契约、合同、信件和账单等进行数字签名来代替以往的手写
签名。数字签名的目的是提供一种手段,使得一个实体把他的身
份与某个信息捆绑在一起。一个消息的数字签名实际上是一个
数,它仅仅依赖于签名者知道的某个秘密,也依赖于被签名信息
本身。所以,将数字签名看成是一种证明签名者身份和所签署内
容真实性的一段信息。
1、RSA算法描述
RSA算法是Rivest,Shamir和Adleman于1977年提出的比
较完善的公钥密码系统。RSA算法是一个既能用于加密又能用
于数字签名的公开密钥算法。RSA算法是基于这样一个数论事
实:将两个大素数相乘十分容易,但是想分解它们的乘积却是困
难的。
RSA公钥加密的整个算法可以通过以下步骤来描述。
1)生成两个大的素数p和q,p≠q;
2)计算n=p×q,!(n)(p-1)(q-1);
3)随机选择一个整数(公开的加密密钥),0<e<!(n),使得
gcd(e,!(n))=1;
4)计算满足下列条件(保密的解密密钥),ed=1mod!(n);
5)对明文的加密运算是:c=E(m)=memodn;
6)对密文的解密运算是:m=D(c)=cdmodn。
此时公开(e,n)作为加密密钥E,自己保密(d,n)作为解密密钥
D。隐藏p和q。
2、RSA的保密性
假设用户A获得了一对密钥变换(EA、DA),其中EA是可以
公布于众的加密密钥,DA是由用户A自行秘密保管的解密密
钥。当用户B要向用户A发送消息M时,B只需要找到EA,用它
对消息M进行加密,C=EA(M),然后把密文C在公共信道上传
送给A。当A收到密文C后,就用A秘密保管的解密密钥DA解
密,DA(C)=DA(EA(M))=M,恢复出明文M。利用上述加密解密
过程可使用户A和B之间达到保密传输。因为即使有窃听者获
得了密文C,但是他没有解密密钥DA,所以不能恢复出明文M
例如:
如果用户A取p=7,q=71则n=pq=3337,!(n)(p-1)(q-1)=46×
70=3220随机选取加密密钥e=79,则d=79-1。公开e和n,将d保
密,隐藏p和q。设用户B要发给A的信息为m=688,用户B对m
进行如下加密:c=68879mod3337=1570然后将密文c发给用户A
用户A则利用保密的解密密钥进行如下解密:15701019mod3337=
688=m。
虽然这解决了用户A和B之间的保密传输,但是并没有解
决可靠性,当A收到密文C时,并不能确定密文C就是用户B
发来得。因为主动攻击的扰乱者也是知道用户A的加密密钥的
因此扰乱者可以冒充B发一条假消息给A,这时A是无法判断
该消息是否B发来的。这个问题可以利用数字签名来解决。
3、RSA数字签名方案
3.1公钥加密体制的数字签名原理
其原理是:用户B用你的私钥来"加密"一组信息,用户A用公钥来解密,如果"解密"成功,说明这组信息就是用户B加密
的,用户B无法否认这个事实,这就是数字签名。
假设用户B获得了一对密钥变换(EB、DB),其中EB是可以公
布于众的加密密钥,DB是由用户B自行秘密保管的解密密钥。
当用户B要向用户A发送消息M时,如果用户B首先用自己保
管的解密密钥DB作变换,C'=DB(M),然后把C'传送给A,当A
收到密文C'后,可以用B的公开密钥EB作逆变换,EB(C')=EB
(DB(M))=M,恢复出原始信息M。这样A就可以判断该消息一
定是B发来的,因为只有B才知道秘密密钥DB,除B外,任何
人都不能仿造信息C',因此C'可以作为用户B的数字签名,A可
以通过EB来验证B的合法性,B对消息C'的确定性也是无法否
认的。这样的应用只解决了消息的可靠性,可以防止第三者插
入、伪造和篡改消息,但是并不能解决消息M的保密性,因为除
了A以外,其他人也能收到,并恢复消息M。
3.2保密性和可靠性的解决方案
为了同时解决信息的保密性和可靠性这两个问题,我们可
以对消息作如下处理:
用户A和B分别获得了各自的密钥对(EA、DA)和(EB、DB),
如果B要向A发送一条消息M,则可以先把消息M用B的秘
密密钥DB处理,再用A的公开密钥EA加密,即C=EA(DB(M)),
然后把C发送给A,A收到信息C后,先用自己的秘密密钥DA
解C,再用B的公开密钥EB恢复,即
EB(DA(C))=EB(DA(EA(DB(M))))=EB(DB(M))=M。
把这两种方法如此地结合起来,用于加密信息,这样就可以
到达人们预期的目的。使公共信道上传输的信息,即具有保密
性,有具有可靠性,即可以防止第三者的被动窃取,又可以防止
第三者的主动破坏,同时还具有认可和公证的能力。
4、RSA安全性分析
RSA的安全性依赖于大数分解的难度,目前因子分解速度
最快的算法,其时间复杂性为exp(sqrt(n)1n1n(n))。若和为100位
的十进制数,这样为200位十进制数,按每秒107次运算的超高
速计算机,也要108年才能破解。因此,在一定有效期内,RSA数字
签名是安全可靠的。2002年成功分解了158位的十进制数,故
选取的素数p和q应该是长度为100的十进制数(相当于332
位二进制数)。为了达到长期安全应该至少使用1024位。
RSA的安全性受到的最大威胁就是整数素因子分解技术的
发展,如果因素分解技术有了突破性发展,那么RSA的破解将会
变得非常简单,可以直接计算出私钥。
5、结束语
数字签名有很多实现方法,目前广泛应用的主要有Hash签
名,DSS签名,RSA签名,ElGamal签名。其中RSA签名是最流行
的一种数字签名算法,尽管数字签名技术还不够完善,如签名后
的文件可能被接收者重复使用,公开密钥加密算法的效率相当
低,不易用于长文件的加密等。我们可以把RSA算法与其他算
法(如DES算法)结合起来使用,既提高了他它的运行速度,又保
证了一定的安全性。随着Internet的快速发展及其算法的不断改
进和完善,其应用领域会日益广泛,有着广阔的发展前景。
SSL常见加密算法
什么是数字签名?数字签名与电子签名是不是一回事?
电子签名和数字签名的内涵并不一样,数字签名是电子签名技术中的一种,不过两者的关系也很密切,目前电子签名法中提到的签名,一般指的就是"数字签名"。
电子签名
要理解什么是电子签名,需要从传统手工签名或盖印章谈起。在传统商务活动中,为了保证交易的安全与真实,一份书面合同或公文要由当事人或其负责人签字、盖章,以便让交易双方识别是谁签的合同,保证签字或盖章的人认可合同的内容,在法律上才能承认这份合同是有效的。而在电子商务的虚拟世界中,合同或文件是以电子文件的形式表现和传递的。在电子文件上,传统的手写签名和盖章是无法进行的,这就必须依*技术手段来替代。能够在电子文件中识别双方交易人的真实身份,保证交易的安全性和真实性以及不可抵懒性,起到与手写签名或者盖章同等作用的签名的电子技术手段,称之为电子签名。
从法律上讲,签名有两个功能:即标识签名人和表示签名人对文件内容的认可。联合国贸发会的《电子签名示范法》中对电子签名作如下定义:"指在数据电文中以电子形式所含、所附或在逻辑上与数据电文有联系的数据它可用于鉴别与数据电文相关的签名人和表明签名人认可数据电文所含信息";在欧盟的《电子签名共同框架指令》中就规定?quot;以电子形式所附或在逻辑上与其他电子数据相关的数据,作为一种判别的方法"称电子签名。
实现电子签名的技术手段有很多种,但目前比较成熟的,世界先进国家普遍使用的电子签名技术还是"数字签名"技术。由于保持技术中立性是制订法律的一个基本原则,目前还没有任何理由说明公钥密码理论是制作签名的唯一技术,因此有必要规定一个更一般化的概念以适应今后技术的发展。但是,目前电子签名法中提到的签名,一般指的就是"数字签名"。
数字签名
所谓"数字签名"就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证而无法比拟的。"数字签名"是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。
数字签名在ISO7498-2标准中定义为:"附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造"。美国电子签名标准(DSS,FIPS186-2)对数字签名作了如下解释:"利用一套规则和一个参数对数据计算所得的结果,用此结果能够确认签名者的身份和数据的完整性"。按上述定义PKI(Public Key Infrastructino 公钥基础设施)提供可以提供数据单元的密码变换,并能使接收者判断数据来源及对数据进行验证。
PKI的核心执行机构是电子认证服务提供者,即通称为认证机构CA(Certificate Authority),PKI签名的核心元素是由CA签发的数字证书。它所提供的PKI服务就是认证、数据完整性、数据保密性和不可否认性。它的作法就是利用证书公钥和与之对应的私钥进行加/解密,并产生对数字电文的签名及验证签名。数字签名是利用公钥密码技术和其他密码算法生成一系列符号及代码组成电子密码进行签名,来代替书写签名和印章;这种电子式的签名还可进行技术验证,其验证的准确度是在物理世界中对手工签名和图章的验证是无法比拟的。这种签名方法可在很大的可信PKI域人群中进行认证,或在多个可信的PKI域中进行交*认证,它特别适用于互联网和广域网上的安全认证和传输。
“数字签名”与普通文本签名的最大区别在于,它可以使用个性鲜明的图形文件,你只要利用扫描仪或作图工具将你的个性签名、印章甚至相片等,制作成BMP文件,就可以当做“数字签名”的素材。
目前可以提供“数字签名”功能的软件很多,用法和原理都大同小异,其中比较常用的有“ OnSign”。安装“OnSign”后,在Word、Outlook等程序的工具栏上,就会出现,“OnSign”的快捷按钮,每次使用时,需输入自己的密码,以确保他人无法盗用。
对于使用了“OnSign”寄出的文件,收件人也需要安装“OnSign”或“OnSign Viewer”,这样才具备了识别“数字签名”的功能。根据“OnSign”的设计,任何文件内容的窜改与拦截,都会让签名失效。因此当对方识别出你的“数字签名”,就能确定这份文件是由你本人所发出的,并且中途没有被窜改或拦截过。当然如果收件人还不放心,也可以单击“数字签名”上的蓝色问号,“OnSign”就会再次自动检查,如果文件有问题,“数字签名”上就会出现红色的警告标志。
在电子邮件使用频繁的网络时代,使用好“数字签名”,就像传统信件中的“挂号信”,无疑为网络传输文件的安全又增加了一道保护屏障。
一、加密算法常见分类
根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。
对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。
非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
1)对称加密算法
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
2)非对称加密算法
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
3)单向加密算法
BASE64 严格地说,属于编码格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
HMAC(Hash Message Authentication Code,散列消息鉴别码)
二 .特点
DES,3DES,AES 加密数据,只有一个密码,密钥长度不同。
PBE Password-based encryption 对称加密中基于密码加密,口令用户掌管不借助任何物理媒介,采用随机数杂凑多重加密保证数据安全。
RSA 即能用户数据加密也能用于数字签名,同时有公钥和私钥。数字签名的意义在于,对传输过来的数据进行校验确保传输过程中不被修改。
单向加密中MD5,SHA,HMAC为非可逆加密,单向散列一般用于产生信息摘要。通常作为加密的基础。单向加密主要用途为校验传输过程中是否被修改过。
三.算法比较
在管理方面:公钥密码算法只需要较少的资源就可以实现目的,在密钥的分配上,两者之间相差一个指数级别(一个是n一个是n2)。所以私钥密码算法不适应广域网的使用,而且更重要的一点是它不支持数字签名。
在安全方面:由于公钥密码算法基于未解决的数学难题,在破解上几乎不可能。对于私钥密码算法,到了AES虽说从理论来说是不可能破解的,但从计算机的发展角度来看。公钥更具有优越性。
-从速度上:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,如果用硬件来实现的话这个比值将扩大到1000倍。
四、参考
/support/ssl_DES.html
好了,关于“列举5个数字签名算法”的话题就讲到这里了。希望大家能够对“列举5个数字签名算法”有更深入的了解,并且从我的回答中得到一些启示。