1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"。这个算法启发了其他科学家。人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。
这种新的加密模式被称为"非对称加密算法"。
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。
CA:产生和确定数字证书的第三方可信机构。
画外音:没有经过公证的秘钥对是不可信的。
在我们实际开发中,一般会用到加密和签名,总结一句:
加密,公钥负责加密,私钥负责解密;
签名,私钥负责签名,公钥负责验证。
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
非对称加密应用十分广泛,系统对接,https等。相比对称加密更加安全,但也存在两个明显缺点:
所以公钥加密目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容的加解密。
知识点:用非对称加密来加密传输对称加密的秘钥,用对称加密来加密数据,两者相互结合,优势互补。
RSA公钥和私钥的推导过程:
挺有意思的,一定要自己推理一遍,不明白的地方,谷歌一下!