首页 > 其他分享 >15-安全加密

15-安全加密

时间:2022-10-22 17:35:23浏览次数:76  
标签:公钥 加密 证书 CA 安全 密钥 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

标签:公钥,加密,证书,CA,安全,密钥,15,客户端
From: https://blog.51cto.com/u_15791168/5786020

相关文章