0
点赞
收藏
分享

微信扫一扫

15-安全加密

  • 对称加密
  • 加密和解密使用同一个密钥
  • 常见对称加密算法:
  • DES:Data Encryption Standard,56bits
  • 3DES:
  • AES:Advanced (128, 192, 256bits)
  • Blowfish,Twofish
  • IDEA,RC6,CAST5
  • 非对称加密
  • 密钥是成对出现
  • 公钥:public key,公开给所有人,主要给别人加密使用
  • 私钥:secret key,private key 自己留存,必须保证其私密性,用于自已加密签名
  • 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
  • 功能:
  • 数据加密:适合加密较小数据,比如:加密对称密钥
  • 数字签名:主要在于让接收方确认发送方身份
  • 常见算法:
  • RSA
  • DSA
  • ECC
  • 非对称加密实现加密

接收者

生成公钥/密钥对:P和S,公开公钥P,保密密钥S

发送者

发送者使用接收者的公钥来加密消息M,将P(M)发送给接收者

接收者

接收者使用密钥S来解密:M=S(P(M))

  • 非对称加密实现数字签名
  • 数据传输过程

发送者

生成公钥/密钥对:P和S,公开公钥P,保密密钥S,使用密钥S来加密消息M,发送给接收者S(M)

接收者

使用发送者的公钥来解密M=P(S(M))

  • 利用单向哈希算法核查数据完整性
  • 范例:对比官方摘要值一致性(不一致则有被篡改)

确认本地使用镜像

15-安全加密_客户端

查看官方镜像摘要

15-安全加密_客户端_02

15-安全加密_客户端_03

15-安全加密_客户端_04

用摘要中同样的算法加密本地isos,检查哈希值一致性

15-安全加密_客户端_05

对比发现哈希值一致,确认本地isos未被篡改

  • 综合应用多种加密算法
  • 实现数据加密
  • Key(data)+Pb(key)
  • 实现数据加密,无法验证数据完整性和来源
  • 实现数字签名
  • data+Sa(hash(data))
  • 不加密数据,可以保证数据来源的可靠性、数据的完整性和一致性
  • 综合加密和签名
  • Pb{Sa[hash(data)]+data}
  • 对称key{Sa[hash(data)]+data}+Pb(对称key)
  • 即实现数据加密,又可以保证数据来源的可靠性、数据的完整性和一致性
  • 密码交换
  • 密钥交换:IKE( Internet Key Exchange )
  • 公钥加密:用目标的公钥加密对称密钥
  • DH (Deffie-Hellman):生成对称(会话)密钥
  • 实现过程

A: g,p 协商生成公开的整数g, 大素数p
B: g,p
A:生成隐私数据:a (a<p),计算得出 g^a%p,发送给B
B:生成隐私数据:b,(b<p),计算得出 g^b%p,发送给A
A:计算得出 [(g^b%p)^a]%p = g^ab%p,生成为密钥
B:计算得出 [(g^a%p)^b]%p = g^ab%p,生成为密钥

  • 特点
  • 泄密风险:私密数据a,b在生成K后将被丢弃,因此不存在a,b过长时间存在导致增加泄密风险。
  • 风险
  • 中间人攻击:由于DH在传输p,g时并无身份验证,所以有机会被实施中间人攻击,替换双方传输时的
  • 数据
  • CA和证书
  • 背景:中间人攻击-Man-in-the-middle,简称为 MITM
  • 通过中间转发、截取通信双方密钥,骗取数据或者诱导发送错误信息
  • CA,Catificate Authority,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。
  • 类型:
  • 证书授权机构的证书
  • 服务器证书
  • 用户证书
  • 获取方式
  • 自签名的证书
  • 使用证书授权机构:
  • 1 生成证书请求 csr;
  • 2 将证书请求csr 发送给CA;
  • 3 CA 颁发签名证书
  • 安全协议 SSL/TLS
  • SSL/TLS是一个安全通信框架,上面可以承载HTTP协议或者SMTP/POP3协议等。
  • SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。

15-安全加密_数据_06

  • TLS主要分为两层,底层的是TLS记录协议,主要负责使用对称密码对消息进行加密。
  • 上层的是TLS握手协议,主要分为握手协议,密码规格变更协议和应用数据协议4个部分。
  • 握手协议负责在客户端和服务器端商定密码算法和共享密钥,包括证书认证,是4个协议中最最复杂的部分。
  • 密码规格变更协议负责向通信对象传达变更密码方式的信号
  • 警告协议负责在发生错误的时候将错误传达给对方
  • 应用数据协议负责将TLS承载的应用数据传达给通信对象的协议。

可参考:​​一篇文章让你彻底弄懂SSL/TLS协议​​

  • HTTPS
  • 过程:
  • 1. 客户端发起HTTPS请求
  • 用户在浏览器里输入一个https网址,然后连接到服务器的443端口。
  • 2.服务端的配置
  • 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通 过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。

15-安全加密_数据_07


  • 3. 传送服务器的证书给客户端
  • 证书里其实就是公钥,并且还包含了很多信息,如证书的颁发机构,过期时间等等。
  • 4. 客户端解析验证服务器证书
  • 这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如:颁发机构,过期时间等等,如果发现异常,则会弹出一 个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书中公钥对该随机值进行非对称加密。
  • 5. 客户端将加密信息传送服务器
  • 这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来 进行加密解密了。
  • 6. 服务端解密信息
  • 服务端将客户端发送过来的加密信息用服务器私钥解密后,得到了客户端传过来的随机值。
  • 7. 服务器加密信息并发送信息
  • 服务器将数据利用随机值进行对称加密,再发送给客户端。
  • 8. 客户端接收并解密信息
  • 客户端用之前生成的随机值解密服务段传过来的数据,于是获取了解密后的内容。
  • OpenSSL
  • OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。这个包广泛被应用在互联网的网页服务器上。
  • 其主要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议。OpenSSL可以运行在OpenVMS、 Microsoft Windows以及绝大多数类Unix操作系统上(包括Solaris,Linux,Mac OS X与各种版本的开放源代码BSD操作系统)。
  • Base64 编码
  • 以字符n对应的ascII编码110转二进制为例
  • 将余数从下到上排列,得到二进制1101110,一个字节8bit,高位补足0,得到01101110。

#短除法
110 / 2 = 55...0
55 / 2 = 27...1
27 / 2 = 13...1
13 / 2 = 6...1
6 / 2 = 3...0
3 / 2 = 1...1
1 / 2 = 0...1

  • 以二进制数01101110转10进制为例
  • 按权展开求和, 8位二进制数从右到左,次数是0到7依次递增, 基数*底数次数,从左到右依次累加,相加结果为对应十进制数。

#按权展开求和
(01101110)2 = 0 * 20 + 1 * 21 + 1 * 22 + 1 * 23
+ 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27

  • 位概念
  • 二进制数系统中,每个0或1就是一个位(bit,比特),也叫存储单元,位是数据存储的最小单位。其中8bit就称为一个字节(Byte)。
  • 64位编码概念
  • Base64编码是将字符串以每3个8比特(bit)的字节子序列拆分成4个6比特(bit)的字节(6比特有效字节,最左边两个永远为0,其实也是8比特的字节)子序列,再将得到的子序列查找Base64的编码索引表,得到对应的字符拼接成新的字符串的一种编码方式。

15-安全加密_客户端_08

  • base64编码后的大小是原来的4/3倍
  • 一个字节需要8个存储单元存储,所以我们要把6bit往前面补两位0,补足8bit,补足后所需的存储单元为32个,是原来所需的24个的4/3倍

15-安全加密_客户端_09

可参考:​​彻底弄懂base64的编码与解码原理​​

  • openssl 命令

#列出所有标准命令
[root@rocky86 ~]# openssl list -commands
......
......
#列出所有摘要命令
[root@rocky86 ~]# openssl list -digest-commands
......
......
#列出所有摘要算法
[root@rocky86 ~]# openssl list -digest-algorithms
......
......
#列出所有加密命令
[root@rocky86 ~]# openssl list -cipher-commands
......
......
#列出所有加密算法
[root@rocky86 ~]# openssl list -cipher-algorithms
......

15-安全加密_服务器_10

15-安全加密_客户端_11

  • openssl passwd生成用户密码

15-安全加密_数据_12

分析shadow中密码段的信息

15-安全加密_数据_13

$6 --sha512
$rmW2sTVQ7dIOwDXW$ --salt val
$W3sfj9./1XisruDpleqdmtiT4UcI25wfzNJmouLD
/EQcOpqNGqdhT5H8UXrjA7ptYmjChLddmIGthxp64UgiR. --加密处理过的密码

15-安全加密_数据_14

  • openssl 随机数生成

15-安全加密_数据_15

#直接使用会乱码,默认是以二进制输出,不一定都是可打印字符
[root@rocky86 ~]# openssl rand 10
􀳦^􀳦g􀳦􀳦􀳦[root@rocky86 ~]#
#转base64,不够加等号补齐
[root@rocky86 ~]# openssl rand -base64 10
KPPlWYFXjiqmYg==
[root@rocky86 ~]# openssl rand -base64 12
Rj6pXRTlYjoXWhDh
#16进制显示,一个字节可表示8个二进制,一个16进制可表示4个二进制
#所以一个字节可以表示2个16进制
[root@rocky86 ~]# openssl rand -hex 10
807ccc5b6934535e97bd

  • openssl 实现密钥对
  • 生成私钥,再从私钥中提取公钥

#私钥文件
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
#公钥文件
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
#RSA公钥文件
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----

  • 生成私钥,私钥包含公钥信息

15-安全加密_数据_16

  • #从私钥提取公钥

15-安全加密_客户端_17

  • 范例1

15-安全加密_数据_18

15-安全加密_服务器_19

  • 范例2

15-安全加密_服务器_20

15-安全加密_服务器_21

15-安全加密_数据_22

密钥文件要保证权限

  • 建立私有CA-实现证书申请、颁发、吊销
  • 证书申请及签署步骤:
  • 1. 生成证书申请请求
  • 2. RA核验
  • 3. CA签署
  • 4. 获取证书
  • openssl-libs 包

15-安全加密_服务器_23

  • openssl的配置文件

15-安全加密_服务器_24

配置文件部分内容说明

[ CA_default ]
dir = /etc/pki/CA #所有与证书相关的文件目录
certs = $dir/certs #颁发的证书文件目录
crl_dir = $dir/crl #吊销的证书文件
database = $dir/index.txt #证书索引文件
new_certs_dir = $dir/newcerts #新颁发的证书目录
certificate = $dir/cacert.pem #CA机构自己的证书
serial = $dir/serial #证书编号文件,下一个证书编号,16进制
crlnumber = $dir/crlnumber #存放当前CRL编号的文件
crl = $dir/crl.pem #CA证书吊销列表文件
private_key = $dir/private/cakey.pem #CA证书的私钥
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

policy_match 指用此CA颁发证书时,证书的相关字段与CA的值的匹配规则

match

要求申请填写的信息跟CA设置信息必须一致

optional

可有可无,跟CA设置信息可不一致

supplied

必须填写这项申请信息

  • 创建私有CA

15-安全加密_客户端_25

  • 生成CA私钥

15-安全加密_数据_26

  • 生成CA自签名证书

15-安全加密_客户端_27

-new #生成新证书签署请求
-x509 #专用于CA生成自签证书
-key #生成请求时用到的私钥文件
-days n #证书的有效期限
-out /PATH/TO/SOMECERTFILE #证书的保存路径

查看证书

15-安全加密_服务器_28

15-安全加密_客户端_29

sz cacert.pem 下载到win环境查看(后缀名改crt)

15-安全加密_数据_30

  • 申请证书并颁发证书
  • 为需要使用证书的主机生成生成私钥

15-安全加密_数据_31

  • 为需要使用证书的主机生成证书申请文件

15-安全加密_数据_32

15-安全加密_客户端_33

注意:默认要求国家,省,公司名称三项必须和CA一致

  • 用CA签署证书并将证书颁发给请求者

15-安全加密_客户端_34

15-安全加密_服务器_35

15-安全加密_数据_36

V 表示有效,220914 表示2022年9月4日过期,0F 表示证书编号

15-安全加密_客户端_37

查看证书中的信息

15-安全加密_数据_38

查看详细信息

15-安全加密_服务器_39

15-安全加密_数据_40

如果证书申请文件中的配置项与CA机构的匹配规则不一致,将无法签发证书

  • 吊销证书

在客户端获取要吊销的证书的serial

15-安全加密_数据_41

在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书:

15-安全加密_客户端_42

15-安全加密_数据_43

指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行更新证书吊销列表

15-安全加密_服务器_44

更新证书吊销列表

15-安全加密_数据_45

查看crl文件

15-安全加密_数据_46


举报

相关推荐

0 条评论