应用篇——密钥

无论是对称密码、公钥密码还是消息认证码、数字签名等密码技术,都需要使用密钥,那什么是密钥?

目录

一、密钥介绍

密钥分类

1)根据用途分类:

2)通过使用次数分类:

3)根据加密对象分类:

二、密钥的管理

1.密钥的生成

1)使用随机数生成密钥

2)使用口令生成密钥

2.配送密钥

3.更新密钥

4.保存密钥

5.作废密钥

三、简单分析diffie-hellman密钥交换

密钥交换步骤

四、基于口令的密码(PBE)

1.PBE加密过程

2.PBE解密过程

3.盐的作用

4.生成口令的注意事项:


一、密钥介绍

密钥:是一种在明文转密文或密文转明文的算法中输入的参数

在密钥中,数字本身大小并不重要,重要的是密钥的空间大小(可能出现的密钥总数量);因为密钥空间越大,进行暴力破解就越困难。密钥的空间大小是由密钥长度决定的

  • 信息的机密性,不能依赖密码算法,而是要依赖妥善保管的密钥 ;
  • 明文和密钥的价值相等,没有明文,密钥就没有价值,没有密钥,明文就不能保证其价值

 

密钥分类

1)根据用途分类:

对称密钥:加密和解密使用同一个密钥,由于需要收发双方要共享密钥,因此要对除发送者和接收者之外的人保密

公钥密钥:加密和解密使用的是不同的密钥,其中,公钥加密,私钥解密;公钥可以公开,而私钥只能自己持有

消息认证码:接收者和发送和之间共享密钥来认证,认证码只能由持有合法密钥的认得出;通常将消息认证码附在报文后面,可识别消息是否被篡改或伪装

消息认证码也是收发双方的合法证明,因此需要对除收发双方以外的人保密

数字签名:和公钥密码相反,私钥用于生成签名,公钥用于验证签名

 

对称密码和公钥密码是用于确保机密性的密钥;消息认证码和数字签名是用于认证的密钥

2)通过使用次数分类:

会话密钥:每次通信只使用一次的密钥;会话密钥只在本次通信中有效,在下一次时,使用新的密钥

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

 

3)根据加密对象分类:

CEK(内容加密密钥):加密的对象是用户直接使用的信息

KEK(密钥加密密钥):用于加密密钥

应用篇——密钥_第1张图片

 

二、密钥的管理

1.密钥的生成

1)使用随机数生成密钥

使用伪随机数生成器来生成密钥,需要注意:密码学用途的伪随机数生成器必须专门针对密码学用途而设计(具备不可预测的性质)

2)使用口令生成密钥

使用可记住的口令来生成密钥(已经很少直接使用),现在都是将口令输入单向散列函数得到的散列值作为密钥使用

2.配送密钥

采用事先共享密钥、密钥分配中心、公共密钥、Diffie-Hellman密钥交换等方法

3.更新密钥

在使用共享密钥进行同通信时,定期改变密钥(收发双方使用同样的方法同时更改)

原理:使用当前密钥散列值作为下一个密钥

4.保存密钥

在该密钥需要重复使用时使用

为了使该密钥保密,要使用另一个密钥对其进行加密行加密(KEK);虽然完全解决文件机密性问题,但可以减少要保管的密钥数量(使用一个密钥同时加密多个密钥,因此该密钥的价值也就等于这多个密钥)

5.作废密钥

在计算机上仅是删除文件是不够的,因为现在有很多可以恢复误删文件的软件(删除的文件实际并没有删除,只是不显示了而已);因此要作废密钥时,不仅仅删除就可以,还需要将密钥列入CRL中

三、简单分析diffie-hellman密钥交换

使用该算法,通信双方仅交换一些公开信息,就能生成共享密钥(IPsec就使用了改良版的diffie-hellman),因此也称为Diffie-hellman密钥协商

密钥交换步骤

应用篇——密钥_第2张图片

1)Alice向Bob发送P和G这两个质数

P必须非常大,G是P的生成元【1】;P与G不需要保密,可有收发双方任意一方生成

2)Alice生成一个随机数A

A是一个1~P-2之间的整数,只有Alice知道

3)Bob生成一个随机数B

同上,只有Bob知道

4)Alice将G^A mod P发送给Bob(可公开)
5)Bob将G^B mod P 发送给Alice (可公开)

6)Alice用Bob发送来的数计算共享密钥(Bob也用Alice发送过来的数计算密钥)

Alice的密钥 =(G^B mod P)^A mod P = G^A×B mod P

Bob的密钥 = (G^A mod P)^B mod P = G^B×A mod P

由上得出Alice的密钥=Bob的密钥

在该交换密钥中,最主要的是A和B,不能让第三方知道

根据G^A mod P 求A的有效算法还未出现,该问题可称为有限群的离散对数问题

【1】生成元:群中元素可以由最小数目个群元的乘积生成,这组群元称为该群的生成元,生成元的数目为有限群的秩

生成元的乘方结果与1~P-1的数字一一对应

四、基于口令的密码(PBE)

根据口令生成密钥并使用该密钥进行加密,其中加密与解密使用同一个密钥

PBE算法在加密过程中并不是直接使用口令来加密,而是加密的密钥由口令生成,这个功能由PBE算法中的KDF函数完成。KDF函数的实现过程为:将用户输入的口令首先通过“盐”(salt)的扰乱产生准密钥,再将准密钥经过散列函数多次迭代后生成最终加密密钥,密钥生成后,PBE算法再选用对称加密算法对数据进行加密,可以选择DES、3DES、RC5等对称加密算法

1.PBE加密过程

应用篇——密钥_第3张图片

1)生成KEK

使用伪随机数生成器生成称为“盐”(salt)的随机数,将盐和Alice的口令一同输入到单向散列函数,得到的散列值就是密钥加密密钥(KEK)

盐:一种抵御字典攻击的防御机制

2)生成会话密钥并加密

继续使用伪随机数生成器生成会话密钥(CEK,用于加密消息),将(1)生成的KEK加密CEK,并将盐和加密过的CEK保存在的安全地方,并丢弃KEK(使用盐和口令就可以重建)

3)加密消息

使用(2)中生成的会话密钥加密消息

 

最后PBE的输出为:盐、KEK加密后的CEK,CEK加密后的消息

2.PBE解密过程

应用篇——密钥_第4张图片

1)重建KEK

将盐和口令一同输入单向散列函数得出散列值就是KEK

2)解密会话密钥 

将KEK加密过的CEK使用(1)得到的KEK进行解密,可得到CEK

3)解密消息

使用(2)得到的CEK解密被加密的消息

 

3.盐的作用

字典攻击:是一种使用预先准备好的候选密钥列表,在需要破解密码时,使用该列表逐条对应进行匹配,可缩短大量时间的一种攻击方式

在生成密钥时,没有加盐的话;攻击者会在事先生成大量的候选密钥,进行匹配;如果在生成密钥时加盐,盐的长度越大,候选密钥的数量就越多(密钥空间越大);只要攻击者没有获得盐,就无法生成密钥

 

4.生成口令的注意事项:

1)只使用自己知道的信息

  • 不要使用对自己重要的信息(生日、对象名字之类的)
  • 不使用关于自己的信息(姓名、员工号、地址等)
  • 不要使用别人见过的信息(星期、星座等)

2)将多个不同口令分开使用

很多人无论QQ也好、淘宝也好、电子邮箱也好都是用同一个密码,这会造成当密码被破解时,与自己相关的应用都会受到损害

;也不要使用只变了一部分的密码(www123、www124、www125之类的)因为只要破解出一个,其他也很轻松被推测出来

3)密码的局限性

随着计算机的发展,其计算速度越来越快;因此使用暴力破解的速度也就越来越快

 

 

你可能感兴趣的:(密码与认证,密码与认证)