第一部分 SSH
1.1常用的加密方式
需要注意的是非对称加密:如果用公钥对数据加密,那么只有用对应的私钥才能解密。同样的用私钥对数据加密,也只有对应的私钥才能解密。
使用私钥理论上可以推导出公钥,但是使用公钥很难推导出私钥
1.2ssh是什么
ssh是一种建立在应用层的安全协议,可用于网络主机之间加密,也即建立安全通道,如安全远程登陆、安全通信、远程指令执行。具体的实现有很多,比较主流的如OpenSSH
1.3一个典型的服务器登录过程
上述过程是否安全?
否,中间人攻击以及暴力破解
1.4中间人攻击
解决方案?
1.5中间人攻击解决方案
1.5.1针对密码登录解决方案一
问题的关键是,在客户端如何识别接受到的公钥,就是我们要登陆服务器的公钥,如何能识别问题也就解决了
在https中是通过CA认证解决的,但是服务器的公私钥是自己生成的
输入yes,然后可以输入密码,所以我们还是要看一下要登陆ip的
这样把问题抛给了登录人,人工识别
1.5.2方案二:公钥免密登录
例子:gitlab ssh登录就是采用这种方案,
例子3:qae容器登录
第二部分
2.1HTTP、HTTPS与SSL/TLS
HTTP协议:超文本传输协议
SSL协议:网景公司设计的安全传输协议
TLS协议:网景与微软竞争中失败后,将SSL管理权转移给IETF,SSL重新进行标准化,重新推出TLS
HTTPS协议:是HTTP建立在SSL/TLS安全协议之上的
2.2HTTPS原理
- https建立的过程。浏览器会收到一个证书。
- 浏览器验证收到的证书,判断是否
信息被篡改
或证书被替换
。
- 判断证书是否受信任:根据证书内容去浏览器寻找根证书。若未找到根证书,代表此机构是不受信任的,此时浏览器会警告用户。
- 判断证书是否被篡改:证书指纹是认证中心的私钥对证书内容hash后加密得到的
。
因此
到根证书后,通过根证书中获取公钥
,然后用公钥去解密收到的证书指纹,得到认证时对证书内容的hash值
。这时对收到证书的内容再次生成一个hash值, 判断信息是否被篡改。
- 判断证书是否被替换:若信息未被篡改,则验证是否为目标服务器发送的证书
,检查证书的<使用者>属性是否和我们请求的url相同。 - 若证书验证成功,那么浏览器就可以确定该证书是目标服务器发送的,于是生成一个
对称加密的密钥
,使用收到证书的<公钥>进行加密。然后发送给服务器。 - 即使加密串被拦截,但是拦截者没有私钥,信息不会被泄漏。目标服务器收到加密串后,使用私钥解密,获取到对应的密钥。
- 而后浏览器和服务器使用对称加密进行数据传输。