《图解密码技术》笔记11:密钥-秘密的精华

目录

11.1 本章学习的内容

11.2 什么是密钥

11.2.1 密钥就是一个巨大的数字

11.2.2 密钥与明文是等价的

11.2.3 密码算法与密钥

11.3 各种不同的密钥

11.3.1 对称密码的密钥与公钥密码的密钥

11.3.2 消息认证码的密钥与数字签名的密钥

11.3.3 用于确保机密性的密钥与用于认证的密钥

11.3.4 会话密钥与主密钥

11.3.5 用于加密内容的密钥与用于加密密钥的密钥

11.4 密钥的管理

11.4.1 生成密钥

11.4.2 配送密钥

11.4.3 更新密钥

11.4.4 保存密钥

11.4.5 作废密钥

11.5 Diffie-Hellman密钥交换

11.5.1 什么是Diffie-Hellman密钥交换

11.5.2 Diffie-Hellman密钥交换的步骤

11.5.3 Eve能计算出密钥吗

11.5.4 生成元的意义

11.6 基于口令的密码(PBE)

11.6.1 什么是基于口令的密码

11.6.2 PBE加密

11.6.3 PBE解密

11.6.4 盐的作用

11.6.5 口令的作用

11.6.6 PBE的改良

11.7 如何生成安全的口令


11.1 本章学习的内容

11.2 什么是密钥

11.2.1 密钥就是一个巨大的数字

加密算法密钥长度
DES56比特(7字节)
3DESDES-EDE2:  112比特(14字节)
DES-EDE3:  168比特(21字节)
AES128比特
192比特
256比特

11.2.2 密钥与明文是等价的

        得到明文和得到密钥是等价的。

11.2.3 密码算法与密钥

        信息的机密性不应该依赖于密码算法本省,而是依赖于妥善保管的密钥。

11.3 各种不同的密钥

11.3.1 对称密码的密钥与公钥密码的密钥

        对称密码的密钥:共享密钥。

        公钥密码的密钥:私钥、公钥、密钥对。

11.3.2 消息认证码的密钥与数字签名的密钥

        消息认证码:共享的密钥来进行认证。

        数字签名:私钥签名,公钥验证。

11.3.3 用于确保机密性的密钥与用于认证的密钥

        确保机密性的密钥:对称密码和公钥密码的密钥。

        认证的密钥:消息认证码和数字签名的密钥。

11.3.4 会话密钥与主密钥

        会话密钥:每次通信只能使用一次的密钥

        主密钥:一直被重复使用的密钥。

11.3.5 用于加密内容的密钥与用于加密密钥的密钥

        加密内容的密钥:CEK。

        加密密钥的密钥:KEK。

11.4 密钥的管理

11.4.1 生成密钥

        1.用随机数生成密钥

        最好的方法是使用随机数。最好使用硬件设备(能够生成密码学上的随机数),但是一般我们都使用伪随机数生成器(专门为密码学用途设计的软件)。

        注意:伪随机算法的使用,必须是专门为密码学用途设计的算法,而不是软件开发中其他用途的伪随机数。

        2.用口令生成密钥

        一般是将口令输入单向散列函数,然后将得到的散列值作为密钥使用。为了防止字典攻击,需要在口令上附加一串盐(salt)。 注意这里讲解的是用口令生成的密钥,用于加解密的保证机密性的。注意与口令存储完整性的区别。详细讲解到11.6章节中。

11.4.2 配送密钥

        事先共享密钥、使用密钥分配中心、使用公钥密码、Diffie-Hellman密钥交换。

11.4.3 更新密钥

        密钥更新:使用共享密钥进行通信的过程中,定期改变密钥。

        简单的说:用当前密钥的散列值作为下一个密钥。

        后向安全:防止破译过去的通信内容的机制。

11.4.4 保存密钥

        我们记不住密钥,但是如果将密钥保存下来有可能会被窃取。

        方法:将密钥加密后保存。  加密密钥的密钥,称为 KEK。 但是KEK又该如何保存呢,这样看似陷入了一个死循环。但是现实是一个非常有效的方法,因为可以减少需要保管的密钥数量。

11.4.5 作废密钥

        密钥的作废和生成同样重要。

11.5 Diffie-Hellman密钥交换

11.5.1 什么是Diffie-Hellman密钥交换

        实际上没有真正交换密钥,而是通过计算生成了一个相同的共享密钥。也叫做Diffie-Hellman密钥协商。 利用的是离散对数问题。

11.5.2 Diffie-Hellman密钥交换的步骤

        密钥交换步骤:

  1. Alice向Bob发送两个质数P和G(不需保密)
  2. Alice生成一个随机数A(保密)
  3. Bob生成一个随机数B(保密)
  4. Alice将 'G的A次方mod P' 这个数发送给Bob
  5. Bob将 'G的B次方mod P' 这个数发送给Alice
  6. Alice用Bob发过来的数计算A次方并求 mod P(见下方的图)
  7. Bob用Alice发过来的数计算B次方并求 mod P (见下方的图)

        

11.5.3 Eve能计算出密钥吗

        离散对数,反向计算出A的有效算法,目前未出现。

11.5.4 生成元的意义

11.6 基于口令的密码(PBE)

11.6.1 什么是基于口令的密码

        基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法。其中加密和解密使用的是同一个密钥。

11.6.2 PBE加密

        加密的过程:

  1. 生成KEK密钥:使用伪随机数生成器来生成salt,将salt和用户自己的口令使用单向散列函数算法生成KEK密钥。
  2. 生成会话密钥并加密:使用伪随机数生成器生成会话密钥CEK,使用步骤1生成的KEK密钥对会话密钥CEK进行加密,得到加密后的会话密钥,将步骤1生成的salt和步骤2生成的加密后的会话密钥保存起来,以供后面解密的时候使用。
  3. 加密消息:使用步骤2中生成的会话密钥CEK来对消息进行加密,从而得到加密后的消息。步骤1生成的KEK并不需要保存,因为它完全可以根据salt来重构。

 

11.6.3 PBE解密

        解密过程:

  1. 重建KEK:使用保存的salt和用户记住的口令,根据单向散列算法重建KEK。
  2. 解密会话密钥:将保持的加密后的会话密钥使用步骤1生成的KEK解密,得到解密后的会话密钥
  3. 解密消息:使用解密后的会话密钥对加密过后的消息进行解密,得到最终消息原文。

11.6.4 盐的作用

        salt是用来防御字典攻击的,因为用户自己的口令不具备随机性,很容易被暴力破解。加了salt之后,被暴力破解的难度大大加大。

11.6.5 口令的作用

                

11.6.6 PBE的改良

        拉伸:将单向散列函数进行多次迭代的方法。

        对于用户来说,多次迭代单向散列函数所需的时间可以忽略不计,但是对于攻击者来说,这是一个很大的负担。

11.7 如何生成安全的口令

  • 使用只有自己才能知道的信息
  • 将多个不同的口令分开使用
  • 有效利用笔记
  • 理解口令的局限性
  • 使用口令生成和管理工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值