无敌加密金刚工作原理

来源:互联网 发布:男士出差必备物品 知乎 编辑:程序博客网 时间:2024/04/28 22:12
         无敌加密金刚的目标是被其加密的文件不可破解,下面说说如何实现。
          先说一下真随机数的概念。一般认为真随机数是一组无任何规律不可重复产生的数字。其实此话有些重复了,可重复产生一定是依照某种规律产生的,所以无任何规律就可以定义了。一般认为只有源于自然的无规律运动才能产生真随机数,如放射性衰变的发生、电子设备的热噪音等的统计可以产生随机数,其实生活中到处是随机现象,只是有些变化缓慢产生的随机数没有实用价值。一般的随机现象,都是规律变化和随机变化的叠加,利用时需要将规律变化部分剔除。随机函数也可以产生看似无规律的数组,也可以是分布均匀的,但却不能产生真随机数,因为所产生的数组是周期变化的,我们知道了数组前几个数根据公式可以推测后面的数是什么。
         密码学意义上的真随机数组,不一定非用自然现象加探测硬件来实现,只要符合无任何规律和不可重复产生就可以了。一种用软件产生密码学意义上的真随机数组的方法是:利用多个性能优良运算方式不同的长周期随机函数,每个都用毫秒级以上精度的时间做随机种子,用它们的运算来产生随机数,并且运算步骤也是随机的变化的,加之运算时间和计算机状态都将影响到计算结果,使得结果是不能复现和毫无规律的。另一种是用“序列数交换法”来实现无任何规律和不可重复产生的随机数组(参见笔者的有关序列数交换法的文章)。
         密码和密钥:密钥是用来隐藏信息的数据。一般密钥是指直接和明文作用产生密文的数据。密码一般指用户输入的用于加密解密的数据。一般是程序根据用户密码生成密钥供加密解密使用,所以密码也可以说是原始密钥其衍生物是应用密钥。
         现在的加密方法一般可以分为流密码加密或分组密码加密,它们都是有缺陷的,理论上都是可以被破解,道理很简单不管文件多大都用很短的原始密钥加密势必有破绽。但有一种加密方法可以证明是不可破解的,这就是所谓“一次一密”加密方法,这种方法采用真随机数作为密钥,并且每个明文单元用一个密钥单元加密,原因很简单且看下式:
                                             明文 (运算) 密钥 = 密文
         因为密钥之间没有任何关系,从上式可见当只知道密文时,一个方程两个未知数,将无法求解。
         现在就可以应用了。程序生成或利用外界的真随机数组和被加密文件一一运算产生密文文件和密钥文件(真随机数组集合)。解密时给程序密文文件和密钥文件,运算生成明文文件。
         真随机数加密虽然不可破解,但使用起来有不方便的地方。因为一个明文字节需要一个密钥字节,所以密钥文件长度和文件的长度一样,你不可能记忆它,还要保护它的内容不被泄露和损坏。例如需要通过网络传送密件,不但要传送密文,还要传送密钥,需要解决的是如何保存和保护这些数据。
         为了能像一般加密软件那样操作简单,无敌加密金刚将密钥文件附在密文的后面。但是必须加密否则等于将秘密公开,加密方式可以有多种选择,例如加密密钥部分、加密密文部分、两者都加密、两者都加密使用相同的密码或使用不同的密码,提供多种方式供用户选择,将有利于提高保密性。但这些方式的加密强度是不同的,以两者都加密使用不同的密码为最高。因为现在密文部分和密钥部分都是乱码,所以对它们加密相对简单,使用长周期的随机函数即可有很好的效果,这里最好也有多种函数并在用时随机选取,如果应用时每次至少两个随机函数参与运算那就更好了,每个随机函数的初值都以不同的方式与用户密码关联,每增加一种可能用到的计算方式将使破解难度增加数倍。加密密码长度设置下限而不设上限,给破解者留下充分的想象空间。如果对加密过的密文或密钥进行破解将很困难,困难在于无法判断解密是否成功,因为解密成功了也是乱码,无奈之下只好盲目穷举,用了哪些随机函数不知道,阶段性解密成功是否不知道,密钥文件的使用起点也不知道(一般不会老实的从头顺序向下应用的),一个可能用到的长周期随机函数就可使穷举攻击面对天文数字的试验,更何况多个!更厉害的做法是随机函数的部分参数随机确定,破解者能从程序知道随机函数的基本计算构架却无法得到随机序列值,因为系数是不确定的。并且面对形形色色的文件种类,判断最终的结果是否正确也是个耽误时间的问题。
         无敌加密金刚采用多重防穷举设计。首先是输入密码的形式,采用计算机不易识别的图形字符组成校验码让用户输入,只有输入正确才能通过,并可设置私有密码让程序为你专用的同时扼制了穷举法实施,以上这些和文件密码一同输入,具有特色输入方式将使通用的穷举破解软件不能应用。有随机因素存在则使得任何穷举法无法使用。穷举破解是一种利用计算机和程序自身的计算能力和方式,列举所有可能出现的密码,用它们试解密文达到破解目的的方法。对付穷举破解的有效方法是不让其自动运行,不给它制造机会。除了输入形式,程序内部还对被解密文件进行检测,如果发现用户总对某个文件的解密感兴趣就要采取行动了,但要考虑到一般用户密码输入错误的问题。也可以在解密过程中根据某条件暂停执行要求用户根据显示辨别(计算机难以识别的)应答,不应答则无限期等待,应答正确继续运行,不正确退出运行。
         经过以上的处理,无敌加密金刚虽然使用“一次一密”的加密方法但使用起来和一般加密软件没有多少区别。只是密文的尺寸大了些并且是不能压缩的。因为它的目标是不可破解,所以运算复杂而且运算速度不高,比较适用于需要高保密的文件加密。
原创粉丝点击