加密分为两种方式一种是对称加密,一种是非对称加密。
在对称加密算法中,加密和解密使用的密钥是相同的。也就是说,加密和解密使用的是同一个密钥。因此,对称加密算法要保证安全性的话,密钥要做好保密。只能让使用的人知道,不能对外公开。
在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。一把是作为公开的公钥,另一把是作为谁都不能给的私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。
交互场景下多用对称性加密。
数字证书
如何将不对称加密的公钥给对方呢?一种是放在一个公网的地址上,让用户自己去下载,另一种是在建立链接的时候,发送给对方。
如何鉴别这个公钥是正确的?而不是冒充的?这个时候需要权威部门介入,这个权威部门颁发的称为证书Certifcate,证书的内容包括:公钥,证书颁发机构,颁发给谁,签名算法以及使用期限。证书的生成需要发起一个请求(通过发送私钥,生成前面的红字内容),这个请求发到一个权威认证机构certifcate Authority, CA,权威机构卡一个章(一个签名算法,为一个hash算法),然后生成证书。
流程如下:从这个CA颁布的证书里拿到公钥,去解密某个网站的证书签名,如果解密成功,如果解密成功,hash也对的上,表示网站是正确的。
如何确保是真正的权威机构而非伪造的?
CA 的公钥也需要更牛的 CA 给它签名,然后形成 CA 的证书,依次追溯到rootCA。
HTTPS 的工作模式
非对称性加密在性能上不如对称性加密。实际中,公钥私钥主要用于传输对称性加密的密钥,而真正双方大数据量通信都是通过对称性加密进行的。