首页
社区
课程
招聘
[原创]理想密钥的生成
发表于: 2013-8-10 16:20 8758

[原创]理想密钥的生成

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

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
  实际应用中最初的数组不一定是256个成员,也不是不能出现重复元素,那样做只是为了形式上的完美而已,虽然那样不太理想了,但并不影响效果。
2013-8-11 06:52
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1,加密用真随机数不一定妥当(一次一乱密码本除外)
因为一个是对合法的解密造成困扰
第二点cpu啊,硬盘转速啊这些随机种子是可以预测的

2,全是不重复元素其实不一定比大量无趋势的重复安全(比如第一次加密FF超级多,第二次却是f0超级多)

3,一段连续的伪随机数实际上就是从一段大数列中抽取一段出来,这个是可以供攻击的

4,你在考虑安全性的时候有个严重的缺点就是假设别人无法读懂你的程序
2013-8-14 01:33
0
雪    币: 340
活跃值: (922)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
4
LZ不会反汇编,没学过信息论、密码学,就妄想设计一个加密算法。
真可谓无知者无畏啊。
2013-8-14 09:34
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
  用这种方法建立的数组,虽然受控于随机函数但不是直接作用的,它只起到搅乱数组的作用,生成的数组元素之间是没有规律性关系的。
  像硬盘转速能预测吗?认为凡是受驱动的东西,都是有随机因素的。
  密钥数组好坏是多种因素决定的,主要还是没有规律最为关键,其它的比较次要。
  我是“假设别人无法读懂我的程序”吗?努力改进吧。
2013-8-14 09:50
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
  812加密算法中现在已经不局限于理想密钥了。理想密钥有些过于追求形式上的完美,实际毫无意义,有些重复元素出现并没有什么。并且基础密钥单元状态数更大了大于是10的611次方,而前者是10的506次方。
2013-8-17 17:28
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
悲剧……如果不是省电模式……硬盘的转速还真能大概预测……
2013-8-17 20:14
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
欢迎继续讨论。重点是这样形成的数组数据之间有关联吗?如何利用这些关联?
如果给你这样的数据你能由前面的数据推算出后面的数据吗?
2016-8-17 00:44
0
雪    币: 397
活跃值: (799)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsy
9
LZ说过,那些都是垃圾,骗人的
2016-8-17 08:28
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
楼主可以在你家楼顶放个宇宙射线探测器,来取这个值,这是 真随机数。
2016-8-17 08:32
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11
谢谢讨论
获得真随机数并非难事,方法多的是,例如利用荧光屏的白场可以获得多路随机信号,用宇宙射线是太稀疏了。但对于加密来说真随机数组真不是那么好用的。还是自己用有限状态机建立起随机数组更好些,关键是(1)数据之间是独立的,(2)没有用户密码你无法复现数组。
请提出这样建立数组的弱点。
2016-8-17 13:57
0
雪    币: 123
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
目前重点不在密钥生成,而是在密钥保护上。
2016-8-23 21:48
0
游客
登录 | 注册 方可回帖
返回
//