回复: [演示软件]甜葡萄(软件)加密锁
只要把“甜葡萄”文件夹复制到您的微机上,就可以正常运行演示程序,最好另外建立一个任意名称的文件夹,把上述数据文件复制过去以备意外。
综上述,正确运行软件的关键在于生成的数据文件(bjs.dat),当然还依赖(js.dat)保存的分、时、日、月值。这两个数据文件对应于现代软件加密技术的“壳”,通常被小心翼翼地加以隐藏;现代一般的破解技术(通常也因其特点称为“脱壳”技术)也正是千方百计地要找到它,才好分析总结规律,设法取而代之;而“超级母狗”则根本无视这些隐藏的方法,只是截取并完全再现“软件狗”的全部信息。
演示模型旨在证明“甜葡萄加密锁”除能抵御现代一切破解手段外,还是唯一能有效地抵抗“超级母狗”长矛攻击的盾牌,演义一场全新的成语故事“新自相矛盾”。为此,不但把上述两个数据文件独立存在,而且提供连续获取读锁信息最简易的方法:您只要创建一个文本文件(pj.txt),每次运行时使用的这两个数据文件即补充到文本文件中,随时调阅文本文件,可以得到一个时期运作的全部读锁信息。
“每次运行使用完全不同于其它时间运行的传递信息”,是“甜葡萄加密锁”强大保密功能的基础。不要把它与彩虹天地公司广告中华而不实的“端口噪声”相提并论,实际上所谓的端口噪声未见比用友集团财务软件的“狗”更高明(本人与前者的总工就其广告产品进行过专题讨论、而对后者则更直接做出完全等效的替代品,取名“猎狗101”)。演示模型之所以简化加密强度的原因在于减轻破解者的劳动强度。对于加密强度的量化概念说明如下:
1.从数据文件(js.dat)仅含分、时、日、月值可以直接看出:至少还有秒值没有被利用;稍微注意信息传递过程可知:三组时间值中的月值仅最后一组被输入软件锁利用。
2.根据常识从“每次使用不同的传递信息”可以推论:每次运行都有脱密――再加密的过程,结合数据文件(js.dat)的变换规律可以得出结论:三组时间值至多可以两两组合使用。
3.鉴于脱密需再现加密相同的数值,可想而知:每次运行中前、后两组时间值组合(中间数组复用)的运算过程相同;实际可用加密因素的数量为两组时间值(不含月值)的互乘积,这是一个不大于20亿的小数目,从广义的密码学角度讨论,即使采用穷举搜索的办法,这样小的数目也嫌太小;但处于软件加密这一特殊领域,硬件保护的是全部加密算法,破解的方法有待另外探讨。
4.由于演示模型使用简化的算法并不准备形成正式的产品,尽管不可能被任何外在的方法所侦破,仍为显示其强大的加密强度而公开:硬件根据前苏联国家标准(NSSU)算法的格式(请参阅清华大学卢开澄教授所著《计算机密码学》(第二版))。书中结论指出64 BIT分组的NSSU算法32轮加密强度勉强与16轮DES算法相当,这里的明文即数据文件(js.dat)中的分、时、日值各自压缩为2字节(16 BIT),仅相当于32 BIT分组,且只进行16轮加密,所有的密码专家都会毫不犹豫告诉您:它不堪一击。
5.事实上有更简单更直接的办法验证演示模型的加密强度,那就是利用数据文件(ls.dat)。它并不是一堆乱码随意堆砌而成,是使用递增的时间因素以同样算法进行12轮加密结果的集成,为节约您的时间不妨直接公开。它的构成实在是再简单不过:顺序是1月1日0时0分到12月31日23时59分(无论大小月均按31日计);月日时分各自占用一字节的低位,高位空缺各自使用固定的常数补充;因通常计算结果为4字节,故分值间隔也为4(低2位常为0)。这样,相邻的分值、固定间隔的时、日乃至于月,各自只有一字节的不同;彼此仅1 BIT不同的规律也很容易找到,有了这些条件应该不难推出运算全过程的一切细节。
与一般人的想法不同,这里非但不去刻意隐藏读、写软件锁的相关操作使演示模型无人能解,反而以生成文件的形式显示这些内容,并公开一些本来根本无法轻易找到的因素。如果上面的公开仍嫌不够,将随时准备回答为破解所必需的一切问题。真诚地希望有人能在付出艰辛的劳动后最终得到圆满的答案,并对演示模型加密强度正确的评价,从而决定正式产品所需的加密强度,而不希望听到半途而废者一句简单的“此题无解”。