首页
社区
课程
招聘
[原创]随机函数的改造
发表于: 2015-8-29 21:41 4813

[原创]随机函数的改造

2015-8-29 21:41
4813
  由于随机函数的工作方式是由种子经算式计算得出结果输出,而本次输出又作为下一次输出的种子,这样得到一系列的数据,所以得到的数据之间有很强的相关性,尤其是相邻的数据之间,这种缺陷是不能靠改进计算算式而克服的,这是由其工作方式决定的本征的缺陷。数据之间有联系的随机数,随机性必然受到影响是不言而喻的。要改进这一缺陷,即使数据之间相对独立,方法很多这里仅讨论一种简单的方式。
  这种方式是借助随机函数来挑选数表中的数值,从而建立随机序列。数表中均匀的分布着所有的元素,用随机函数的输出值经模运算在数表中选择一个序号,而这个序号所对应的数值作为最后的输出值,这样随机函数的作用是选择序号,而最终结果不但和序号的选择有关还和数表的数据排列有关,所以产生的随机数之间没有什么关系,并有更好的随机性,数表并不是一成不变的,可以定期的或不定期的对其进行洗牌操作,这对输出数组的随机性是有帮助的。
  虽然这种方法生成的随机数组数据之间没有关联,随机性很好,但它们仍然是可控的,这是所谓真随机数做不到的,相信能在使用中起到很好的作用。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 4668
活跃值: (1713)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
vc的随机函数关联线程
2015-8-29 23:05
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
  欢迎继续讨论,这里的方法是“新型随机数生成方式”的一个特例,本质是一样的,随机函数在这里都是对现成的数组进行变换得到新的数组,也就是随机函数值不直接影响结果只是参与新数组的组建而已,所以只要这些函数能满足一些基本要求就可以了,例如分布均匀、没有死点等。
  这样生成的随机数和老式随机函数的区别是你无法用输出的数据来得到某种算式,对老式的随机函数是能够办到的,通过设计算式的形式和参数(一般用多项式就够了),通过算出参数使随机函数被模拟出来,为什么呢?因为它本来就不是算出来的而是排出来的,每种结果都是特例而没有共同的规律所以模拟也就没有意义。就像我们模拟小区域的海浪分布,因为没有明显的规律性,也就不可能实现连续的预测分布,本质是由于现象是多种因素的共同结果。
2015-8-30 15:45
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
是不是又要写毕业论文了啊
2015-8-30 17:25
0
雪    币: 62
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
“这种方式是借助随机函数来挑选数表中的数值”
AES的大致流程:
1、使用密钥构造轮密钥,构造轮密钥的过程即相当于你说的随机函数;
2、轮密钥与明文做线性变换(行变换和列变换)作为S盒的输入;
3、使用多项式逆元的一些线性变换构造S盒,S盒即相当于你说的数表;
4、对S盒的输出做行变换和列变换,作为新的明文;
5、重复上述2,3,4若干回合,得出密文。

你的做法需要具体化“随机函数”和“数表”的实现方式,当然,“数表”不够大的话,数表的多次输入输出之间最好还要加一些变换。
其实,现代的对称密码算法的关键就是S盒的设计,也就是你说的“数表”的设计。

而对于随机数,现在一般的生成方式是:
1、用物理随机源(模拟电路)生成随机数;
2、后处理:后处理过程通常类似于AES的第4步。
2015-8-31 09:58
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
楼上对AES很有研究,学习了。我没有深入研究过,也没那个能力。
改造随机函数的目的是为了生成更好的随机数以便服务于密码学,希望大家多提建设性的意见。
2015-8-31 12:23
0
游客
登录 | 注册 方可回帖
返回
//