http://www.cnblogs.com/TankXiao/archive/2012/11/28/2793365.html
HTTPS的身份认证机制,如何证明我是我?
我知道某带密码门锁房间的密码,如何证明我有这个密码呢?有以下两种方式:
①:我把密码告诉你,你用密码打开该房间的锁。
②:我知道该房间内有某一物品,我用密码打开房间的们,然后把物品拿出来给你看。
方式①的结果是密码泄露了,方式②是零知识证明,他指的是证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。
什么是HTTPS?
HTTP(应用层) ---> TCP(传输层)--->IP(网络层)--->网络接口(数据链路层) HTTP协议
HTTP(应用层) ---> SSL or TLS--->TCP(传输层)--->IP(网络层)--->网络接口(数据链路层) HTTPS协议
HTTPS如何保证安全的?
一、加密---防窃听
采用非对称加密
对称加密:加密和解密函数相同
非对称加密:加密和解密密钥不同, 张三 和 李四 进行信息传输,张三 将自己的公钥传给 李四 ,李四在得知张三公钥的前提下,对其进行信息进行加密传递给张三,然后张三可以用自己的私钥对其进行解密。
二、采用签名---防篡改
eg:张三将自己的信经过加密后(hash)后并附上签名,当李四收到信时,就会对签名按照张三的公钥去解密得到内容,和信再hash后的进行对比,防止篡改
三、证书---防冒充
比如王二去获取了张三的公钥,并将张三的公钥给改为自己的公钥,此时用自己的私钥给李四写信,但是李四以为拿到了张三的公钥并且信息未被篡改,但其实是王二冒充了张三,要改变此场景,就需要数字证书,张三去证书中心(CA)申请证书,而CA用自己的私钥对张三的公钥和相关信息进行加密,生成数字证书,张三在写信时附上自己的签名和证书,李四收到信后用CA的公钥解密证书,确信得到张三的公钥。
HTTPS
①服务器把自己的公钥登录至数字证书认证机构。
②数字证书机构把自己的私钥向服务器的公开密码部署数字签名并颁发公钥证书。
③客户端拿到服务器的公钥证书后,使用数字证书认证机构的公开密钥,向数字证书认证机构验证公钥证书上的数字签名。以确认服务器公钥的真实性。
④使用服务器的公开密钥对报文加密后发送。
⑤服务器用私有密钥对报文解密。