首页
社区
课程
招聘
[建议]密钥库标准化及其应用
发表于: 2013-9-13 15:14 13577

[建议]密钥库标准化及其应用

2013-9-13 15:14
13577
(一)
  密钥库标准化的意思是:密钥库作为一种公开的资源为大家所共享。理想的密钥库由真随机数组成,各元素之间没有任何关系,整体上分布均匀。
  如果密钥库为大家所共享,它的完整性是个重要问题,如果你利用它做了某些事情,而它的数据发生了变化你再次应用时将给你带来数据灾害。一种简单的方法是对密钥库进行CRC计算并备案,下次检测发现计算的CRC和备案不同则可以确信密钥库是被更改过的。所以密钥库作为一种公开的资源为大家所共享时,同时应提供数据库的验证方式及数据,例如CRC值等。
  密钥库作为资源一经公布就是一种已知的东西了,还有实用价值吗?其实不然,它是一种杂乱信息的集合,信息量是巨大的,配合其它方式可以很好的隐藏数据。下面讨论如何利用密钥库,这里只讨论利用密钥库生成密钥数组。
  虽然密钥库是由真随机数建造的具有真随机数的特点,但一经公布就不再是真随机数组了。但是我们可以利用密钥库的数据来产生真随机数组。实际借助于随机函数就可以由密钥库生成无穷无尽的随机数组。方法多种多样这里仅以最简单的方式说明用法,例如我们要建造一个长度为N的随机序列R,我们选择一个性能优良周期T长(T>>N的随机函数F,设密钥库K的长度为N1(N1>>N),K(i)表示密钥库的任意元素。任意选择随机函数的种子和密钥库的起点生成有N个元素的新的序列R:
            R[i] = K[i] + F[i]
  这是最简单的组合形式,由于密钥库K和随机函数F的起始点可以任意选择所以能组合出形形色色的R。我们知道随机函数的生成值是有规律的但由于密钥库K的参与那些规律在R中已经不复存在,想靠分析序列值找出通式是徒劳的。下面看一下若用穷举法复现R需要如何去做:虽然我们的数组长度为N也许不是很大,但涉及到一个较为庞大的数据库,和周期较长的随机函数所以必须无遗漏的查找才可能复现其形成过程,寻找随机函数种子需要做T次尝试,寻找密钥库起点则需要做N1次尝试,总起来需要做4×T×N1次尝试,4是由于密钥库和随机函数的计算方向组合而产生的工作量,可见如果随机函数的周期很大时(例如10的30次方以上)是很不容易尝试成功的。实际上生成的密钥数组是不可能摆在那里让你分析的,往往形成后就参与运算混合到其它数据中去了,这里就是看看难度而已,如果上式K[i]和F[i]都有系数并且还有一个常数项,计算量将增加多个数量级。如果加入多个随机函数(例如n个)将使工作量变为4×T1×...×Tn×N1,追踪复现的难度可想而知,无异于大海捞针。
  使用得当这里产生的密钥数组是很安全的,并且重要的是可以控制的。我们知道真随机数组是不可控制的,所以在管理和保存上很不方便。但是这里让密钥库数据和随机函数数据结合起来,产生的密钥数组使用起来可以像随机函数那样容易控制,而且像真随机数组那样元素之间没有关联。
  用上述方法生成密钥数据只是简单的线性叠加并不一定是最好的,适当的利用高次项也许效果更好。

(二)
  前面举例说明用线性叠加的方法使用密钥库和随机函数生成密钥数组。下面介绍另一种方法,使用随机排序方法生成密钥数组。
  此方法仍然需要借助于随机函数。例如我们要建造一个长度为N的随机序列R,我们选择一个性能优良周期T长(T>>N的随机函数F,设密钥库K的长度为N1(N1>>N),K(i)表示密钥库的任意元素。由密钥库任意选择一个起始点,连续取N个元素组成序列K1,任意选择一个随机函数F的种子,利用随机函数对序列K1进行随机排序得到新的序列R。随机排序是在一个循环里完成的,例如对序列K1进行随机排序,这里有N个元素序号为0到N-1,随机函数选择好种子可以待命,从序号0开始取K1[0]和K1[M]进行交换,M等于F[0]的代数运算对N取模的数值(也就是从0到N-1中任选一值),依次向下直到N-1则完成了一遍随机排序。
  随机排序使用更加灵活,你可以用不同的随机函数参与排序,也可以使用一个随机函数在不同的种子下进行排序,此种排序运算一般都是不可逆的,随机函数是在侧面影响排序的结果所以生成数组和随机函数没有数值上的关系。空间复杂度和时间复杂度不亚于(一)中的例子。同样都是可以控制的,在使用上极其方便。基本上可以看做是一种可控的真随机数发生方式。

(三)
  前面(一)(二)谈到密钥库完整性检测及用密钥库生成密钥的两种方式。
  下面谈一下利用密钥库对文件进行流密码加密。基本思路是:利用用户密码生成可用参数,利用随机函数和参数,对密钥库数据进行加工生成应用密钥流,对文件流进行加密。如果是通讯两边要使用同样的密钥库和加密软件。
  具体做法,在输入用户密码的同时也输入了密钥库标识,使用用户密码生成若干参数Ki,由被加密文件得到其长度Nw,使用参数Kn和密钥库长度Nk及文件长度Nw,在密钥库中动态选取起点,并截取长度为Nw的一部分数组M,使用随机函数用参数Kx做种子对M进行加工得到密钥流,用密钥流对文件流或密文流加密或解密即可。
  密钥库是真随机数的集合,是可以公开共享的,所以一经公开就不再是真随机数了,但经过加工后就可以使用了,这是因为密钥库本身是均匀分布的乱码,公布后为大家所共有,不再拥有真随机数不可预料等的属性,但是如果你用随机函数对其进行随机排序等操作,随机函数的种子不为他人知道,这时又恢复了数组的真随机数属性,而随机函数的种子是由用户密码衍生的,这样整个数组就在你的控制之下了。我们知道根据热力学第二定律,对任何数组的随机排序只能使熵增加,所以能实现数组的这种转换。

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

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
太是扯淡……没发现他的意义所在

攻击排列比攻击内容简单多了……
2013-9-13 17:46
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
  也就是嘴上攻击吧。没有实质的东西。想打倒也得有个方法吧,不然只是个口号!
2013-9-13 19:07
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
  例如建立10G的标准密钥库,也不过5分钟的时间。使用和维护都很方便。欢迎大家讨论,只愿意跟着爬行者除外。
2013-9-17 15:57
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你说好处呗?

而且玩意服务器崩了或者是当前环境不允许联网呢?

完全没看出这个对于传统方式的优势……纯粹脱裤子放屁……

而且isp或者是服务器可以得到指定计算机密匙查询的位置……这个会带来严重安全隐患,而如果你直接下载整个密匙库……那不如直接在本地生成
2013-9-17 21:48
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
  密钥库作为标准,是可以从多处取得的,当然本地也要保有。你说话干净点,否则不要参加讨论!
2013-9-18 06:51
0
雪    币: 222
活跃值: (185)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
lz观点总有人反驳!方向错了?
2013-9-27 00:34
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
密钥库的基本应用
  1.直接选点引用与明文等长的字节。a.最好用四向结合方式。b.在引用数组中选多个起点作用于明文。
  2.选择小块起点引用,随机排序明文小块,(小块一般256字节)。不能单独使用最好结合随机函数加密,
  3.选择多点引用与明文等长的字节,实现多字节加密一个字节。
2013-9-29 15:55
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
楼主很多东西都太主观化了太想当然了……

所以大家对他理论提出的质疑他是无法回答的
2013-9-29 16:14
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
欢迎大家讨论。
  标准密钥库是公开资源,可以放在云端,并应有自动维护的能力,供大家享用,如果你经常用到最好本机也有一份,这样工作效率更高。
  标准密钥库虽然公开后不再能称为真随机数组集合,但仍然保有真随机数组的某些性质,例如元素之间没有任何关联,这是任何伪随机数组绝对没有的性质,标准密钥库中的数组稍变换一下就能恢复成为真随机数组。
  应用标准密钥库能使加密更简单、快捷、安全。

内容补遗
  一楼中述说了,变换密钥库中数据的两种方法都是借助于随机函数,再说一种不使用随机函数的方法,例如我们需要建造长度为N的数组,在数据库中任意点A开始依次选取长度为N的数组,在数据库中任意点B开始依次选取长度为N的数组,这两个数组不允许有交集,让这两个数组数据,依序号相互运算得出新数组。只要别人无法知道你的操作过程,那新数组就是真随机数组了。
2014-7-31 22:31
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11
应用标准密钥库加密信息,可以有效的抑制穷举攻击。欢迎讨论。
2014-9-5 05:29
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
确实欢迎讨论吗?
一看内容和说话语气,我忽然就觉得像某人,一看果不其然,只看过楼主发表的一个主题帖,就能对上号,楼主果然几年如一日,感觉楼主和那个发表加密软件多少日不可破的很有一拼,难道是马甲?
2014-9-5 07:41
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
顺便看了楼主发表的一些其他主题,都是一水的和加密有关系,但又不着边际的臆想,好吧,我是小白,我退出.
2014-9-5 07:54
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
14
笑话“多少日不可破的”,我可没这么说,这么说要求也太低了。
2014-9-5 16:01
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
15
欢迎大家讨论这种加密方式。
2014-9-21 07:16
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
16
欢迎继续讨论。
2015-11-30 15:37
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
17
这个标准库建设的怎么样了?
2016-3-2 11:07
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
18
哈哈,这个是很容易的事情,用
http://bbs.pediy.com/showthread.php?t=195223&highlight=
介绍的方式建立数组即可。
2016-3-2 20:59
0
游客
登录 | 注册 方可回帖
返回
//