1- 安全机制

偷得浮生 记录精彩的人生 本文由博客端 https://www.zhangzhuo.ltd 主动推送

1 安全机制

1.1 墨菲定律

墨菲定律:一种心理学效应,是由爱德华·墨菲提出的,原话:如果有俩种或俩种以上的方式去做某件事,而其中一种选择方式导致灾难,则必定有人会做出这种选择

主要内容:

1.2 信息安全防护的目标

1.3 安全防护环节

1.4 常见的安全攻击 STRIDE

1.5 安全设计基本原则

1.6 常用安全技术

1.7 加密算法和协议

1.7.1 对称加密算法

clipboard.png

对称加密:加密和解密使用同一个密钥

特性:

缺陷:

常见对称加密算法:

1.7.2 非对称加密算法

非对称加密:密钥是成对出现

功能:

缺点:

常见算法:

1.7.2.1 非对称加密实现加密

clipboard.png

接收者

发送者

接收者

1.7.2.2 非对称加密实现数字签名

clipboard.png

发送者

接收者

1.7.2.3 RSA 和 DSA

RSA:公钥加密算法是 1977 年由 Ron Rivest、Adi Shamirh 和 LenAdleman 在(美国麻省理工学院)开发的,RSA 取名来自开发他们三者的名字,后成立 RSA 数据安全有限公司。RSA 是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被 ISO 推荐为公钥数据加密标准。RSA 算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极 其困难,因此可以将乘积公开作为加密密钥

DSA (Digital Signature Algorithm):1991 年 7 月 26 日提交,并归属于 David W. Kravitz 前 NSA 员工, DSA 是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 SS(DigitalSignature Standard), DSA 是基于整数有限域离散对数难题的,其安全性与 RSA 相比差不多。DSA 只是一种算法,和 RSA 不同之处在 于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比 RSA 要快很多

1.7.3 使用 gpg 实现对称和非对称加密

1.7.3.1 实现对称加密

对称加密 file 文件

[19:10:49 root@centos8 ~]#gpg -c passwd.txt

在另一台主机上解密 file 文件,-o 表示解密后生成的文件,-d 要解密的文件

[19:12:09 root@centos7 ~]#gpg -o passwd.txt -d passwd.txt.gpg

注意:加密时需要输入密码,解密时也需要输入密码

1.7.3.2 实现公钥加密

目标:在 hostB 主机上用公钥加密,在 hostA 主机上解密 B-->A

在 hostA 主机上生成公钥/私钥对

[19:16:39 root@centos8 ~]#gpg --gen-key

在 hostA 主机上查看公钥

[19:17:46 root@centos8 ~]#gpg --list-keys

在 hostA 主机上导出公钥到 zhang.pubkey

[19:17:52 root@centos8 ~]#gpg -a --export -o zhang.pubkey

从 hostA 上复制公钥文件到需加密的 B 主机上

[19:19:12 root@centos8 ~]#scp zhang.pubkey 192.168.10.71:

在需加密数据的 hostB 主机上生成公钥/私钥对

[19:21:06 root@centos7 ~]#gpg --gen-key

在 hostB 主机上导入公钥

[19:25:13 root@centos7 ~]#gpg --import zhang.pubkey
[19:25:58 root@centos7 ~]#gpg --list-keys

用从 A 主机导入的公钥,加密 hostB 主机的文件 file,生成加密文件

[19:28:11 root@centos7 ~]#gpg -e -r zhang fstab

复制加密文件到 hostA 主机

[19:28:44 root@centos7 ~]#scp fstab.gpg 192.168.10.81:

在 hostA 主机解密文件

[19:20:06 root@centos8 ~]#gpg -o fstab -d fstab.gpg

删除公钥和私钥

[19:30:59 root@centos8 ~]#gpg --delete-secret-keys zhang
[19:28:58 root@centos7 ~]#gpg --delete-keys zhang

1.7.4 单向哈希算法

哈希算法:也称为散列算法,将任意数据缩小成固定大小的“指纹”,称为 digest,即摘要

特性:

功能:数据完整性

常见算法

md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512

常用工具

数字签名

clipboard.png

RPM 文件完整性

rpm --verify package_name (or -V)

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*

rpm --checksig pakage_file_name (or -K)

1.7.5 综合应用多种加密算法

1.7.5.1 实现数据加密

实现数据加密,无法验证数据完整性和来源

clipboard.png

发送方:先使用对称加密加密源数据生成对称密钥,然后用非对称加密加密之前生成的对称密钥生成加密的对称密钥然后发送
接收方:使用自己的非对称密钥的私钥来解密加密的对称密钥,之后得到对称加密的数据然后使用对称密钥来解密得到数据
clipboard.png

1.7.5.2 实现数字签名

不加密数据,可以保证数据来源的可靠性、数据的完整性和一致性
clipboard.png

发送方:使用 hash 算法提取数据的摘要,然后使用非对称加密的私钥加密摘要得到数字签名然后发送
接收方:使用非对称加密的公钥解密数字签名得到摘要,然后对数据进行 hash 算法得到元数据摘要,用元数据摘要和之前解密的摘要进行比对

1.7.5.3 综合加密和签名

即实现数据加密,又可以保证数据来源的可靠性、数据的完整性和一致性
clipboard.png

发送方:对数据进行 hash 算法得到数字摘要,然后使用自己的非对称加密的私钥加密数字摘要得到数字签名,然后把数字签名和数据使用对方的公钥来加密得到加密的密文发送
接收方:先使用自己的私钥解密密文得到数字签名和数据,对数字签名使用使用对方的公钥进行解密得到数字摘要同时对源数据进行 hash 算法也得到数字签名,最后把俩个数字签名进行比对
方法 2:对称 key{Sa[hash(data)]+data}+Pb(对称 key)

clipboard.png

发送方:对数据进行 hash 算法得到摘要,使用自己的私钥对摘要进行加密得到数字签名,对数字签名和数据进行对称加密得到对称密钥,使用对方的公钥对对称加密进行加密得到加密的对称密钥然后发送
接收方:使用自己的私钥对加密的对称密钥解密得到对称密钥,使用对称密钥对对称密钥进行解密得到数据和签名,使用对方的公钥对数字签名解密得到摘要信息,对数据进行 hash 算法也得到摘要信息,最后进行比对如果没有错误得到数据

1.7.6 密码交换

密钥交换:IKE( Internet Key Exchange )

参 看 : https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

DH 实现过程:

范例:

g=23
p=5

A:a=6
23^6%5=4

2^6%5=4

B:b=15
23^15%5=2

4^15%5

[root@centos8 ~]#echo 23^15%5|bc
2
[root@centos8 ~]#echo 23^6%5|bc
4

1.8 CA 和证书

1.8.1 中间人攻击

Man-in-the-middle,简称为 MITM,中间人

clipboard.png

1.8.2 CA 和证书

clipboard.png
clipboard.png

PKI:Public Key Infrastructure 公共密钥加密体系

X.509:定义了证书的结构以及认证协议标准

证书类型:

获取证书两种方法:

1.8.3 安全协议 SSL/TLS

1.8.3.1 TLS 介绍

SSL:Secure Socket Layer,TLS: Transport Layer Security

1994 年,NetScape 公司设计了 SSL 协议(Secure Sockets Layer)的 1.0 版,但是未发布

1995:SSL 2.0 Netscape 开发

1996:SSL 3.0

1999:TLS 1.0

2006:TLS 1.1 IETF(Internet 工程任务组) RFC 4346,从 2020 年 3 月起,停止支持 TLS 1.1 及 TLS 1.0 版本安全协议,谷歌(Chrome)、Mozilla(Firefox)、微软(IE 和 Edge) 、苹果(Safari) 都会发布新版浏览器执行这个策略

2008:TLS 1.2 当前主要使用

2018:TLS 1.3

功能:

1.8.3.2 SSL/TLS 组成

clipboard.png

1.8.3.3 TLS 实现过程

实现分为握手阶段和应用阶段

目前密钥交换 + 签名有三种主流选择:

实现方式 1:

clipboard.png

  1. Visitor 给出协议版本号、一个客户端随机数(Client random),以及客户端支持的加密方法
  2. Server 确认双方使用的加密方法,以及一个服务器生成的随机数(Server random)
  3. Server 发送数字证书给 Visitor
  4. Visitor 确认数字证书有效(查看证书状态且查询证书吊销列表),并使用信任的 CA 的公钥解密数字证书获得 Server 的公钥,然后生成一个新的 46 字节随机数(称为预备主密钥 Pre-master secret),并使用 Server 的公钥加密预备主密钥发给 Server
  5. Server 使用自己的私钥,解密 Visitor 发来的预备主密钥
  6. Visitor 和 Server 双方都具有了(客户端随机数 + 服务端随机数 + 预备主密钥),它们两者都根据约定的 加密方法,使用这三个随机数生成对称密钥——主密钥(也称为对话密钥 session key),用来加密后续的对话过程
  7. 在双方验证完 session key 的有效性之后,SSL 握手机制就算结束了。之后所有的数据只需要使用“对话密钥”(此密钥并不是的 session key,而是由其通过计算得到)加密即可,不再需要多余的加密机制
    注意:
  8. 在 SSL 握手机制中,需要三个随机数(客户端随机数 + 服务端随机数 + 预备主密钥)
  9. 至始至终客户端和服务端只有一次非对称加密动作——客户端使用证书中获得的服务端公钥加密预备主密钥。
  10. 上述 SSL 握手机制的前提单向验证,无需验证客户端,如果需要验证客户端则可能需要客户端的证书或客户端提供签名等。
  11. Server 和 Visitor 通信,Server 把数字证书发给 Visitor,最关键的一点是 Visitor 要保证证书的有效性, 通过查看证书状态并去 CA 的吊销列表查看 Server 的证书是否被吊销。只有 Server 的证书可用了,才保证了第一环节的安全性
  12. RSA 密钥交换有一个很大的问题:没有前向安全性 Forward Secrecy。这意味着攻击者可以把监听到的加密流量先存起来,后续一旦拿到了私钥,之前所有流量都可以成功解密

实现方式 2

目前大部分 HTTPS 流量用的都是 ECDHE 密钥交换。ECDHE 是使用椭圆曲线(ECC)的 DH(Diffie-Hellman)算法

clipboard.png

前图中的 Server DH Parameter 是用证书私钥签名的,客户端使用证书公钥就可以验证服务端合法性。相比 RSA 密钥交换,DH 由传递 Premaster Scret 变成了传递 DH 算法所需的 Parameter,然后双方各自算出 Premaster Secret

对于这种情况,由于 Premaster Secret 无需交换,中间人就算有私钥也无法获得 Premaster Secret 和 Master Secret。当然,使用 ECDHE 后,虽然中间人拿到私钥也无法解密之前的流量,但可以实施 MITM 攻击来解密之后的流量,所以私钥还是要保管好。

相比 RSA 既可以用于密钥交换,又可以用于数字签名;ECC 这边就分得比较清楚了:ECDHE 用于密钥交换,ECDSA 用于数字签名

1.8.4 HTTPS

HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over SSL 或 HTTP over TLS ,对 http 协议的文本数据进行加密处理后,成为二进制形式传输

1.8.4.1 HTTPS 结构

clipboard.png

1.8.4.2 HTTPS 工作的简化过程

clipboard.png

  • 安全

    安全永远都不是一个小问题。

    162 引用 • 805 回帖 • 531 关注

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...