携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
非对称加密
非对称加密也叫公钥密码:使用公钥加密,使用私钥解密
原理:
- 使⽤公钥对数据进⾏加密得到密⽂;使⽤私钥对数据进⾏解密得到原数据。⾮对称加密使⽤的是复杂的数学技巧,在古典密码学中没有对应的原型。
使⽤⾮对称加密通信,可以在不可信⽹络上将双⽅的公钥传给对⽅,然后在发消息前分别对消息使⽤对⽅的公钥来加密和使⽤⾃⼰的私钥来签名,做到不可信⽹络上的可靠密钥传播及加密通信。
由于私钥和公钥互相可解,因此⾮对称加密还可以应⽤于数字签名技术。
通常会对原数据 hash 以后对 hash 签名,然后附加在原数据的后⾯作为签名。这是为了让数据更⼩。
经典算法
RSA(可⽤于加密和签名)
RSA的加密工程可以用下来公式来表达
也就是说,RSA的密文是对代表明文的数字的E次方求modN的结果。换句话说,就是将明文自己做E次乘法,然后将其结果除以N求余数,这个余数就是密文。
RSA的加密是求明文的E次方modN,因此只要知道E和N这两个数,任何人都可以完成加密的运算。所以说E和N是RSA加密的密钥。也就是说E和N的组合就是公钥
RSA解密
RSA的解密和加密一样简单,可以用下面的公式来表达:
也就是说,对表示密文的数字的D次方求modN就可以得到明文。换句话说,将密文自己做D次乘法,在对其结果除以N求余数,就可以得到明文。
这里所使用的数字N和加密时使用的数字N是相同的。数D和数N组合起来就是RSA的解密密钥,因此D和N的组合就是私钥。只有知道D和N两个数的人才能够完成解密的运算。
RSA小结
DSA(仅⽤于签名,但速度更快)
数字签名算法(DSA)是用于数字签名的算法,基于模算数和离散对数的复杂度。DSA是Schnorr和ElGamal签名方案的变体。
DSA 算法包含了四种操作:密钥生成、密钥分发、签名、验证
⾮对称加密的优缺点
- 优点:可以在不安全⽹络上传输密钥
- 缺点:计算复杂,因此性能相⽐对称加密差很多
⾮对称加密(如 RSA、ECDSA)的破解
破解思路
- 和对称加密不同之处在于,⾮对称加密的公钥很容易获得,因此制造原⽂-密⽂对是没有困难的事
- 所以,⾮对称加密的关键只在于,如何找到⼀个正确的私钥,可以解密所有经过公钥加密过的密⽂。找到这样的私钥即为成功破解
- 由于⾮对称加密的⾃身特性,怎样通过公钥来推断出私钥通常是⼀种思路(例如RSA),但往往最佳⼿段依然是穷举法,只是和对称加密破解的区别在于,对称加密破解是不断尝试⾃⼰的新密钥是否可以将⾃⼰拿到的原⽂-密⽂对进⾏加密和解密,⽽⾮对称加密时不断尝试⾃⼰的新私钥是否和公钥互相可解。
反破解
和对称加密⼀样,⾮对称加密算法优秀的标准同样在于,让破解者找不到⽐穷举法更有效的破解⼿段,并且穷举法的破解时间⾜够⻓。