随机函数直接用于加密及其破解

 

 

随机函数作为密钥  
  随机函数直接加密是指直接用随机函数的生成值作为密钥或密钥的一部分参与文件加密。我们知道只要为随机函数设定好种子,运算一次随机函数就可以产生一个新的函数值,这些数值可以直接或通过计算作为密钥来加密明文,它可以乘上一个非零的系数或者再加一个常数项作为密钥。解密则是加密的逆运算。

破解随机函数的加密
  通过阅读程序可以知道加密使用什么随机函数,如果是直接加密(密钥无参数和常数项只是随机函数值)知道了随机函数种子就大功告成了。可以用穷举法来得到种子,列举所有可能出现的数值作为种子候选,分别去尝试,但设定种子后生成一个或两个函数值是不行的,那将无法判定是否解密成功,至少需要几个数值或者更多来判断,如果知道了明文的属性还好说点,可以抓住其特征加以判断,一般可用排除法,就是将不可能出现的数值做表,出现不可能数值后转而试验下一个种子候选者,直到找出真正的种子。如果随机函数的周期很大找种子的工作就可能要用很长时间,但也许你的运气好很快就找到了。
  如果密钥有参数和常数项,破解就麻烦多了,除了选择种子候选者外还要将产生的随机数乘上系数加上常数项,系数和常数项都是未知的所以都需要试解,你大概需要试验“随机函数周期×系数值域×常数项值域”次。
  随机函数有各种形式的生成值,假如是以32位2进制数形式出现,假如密钥只需要8位2进制数,在函数值作为密钥之前做几次从大到小的大数的模运算将使密钥的数值发生根本的改变,作为模数的数值也来自用户密码的衍生值,破解者也必须做同样的尝试否则是无法破解的。这样需要做的试验就更多了。
  随机函数周期一定要大些才能可靠加密,例如周期有10的36次方大小。就是对现成的函数值做最简单的搜索,用当前最快的计算机每秒运算1万万亿次(记录是不到3000万亿次),要运行3.2万亿年才能搜索一遍,如做判断再加上其它运算时间还要长上几倍到几十倍。
  有人认为用万能的暴力破解可以管用。确实如果密码只有一位那很快就能尝试所有密码,总能碰上吧,所以密码的位数不能过少,一般的加密都有限制最少密码个数的措施。能被暴力破解攻击的软件都是软件自身有缺陷造成的,举例说明winrar中的加密,如果你输入错误的密码,程序并不向下运行,立刻提示你密码是错误的,破解者利用这点就可以快速的试解大量候选密码,也就是winrar自身检测密码对错的机制实际上帮了破解者大忙,而出卖了自己。否则破解者要进行自己检测解密是否成功等操作,这要花费大量的时间,如果用户密码不是特别短成功的机会很小,如果遇到文件本身就是乱码的情况根本没有解密的希望,因为没有判断标准。
  而直接使用随机函数加密,从上面的分析可见,如果使用两个或多个随机函数参与加密并有与用户密码相关的参数和常数项,是相当安全的,如果再配以加盐技术、单表置换等,可以做到即使加密方式源码公开安全性依然不减。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值