基于PBKDF2算法的快速口令派生算法
2018-02-05余少标李阳韩占男周雨涵北方工业大学
数码世界 2018年1期
关键词:安全性
余少标 李阳 韩占男 周雨涵 北方工业大学
通常用户口令都是可见字符的组合,长度也不固定,但密码算法对密钥的要求比较严格,工程实践中常用PKCS#5中定义的2种常用的由口令派生密钥的方法,从用户口令派生出所需密钥。然而PKCS#5中定义的两种常用的口令派生算法生成口令的效率不高,以PBKDF2算法为例,计算1000次约需要12秒。当需要在短时间内生成大量密钥时,PBKDF2算法是无法满足要求的。
针对以上问题,本文提出一种快速口令派生算法,基于PBKDF2算法的原理,改善其内部算法的结构并且添加多线程机制,同时加入随机数可以使得改良后的算法能在短时间内生成大量的安全密钥。
1 基于PBKDF2算法的快速口令派生算法
1.1 PBKDF2算法简介:
PBKDF2算法的输入为用户口令、盐(salt)、迭代次数和密钥长度,输出为随机密钥。算法工作原理通过hmac函数,将明文和salt作为hmac的输入参数,然后重复进行计算,最终产生密钥,伪代码如图1。

图1.PBDKF2算法核心伪代码
其中pwd为用户输入口令,salt为盐值,iterations为迭代次数,Klen为输出的密钥字节长度,hlen为hmac算法输出的字节长度。Ceil函数为向上取整函数,‘||’表示级联符号,即将两个字节串连接在一起,out[0 fi Klen]表示输出取out数组的前Klen位。
1.2 快速口令派生算法
1.2.1 算法结构改进
PBKDF2中,HMAC算法为原子操作,故无法对其进行优化。根据HMAC算法的原理,可以将一次HMAC运算等效替换为进行四次哈希运算。从而将原子操作从HMAC计算变为Hash计算,从而对其进行优化。
据此将第二次for循环重写为如下伪代码,其中PADDING表示填充函……
登录APP查看全文
