首页
社区
课程
招聘
随机函数作为密钥的技巧
2019-6-23 20:17 12272

随机函数作为密钥的技巧

2019-6-23 20:17
12272

  加密需要密钥,如果用于通讯还有密钥分发的问题,用随机函数值组成序列数组作为密钥是相当便利的,并且还不用分发,通讯双方以随机函数值作为基础数据经过相同的运算就可以得到相同的密钥。
  一般加密程序是自己制作密钥,这样根据少量信息产生的密钥往往是单薄的,而利用随机函数值加上运算上的技巧就可以生成取之不尽的优质密钥数组,这是因为随机函数本身是大量信息的载体,利用好了就能隐藏明文信息。破解者有可能从程序中看出使用的是哪些随机函数,但是并不知道使用的是哪些具体的数据,并且这些被利用的函数值都是经过加工的,尽管知道这些数据之间有某种联系但是也无法利用这些联系得到任何有用的信息,这里一般都是程序利用用户密码(对破解者来说是绝对的未知数)来控制随机函数序列的加工进而产生新的密钥数组。
  程序得到用户输入的密码,用这些密码的数据来控制密钥的建造,程序的流向等,并不是直接利用用户密码的数值,而是利用其衍生值,也就是根据需要以用户密码为基础计算出一些必要的参数,利用这些参数控制程序。
  下面以特例简述如何加工密钥数组,现在文件一般都是以字节为单位构成的,就以字节数组叙述不失普适性,设明文长度为N字节,由用户密码计算出一个种子值,以此种子从随机函数中得到N字节的数组,这个数组是建造密钥的基础称为原始数组,最初的变换可以让原始数组的各项乘上一个参数并加上一个参数。下面是数组进一步的改造方式,可以单用也可以组合使用,仅举几例最简单的:【1】是【倒序】例如原序是1 2 3 4 5 现在是5 4 3 2 1;【2】是【对头抽取】例如 1 2 3 4 5 变为1 5 2 4 3;【3】是【分段变序】原序是假定每6项为一段 1 2 3 4 5 6 对这一序列进行随机排序例如得到 3 1 6 4 5 2,然后依次对所有序列进行这样的顺序转换,这种变换多种多样注意灵活处理最后不足一组的情况。【4】是【全部随机排序】此法等于原始数组的再造,绝对排除了原始数组之间的数据相关因素,达到类似真随机数组的效果。经变换后原随机函数的前后数值有关联的情形彻底改变,更加难以捉摸,加密强度和破解难度更上一层。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (24)
雪    币: 211
活跃值: (511)
能力值: ( LV9,RANK:172 )
在线值:
发帖
回帖
粉丝
vmtest 2019-6-23 22:39
2
0
楼主,恕我直言。  看了你几个文章,内容质量实在不敢恭维。
你对流密码感兴趣的话,研究一下lfsr, Berlekamp–Massey 等等相关发点文章不是更有意义么
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-6-23 22:48
3
0
谢谢指点,我对【线性反馈移位寄存器】,不感兴趣,觉得作为民用,随机函数就是最好的选择。
雪    币: 211
活跃值: (511)
能力值: ( LV9,RANK:172 )
在线值:
发帖
回帖
粉丝
vmtest 2019-6-23 22:58
4
0
sjdkx 谢谢指点,我对【线性反馈移位寄存器】,不感兴趣,觉得作为民用,随机函数就是最好的选择。
研究可靠随机函数不就是研究LFSR?     给些数学公式,比你满屏的纯文字有说服力多了。 
密码学版块的首页的一半都快被你的“水帖”占据了。  
佩服你“毅力”的同时,也有点感觉是不是有些“魔怔”了。   没有其他意思,祝好。
最后于 2019-6-23 23:02 被vmtest编辑 ,原因:
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-6-24 10:02
5
0
真是有些“魔怔”了,明明很简单就可以很好的加密了,还出那么多幺蛾子,所以努力推荐自己的方法和观点。应用随机数作密钥首推,MT19937,公式也不复杂,周期大的吓人10的6000次方。
雪    币: 182
活跃值: (576)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
柒雪天尚 2019-6-24 10:11
6
0
椭圆曲线算法了解一下
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
exile 1 2019-6-24 11:08
7
0
我现在只要一看标题 就知道是你发的 真NB
雪    币: 211
活跃值: (511)
能力值: ( LV9,RANK:172 )
在线值:
发帖
回帖
粉丝
vmtest 2019-6-24 11:12
8
0
sjdkx 真是有些“魔怔”了,明明很简单就可以很好的加密了,还出那么多幺蛾子,所以努力推荐自己的方法和观点。应用随机数作密钥首推,MT19937,公式也不复杂,周期大的吓人10的6000次方。
https://zhuanlan.zhihu.com/p/32892000
MT19937 也是基于利用的lfsr.    
最少从你早期的帖子到现在,没感觉到你有什么进步,只有嘴遁,不少回复还有常识性质的错误。
放点心思在真正的技术上不好么, 十年,认真研究,早就成大神了。 

雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-6-24 14:53
9
0
真是啊基本是原地踏步,谁能打败我的加密想法,也许就另辟蹊径了,可惜都是嘴仗。
雪    币: 357
活跃值: (2593)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
KooJiSung 2019-6-24 15:30
10
0
不验证密码正确, 就可以自嗨了10年,这样的大牛还真是少有
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-6-24 20:19
11
0
理论上做验证的东西百分之百能被穷举破解,实际是为窃密者的无私奉献。
雪    币: 10845
活跃值: (1049)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
看场雪 3 2019-7-5 22:19
12
0
利用伪随机数发生器来产生密钥流,在安全性不太讲究的工程上是可用的。
这个方案主要有2个安全问题
1)种子空间。不论PRNG算法有多好,其种子决定了生成的序列。n个不同的种子,至多只能得出n个不同的序列(不论这个序列周期有多大)
2)PRNG的随机性好不等于安全。经典的例子就是m序列,其统计特性能达到理想极限,但是却很容易破解

另外 序列密码 水很深。基于LFSR的序列密码设计道路,在学术上基本上已经走到了尽头(而且摆在尽头的 并不是成功的奖杯)
如果只是自己玩玩,还行。
别把PRNG用在很关键的地方!
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-7-6 00:20
13
0
一个PRNG算法也许容易走到尽头,但两个以上您玩过吗?破解就是笑话!
雪    币: 357
活跃值: (2593)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
KooJiSung 2019-7-6 01:15
14
0
两个PRNG算法也许容易走到尽头,但10的6000次方个PRNG你玩过吗?不用破解,本身就是笑话!!!
雪    币: 10845
活跃值: (1049)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
看场雪 3 2019-7-6 11:08
15
0
密码算法的设计 不仅仅看安全性(破解代价有多高)
还需要考虑很多因素:成本(计算代价)、易用性(符合应用场景)等
雪    币: 0
活跃值: (168)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pengrui 2019-7-10 14:28
16
0
exile 我现在只要一看标题 就知道是你发的 真NB
你Q多少啊?我找你有事情想请教你一下
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-7-11 04:08
17
0
Q不常去了,邮箱sjsjsjd@163.com。
雪    币: 1412
活跃值: (4209)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
IamHuskar 4 2019-7-11 08:46
18
0
vmtest 楼主,恕我直言。 看了你几个文章,内容质量实在不敢恭维。 你对流密码感兴趣的话,研究一下lfsr, Berlekamp–Massey 等等相关发点文章不是更有意义么
真能研究出什么发个密码学顶会更有说服力。不知楼主底细就怕是民科还喊不醒。
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-7-11 12:19
19
0
原来发过一个密码学的帖子不知怎么消失了。下面是简陋的密码学介绍,很简单的东西。
(1条消息)大众密码学 - sjd163的专栏 - CSDN博客  https://blog.csdn.net/sjd163/article/details/45786043
雪    币: 10845
活跃值: (1049)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
看场雪 3 2019-7-12 08:11
20
0
sjdkx 原来发过一个密码学的帖子不知怎么消失了。下面是简陋的密码学介绍,很简单的东西。 (1条消息)大众密码学 - sjd163的专栏 - CSDN博客 https://blog.csdn.net/sjd ...
建议转发到论坛,方便大家在论坛看。
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-7-12 12:22
21
0
此帖子原来在本论坛发过,不知被哪位高水平的版主删了。
确实名字太夸张,就是一点点流密码加密文件的东西。
雪    币: 10845
活跃值: (1049)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
看场雪 3 2019-7-12 16:49
22
0
sjdkx 此帖子原来在本论坛发过,不知被哪位高水平的版主删了。 确实名字太夸张,就是一点点流密码加密文件的东西。
我去翻了一下,觉得帖子写得还挺入门。适合入门读者。

个人观点:
入门,有入门的好处;
专业,有专业的道理。

道理就象:
小孩常食即可,不宜进补;
而某些成人更需要食补。

对于入门者而言,应该看入门贴。如果强行读专业贴,不仅看不懂,而且还信心受挫。
而职业高手,可以到专业贴上,和同一等级的高手们切磋。不必太在意入门贴当中的那些不完备、不严谨。

欢迎各个层面的帖子!
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
那年那时那她 2019-11-20 22:37
23
0
最近在做一个身份认证的硬件解密,就遇到个随机数的问题。主机发送一段数据,从机(加密芯片)回复一段数据,验证通过则从机可以继续运行,否则退出。问题在于,主机发送的数据是随机的,时刻都在变化。而在相同的主机数据情况下(用另外的CPU模拟主机发送过的同一段数据),从机也是变化的随机数据。两种情况都重复测试数百次,没有一次重复,有没有专业人士指点一下,这个属于什么算法机制呢。
雪    币: 49
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
切忌浮躁 2019-11-21 00:09
24
0
Hkdf Expand不香吗?
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-11-21 09:57
25
0
似乎是主机虽然是随机的,但隐藏某些规律,符合这些规律到从机那里才能通过验证。猜想而已。
游客
登录 | 注册 方可回帖
返回