• 【miscellaneous】软件加密方法



    原文:http://www.jiamisoft.com/blog/3471-ruanjianjiamifangfa.html


    软件行业的加密是软件厂商为了保护软件开发的利润而采取的一种软件保护方式。当前,软件加密方法多种多样,从实现形式上经历了两个阶段:不依赖硬件的加密(软加密)方案和依赖特定硬件的加密(硬加密)方案。

    软件加密方法

    一、不依赖硬件的加密方法

    不依赖硬件的加密方法是一种低成本的加密方式。它的特点是不需要有辅助的硬件存在,直接在软件中设立密码。相关的方法有序列号法、密码表加密法、许可证法。

    1、序列号法加密法

    序列号法是用户在购买正版软件的时候供应商提供给他们正确的密码,从而使他们顺利安装和使用购买的软件的方法。但是,由于电脑软件的易复制性,盗版软件只需复制软件及安装序列号,一样能够完成安装并顺利运行,在软件功能上没有任何缺损。于是,这种类型的“钥匙”其实成了一种象征性的摆设,没有什么加密强度可言。

    2、密码表加密法

    密码表加密法是程序在运行时提出一些提示问题,用户需要按提示问题回答,如果回答错误则程序停止运行。正常情况下,只有输入正确的密码,软件才认为是合法使用者。这种加密方法运行简单,使用广泛。但是,因为密码表的特征字串很容易被复制,盗版者可以把整个密码表输入到计算机中存成一个文件,同软件的盗版一同公布出来,所以很容易被盗版者利用。

    3、许可证加密法

    从某种角度上说,这种方式是序列号加密的一个变种。用户从网上下载的或购买的软件并不能直接使用,软件在安装时或运行时会对计算机进行一番检测,并根据检测结果生成一个计算机的特定指纹,这个指纹可以是一个小文件,也可以是一串谁也看不懂的数,需要把这个指纹数据通过Internet、E-mail、电话、传真等方式发送到开发商那里,开发商再根据这个指纹给用户一个注册码或注册文件,用户得到这个注册码或注册文件后,按软件要求的步骤在计算机上完成注册后方能使用。

    这个方法的买卖也是完全通过网络来进行的,而且用户购买的软件被限制了,只能在自己的计算机上运行,换到其他的计算机上,这个注册码或注册文件可能不再有效。同时用户更换某些硬件设备也可能造成注册码的失效,而且用户得到软件后在完成注册工作前会有一段时间无法使用。对于软件开发商来说服务与管理的工作量无疑也是非常巨大的。将来PIII处理器内部有了特定的序列号,将会减少这种加密方法的硬件依赖性,但估计普及起来还有很长的一段时间。

    二、依赖特定硬件的加密

    硬加密的原理是将加密信息固化在某个硬件电路中,然后将它作为一个软件的附加设备销售给用户。当运行该软件的时候,将该固化的电路设备接到计算机的输出端口,软件根据是否检测到对应的“密钥”来决定是否运行该软件或者屏蔽某些功能。在这一类加密保护中有软盘加密、加密卡、软件锁等。

    1、软盘加密

    钥匙盘的方式是最常见的软盘加密方式。所谓钥匙盘方式就是通过BIOS的INT13中断对软盘格式化一些特殊的磁道,有的还在特殊磁道里写入一定信息,软件在运行时要校验这些信息。这种软盘就好象一把“钥匙”一样,所以被人习惯称为钥匙盘。如KV3000等杀毒盘和早期的计算机等级考试安装盘就采用了这种加密方式。它们的主要特点是在软磁盘的特殊位置做标记,在软件运行中计算机要读取这些特殊标记,以验证软件的合法性。由于记录这种特殊标记的位置不能被平常的拷贝命令或拷贝软件所读取,所以,钥匙盘类的软件不能被轻易复制,这样,加在软件中的“锁”就变得比较安全有效了。

    2、加密狗

    加密狗是插在计算机并行口上的软硬件结合的软件加密产品。加密狗一般都有几十或几百字节的非易失性存储空间可供读写,有的内部还增添了一个单片机。软件运行时通过向并行口写入一定数据,判断从并行口返回密码数据正确与否来检查加密狗是否存在。加密狗包括加密代码程序和“密钥”(亦称加密盒)两部分。加密代码程序检查“密钥”是否存在,是否正确,在无误的情况下,去执行正常功能的应用程序。“密钥”中存放了“密码”,用硬件电路实现加密。

    3、采用BIOS序列号

    随着技术的高速发展,获取CPU信息和硬盘信息的加密方式越来越不适用。在计算机的升级之中,主板是面临淘汰的可能性最小的硬件,因此,主板序列号将作为主板有唯一的标志,被运用到软件的加密中。主板序列号其实就是BIOS序列号,因为每台计算机的主板都有唯一的标志———BIOS序列号,所以完全可以将这个序列号作为软件的认证信息。

    三、各种加密方法的比较

    1、依赖硬件的加密与不依赖硬件的加密的比较

    依赖特定硬件的加密软件不容易被复制,因此,依赖特定硬件的加密比不依赖特定硬件的加密可靠。

    2、“硬件指纹”与“软件指纹”的比较

    “软件指纹”是指在传统的磁盘加密方法中,以软件的方式在磁盘的磁道上产生特殊的格式作为指纹,因此,“软件指纹”的产生受到磁盘机的转速、兼容性等不稳定因素的影响较大。另外,磁盘是一种容易损坏的介质,必须细心地保存指纹盘。“硬件指纹”是指指纹以硬件的形式存在,具有很高的可靠性。

    3、加密狗与磁盘的比较

    采用加密狗加密软件,由于指纹和软件是分离的,可以对软件进行备份,以防止原盘损坏。而磁盘加密方法把指纹放在磁盘上,不能备份,如果原盘损坏,软件就不能继续使用。

    采用加密狗加密时,软件以不加密的形式存放,可以大批地快速复制,而采用磁盘加密方法,必须在每张盘上逐个制作指纹,而且指纹盘的质量难以保证,所以,加密狗加密法比磁盘加密法可靠。

    无论是不依赖硬件的加密法还是依赖硬件的加密法,都是为了防止软件盗版而采取的一种主动的自我保护行为。加密技术的发展,也集中体现了计算机软硬件技术的前沿水平。发展加密技术,不仅仅是保护软件不被盗版,更重要的是培育一个劳而有获的健康的软件市场。

    小知识之软件加密

    软件加密就是用户在发送信息前,先调用信息安全模块对信息进行加密,然后发送,到达接收方后,由用户使用相应的解密软件进行解密并还原。采用软件加密方式有以下优点:已经存在标准的安全API(Application Programming Interface,应用程序编程接口)产品、实现方便、兼容性好。

  • 相关阅读:
    记录软件工程课程项目开发时遇到的各种小问题(django)
    用python实现逻辑回归
    利用KD树进行异常检测
    PyQt4入门学习笔记(五)
    PyQt4入门学习笔记(四)
    import matplolib 时出现"This probably means that tk wasn't installed properly."的解决方法
    IDEA上安装和使用checkstyle,findbugs,visualVM,PMD插件
    pycharm连接mysql数据库
    基于trie树做一个ac自动机
    用python实现最长公共子序列算法(找到所有最长公共子串)
  • 原文地址:https://www.cnblogs.com/huty/p/8517656.html
Copyright © 2020-2023  润新知