https

一、HTTP

HTTP协议和Web服务器的使用_林纾໌້ᮨ的博客-CSDN博客

1.请求格式(请求行+头+体)、响应格式

2.GET  vs  POST

3.常见的响应状态(200、404、405(方法不支持)、500(服务器错误))

4.应用层(HTTP)->传输层(TCP)->网络层(IP)->数据链路层

5.Cookie和Session的理解

6.从浏览器输入网址之后到看到网页发生了什么?

:用户在浏览器中输入url回车,直到看到网页期间发生了什么?_林纾໌້ᮨ的博客-CSDN博客

7.HTTP协议是安全的吗,TCP是安全的吗

      都不是,TCP是保可靠的,但不能保证安全

二、安全问题

存储安全、计算安全、传输安全

存储安全:密码保存等不能明文...

计算安全:任何数据都有可能在内存中计算,但有可能被人攻破内存获取数据

传输安全:数据被窃听(一对一的传输但所有人都知道了)、数据被篡改、数据被伪造(https解决这块的不安全问题)

三、HTTPS

      HTTP协议传输的是明文(无论是放在请求行/头/体中),存在传输安全问题。【网络传输是明文的,它传输是不断通过每个路由器跳转传输过去的】

      HTTPS(HTTP Secure)=HTTP+TLS/SSL(SSL是早期版本)(加密处理的一套机制)

      HTTPS核心还是应用层的事情,也就是说TSL/SSL还是一个纯粹应用层的机制

1.加密——密钥(key)

加密(明文,密钥)= 密文

解密(密文,密钥)= 明文

1)对称加密:加密和解密密钥是同一份

AES算法为主,实现对明文的加密,对称加密速度更快,但密钥的传输不保证安全

加密(明文,密钥)= 密文

解密(密文,密钥)= 明文

2)非对称加密:加密和解密密钥不是同一份

RSA算法,非对称加密速度慢,对称加密的密钥的传输使用非对称加密解决

加密(明文,密钥1)= 密文

解密(密文,密钥2)= 明文

关于密钥:

密钥1:自己保留——私钥;密钥2:谁都可以拿到——公钥

加密(明文,私钥)= 密文  —》解密(密文,公钥)= 明文

加密(明文,公钥)= 密文 —》解密(密文,私钥)= 明文【谁都可以给我发报告,只有我能看到报告内容】

加密(明文,私钥)=密文解密(密文,公钥)=明文防伪造【配对加密的私钥只有我有,其他只能用公钥解开,别人手上没有这份数据无法伪造】
加密(明文,公钥)=密文解密(密文,私钥)=明文防窃听、篡改【谁都可以给我发报告,只有我能看到报告内容】

3)使用非对称加密作为对称加密的密钥传输

      对于密钥相同传输的不安全,可以使用非对称加密作为对称加密的密钥传输,之后真正的数据传输使用对称加密。即使用了对称+非对称加密配合工作保证了安全性。

2.加密过程分析

      前提:任意一对服务器手上都有一对公钥和私钥,私钥是服务器自己有的,公钥是大家都可以有。

      客户端发送请求服务器收到请求,提供公钥放在签名中拿给客户端,同时服务器会选定一个算法生成一个密钥(客户端和服务器协商对称加密算法,客户端随机生成一份对称密钥),这个密钥是给后续对称阶段加密用的(既不是刚的公钥也不是私钥),有了这份密钥之后,客户端用服务器给的公钥对对称密钥进行加密,加密完成后客户端这边再想办法将密文发送到服务器服务器可以拿着私钥解密,这样服务器和客户端手里就有了唯一的一份密钥(即得到对称加密的密钥),这份密钥理论上就是别人看不到,窃听不了的,这样之后的数据通信就可以通过这份密钥用对称加密方式进行了。

ps1:省略了真正生成密钥的过程

ps2:上述加密过程用的是公钥加密,私钥解密,可以防窃听、防篡改,但不能防伪造,会出现一种中间人攻击

中间人攻击

1.客户端-》服务器发起请求

2.服务器传回公钥pub-1:此处中间人可能藏起pub-1,把他自己的pub-2(公钥私钥只要有固定算法谁就可以生成)传给客户端

3.客户端生成了对称加密的密钥key,用enc(key,pub-2)进行加密,传回服务器

4.传回时先到中间人,中间人有pri-2私钥解密,就得到了对称加密key这份密钥,接着它再用enc(pub-1,key)加密传回给服务器,服务器和客户端并不知道中间发生了这些事,对称加密的密钥就信息泄露了。

      解决方案:(技术方案无法解决),全世界有颁发证书的机构(Certification Authority),公钥私钥不再由服务器自动生成,而是由机构统一生成,标记着属于谁。当客户端收到一份公钥时,应该拿公钥去找人验证,是否来自xxx。

3.证书

      由于中间人攻击在技术方面无法解决,所以通过一个机构CA颁发证书来解决(公钥私钥不再由服务器自动生成,而是由机构统一生成,标记着属于谁。当客户端收到一份公钥时,应该拿公钥去找人验证,是否来自xxx。

      证书包括组织名称、域名、公钥,证书颁发给服务器,当客户端请求某个网站时,首先客户端收到的是证书,证书中携带着组织名称域名公钥,这三份协议的有效性由CA(公证处)来做确认和保证。

证书如何保证正确(在相信CA的前提下)

即你怎么保证证书的章是CA盖的

通过签名对比,防止内容被篡改,保证证书一定是由CA颁发(数字签名——通过消息摘要技术)

      实际上摘要技术就是通过哈希算法,任意数据通过一个哈希函数得到的一定是一个唯一的值,只要数据不动,哈希函数不动,最后得到的值一定不动。哈希算法 MD5/SHA-512

同时通过权威机构私钥加密,公钥解密的方式,保证内容不会被伪造

4.整体使用

eg:bit

1)找CA机构申请证书(提供我是谁,我的服务域名是什么等信息)

CA(本身也有自己的pub(公钥)和pri(私钥)):

a.使用提供的信息生成证书

b.将证书做数字签名(数字摘要)

c.使用CA-pri对数字签名(数字摘要是定长的,做加密的内容比较短)做加密

2)对外提供服务:

a.客户端发起请求,先把证书给客户端(CA-pub是会被颁发到每个客户端上的),客户端能收到证书的信息,以及签名以及对签名的加密,客户端可以使用CA-pub解密签名密文对数字证书信息做哈希,得到值和签名对比,值一样验证签名有效,此时就可以信任这个证书真正有效

b.客户端从证书中拿到服务器公钥(bit-pub),客户端生成对称加密的密钥key,使用bit-pub加密这个密钥,传输这个密文给服务器

c.只有bit拥有私钥bit-pri,可以对这个密文解密,收到解密后,双方都有随后进行对称加密的密钥key,之后再进行通信,才正式进入http协议,进行对称的加密解密。

5.加密和数字摘要(哈希)有何区别?/MD5是加密算法?

加密算法是要能从明文到密文,从密文到明文,MD5本质上是哈希算法,不是一对一且是不能还原回去的。

压缩/解压与加密/解密:压缩解压也是通过一定算法完成的。区别是加密解密目标是保证数据不被破译复原,压缩解压没有这个考虑;并且加密解密保证数据是不能被修改的,而解压压缩是可以接受一定程度流损的,追求目标是数据量变少,目标是不一样的。

6.CA是如何被信任的

OS天生就信任某些CA,锁死的。

TLS/SSL实际就是上面流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值