密钥


1. 秘密的精华

  密码的本质是把较长的秘密抽象成较短的秘密,即密码的安全是密钥的安全。

 

2. 什么是密钥

  密钥是一个巨大的数字,使用对称密码,公钥密码,消息认证码,数字签名等技术都需要密钥。

  密钥的大小不重要,重要的是密钥空间的大小,密钥空间越大,暴力破解越难,密钥空间大小由密钥长度决定。

  DES密钥:56比特,7字节。

  3DES密钥:DES-EDE2 密钥长度112比特(14字节),DES-EDE3密钥长度168比特(21字节)。

  AES密钥:128,192和256比特中选择。

 

3. 各种不同的密钥

  对称密码密钥和公钥密码的密钥:

    对称密码的加密和解密使用同一个密钥,是共享密钥。

    公钥密码中,加密的密钥称为公钥,解密的密钥称为私钥。公私钥的数学关系叫做密钥对。

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

    消息认证码中发送者和接收者使用共享密钥认证。

    数字签名中签名的生成和验证使用不同的密钥,公私钥对。

  用于确保机密性的密钥和用于认证的密钥:

    对称密码和公钥密码的密钥都是用于确保机密性的密钥。

    消息认证码和数字签名使用的密钥是用于认证的密钥。

  会话密钥和主密钥:

    在密钥使用的次数角度。在很多SSL通信的场景中分为会话密钥和主密钥。

    会话密钥仅限于一次通信使用,像这样每次通信只能使用一次的密钥称为会话密钥。

    相对于每次通信都更换的密钥,一直被重复使用的密钥称为主密钥。

  CEK和KEK:

    密钥加密密钥:KEK,用于加密密钥的密钥。

    内容加密密钥:CEK,用于加密通信内容的密钥。

 

4. 密钥管理

  生成密钥:生成密钥最好的方法是使用随机数。

          用口令生成密钥:口令 + 盐值  ----> 单向散列函数  ---> 密钥。盐值即是随机数,用来防止字典攻击。

  配送密钥:事先共享密钥,使用密钥中心分配,使用公钥密码,Diffie-Hellman等。

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

  保存密钥:密钥难以记忆。对密钥进行加密的意义:记不住密钥,又害怕被窃取。

       有效的方法:减少需要保管的密钥数量。数量少价值高,数量多,价值低。价值是被破解时遭受的损失的大小。

  作废密钥:不再需要的密钥就作废。

 

5. Diffie-Hellman密钥交换

  通过交换一些公开的信息,就能生成出共享的秘密数字--->对称密钥。IPsec就使用经过改良的Diffie-Hellman密钥交换。

  步骤:

    1、Alice和Bob发送两个质数P和G。

    2、Alice生成一个随机数A,A是1 ~ P-2之间的整数。

    3、Bob生成以及随机数B,B是1~P-2之间的整数。

    4、Alice将G^A mod P这个数发给Bob。

    5、Bob将G^B mod P这个数发送给Alice。

    6、Alice用Bob发过来的数计算A次方并求mod P,即:(G^B mod P) ^A mod P  => G ^AxB mod P。

    7、Bob用Alice发过来的数计算B次方并求mod P,即:(G^A mod P) ^ B mod P => G ^BxA mod P。

  窃听者有P,G,G^A mod P,G^B mod P这四个数。但是求出G ^AxB mod P 很复杂,即G^A mod P 求A这类问题,属于有限域的离散对数问题。

  生成元的意义:

    P的生成元的乘方结果域1 ~ P-1中的数字是一一对应的。正是有这样一一对应的关系,Alice能够从1~P-2范围中随机选择一个数字。

  椭圆曲线Diffie-Hellman密钥交换:

    利用“椭圆曲线上的离散对数问题”的复杂度来实现密钥的安全交换。

 

6. 基于口令的密码(PBE)

  根据口令生成密钥并用该密钥进行加密的方法:

    ① 生成KEK  ② 生成会话密钥并加密  ③ 加密消息

 

 

 

 

  PBE解密:

    ① 重建KEK  ② 解密会话密钥  ③解密消息

  

 

  盐的作用:

    伪随机数生成器生成的随机数,生成密钥KEK时会和口令一起输入单向散列函数。盐是抵御字典攻击的,字典攻击是事先进行计算并转备好候选密钥队列的方法。

  字典攻击:

    攻击者事先准备好大量的候选KEK,窃取到会话密钥后,尝试解密,利用事先准备好的KEK,就可以大幅缩短尝试时间。

    盐的长度越大,候选的KEK的数量也会随之增大,事先生成候选KEK会变得很复杂。

  加盐与不加盐的区别:

    不加盐:

        

 

      攻击者可以事先计算口令所对应的KEK值(可能进行字典攻击)

     加盐:

      

 

        即便口令相同,只要盐不同,KEK值也不同,因此无法进行字典攻击

  口令的作用:

    不能凭记忆去记住口令。

    PBE中,通过口令生成密钥KEK,再用这个密钥加密会话密钥(CEK)。

    在使用基于口令的密码(PBE)时,需要将盐和加密后的CEK通过物理的方式进行保护。

  通过拉伸改良PBE:

    生成KEK时,多次使用单向散列函数就能提高安全性。这种将单向散列函数进行多次迭代的方法称为拉伸。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM