前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >与加密相关的一些名词

与加密相关的一些名词

作者头像
dhyuan
发布2022-05-30 14:26:09
5700
发布2022-05-30 14:26:09
举报
文章被收录于专栏:响应式编程

1) 密码学

机密性、真实性、完整性

plantext 明文 cipher 密钥 ciphertext 密文

散列函数

将任意长度的输入转化为定长输出的算法。抗原像性、抗第二原像性、强抗碰撞性。指纹、摘要。

消息验证代码:MAC HMAC(Keyed-hash Message Authentication Code)

MAC:核心是带密钥的 Hash 算法。 HMAC:两轮 Hash,其中一个是密钥是“预共享密钥”。 Msg + K –>MAC 算法 –> MAC 随消息发送 参考:https://blog.csdn.net/pz641/article/details/110876060

对称加密(私钥加密)

对称密钥算法相关主流协议:DES、3DES、AES、RC4。 序列密码(Stream Cipher)、分组密码(Block Cipher) RC4 属于序列密码,AES 算是最流行的分组密码,无线安全技术 WPA2 就是使用 AES。 分组密码:ECB、CBC。CBC 引入了初始向量 IV 让每即使相同的输入输出也不同。(IV 与明文第一块进行异或过后加密,加密后的密文作为下一个块的 IV)

非对称加密(公钥加密)

公钥加密只有私钥可以解密。 私钥加密公钥解密。无私密性、可做数字签名。 RAS 使用最多的非对称加密算法。RAS 推荐强度 2048,相当于 112 的对称加密。

数字签名

MAC 是一种电子签名,但需要双方预先设定一样的加密密码。 RSA 情况下的数字签名。 发送方 1)求文档 Hash 值 2)对 结果散列 + hash 算法 + 其它元数据 进行编码 3)用私钥加密编码后的数据,形成签名 接收方 1)使用相同 Hash 算法计算文档散列 2)用公钥解密发送方的签名,并与自己计算的进行对比。 RAS 只是公钥加密的一种,不同的公钥加密有不同的签名流程。

密钥交换

密钥交换的目的是先得到预主密钥。 密钥交换算法:RSA、DHE_RSA、。。。

RSA 不支持前向保密

下图是 Diffie-Hellman 密钥交换示意图:

证书

证书是包含公钥、订阅人信息、证书颁发者数字签名的数字文件,是存储、传递、使用公钥的容器。

2)SSL/TLS

TLS 是一种密码学协议以保证双方会话安全。TLS 是在 TCP 协议之上、HTTP 协议之下–处于表示层。 TLS 主要分为两层,底层的是 TLS 记录协议,主要负责使用对称密码对消息进行加密。上层的是 TLS 握手协议,主要分为握手协议,密码规格变更协议和应用数据协议 4 个部分。

SSL 1.0, 2.0 1994-11月 SSL 3.0 1995 年底 TLS 1.0 1999-1 TLS 1.1 2006-4 TLS 1.2 2008-8 TLS 1.3 2018-8 1)握手更快;2)淘汰了一些基元 RC4, SHA-1, DES, MD5 … https://zhuanlan.zhihu.com/p/133375078

握手流程

有三种握手流程:对服务器进行身份验证的完整握手、用于恢复会话的简短握手、对服务器客户端进行双向验证的握手。 这里仅简短描述下“对服务器进行身份验证的完整握手”,如下图:

1)ClientHello

很明显,第一条消息始于 Client。客户端需要提供自己 TLS 版本、随机数、加密套件、压缩方法、扩展信息给服务端,让服务端进行选择。

2)ServerHello

这条消息是服务器根据 Client 上报的选项并结合自己的的情况把选择告诉 Client。这个消息中也包括一个随机数。注意 ClientHello、ServerHello 中的随机数不是用于生成预主密钥,而是用于防止消息伪造。

3)Certificate

这是服务器给客户端的证书链。注意,这里是证书链而不仅仅是服务器的主证书。主证书排第一个、随后依次是中间证书,根证书无需在此链中。 因为客户端发送的密码套件、服务器最终选择的密码套件未必需要身份认证,同时不是所有身份认证都需要证书,所以,这个消息是可选的。

4)ServerKeyExchange

这个消息是为服务器为密钥交换向客户端提供数据。如是 DH 算法,那么这个参数就是 如上“Diffie-Hellman 密钥交换示意图”中所示的 g、p、A。 微观到代码,就是大致如下的定义:

代码语言:javascript
复制
struct {
          opaque dh_p<1..2^16-1>;
          opaque dh_g<1..2^16-1>;
          opaque dh_Ys<1..2^16-1>;
      } ServerDHParams;     /* Ephemeral DH parameters */

对于需要两次消息确定预主密钥的算法,首先由服务器发起也很容易理解。因为是 Client 首先提供选项而 Server 进行选择,那么 Server 自然是首先发出 DH 密钥交换消息就是很正常的了。 如果协商的密钥交换算法是 RSA 密钥交换算法,那么服务器就无需发送这条消息,而是由 Client 通过在 ClientKeyExchange 中携带一个 46 字节的随机数作为预主密钥即可。

5)ServerHelloDone

这个消息表示 Server 这边的握手相关的消息都发送完了。

6)ClientKeyExchange

这个消息是为了 Sever 提供密钥交换的数据。 如果是 RSA 密钥交换算法,Client 用 46 字节的随机数作为预主密钥发送给 Server 即可。如果是 DH 算法,就是如“Diffie-Hellman 密钥交换示意图”中所示的数字 B。 至此,预主密钥(premaster secret)就协商完毕了。真正用于加密的 master secret 是由预主密钥经过进一步变化而生成。

7)ChangeCipherExchange

这个消息表示已经生成加密密钥了,即将切换到的加密模式。

8)Finished

这个消息表示握手结束,消息内容即将加密。这个消息中很重要的一个字段是 verify_data, 其值是用协商得到的主密钥结合协商确定的 MAC 算法对所有按序排列的握手消息进行计算得到的散列值。这里可以体会下 CilentHello、ServerHello 这些握手消息中的随机数的作用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 响应式编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1) 密码学
    • 机密性、真实性、完整性
      • 散列函数
        • 消息验证代码:MAC HMAC(Keyed-hash Message Authentication Code)
          • 对称加密(私钥加密)
            • 非对称加密(公钥加密)
              • 数字签名
                • 密钥交换
                  • 证书
              • 2)SSL/TLS
                • 握手流程
                  • 1)ClientHello
                  • 2)ServerHello
                  • 3)Certificate
                  • 4)ServerKeyExchange
                  • 5)ServerHelloDone
                  • 6)ClientKeyExchange
                  • 7)ChangeCipherExchange
                  • 8)Finished
              相关产品与服务
              SSL 证书
              腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档