不对称加密算法(RSA、DSA、ECC、DH)
非对称加密算法具有很好的保密性,不需要最终用户交换密钥。但是加解密的速度比对称加密慢很多,在某些极端情况下甚至可以比对称加密慢1000倍。
算法的强度是复杂的,安全性取决于算法和密钥。但是,由于其复杂性,加密和解密的速度不如对称加密和解密快。对称密码体制只有一个密钥,而且不是公开的。如果要解密,必须让对方知道密钥。所以保证其安全性就是保证密钥的安全性,而非对称密钥系统有两种密钥,其中一种是公开的,这样就不需要像对称密码那样传输对方的密钥。这使得它更加安全。
RSA,Elgamal,背包算法,Rabin,D-H,ECC(椭圆曲线加密算法)。RSA算法是应用最广泛的,Elgamal是另一种常用的非对称加密算法。
接收方是唯一能解密加密信息的人,所以接收方手里一定有私钥。发送方有公钥,别人知道也无所谓,因为别人发的信息对接收方来说毫无意义。
客户端需要向服务器发送认证标识,其他客户端可以知道,所以需要用私钥加密,客户端保存私钥。服务器持有公钥,其他服务器知道公钥也没关系,因为客户端不需要登录其他服务器。
数字签名是为了表明信息没有被伪造,而是确实由信息的所有者发送的,附在原始信息的后面。就像手写签名一样,不可否认,简洁。
简洁:散列原始消息以获得消息摘要。消息越短,加密所需的时间就越少。
不可否认性:为了保证签名的唯一性,信息所有者必须是唯一能够对消息摘要进行加密的人,所以必须用私钥对其进行加密(就像笔迹不能被别人学习一样)才能得到签名。如果使用公钥,那么每个人都可以伪造签名。
问题由来:对于1和3,发送方如何知道从网上获取的公钥是真实的?不是被中间人攻击?
这样就需要一个第三方机构来保证公钥的合法性。这个第三方机构就是CA (Certificate Authority),一个证书中心。
CA用自己的私钥对原始信息的所有者发布的公钥和相关信息进行加密,得到的内容就是数字证书。
原始信息的所有者在以后发布信息时,可以带上自己的签名和数字证书,保证信息不会被篡改。信息的接收方首先用CA给出的公钥求解信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后可以通过这个公钥证明数字签名是否真实。
RSA是目前最有影响力的公钥加密算法,它基于一个非常简单的数论事实:两个大素数相乘非常容易,但是分解它们的乘积却极其困难,所以乘积可以公开为加密密钥,也就是公钥,两个大素数数组可以组合成私钥。公钥可以发布给任何人使用,私钥归自己解密。
A要以发送信息给B为例,确定角色:A是加密器,B是解密器。首先,B随机确定一个密钥,这个密钥叫做私钥,这个密钥一直保存在B机中,不发送出去。然后,从这个密钥计算出另一个密钥,称为公钥。这种公钥的特点是几乎不可能自己计算出生成它的私钥。接下来,公钥通过网络被传输到A。A收到公钥后,用公钥对信息进行加密,并将密文通过网络发送给B。最后,B可以用已知的私钥解码密文。以上是RSA算法的工作流程。
因为大数的计算,RSA最快的情况是比DES慢好几倍,无论是软件还是硬件实现。速度一直是RSA的短板。一般来说,它只用于加密少量数据。RSA的速度大约是相同安全级别对应的对称密码算法的1/1000。
与DES和其他对称算法相比,RSA的速度要慢得多。其实一般是用一个对称算法来加密信息,然后用RSA加密一个短的公钥,再把RSA加密的公钥和对称算法加密的消息发送给接收方。
这样对随机数的要求更高,尤其是生成对称密码。否则我们可以绕过RSA直接攻击对称密码。
与其他加密过程一样,分发公钥的过程对RSA来说非常重要。分发公钥的过程必须能够抵抗中间人攻击。假设A给了B一个公钥,让B相信这是A的公钥,C可以截获A和B之间的信息传递,那么C可以把自己的公钥传给B,B认为这是A的公钥。c可以截获B发送给A的所有消息,用自己的密钥解密消息,读取消息,然后用A的公钥加密消息并发送给A..理论上,A和B都不会发现C在窃听他们的消息。今天,人们普遍使用数字认证来防止这种攻击。
(1)针对RSA最流行的攻击一般都是基于大数的因式分解。1999,RSA-155 (512位)分解成功,在一台3.2G中央内存的Cray C916计算机上完成,耗时5个月(约8000 MIPS年),224 CPU小时。
RSA-158表示如下:
65438+2月65438+2009年2月,数字RSA-768 (768位,232位)也被成功分解。此事件威胁到目前1024位密钥的安全,一般认为用户应尽快升级到2048位或以上。
RSA-768表示如下:
(2)秀尔算法
量子计算中的Schell算法可以大大提高穷举的效率。由于RSA算法是基于大数的分解(无法抵抗穷举攻击),量子计算在未来可以对RSA算法构成很大的威胁。一台n个量子位的量子计算机,每次可以进行2 n次运算。理论上,密钥为1024比特的RSA算法,用512个量子比特的量子计算机在1秒内就可以破解。
DSA(数字签名算法)是Schnorr和ElGamal的签名算法的变体,被美国NIST视为DSS(数字签名标准)。DSA是基于整数有限域的离散对数问题。
简单来说,这是一种更高级的验证方式,作为数字签名使用。不仅有公钥、私钥,还有数字签名。私钥被加密以生成数字签名,公钥验证数据和签名。如果数据和签名不匹配,则验证失败。数字签名的功能是验证数据在传输过程中没有被修改。数字签名是单向加密的升级。
椭圆加密算法(ECC)是一种公钥加密算法,由Koblitz和Miller于1985年首先提出。其数学基础是利用椭圆曲线上的有理点计算Abel加法群上的椭圆离散对数的困难。公钥密码系统根据所基于的问题一般分为三类:大整数分解问题、离散对数问题和椭圆曲线。有时椭圆曲线被归类为离散对数。
ECC的主要优势在于,在某些情况下,它使用比其他方法更小的密钥(如RSA ),从而提供相当或更高的安全级别。ECC的另一个优点是可以定义群之间的双线性映射,基于Weil对或Tate对;双线性映射在密码学中有很多应用,比如基于身份的加密。然而,一个缺点是加密和解密操作的实现比其他机制花费更长的时间。
在给定密钥长度的情况下,ECC被广泛认为是最强大的非对称算法,因此它在带宽要求非常严格的连接中非常有用。
比特币钱包的公钥是通过椭圆曲线算法生成的,公钥可以通过椭圆曲线乘法由私钥计算出来,这是一个不可逆的过程。
blogs.com/wangzxblog/p/13667634.html
blogs.com/taoxw/p/15837729.html
blogs.com/fangfan/p/4086662.html
blogs.com/utank/p/7877761.html
blogs.com/muliu/p/10875633.html
blogs.com/wf-zhang/p/14923279.html
/p/7a927db713e4
/ljx 1400052550/文章/详情/79587133
/yuanjian 0814/文章/详情/109815473