
关于口令加密需要调味(salt)的问题.pdf
3页航天恒星科技有限公司 关于口令加密的问题关于口令加密的问题-salt 的使用的使用 李德全 航天恒星科技有限公司 (本文档用于公司内部,对应用系统开发人员的简单培训适合系统开发人员及 希望了解相关机制的人员,对用户提高自身口令安全性没有帮助 ) 摘要:摘要:通常系统中的口令是需要加密的,而且是需要采用加 salt(调味)的方式 进行加密,以提高口令安全性本短文旨在说明为什么需要加 salt2015-02-04 一、一、 口令是需要加密存储的口令是需要加密存储的 大家都知道,为了防止攻击者获得用户的口令,系统应该把口令进行加密存储, 这样,即使攻击者得到了口令文件,也看不懂口令这个“加密”通常不是严格 意义的加密 通常的加密算法(或称函数 f)有这样的属性: 如果 fk(p)=c, 则 fk-1(c)=p 这里,f 表示加密算法,k 表示密钥, p 表示明文,c 表示密文也就是说,通 常的加密必须是可逆的,否则无法还原出明文 但是,在对口令进行加密的时候,并不要求解密,而且最好是不能解密如果有 这么一个密钥 k,一旦被攻击者得到,加密就失去了意义而且,管理员也可以 很轻松的得到用户的口令(管理员要得到 k 不是很 easy 的嘛。
) 如果采取一种不可逆的加密算法 g(可以把通常的加密算法改变一下,使其不可 逆,也可以用其他的单向函数如 hash 算法) 因此,在系统中存放的用户名和口令可能是这样的: 表一: 用户名和口令对应表 用户名 加密后的口令 Zhangs(张三) M,4kgk5,; Lis(李四) K;fgoetj9565 Wangw(王五) Nwlkru3213,.00 … … 假设如下括号内的是明文口令: 航天恒星科技有限公司 M,4kgk5,; =g(udculieew34) K;fgoetj9565 =g(123456) Nwlkru3213,.00=g(83ff849jffd) 口令认证口令认证过过程:程: 当用户张三登陆系统的时候,用户会提交用户名张三和口令,如果用户提交的口 令是“udculieew34” ,系统运行算法 g,得到 M,4kgk5,; =g(udculieew34) ,系统 将之与库中的加密口令比对,一致,则认证通过 二、二、 口令的简单加密存在弱点口令的简单加密存在弱点 采取如上的加密方法后, 如果攻击者得到了口令文件, 攻击者可以进行离线破解 一般有两种方式:字典式、暴力式,或者采取两者的结合。
字典式攻击:字典式攻击: 攻击者一般掌握了一个很大的由用户常用口令组成的字典, 而且字典中的越常用 的口令排位越靠前然后攻击者把这些口令用函数 g 进行加密(这个 g 通常是公 开的标准算法,即使非标准算法,攻击者也可能得到算法细节或其软件) ,构成 一个加密的字典表如表二,再与其窃取的口令文件进行比对,这样,攻击者很容 易就会得到很多的用户口令如“123456”加密后是“K;fgoetj9565” ,攻击者就 得到了李四的口令 表二: 口令和口令密文对应表 口令 加密的口令 11111 34 fhfeoft6f 123456 K;fgoetj9565 a123456 Jf38r56tfrtg1 5201314 Sdcsljhiwq57 … … 暴力攻击:暴力攻击: 字典式攻击只是针对字典中有的而暴力(野蛮式)攻击则是针对所有的可能性 去一一尝试暴力攻击对计算和存储资源的要求较高 无论是字典式还是暴力攻击,攻击者都可以通过“制表—查表”的方式进行口令 比对, 当用户量很大, 口令很多的情况下, 攻击者很容易获得一些口令的 因此, 直接对口令进行加密是不够的 航天恒星科技有限公司 三、三、 加加 Salt,增强抗攻击的能力,增强抗攻击的能力 为了增加攻击者的难度,阻止攻击者通过查表方式比对口令。
我们可以采取“调 味” (加盐, salt) 的方式 即, 对于每一个口令, 我们产生一个随机数, 称为 salt, 与这个口令拼在一起进行加密如表三所示: 表三: 用户名、salt 和带 salt 的口令密文 用户名 Salt 加密后的口令 Zhangs(张三) 439675 Rfevti45584d Lis(李四) 987676 4fg;5grm5t-0 Wangw(王五) -56867 04rmgk;5grk;r 这里,salt 只需明文存储即可验证的时候,系统只需把对应的 salt 与用户输入 的口令拼接起来进行加密运算并与表三比对即可 安全性分析安全性分析: 由于每一个口令对应的 salt 是不同的, 攻击者不能预先做出一个通用的表进行查 询,其要么针对张三,要么针对李四或其他的某个账号进行独立的口令破解因 为针对张三的口令攻击表用于攻击李四的口令是无效的,因为 salt 不同这样, 采取加 salt 的策略,可大大提高攻击者的难度这也是大多数系统采用的口令加 密方式 。
