首先,具体的流程客户端要求服务端“指定SSL版本和加密组件”,服务器返回CA证书的公钥客户端,用机构的公钥认证服务器返回的CA证书签名是否正确,客户端使用密钥r 用公开密钥加密密钥r,对发送到服务器的秘密密钥进行解密,取得密钥r的后续通信全部有用密钥r加密的Https和用Http区分WEB服务的Http和Https两种通信方式,Http默认为http://www.Sina.com/com 传输采用80的方式,https默认采用不加密,对传输的数据采用443
目前主流的网站基本上默认开始采用HTTPS作为通信方式,一切考虑都是基于安全要求,所以如何在自己的网站上配置HTTPS通信,本文进行了重点介绍
本文的主要内容包括: https加密传输的原理、用于https的CA证书的申请方法、以及WEB服务配置为支持https的方法
https=http ssl,顾名思义,https是在http中添加的SSL保护外壳,信息加密过程通过SSL进行
首先,不谈https,从简单的通信原理图开始吧。
加密传输客户端将client hello发送到服务器端,服务器端将serverhello返回到客户端。 考虑到本论文的讨论是https的加密主题,只讨论信息传输的加密问题,试图实现客户端和服务器端发送的信息client hello和serverhello
http:client hello和server hello在通信中以明文形式传输。 wireshark抓取包的效果如下图所示。
你有没有感觉到这个信息传输完全暴露在互联网上? 你要求的所有信息都能被窥见,但请不要担心。 我们的安全信息现在采用https的传输。 稍后当谈到https时,大家的内心突然变得轻松起来。 但这不是最不重要的。 http的传输http通信原理,如下图:
可知在http的信息传输中,信息容易被劫持。 此外,可以向用户返回伪装服务器被篡改的信息。 试想一下,如果接管了你的银行信息,是不是很可怕? 因此,关于http发信的问题可以归纳如下。
(1)篡改信息:修改通信内容
)2)劫持信息)截获信息通信内容
这些是http不安全的表现。 说http,我们回到本文的主题https,看看人们是如何保护信息的。 所有的要求信息都采用TLS加密,如果没有私钥,就不能分析传输的是什么样的信息
加密传输分为对称加密和非对称加密
最大的隐患是信息劫持和篡改客户发送问候字符串时,在进行信息传输之前,使用加密算法(上图中的私钥s )进行问候加密程序JDuEW8*21 )! @#转发即使在中途被劫持,如果没有对应的私钥s,也无法得知发送的信息是什么。 在上图中,用相同的秘密密钥进行信息的加密和解密,但是,将该加密称为对称加密,如果知道在a和b之间加密的秘密密钥,则任何第三方都不能获得秘密密钥s,所以在一定条件下信息通信的安全问题基本解决。 但是,在现实的情况下(www ),实际的通信模型比上图复杂得多,下图为实际的通信模型
server和所有客户端都用同一个私钥s加密解密,但请考虑这和未加密相同
由于server和所有的客户端都采用同一个私钥s,所以们也可以作为一个客户端获取私钥s,这里没有三百两银子。 因此,在实际的通信中,如下图所示,一般使用不同的私钥而不是相同的私钥进行解密
通过协商方法获取不同的私钥
如上图所示,由于a和server通信采用对称加密a算法,b和server通信采用对称私钥b算法,可以很好地解决不同客户端使用相同私钥进行通信的问题
那个现在又有问题了。对称加密传输,所以们可以偷秘密密钥。 整个通信仍然存在风险。 我该怎么办? 据说要再次加密这个信息(调整私钥的过程),那有必要协商私钥的加密吗? 重复这个,永远都不会有结束。 不能从根本上解决信息通信的安全问题
A通过明文传输和server协商采用了加密算法A,但这条信息本身是没有加密的
非对称加密在密码学中与对称加密一起出现,使用最广泛的加密机制“非对称加密”,如上图,如何对协商过程进行加密
根据上述特征,可以得出以下结论。
)公钥对所有人公开,但私钥需要保密,存在于服务端
)2)从服务器端服务器到客户端) a、b .
...)的信息传输是不安全的:因为所有人都可以获取公钥(3)但client端(A、B.....)向server端的信息传输确实安全的:因为私钥只有server端存在
因此,如何协商加密算法的问题,我们解决了,非对称加密算法进行对称加密算法协商过程。
在这里我们做个小结:
信息通信采用http是不安全的,存在信息劫持、篡改的风险,https是加密传输,是安全的通信,对于https加密的过程,我们首先介绍的对称加密,采用对称加密进行通信存在秘钥协商过程的不安全性,因此我们采用了非对称加密算法解决了对协商过程的加密,因此https是集对称加密和非对称加密为一体的加密过程
安全的获取公钥
细心的人可能已经注意到了如果使用非对称加密算法,我们的客户端A,B需要一开始就持有公钥,要不没法开展加密行为啊。
这下,我们又遇到新问题了,如何让A、B客户端安全地得到公钥?
client获取公钥最最直接的方法是服务器端server将公钥发送给每一个client用户,但这个时候就出现了公钥被劫持的问题,如上图,client请求公钥,在请求返回的过程中被×××劫持,那么我们将采用劫持后的假秘钥进行通信,则后续的通讯过程都是采用假秘钥进行,数据库的风险仍然存在。在获取公钥的过程中,我们又引出了一个新的话题:如何安全的获取公钥,并确保公钥的获取是安全的, 那就需要用到终极武器了:SSL 证书(需要购买)和CA机构
如上图所示,在第 ② 步时服务器发送了一个SSL证书给客户端,SSL 证书中包含的具体内容有证书的颁发机构、有效期、公钥、证书持有者、签名,通过第三方的校验保证了身份的合法,解决了公钥获取的安全性
以浏览器为例说明如下整个的校验过程:
浏览器读取证书中的证书所有者、有效期等信息进行一一校验浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发 如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。如果找到,那么浏览器就会从操作系统中取出 颁发者CA 的公钥,然后对服务器发来的证书里面的签名进行解密浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比 (防止信息被修改)对比结果一致,则证明服务器发来的证书合法,没有被冒充, 此时浏览器就可以读取证书中的公钥,用于后续加密了至此第一部分关于HTTPS的原理介绍已经结束了,总结一下:
HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有怕黑的盼望篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。
证书的签发过程: 服务方 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;.如信息审核通过,CA 会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名;客户端 C 向服务器 S 发出请求时,S 返回证书文件;客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;客户端然后验证证书相关的域名信息、有效时间等信息;客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。在这个过程注意几点:
1.申请证书不需要提供私钥,确保私钥永远只能服务器掌握;
2.证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;
3.内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书;
4.证书=公钥+申请者与颁发者信息+签名;
HTTPS的优点尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行怕黑的盼望形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:
(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了怕黑的盼望攻击的成本。
(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。
HTTPS的缺点虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:
(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,怕黑的盼望攻击一样可行。
对称算法和非对称算法举例:
算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA
对称加密算法(加解密密钥相同)
名称
密钥长度
运算速度
安全性
资源消耗
DES
56位
较快
低
中
3DES
112位或168位
慢
中
高
AES
128、192、256位
快
高
低
非对称算法(加密密钥和解密密钥不同)
名称
成熟度
安全性(取决于密钥长度)
运算速度
资源消耗
RSA
高
高
慢
高
DSA
高
高
慢
只能用于数字签名
ECC
低
高
快
低(计算量小,存储空间占用小,带宽要求低)
散列算法比较
名称
安全性
速度
SHA-1
高
慢
MD5
中
快
对称与非对称算法比较
名称
密钥管理
安全性
速度
对称算法
比较难,不适合互联网,一般用于内部系统
中
快好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处理
非对称算法
密钥容易管理
高
慢,适合小数据量加解密或数据签名
算法选择(从性能和安全性综合)
对称加密: AES(128位),
非对称加密: ECC(160位)或RSA(1024),
消息摘要: MD5
数字签名:DSA
轻量级:TEA、RC系列(RC4),Blowfish (不常换密钥)
速度排名(个人估测,未验证):IDEA <DES <GASTI28<GOST<AES<RC4<TEA<Blowfish
简单的加密设计: 用密钥对原文做 异或,置换,代换,移位
参考博客 :
https://blog.csdn.net/qq_34337272/article/details/78334155
https://blog.csdn.net/weixin_42504145/article/details/85207103
https://www.cnblogs.com/wqhwe/p/5407468.html
https://www.cnblogs.com/yunlongaimeng/p/9417276.html