密钥交换
密钥交换的俩种方式
-
公钥交换
发送者通过使用接受者的公钥来加密自己的私钥,加密后的数据发送给接收者。接收者亦然来达到密钥交换的目的
-
DH (Deffie-Hellman):生成对称(会话)密钥
第一步:A主机和B主机提前协商大素数P和整数g
第二步:A主机和B主机各生成随机数a和b
第三步:A主机通过计算g的a次方对P取余,得出结果发送给B主机。B主机计算g的b次方对P取余,得出结果发送给A主机
第四步:A主机和B主机通过计算[(g的b次方对P取余)^a ]%p也就是g^ab%p生成密钥来达到交换的目的
弊端
由于公钥的公开性容易遭到不法分子冒充中间人同时欺骗双方达到窃取数据的目的
CA和证书
为了避免遭到不法分子冒充中间人同时欺骗双方达到窃取数据的目的,在网络中我们需要构建CA提供证书来加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。任何个体/组织都可以扮演 CA 的角色。
CA是证书的签发机构是(PKI:Public Key Infrastructure )公共密钥加密体系的核心。CA解决了公钥不可靠的问题通过颁发证书确保主机收到的公钥是可靠的。
客户端也会对服务器返回的证书验证
1、验证域名、有效期等信息是否正确;
2、判断证书来源是否合法:每份签发证书都可以根据验证链查找到对应的根证书,操作系统、浏览器会在本地存储权威机构的根证书,利用本地根证书可以对对应机构签发证书完成来源验证;
3、判断证书是否被篡改:需要与CA服务器进行校验;
4、判断证书是否已吊销,可用于第3步中,以减少与CA服务器的交互,提高验证效率。
以上条件完全满足时才能证明证书的合法性
证书的作用
保密性 - 只有收件人才能阅读信息。
认证性 - 确认信息发送者的身份。
完整性 - 信息在传递过程中不会被篡改。
不可抵赖性 - 发送者不能否认已发送的信息。
保证请求者与服务者的数据交换的安全性。
HTTPS的通信
练习
[root@localhost date]# cat denydos.sh
#!/bin/bash
link=100
ss -tan | awk -F"[ :]+" '/^ESTAB/{print $(NF-2)}'| sort -nr | uniq -c | sort -nr|while read count ip;do
if [ $count -gt $link ];then
iptables -A INPUT -s $ip -j REJECT && echo "$ip is REJECT" >> /date/deny.log
fi
done
[root@localhost date]# chmod +x denydos.sh
[root@localhost date]# crontab -e
crontab: installing new crontab
[root@localhost date]# crontab -l
*/5 * * * * /date/denydos.sh
[root@localhost date]# awk -F: '{print $1}' /etc/passwd