CN1064558A - 计算机软件的函数加密方法及其装置 - Google Patents
计算机软件的函数加密方法及其装置 Download PDFInfo
- Publication number
- CN1064558A CN1064558A CN 92101684 CN92101684A CN1064558A CN 1064558 A CN1064558 A CN 1064558A CN 92101684 CN92101684 CN 92101684 CN 92101684 A CN92101684 A CN 92101684A CN 1064558 A CN1064558 A CN 1064558A
- Authority
- CN
- China
- Prior art keywords
- software
- encryption device
- software function
- function encryption
- chip microcomputer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及计算机软件的加密方法及其装置,特
别涉及计算机软件的函数加密方法及其装置;本发明
的装置由具有程序加密功能的单片机、单片机外围电
路、接口电路、印刷板等及有关软件构成,由于软件加
密函数装置保证了软件不可被解密,因此不必考虑反
跟踪、反解密、密文变换等问题,从而使软件运行速度
不受影响,使其加密成本低、周期短,软件易调试、维
护。
Description
本发明涉及计算机软件的加密方法及其装置,特别涉及计算机软件的函数加密方法及其装置。
对计算机软件进行加密处理,以防止非法拷贝,是保护软件版权的有效办法。目前,软件加密的基本方法有如下几种:
磁盘加密,在磁盘上制作一些特殊标记,如特殊磁道、激光孔,这些标记无法拷贝或很难拷贝;再在软件中加一段程序判读这些标记。由于非法拷贝的磁道没有标记,软件判读不成功,就不能正常进行,从而实现加密的目的。这种方法易被解密。解密者并不拷贝标记,而是设法找到判读标记的那段程序,加以修改使之失去作用;
密码加密,典型的装置是加密盒。盒内线路保存一个密码,盒子不能拆开,拆开即毁坏密码。软件中加一段程序判读密码。这样尽管软件可以任意拷贝,如果没有含有同样密码的加密盒,软件就不能正常运行。这种方法也可被解密。解密者可以采用分析程序或监视硬件信号等方法获得密码,从而可以复制一个加密盒或用一个计算机来模拟加密盒的功能。也可以修改判读密码的那段程序;
隐蔽代码,把一段程序代码隐蔽在硬件中,需要时调入主机运行。这种方法同密码加密类似,相当于隐蔽了位数更多的密码。这种方法同样可被解密。一种方法是通过分析加密装置的接口特性,通过对接口的操作,读出隐蔽的信息,从而复制一个类似的装置或用计算机仿真;另一种办法是待软件读入隐蔽代码后截获它,修改软件使之不读加密装置而直接用此段代码替换。
以上三种方法都可被解密,因此加密者必须采用种种办法来反解密。软件上可以采用反跟踪、密文变换等技术;硬件上也可采取一些措施。但是,由于软件的正常功能最终都由主机完成,软件代码最终都要进入主机存储器,从而总有被截获解密的可能,因为无论采取什么样的反解密技术,都会有相应的解密手段;由于解密者手段越来越高,反解密措施也被迫变得越来越复杂,由此使加密成本增高、周期长、软件运行速度受到影响,加密后软件的结构同加密前差异很大,运行过程复杂,因此调试、维护困难,售后服务麻烦。
本发明的目的是改革现有计算机软件的加密方法及其装置,提供一种安全可靠不可被解密、特别能保证加密装置设计者也解不开密、加密成本低、周期短、软件运行速度不受影响、加密后软件结构同加密前差异小、调试、维护、售后服务都方便的计算机软件的函数加密方法及其装置。
本发明的方法是按以下技术方案实现的:按不加密的情况将被加密的软件调试好,然后把该软件正常功能的一部分让软件函数加密装置完成,软件函数加密装置内含处理器,完成这些功能的代码是软件函数加密装置处理器的程序,在软件函数加密装置内运行,不进入主机;软件函数加密装置处理器的程序不可被读出和被跟踪分析,为此处理器可以采用具有程序加密功能的单片机,或者在封装上采用不可拆卸式封装等技术;只把影响软件正常运行的某一关键或几个关键的一部分让软件函数加密装置完成,这些某一关键或几个关键的一部分只做数据处理,不访问硬件资源,主机给软件函数加密装置传送一批数据,软件函数加密装置经过处理后,把处理结果送回主机,软件函数加密装置即是一个硬件函数,接收一组输入数据,产生一组输出数据;软件函数加密装置硬件函数的输入数据模式(数据组合及顺序)不是固定的,同处理的对象有关,每次运行均不同,解密者试图通过输入输出的关系,分析出软件函数加密装置硬件函数是不可能的;软件函数加密装置可含有很多子功能,并可被多次调用,每次执行一个子功能,这些子功能可用于不同的模块或不同的软件;软件函数加密装置内可定义内部全局变量,从而使各子功能之间存在相关,并且各子功能的输出数据不仅同此次调用的输入数据有关,还同以前的输入数据有关。软件函数加密装置硬件函数可以是被加密软件中的一组函数或运算,也可以人为地设计加密函数。
计算机软件函数加密装置是这样制成的:备好具有程序加密功能的单片机、单片机外围电路、接口电路、印制板,把单片机,单片机外围电路、接口电路安装在印制板上,单片机外围电路通过印制板布线与单片机相连接,单片机通过印制板布线与接口电路相连接,接口电路与主机相连接,单片机要写入加密函数及单片机主程序和通信模块,即构成软件函数加密装置。软件函数加密装置和被加密软件相配合完成该软件的正常功能,没有软件函数加密装置的配合,被加密软件不能运行;单片机具有程序加密功能,其程序一旦被写入就不可被读出和被跟踪分析;一个软件函数加密装置内可含有一个单片机或多个单片机;软件函数加密装置的接口电路可以是串行接口或并行接口,接口电路通过电缆与主机相应接口相连接;软件函数加密装置的接口电路也可以是总线接口,接口电路同主机的总线相连接;当软件函数加密装置的接口电路用串行接口时,可采用RS232C标准串行接口;当软件函数加密装置内有多个单片机时,这些单片机可并联连接到接口电路,每个单片机都有一个唯一的位号,位号不写死在程序里,而是通过布线把不同的位号接在各个单片机的输入口上,由单片机读入后确定;软件函数加密装置插入主机的I/O扩展槽,从主机的I/O扩展槽向单片机、单片机外围电路、接口电路提供电源;软件函数加密装置也可以外接电源,向单片机、单片机外围电路、接口电路供电。
一个单片机可加密一个软件,当使用多个单片机构成的软件函数加密装置时,可加密多个软件,一次只有一个单片机同主机交换数据,各单片机相互之间不受干扰。软件函数加密装置可简称加密卡。
本发明改革了计算机软件的加密方法及其装置,由于软件函数加密装置输入数据的模式是不固定的,因此解密者无法构造一个输入输出映射表,更无法由输入输出数据的关系分析出软件函数加密装置函数的功能,也无法模拟它;另一方面软件函数加密装置处理器的程序不可被读出和被跟踪分析,从而可靠地保证了加密软件不可被解密;软件函数加密装置设计者也解不开密,因为他们不知道加密者设计的加密函数,也无法分析或读出软件函数加密装置内的程序;由于软件函数加密装置保证了软件不可被解密,因此不必考虑反跟踪、反解密、密文变换等技术,从而使软件运行速度不受影响,加密成本低、周期短,软件易于调试、维护,售后服务简单。采用标准接口,可适用于配有这种接口的各种计算机,且一个软件函数加密装置可对多个软件进行加密。
下面将结合附图和实施例对本发明作进一步详细说明:
图1为本发明结构框图
图2为本发明电路原理图
图3为利用本发明对软件进行加密方框图
在图1中,1为软件函数加密装置(简称加密卡)、2为单片机外围电路、3为单片机、4为接口电路、5为主机接口、6为主机、7为电缆、8为印制板布线、9为印制板
参照图1、图2和图3,本发明的方法是按以下技术方案实现的:按不加密的情况将被加密的软件调试好,然后把该软件正常功能的一部分让软件函数加密装置1完成,软件函数加密装置1内含有具有程序加密功能的单片机3,完成这些功能的代码是单片机3的程序,在软件函数加密装置1内运行,不进入主机6;单片机3的程序不可被读出和被跟踪分析;只把影响软件正常运行的某一关键或几个关键的一部分让软件函数加密装置1完成,这些某一关键或几个关键的一部分只做数据处理,不访问硬件资源,主机6给软件函数加密装置1传送一批数据,软件函数加密装置1经过处理后,把处理结果送回主机6,软件函数加密装置1即是一个硬件函数,接收一组输入数据,产生一组输出数据;软件函数加密装置1硬件函数的输入数据模式(数据组合及顺序)不是固定的,同处理的对象有关,每次运行均不同,解密者试图通过输入输出的关系,分析出软件函数加密装置1硬件函数是不可能的;软件函数加密装置1可含有很多子功能,并可被多次调用,每次执行一个子功能,这些子功能可用于不同的模块或不同的软件;软件函数加密装置1内可定义内部全局变量,从而使各子功能之间存在相关,并且各子功能的输出数据不仅同此次调用的输入数据有关,还同以前的输入数据有关。软件函数加密装置1硬件函数可以是被加密软件中的一组函数或运算,也可以人为地设计加密函数。
计算机软件函数加密装置是这样制成的:备好具有程序加密功能的单片机3、单片机外围电路2、接口电路4、印制板9,把单片机3,单片机外围电路2、接口电路4安装在印制板9上,单片机外围电路2通过印制板布线8与单片机3相连接,单片机3通过印制板布线8与接口电路4相连接,接口电路4通过电缆7与主机接口5相连接,单片机3要写入加密函数及单片机3主程序和通信模块,即构成软件函数加密装置1。软件函数加密装置1和被加密软件相配合完成该软件的正常功能,没有软件函数加密装置1的配合,被加密软件不能运行;单片机3具有程序加密功能,其程序一旦被写入就不可被读出和被跟踪分析;一个软件函数加密装置1内可含有一个或多个单片机3;软件函数加密装置的接口电路4采用RS232C标准串行接口;当软件函数加密装置1内有多个单片机3时,这些单片机3并联连接到接口电路4,每个单片机3都有一个唯一的位号,位号不写死在程序里,而是通过布线把不同的位号接在各个单片机3的输入口上,由单片机3读入后确定;软件函数加密装置1插入主机6的I/O扩展槽,从主机6的I/O扩展槽向单片机3、单片机外围电路2、接口电路4提供电源;
一个单片机3可加密一个软件,当使用多个单片机3构成的软件函数加密装置1时,可加密多个软件,一次只有一个单片机3同主机6交换数据,各单片机3相互之间不受干扰。软件函数加密装置1可简称加密卡。
参照图3,利用本发明,软件加密是这样完成的,软件开发者按不加密的情况将软件调试好,设计加密函数,编写软件函数模拟加密函数并调试好软件,然后用专用的高级语言写加密函数,用此语言的编译器编译加密函数,利用此语言的连接器把加密函数同单片机3主程序及通信模块连接在一起(也可直接用单片机3的汇编语言编写加密函数),把最后形成的代码写入单片机3,把单片机3安装到软件函数加密装置1;通过连接器把主机6通迅模块和被加密软件连接在一起,形成完整的被加密软件,被加密软件只有在软件函数加密装置1的配合下才能正常运行。另外,被加密软件安装时需要运行接口配置程序配置RS232C的有关信息及被加密软件对应单片机3的位号。
采用本发明,给用户的软件无需做其他手脚,用户可以随意拷贝备份。用户安装的系统一旦被破坏,用户可自行安装,不必由销售者去安装了。由此可以节省许多费用,另外也不再担心被人解密了。使用本发明的方法和装置,许多软件工作者多年研制的成果可以不再束之高楼,可以向社会推广了,这将极大地促进我国计算机软件行业的发展。本发明生产过程简单,成本低、市场很大,一年若以销售千只计,年可创利几十万圆人民币。
Claims (13)
1、一种计算机软件的函数加密方法,其特征是按不加密的情况将被加密的软件调试好,然后把该软件正常功能的一部分让软件函数加密装置完成,软件函数加密装置内含处理器,完成这些功能的代码是软件函数加密装置处理器的程序,在软件函数加密装置内运行,不进入主机;软件函数加密装置处理器的程序不可被读出和被跟踪分析;只把影响软件正常运行的某一关键或几个关键的一部分让软件函数加密装置完成,这些某一关键或几个关键的一部分只做数据处理,不访问硬件资源,主机给软件函数加密装置传送一批数据,软件函数加密装置经过处理后,把处理结果送回主机,软件函数加密装置即是一个硬件函数,接收一组输入数据,产生一组输出数据;软件函数加密装置硬件函数输入数据模式不是固定的,同处理的对象有关,每次运行均不同。
2、如权利要求1所述的计算机软件的函数加密方法,其特征是为了保证软件函数加密装置处理器的程序不可被读出和被跟踪分析,处理器可以采用具有程序加密功能的单片机。
3、如权利要求1所述的计算机软件的函数加密方法,其特征是为了保证软件函数加密装置处理器的程序不可被读出和被跟踪分析,在封装上可采用不可拆卸式封装技术。
4、如权利要求1所述的计算机软件的函数加密方法,其特征是所述的软件函数加密装置硬件函数可以含有很多子功能,并可被多次调用,每次执行一个子功能,这些子功能可用于不同模块或不同的软件。
5、如权利要求1或4所述的计算机软件的函数加密方法,其特征是软件函数加密装置内可定义内部全局变量,使各子功能之间存在相关,并且各子功能的输出数据不仅同此次调用的输入数据有关,还同以前的输入数据有关。
6、一种计算机软件函数加密装置,其特征是所述的软件函数加密装置是在印制板上安装具有程序加密功能的单片机、单片机外围电路、接口电路;单片机外围电路通过印制板布线与单片机相连接,单片机通过印制板布线与接口电路相连接,接口电路与主机相连接,单片机要写入加密函数、单片机主程序和通信模块,即构成软件函数加密装置。
7、如权利要求6所述的软件函数加密装置,其特征是所述的具有程序加密功能的单片机可以是一个单片机或多个单片机。
8、如权利要求6所述的软件函数加密装置,其特征是所述的接口电路可以是串行接口或并行接口,接口电路通过电缆与主机相应接口相连接。
9、如权利要求6所述的软件函数加密装置,其特征是所述的接口电路可以是总线接口,接口电路同主机的总线相连接。
10、如权利要求8所述的软件函数加密装置,其特征是所述的串行接口是RS232C标准串行接口。
11、如权利要求6或7所述的软件函数加密装置,其特征是所述的软件函数加密装置的多个单片机可并联连接到接口电路,每个单片机都有一个唯一的位号,位号不写死在程序里,而是通过布线把不同的位号接在各个单片机的输入口上,由单片机读入后确定。
12、如权利要求6所述的软件函数加密装置,其特征是可以把软件函数加密装置插入主机的I/O扩展槽,从主机的I/O扩展槽向单片机、单片机外围电路、接口电路提供电源。
13、如权利要求6所述的软件函数加密装置,其特征是软件函数加密装置可以外接电源,向单片机、单片机外围电路、接口电路供电。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 92101684 CN1064558A (zh) | 1992-03-23 | 1992-03-23 | 计算机软件的函数加密方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 92101684 CN1064558A (zh) | 1992-03-23 | 1992-03-23 | 计算机软件的函数加密方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1064558A true CN1064558A (zh) | 1992-09-16 |
Family
ID=4939244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 92101684 Withdrawn CN1064558A (zh) | 1992-03-23 | 1992-03-23 | 计算机软件的函数加密方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1064558A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100346255C (zh) * | 2005-10-19 | 2007-10-31 | 北京飞天诚信科技有限公司 | 提取部分代码至加密装置中的软件版权保护方法 |
CN100428262C (zh) * | 2006-09-22 | 2008-10-22 | 中山大学 | 一种基于改进的一次一密乱码本的软件保护方法 |
CN100446019C (zh) * | 2006-07-19 | 2008-12-24 | 北京飞天诚信科技有限公司 | 一种软件版权保护方法 |
CN112527271A (zh) * | 2020-12-24 | 2021-03-19 | 广东广宇科技发展有限公司 | 一种软件开发实现方法和软件开发引擎 |
-
1992
- 1992-03-23 CN CN 92101684 patent/CN1064558A/zh not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100346255C (zh) * | 2005-10-19 | 2007-10-31 | 北京飞天诚信科技有限公司 | 提取部分代码至加密装置中的软件版权保护方法 |
CN100446019C (zh) * | 2006-07-19 | 2008-12-24 | 北京飞天诚信科技有限公司 | 一种软件版权保护方法 |
CN100428262C (zh) * | 2006-09-22 | 2008-10-22 | 中山大学 | 一种基于改进的一次一密乱码本的软件保护方法 |
CN112527271A (zh) * | 2020-12-24 | 2021-03-19 | 广东广宇科技发展有限公司 | 一种软件开发实现方法和软件开发引擎 |
CN112527271B (zh) * | 2020-12-24 | 2024-03-29 | 广东广宇科技发展有限公司 | 一种软件开发实现方法和软件开发引擎 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022001403A1 (zh) | 一种核级安全显示装置及其组态-解析系统 | |
Hofmann et al. | Distributed performance monitoring: methods, tools, and applications | |
CN100514297C (zh) | 为与虚拟机监控程序相关联的定时器提供支持 | |
CN102081719B (zh) | 基于动态污染传播的软件安全测试系统及方法 | |
US6536029B1 (en) | Programmable logic controller method, system and apparatus | |
US9361170B2 (en) | Method for checking data consistency in a system on chip | |
Wulf et al. | Overview of the Hydra operating system development | |
CN1149342A (zh) | 受保护的存储器系统和方法 | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
CN101853200B (zh) | 一种高效动态软件漏洞挖掘方法 | |
US7000079B2 (en) | Method and apparatus for verification of coherence for shared cache components in a system verification environment | |
CN102479123A (zh) | 卡片操作系统的测试系统及测试方法 | |
Lee et al. | Efficient dynamic information flow tracking on a processor with core debug interface | |
CN1064558A (zh) | 计算机软件的函数加密方法及其装置 | |
CN114116400A (zh) | 基于日志打印的应用异常处理方法、装置、设备及介质 | |
CN202110552U (zh) | 一种基于多体交叉存储技术的软件保护装置 | |
CN1659496B (zh) | 与令牌安全通信的方法和装置 | |
CN102508697A (zh) | 一种Java实现8位嵌入式CPU仿真运行环境的方法 | |
Hofmann | The distributed hardware monitor ZM4 and its interface to MEMSY | |
Klar | Event-driven monitoring of parallel systems | |
CN100454256C (zh) | 一种提高自定义程序运行速度的方法和装置 | |
CN113609475A (zh) | 一种高效软件开发管理系统 | |
Wakabayashi et al. | ISIS: Multiprocessor Simulator Library. | |
Long et al. | PoC Self-Generation Technology Based on Vulnerability Verification Program | |
CN102646068B (zh) | 一种软件探测器的软件探测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C03 | Withdrawal of patent application (patent law 1993) | ||
WW01 | Invention patent application withdrawn after publication |