前篇简单写了关于对称加密,这篇用于梳理非对称加密,希望对读到这里的你有所帮助。
简介
1976年之前,所有加密方式都是同一种方式——对称加密;1976年,两位美国计算机学家 Diffie 、Hellman 提出了一种崭新构思,可以在不直接传递密钥的情况下,完成密钥交换。这被称为“ 迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange) ”算法,缩写为D-H。
D-H通过公共信道交换一个信息,就可以创建一个可以用于在公共信道上安全通信的共享秘密(shared secret)。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。虽然迪菲-赫尔曼密钥交换本身是一个匿名(无认证)的密钥交换协议,它却是很多认证协议的基础,并且被用来提供传输层安全协议的短暂模式中的前向安全性。
使用过程原理
使用非对称加密算法的情况下,通信的A、B双方需要各自自带一对密钥——公钥(publicKey)和私钥(privateKey)。通信时,双方上传自己的公钥,保留自己的私钥。A将要发送给B的数据先用B的公钥加密,当B收到信息,只需用获得的自己的私钥解密。
因为每对密钥都是相互匹配且唯一的,即只有相对应的私钥才能对公钥加密的数据进行解密,公钥解密私钥解密也是一样。所以其他收到报文的人都无法解密,因为只有B有自己的私钥,可以对应自己的公钥解密。
一对密钥里的公私钥是不一样的,所以又叫非对称加密。
公钥交换的概念最早由瑞夫·墨克(Ralph C. Merkle)提出。
经典算法—RSA
1977 年三位麻省理工学院的数学家 罗纳德·李维斯特( Ron Rivest )、阿迪·萨莫尔( Adi Shamir )和伦纳德·阿德曼( Leonard Adleman )一起设计了一种算法,可以实现非对称加密。这个算法用他们三个人的名字命名,叫做 RSA 算法。
RSA算法基于一个十分简单的数论事实:将两个大质数(素数)相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。比如:取两个简单的质数:89、97,得到两者乘积很简单8633;但是要想对8633进行因式分解,其工作量成几何增加。
例如,在计算签名时候,客户端保留自己的私钥,上传公钥到服务端,并下载服务端的公钥。计算signature的时候用各自的私钥,后台验证客户端发来的用私钥加密过的signature有效值时,使用客户端的公钥进行解密验证。
这种算法很可靠,且密钥越长越难破解。据目前纰漏文献推断,1024位RSA密钥基本安全,2048位RSA密钥及其安全。
缺点:效率相对较低 , 字节长度限制等。
296

被折叠的 条评论
为什么被折叠?



