要求
1 .服务器认证:客户端需要知道他是不是与真正的服务器通话,而不是伪造的服务器
2 .客户端认证:服务器知道他们是在与真正的客户端而不是伪造的客户端通话
3 .完整性:客户端和服务端的数据不会被修改
4 .加密:客户端和服务端的对话是私密的,无需担心被窃听
5 .效率:算法运行足够快
6 .普适性:基本上所有的客户端和服务端都支持这些协议
7 .
1 .内容加密:浏览器到百度服务器的内容都是加密形式传输,中间者无法直接查看原始内容
2 .身份认证,保证用户访问的是百度服务,即时被dns劫持到了第三方站点,也会提醒用户没有访问百度服务,可能被劫持
3 .数据完整性,防止内容被第三方冒充或者篡改
原理介绍
1 .内容加密
1 .非对称密匙交换:Y=X*N 告诉别人使用x方法进行加密,但是只有我知道n和y,所以只有我能计算出来x的值。简单的就是把邮箱放在楼下,所有人都能往里面送邮件,但是只有我能打开看
2 .非对称加密的缺点:cpu计算资源消耗非常大,一次完整的TLS握手,密匙交换的非对称解密的计算量占整个握手的90%以上。
3 .非对称加密算法对加密的内容长度有限制,不能超过公匙长度,比如256个字节,所以公匙加密只能作为密匙较缓或者内容签名,不能作为应用层传输内容的加解密
2 .数据完整性
1 .跟md5签名差不多,只不过安全级别更高。
身份认证
1 .数字证书.用来身份授权,确保浏览器访问的网站是经过CA证书验证的可信任网站
2 .分发公匙:每个数字证书都包含了注册者生成的公匙,在SSL握手时会通过certificate消息传递给客户端
3 .数字签名
1 .除了加密和解密报文之后,还可以用加密系统对报文进行签名
2 .数字签名是附加在报文上的特殊加密校验码。这个只有作者的私有密匙才能解码
3 .
4 .通过https建立一个安全的web事物之后,现代的浏览器都会自动获取所连接服务器的数字证书,如果没有证书就会连接失败
5 .浏览器收到证书时会对签名颁发机构进行检查。如果这个机构是个很有权威的公共签名机构,浏览器可能已经知道其公开密钥了(浏览器会预先安装很多签名颁发机构的证书)
6 .如果对签名颁发机构一无所知,浏览器就无法确定是否应该信任这个签名颁发机构, 它通常会向用户显示一个对话框,看看他是否相信这个签名发布者。签名发布者可 能是本地的 IT 部门或软件厂商
术语
1 .密匙:改变密码行为的数字化参数
2 .对称加密:编码和解码都使用相同的算法
1 .缺点:在发送者和接收者互相对话之前,一定要有一个共享的密匙
3 .非对称加密;编码和解码使用不同的算法
1 .确保获得以下资源也不能计算出保密的私有密匙
2 .公开密匙
3 .拦截下来的密文
4 .一条报文和与之相关的加密之后的密文
4 .数字签名:用来验证报文未被伪造或者篡改的校验和
5 .数字证书:由一个可信组织验证和签发的识别信息
6 .混合加密系统
1 .公开密匙加密算法的速度很慢
2 .比较常见的是在两个节点上通过便捷的公开密匙加密技术建立安全通道
3 .然后使用安全通道产生并发送临时的随机对称密匙,使用更快的对称加密技术对剩余的数据进行加密。
4 .https,ssh都是这样的
https
1 .使用https时,所有的http请求和响应都会在发送到网络之前,进行加密
2 .https在http下面提供了一个传输级的密码安全层TLS,SSL的升级版,更加厉害的加密算法
3 .开始加密通信之前,客户端和服务端必须建立连接和交换参数
1 .客户端给出协议版本号,客户端的随机数,以及客户端支持的加密方法
2 .服务端确认双方使用的加密方法,给出数字证书,以及一个服务器的随机数
3 .客户端确认数字证书有效,然后生成一个新的随机数,并用数字证书的公匙加密,发送给服务端
4 .服务端使用私匙,解密随机数
5 .客户端和服务端,根据约定的加密方法,使用前面的三个随机数,生成对话密匙,加密接下来的所有对话
6 .对方不需要确认之前自己发过去的数吗?
7 .生成对话密匙需要三个随机数
8 .握手之后的对话使用对话密匙加密(对称加密),服务器的公钥和私匙只用于加密和解密对话密匙(非对称加密),并没有别的作用
9 .DH算法保证第三个随机数不被破解,只要第三个数安全,整个通信就是安全的
服务器证书
1 .SSL支持双向认证,但是实际上客户端并不经常使用客户端证书