-
-
[讨论]理想密钥的生成
-
发表于:
2014-8-7 11:50
4207
-
理想密钥的生成
理想密钥的定义:就是最适合隐藏数据的密钥,由相互之间没有关系的、均匀分布的乱码组成,相邻元素没有重复的。
以字节数组为例,它有256个成员,先看这256个成员组成的数组可以有怎样的组合形式,它们共有256的256次方种不同的组合方式,但其中也包括了全体是一种元素,或大量重复的组合,这些显然不适合做密钥,极端的例子是256个零,完全是透明的了,所以尽量不要重复元素出现,这样就只有256!这也是成员众多的集合,利用这些就可以组合出形形色色的理想密钥数组,而且比采自自然物理现象的真随机数组,更接近于理想密钥。
我们如何得到不同的256个元素的组合呢?这要借助于热力学第二定律——熵增加原理:如果众多因素影响某种现象时,只能向越来越混乱的方向发展(向无序化发展),例如锅里放了几种颜色的沙子,你用铲子去搅动它们,各色的沙子只能向着颜色融合的方向发展,分布越来越均匀,而不能有相反的趋势。
我们可以用性能优良的随机函数对数组做随机排序(相当于多种因素作用于数组),这样就可以得到分布不同的数组了,将它们接起来并且不让各单元数组的首尾产生重复元素,这样理想的密钥数组就建立起来了。
这样建立的数组是可以控制的,并不像采自物理现象的真随机数组是不可控制的。所以使用起来非常便捷。我认为有些真随机数组是相对的,例如我做出一个数组你用各种方式也不能发现其规律,在你来看完全是一些无规律的乱码,它对你来说就是真随机数组,而对我来说就不是,因为我能再现它。并且真随机数组是一种数组生成方式,数组一经公开就不在是真随机数组了,因为此时可能有人掌握它了,所以真随机数组只能存在于生成机制中。
密钥数组不是凭空生成的,我们可以通过用户密码及其衍生值来控制,通过用户密码计算、映射信息、关联信息,使其得到拓展名堂大了,请参考笔者有关帖子“密码的复杂化”等,最后生成参数数组,用它们来控制密钥数组的生成。
安全性问题
至此就算将密钥数组公开也未必能推出用户密码,这是因为大多计算都有不可逆因素参与,况且密钥数组在加密过程中只是一种中间变量,最后只有密文是公开的。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)