密码学基础知识(摘自图解密码学)

密码学基础知识(摘自图解密码学)

1.引言

密码加密方法可以是通过一定规律平移(凯撒密码)、替换(Enigma)进行编码。密码激活成功教程可以是暴力激活成功教程和频率分析。密钥本身是一个巨大的数字或者密钥空间的大小(由密钥长度决定)

2.密码学常用的算法:

对称加密:DES、三重DES、AES(现在最流行使用,安全性最好,也就是Rijndael算法)。

非对称加密(公钥密码):RSA(密文=明文E次方modN,{E,N}组合是公钥,明文=密文D次方modN,{D,N}组合是私钥,现在最流行使用,利用对大整数N的质因分解难度)EIGamal(利用mod N下求离散对数的难度,密文是明文两倍)、Rabin(利用mod N下求平方根的难度)、椭圆曲线密码(ECC,秘钥比RSA短。利用求椭圆曲线上特定点的特殊乘法运算的逆运算的困难度)

伪随机数生成算法:线性同余法(不具预测性,不用于密码技术)、单向散列函数、密码法、ANSI X9.17(ANSI X9.31)

单向散列函数:MD4(已经不使用)、MD5(已经被激活成功教程)、SHA-1(SHA-160,最大长度:2的64次方-1)、SHA-2(SHA-256、SHA-384、SHA-512,最大长度:2的128次方-1)、SHA-3(Keccak算法,SHA-3-224、SHA-3-256、SHA-3-384、SHA-3-512)。数据完整性检查,防止被篡改。

3.实际应用

(1)消息认证码(MAC):

双方持有同样的秘钥,防止伪装,确认发送方身份,是确认完整性与身份认证的技术,但无法由第三方证明某一方否认消息是否曾发送。根据任意长度的消息,通过过双方共享的密钥,计算生成固定长度数据。可以认为消息验证码是一种 与密钥相关联的单向散列函数。A将B所发送的MAC与A自己生成的MAC进行对比,如果两者一致则认证成功。HMAC(SHA-2实现)、AES-CMAC(AES的CBC模式)流密码和公钥密码。

 

密码学基础知识(摘自图解密码学)_服务器

认证加密(消息认证码+对称加密AE或AEAD):Encrypt-then-MAC(Encrypt-and-MAC、MAC-and-Encrypt,防止伪造密文,让服务器解密来套取信息的攻击)、GCM(GMAC,AES128+CTR分组模式)、CCM(AES128+CBC分组模式)

防止重放攻击(加序列号、加时间戳、nonce通信前发送一个一次性随机数)

(2)数字签名:

识别篡改和伪装,并且防止否认,保证特定的签名者与特定的消息是绑定一起的,但无法解决解签的公钥是否是真正发送者发出的问题,即公钥的合法性。利用RSA非对称加解密算法,基于私钥只有一人持有的事实来保证签名认证的唯一性,而公钥可以多人持有进行验证签名的特点,而不是基于机密性的特点。

私钥加密->公钥解密

公钥加密->私钥解密

签名->私钥加密(一般不会对整个消息进行私钥加密,加密数据量大加密慢、发送数据量增大。消息+签名(消息的散列值+私钥加密))

验签->公钥解密

签名算法:RSA、EIGamal、DSA、ECDSA、Rabin

(3)证书(公钥证书):

证书=公钥+认证机构对该公钥施加的签名,通过可信赖的第三方,即认证机构保证公钥的合法性。

证书一般有:

 

密码学基础知识(摘自图解密码学)_公钥密码_02

(4)PKI(公钥基础设施):

由用户、认证机构、证书仓库组成

用户向机构发起的操作:

生成密钥对(可以用户自己生成)

注册公钥,申请证书

申请作废已注册

机构和用户有关的操作:

提供CRL(证书作废清单)、查询用户自己的证书是否过期

证书的层级结构:

A(根CA,对自己的公钥签名称为自签名)->B(B的公钥由A签发认证)->C(C的公钥由B签发认证)………->用户(用户的公钥由N机构签发)

A/B/C/用户

签名流程:

A(根CA,对自己的公钥签名称为自签名)

B 生成公钥由A签发认证

C 生成公钥由B签发认证

用户 生成公钥由C签发认证(可以是C生成秘钥对,或者自己生成密钥对)

验签流程:

用户1使用根CA证书里的公钥,对根CA平台颁发给B的证书进行验签->用户1使用B的公钥,对CA平台B颁发给C的证书进行验签->用户1使用C的公钥,对CA平台C颁发给用户2的证书进行验签

一般根CA的公钥内置在操作系统,或者用户到官网自行下载

(5)密钥生成:

1.硬件随机数器件或伪随机生成算法生成

2.口令生成秘钥:口令的单向散列函数的输出作为密钥 或者 口令+随机数(盐)用单向散列函数输出作为密钥。一般用于自己加密,自己解密,防止别人看到加密的东西,如进入计算机系统、加密文档

内容加密密钥:CEK

密钥加密密钥:KEK,一般口令+盐生成

(6)解决密钥配送方法:

1.事先共享秘钥(线下处理,但基本不使用)

2.密钥分配中心解决。秘钥中心生成所有员工的秘钥,用户注册时是线下取自己秘钥,当A用户向B用户发起通信,秘钥中心将生成临时会话秘钥,临时会话秘钥将会通过A用户的秘钥加密后,发送给A用户,A用户解密得到临时会话秘钥。B用相同的方法也得到临时会话秘钥,A和B进行加密会话。(仍然是不安全的,是基于事先共享秘钥,用计算机管理所有秘钥,一旦计算机被入侵或故障,将无法保证安全性)

3.Diffie-Hellman密钥交换。

4.使用公钥密码

密钥交换技术:

Diffie-Hellman密钥交换:

G的(A*B)次方mod P

P是很大的质数(不需保密,用户1向用户2发送)

G是P的生成元,可以是较大的数字(不需保密,用户1向用户2发送)

A是用户1生成的随机数(需要保密,只有用户1自己知道)

B是用户2生成的随机数(需要保密,只有用户2自己知道)

用户1和用户2交换 G的A次方mod P G的B次方mod P

经过简化运算,用户1和2得到相同秘钥:G的(A*B)次方mod P

(7)SSL/TLS/HTTPS:

TLS(传输层安全)是在SSL3.0(安全套接层)基础上设计的协议,可以理解为SSL3.1,现在一般不会分开来说,直接说SSL/TLS加密通信。HTTPS是在SSL/TSL之上承载HTTP协议。

TLS分为握手协议和记录协议,握手协议用于协商密码算法和共享秘钥,记录协议用于负责对消息加密和消息认证码(压缩解压缩、加密解密、计算和校验MAC等)。

密码学基础知识(摘自图解密码学)_公钥密码_03

 

握手协议分为4个部分:握手协议/密码规格变更协议/警告协议和应用数据协议

握手协议:

 

密码学基础知识(摘自图解密码学)_服务器_04

密码规格变更协议:用于密码切换同步,传达变更密码方式的信号。客户端也可以重新发起握手请求再次变更密码套件。

警告协议:用于发生错误时通知通信对象,如握手产生的异常、消息认证码错误、压缩数据无法压缩等

应用数据协议:用于传输上层应用数据,如HTTP的请求与响应。

TLS记录协议:负责消息的片段分割、压缩、加密、数据认证。计算消息认证码时一般会加入片段的编号,防止重放攻击。加密使用对称加密算法,CBC模式,CBC模式的初始向量(IV)通过主密码生成 ,对称密码的算法、共享秘钥由握手协议提供。从TLS 1.3开始,协议就禁用了TLS压缩,防止CRIME漏洞攻击。

 

密码学基础知识(摘自图解密码学)_散列函数_05

主密码生成:使用RSA公钥密码时,客户端在发送ClientKeyExchange消息时,将经过加密的预备主密码(生成的公钥)一起发送给服务器。使用Diffie-hellman秘钥交换时,客户端在发送ClientKeyExchange消息时,将Diffie-hellman公开值发送到服务器,服务器和客户端计算出相同的预备主密码。再根据预备主密码计算出主密码(对称加密的密钥、消息认证的秘钥、CBC初始化向量)

密码学基础知识(摘自图解密码学)_公钥密码_06

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/39518.html

(0)
编程小号编程小号
上一篇 2023-07-18
下一篇 2023-07-18

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注