- Diffie-Hellman密钥交换:Diffie-Hellman key exchange;生成元:generator;字典攻击:dictionary attack
- 拉伸:stretching
保存密钥
对密钥进行加密的方法可以减少需要保管的密钥数量,在现实中是一个非常有效的方法
作废密钥
要完全删除密钥,不单要用到密码软件,还需要在涉及计算机系统时,对信息安全进行充分考虑
Diffie-Hellman密钥交换
一种解决密钥配送问题的方法
什么是Diffie-Hellman密钥交换
通过这种算法,通信双方通过交换一些可以公开的信息就能够生成共享的秘密数字,这串数字作为共享密钥
Diffie-Hellman密钥交换的步骤
- P是一个非常大的质数,G是一个与P相关的数,称为生成元
- Alice生成A,在1~p-2之间,Bob生成B,在1~p-2之间
Eve能计算出密钥吗
解决这个问题的有效算法还没有找到,这个问题称为有限域的离散对数问题
生成元的意义
P的生成怨的乘方结果与1~p-1中的数字是一一对应的,所以Alice能在1~p-2中随意选数字,不能选p-1是因为结果永远为1
椭圆曲线Diffie-Hellman密钥交换
Diffie-Hellman密钥交换利用的是“离散对数问题”,如果是“椭圆曲线上的离散对数问题”,就是椭圆曲线Diffie-Hellman密钥交换
基于口令的密码PBE
什么是PBE
password based encryption: 根据口令生成密钥,并用该密钥进行加密的方法,加密和解密使用同一个
PBE加密
PBE解密
盐的作用
盐是由伪随机数生成的随机数,在生成密钥KEK时,会和口令一起输入单向散列函数
盐是用来防御字典攻击的
字典攻击:事先生成的KEK能够大幅缩短尝试的时间。加入盐之后,候选KEK的数量变得非常巨大
口令的作用
通过口令生成KEK,通过这个密钥来加密会话密钥.
需要将盐和加密后的CEK通过物理的方式进行保护.
通过拉伸来改良PBE
将单向散列函数进行多次迭代的方法称为拉伸
如何生成安全的口令
使用只有自己才能知道的信息
使用只有自己才能知道的信息是一个大原则,因为口令不能够被别人推测出来
- 不要使用自己重要的信息
- 不要使用关于自己的信息
- 不要使用别人见过的信息:e.g. 名言名句
将多个不同的口令分开使用
不将同一个口令用于不同的用途
有效利用笔记
应该将笔记与物理的钥匙同样对待
理解口令的局限性
可以被暴力破解
使用口令生成和管理工具
一些工具通过伪随机数生成器生成口令,但是工具及其开发者是否可信是非常重要的