密码:
密码学中提到的密码(cipher)是一种用于加密和解密的算法,和我们平常所提到的密码(password)是不一样的,password 是一种口令,是用来验证的一组文本字符串。
密钥(key)
对称密钥(Symmetric-key algorithm)
非对称密钥(public-key cryptography)
因为加密和解密使用的是不同的密钥,加密和解密不对称,所以称之为非对称加密。
数字签名(digital signature)
当数据在浏览器和服务器之间进行传输时,为了保证数据没有被篡改和掉包,就使用数字签名。(就像我们签合同的时候签名那样,你的专有字迹任何人从理论上来说是造不出来的)。
1、服务端将讲过hash处后生成的摘要信息(digest)使用私钥加密之后生成签名,将签名和报文一起发送给客户端。
2、客户端收到数据后,将签名提取出来并用公钥解密,如果能够正常解密出digest2,那么就认为是对方发的。
3、客户端将报文(text)提取出来做相同的hash处理,得到摘要deigest1,在于digest2对比,若相等,则表示内容没篡改。
数字证书(certificate authority)
简称CA,是一种权威机构给某网站颁发的一种认可凭证。里面包含了真实服务器的公钥和网站的其他一些信息。主要是保证浏览器确定的服务器是真实的服务器。数字证书机构用自己的私钥加密后发送给浏览器,浏览器用数字证书机构的公钥解密后得到真实服务器的公钥。
为什么要使用这个呢?举个栗子吧。
比如说你使用A厂家给你提供的锁和钥匙,只要钥匙能打开锁,那么这两个就是配对的,一旦钥匙或者锁被换,那么门就打不开了,这个时候你是知道肯定有人动过手脚了,但是如果有人同时将钥匙和锁给换了呢,而且被换后的钥匙和锁配对,那么你是如何保证这个锁是A厂家的呢?那就只能找质检部门来检验(权威机构)了。
回到问题当中,如果有人(a)用自己的公钥把真实的浏览器发送给服务器的公钥给换了,然后a用自己的私钥执行同的hash、数字签名,最后得到的结果什么的都没有什么问题,但是浏览器看到的东西并不是服务器给的,而是a给的。所以数字证书就是为了解决这个事情滴。