一种序列号防盗版的方法

 

问题提出:

    软件的防盗版,最常见的手段是使用“序列号”。
    但是,很多盗版软件,随附“序列”号。
    在相当多的情况下,是无法防止盗版软件安装使用的——除非在使用中,软件“开后门”进行远程“传话”来确认“当时运行软件”的一个实例,是否为“合法”使用者。
    而这在实际操作中,也会涉及一些不确定性和法律定位问题。

问题的一个解决思路:

    说明:该方法,是“可实时取消所有以往授权”的,随时需要“最新授权”的方式。

    方法的核心是:采用规则验证,而非简单的字符串验证,在远程用户资料数据库验证(远程用户资料数据库验证,是很多软件现在采用的方法)

方法:

    分以下几个步骤或角度来解决。

    一、验证方法:规则验证

        如,规定第三位数字,为第一位数字加第二位数字减5;第5位数字为第4位数字加第一位数字;等等,需要一定的位数。
        如此一来,授权检验代码,是一样的,而可以检查的对象,是可以“自动生成”和“标准化检验”的。

    二、验证方法的“复杂化”

        上面的方法,稍有数学经验的人,凭肉眼,经过几个“合法序码”的人工观察,就可以发现其中的规律。
        那么,通过另一组授权数字来做“控制”,就可以,很有效地增加破密难度。
        比如,下面一组数字,1352467的含义是:为后面七个字母,按这七位数的顺序“重取排序”,才是“初始密文”。如1352467ABCDEFG,真实的“原始密文”为A(原第1位)C(原第3位)E(原第5位,后以此类推)BDFG,即ACEBDFG。
        如果,数字与字母,再改进为“交叉配置”,将使破密变得更难。
        还有更复杂的方法:如规定一个数字,是找到这个数字后,再以此为“起点”,循环式,找到“后续数字”,做为“位置控制串”,再以一定规则规定“字母取点的起始点”,然后,以循环方式,取出后续字母,将使获得“初始密文”,变得更复杂。
        还可以,使这个方法,为得再复杂一点。

    三、这个方法的本质

        这个方法,是一种改良的德国“恩尼格”加密法。

        这种方法,是可以通过海量密文,通过方程式计算,经过大量计算,可以直接得出“加密轮表”的。

        当年这套密码被破译的核心有两条:
        (一)就是德国发报员偷懒,没有按规定,每发一份电报,就要改变密钥轮的初始位置。这就使盟军破译人员,大大简化工作量。

        (二)每回发报,首先是明文发送密钥轮的基本信息,这也为破译人员,分类简化劳动,提供了极大的方便。

    四、这个方法的可靠性分析

        二战中,战场中有大量电文,所以,“破译”密码的一个基本要件——“海量报文”,供破译演算的“原材料”,足够多。

        但用在序列码上,上述方法,如果经过“更精细”的规划设计,并设计“几组无关运算”,同时,加进一点“组间有损验算码”(有损就是避免精确数学计算的“直接解算”),就为得可靠了。

        原因如下:

        (一)做为一个产品,有二十位序列码,是常见的。虽然短,但,由于产品售出数,并不是“海量”。相对于“20位字母数字”所能产生的组合,就显得“非常少”了。换句话说,如果有人想破译,做“序码生成机”,可供其“猜测”的“样本量”太少,不足以推算以破密。

        (二)如果“经过二次加密”的一些控制信息,也是“受控可换”的,将使破密变得更复杂。

        这时,就可以利用网络了。

        比如,在网络上,一个固定URL上,提供一组数字,这组数字,是经常变化的。

        而所有运行软件,在需要安装注册时,运态在线申请合法的序列号——这就彻底解决了“固定序列号”无法防盗版软件安装的问题。

        只要一换“控制信息”,原先所有序列号,全部失效。

        尤其是,这组“控制信息”与序码本身无关时。

        举例:

            URL上发布的“控制信息”含义如下:X(第1组的运算代号,1加2减3乘4除)X(第2组的运算代号,1乘2加3除4加)X(每组运算结果加偏值)X(换位取数起点)X(供取字母起点)X(取数循环跨越数(应为质数,最低要数为奇数))X(取字母循环跨越数(应为质数,最低要数为奇数))。
            如此一来,只要不定期更换控制码,同样的规则,就可以验证“几乎无穷多”的变化,同时,可以随时废止原来有效的所有序列码。

            如果,再加强,采用二重,或三重加密,还可以增加复杂性。

            但是,在“密文长度有限”(如20位)时,加密层数增加时,并不能“迅速增加破密难度”,因为在数学上,这表现为密钥链的长度简单增加而已。如果有“设计良好”的“数学方法”,加密重数的增加,就不能增加“破密难度”了。

        (三)做任何事,都要有“一定的功利性”

        在战争时期,破密有价值,极大。并且,在战时,多大腕的“科学家”,也不会“高薪”到什么程度,甚至,只是管饭,不用上前线,就可以了——所以,就等效于,“成本”相对较低。

        而在时下和平时期,破一个“新的”只是“工作量”的事,而方法上,都是数学可以解决的“破密问题”,就有“值不值”的问题了。花上一万块成本,去破译,最多只卖几百块的产品的密钥系统,是不值的。

        所以从“功利性”上来说,做“破密”,也是“不值的”——也就是说,没人愿干这事——也干不起,也不值得干。

    五、更进一步的说法

    只要“只要合理构架”具有“基本复杂度”的“验算组规则”,再配合上“网络动态提供”“控制码”,做一个通用的序码验证方法,实现“一套代码”的“海量可靠序列码”,并可随时废止原序列码,所有合法序码均需“有时效性”的申请使用,是可以“极低成本”防止盗版软件的“安装可行性”的。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值