1、2023-1-18计算机软件安全技术1计算机软件安全技术计算机软件安全技术计算机软件安全技术1本章学习目标本章学习目标(1)掌握计算机软件安全的基本概念、内容和软件安)掌握计算机软件安全的基本概念、内容和软件安全保护的指导思想。全保护的指导思想。(2)了解一般采用哪些技术措施来保证计算机软件的)了解一般采用哪些技术措施来保证计算机软件的安全。安全。(3)掌握可执行文件的加密方式和加密原理;软件运)掌握可执行文件的加密方式和加密原理;软件运行中的反跟踪技术;常用的防止非法复制软件的技术;行中的反跟踪技术;常用的防止非法复制软件的技术;能够编制具有反跟踪功能的加密盘。能够编制具有反跟踪功能的加密盘
2、。(4)了解保证软件质量的安全体系。)了解保证软件质量的安全体系。返回本章首页返回本章首页计算机软件安全技术13.1计算机软件安全技术概述计算机软件安全技术概述1计算机软件安全的定义计算机软件安全的定义2计算机软件安全的内容计算机软件安全的内容3计算机软件安全的技术措施计算机软件安全的技术措施4软件的本质及特征软件的本质及特征5软件安全保护的指导思想软件安全保护的指导思想返回本章首页返回本章首页计算机软件安全技术11计算机软件安全的定义计算机软件安全的定义 软件的安全就是为计算机软件系统建立和软件的安全就是为计算机软件系统建立和采取的技术和管理的安全保护,保护计算机软采取的技术和管理的安全保护
3、,保护计算机软件、数据不因偶然或恶意的原因而遭破坏、更件、数据不因偶然或恶意的原因而遭破坏、更改、显露、盗版、非法复制,保证软件系统能改、显露、盗版、非法复制,保证软件系统能正常连续的运行。正常连续的运行。计算机软件安全技术12计算机软件安全的内容计算机软件安全的内容(1)软件的自身安全)软件的自身安全(2)软件的存储安全)软件的存储安全(3)软件的通信安全)软件的通信安全(4)软件的使用安全)软件的使用安全(5)软件的运行安全)软件的运行安全 计算机软件安全技术13计算机软件安全的技术措施计算机软件安全的技术措施必须采取两个方面的措施:必须采取两个方面的措施:一是非技术性措施,如制定有关法律
4、、法规,一是非技术性措施,如制定有关法律、法规,加强各方面的管理。加强各方面的管理。二是技术性措施,如软件安全的各种防拷贝加二是技术性措施,如软件安全的各种防拷贝加密技术、防静态分析、防动态跟踪技术等。密技术、防静态分析、防动态跟踪技术等。计算机软件安全技术14软件的本质及特征软件的本质及特征1)软件是用户使用计算机的工具)软件是用户使用计算机的工具 2)软件是一种知识产品)软件是一种知识产品 3)软件是人类社会的财富)软件是人类社会的财富 4)软件可以存储和移植)软件可以存储和移植 5)软件是具有巨大威慑力量的武器)软件是具有巨大威慑力量的武器 6)软件具有寄生性)软件具有寄生性 计算机软件
5、安全技术15软件安全保护的指导思想软件安全保护的指导思想 软件安全保护的指导思想是采用加密、反软件安全保护的指导思想是采用加密、反跟踪、防非法复制等技术。在软件系统上或原跟踪、防非法复制等技术。在软件系统上或原盘上产生一种信息,这种信息既是软件系统中盘上产生一种信息,这种信息既是软件系统中各可执行文件在运行中必须引用的,又是各种各可执行文件在运行中必须引用的,又是各种文件复制命令或软盘复制软件所无法正确复制、文件复制命令或软盘复制软件所无法正确复制、无法正确安装或无法正确运行的。无法正确安装或无法正确运行的。返回本节返回本节计算机软件安全技术13.2文件加密技术文件加密技术3.2.1数据文件加
6、密原理数据文件加密原理3.2.2可执行文件的加密方式可执行文件的加密方式返回本章首页返回本章首页计算机软件安全技术13.2.1数据文件加密原理数据文件加密原理 文本文件和可执行文件都是以二进制数的文本文件和可执行文件都是以二进制数的形式以字节为单位存放在磁盘上,所以可把它形式以字节为单位存放在磁盘上,所以可把它们一律视为数据文件来进行加密解密操作,但们一律视为数据文件来进行加密解密操作,但可执行文件加密后不能运行,但可有效地保护可执行文件加密后不能运行,但可有效地保护源程序和数据库文件中的信息,使非法用户不源程序和数据库文件中的信息,使非法用户不能从中得到有用信息。能从中得到有用信息。为了实现
7、数据文件的加密,一般采用加密为了实现数据文件的加密,一般采用加密软件或用户自己编写集成化的加密软件,实现软件或用户自己编写集成化的加密软件,实现数据文件的加、解密操作。数据文件的加、解密操作。返回本节返回本节计算机软件安全技术13.2.2可执行文件的加密方式可执行文件的加密方式1可执行文件的结构及运行可执行文件的结构及运行DOS环境下可执行文件有两种结构:环境下可执行文件有两种结构:一种扩展名为一种扩展名为.COM,它无文件头,可直接装,它无文件头,可直接装入内存运行;另一种扩展名为入内存运行;另一种扩展名为.EXE,它必须根,它必须根据文件头中的信息,经过初始化工作以后才能据文件头中的信息,
8、经过初始化工作以后才能顺利运行,这种不同的结构决定了它们不同的顺利运行,这种不同的结构决定了它们不同的加密方式。加密方式。计算机软件安全技术12可执行文件的加密可执行文件的加密(1).COM文件的加密方式文件的加密方式.COM文件的结构简单,可以很容易地对它进行文件的结构简单,可以很容易地对它进行加密,最简单的方法是口令加密。加密,最简单的方法是口令加密。(2).EXE文件的加密方式文件的加密方式只要在只要在.COM嵌入模块嵌入模块CCBN的基础上稍做修改,的基础上稍做修改,即可得到对即可得到对.EXE文件加密的嵌入模块文件加密的嵌入模块CE.BIN。返回本节返回本节计算机软件安全技术13.3
9、 软件运行中的反跟踪技术软件运行中的反跟踪技术3.3.1跟踪工具及其实现跟踪工具及其实现3.3.2软件运行中的反跟踪技术软件运行中的反跟踪技术3.3.3实例:编制具有反跟踪功能的加密盘实例:编制具有反跟踪功能的加密盘返回本章首页返回本章首页计算机软件安全技术13.3.1跟踪工具及其实现跟踪工具及其实现 DOS系统中的系统中的动态调试程序,是动态调试程序,是一个使用简单且非常有用的工具程序。它既可一个使用简单且非常有用的工具程序。它既可以用于对任何格式的文件进行观察和修改,也以用于对任何格式的文件进行观察和修改,也可以对软盘和硬盘的任何区域进行直接读写。可以对软盘和硬盘的任何区域进行直接读写。尤
10、其是可以用于对执行程序的跟踪分析和把二尤其是可以用于对执行程序的跟踪分析和把二进制代码转换为汇编指令,还可以查看内存状进制代码转换为汇编指令,还可以查看内存状态,分析程序出错原因、病毒感染情况等。态,分析程序出错原因、病毒感染情况等。返回本节返回本节计算机软件安全技术13.3.2软件运行中的反跟踪技术软件运行中的反跟踪技术1抑制跟踪命令抑制跟踪命令DEBUG在执行在执行T命令和命令和G命令时,分别要运行命令时,分别要运行系统单步中断和断点中断服务程序。在系统中系统单步中断和断点中断服务程序。在系统中断向量表中,这两种中断的中断向量分别为断向量表中,这两种中断的中断向量分别为1和和3,中断服务程
11、序入口地址分别存放在内存,中断服务程序入口地址分别存放在内存0000:0004和和0000:000C起始的起始的4个字节中,其中前个字节中,其中前2个字节是偏移地址,后个字节是偏移地址,后2个字节是段地址。因此,个字节是段地址。因此,当这些单元的内容被改变后,当这些单元的内容被改变后,T命令和命令和G命令就命令就不能正常执行,从而抑制跟踪命令。不能正常执行,从而抑制跟踪命令。计算机软件安全技术12封锁键盘输入封锁键盘输入1)改变键盘中断服务程序的入口地址。)改变键盘中断服务程序的入口地址。2)禁止键盘中断。)禁止键盘中断。3)禁止接收键盘数据。)禁止接收键盘数据。计算机软件安全技术13改变改变
12、CRT显示特性显示特性1)debug各种命令被执行后,其结果均要在屏各种命令被执行后,其结果均要在屏幕上显示出来,供人们查看。幕上显示出来,供人们查看。2)DEBUG在显示信息时,必然会出现屏幕上在显示信息时,必然会出现屏幕上卷、换页等。卷、换页等。计算机软件安全技术14定时技术定时技术设程序中有两点设程序中有两点A和和B,在正常情况下,从,在正常情况下,从A到到B所需的所需的运行时间为运行时间为C,而在跟踪运行时,速度较慢,所需时间,而在跟踪运行时,速度较慢,所需时间将远远超过将远远超过C,这样便可利用这种时间差判明是否有人,这样便可利用这种时间差判明是否有人在跟踪程序。如何知道在跟踪程序。
13、如何知道A、B两点间的实际运行时间呢?两点间的实际运行时间呢?PC主机板上设有主机板上设有8253计时器,其中通道计时器,其中通道0为通用计时器为通用计时器提供了一个固定的实时计数器,用来实现计时。在提供了一个固定的实时计数器,用来实现计时。在ROM BIOS中,软中断中,软中断1AH提供了读取当前时钟值的功提供了读取当前时钟值的功能。能。MOV AH,0INT1AH返回本节返回本节计算机软件安全技术13.3.3实例:编制具有反跟踪功能的加密盘实例:编制具有反跟踪功能的加密盘1物理加密的原理物理加密的原理物理加密的原理,即是在软盘片上人为造成一个或多个物理加密的原理,即是在软盘片上人为造成一个
14、或多个坏区,在应用程序被执行前,多次验证这些坏扇区,以坏区,在应用程序被执行前,多次验证这些坏扇区,以确定当前盘是否为钥匙盘。若是,则执行应用程序,否确定当前盘是否为钥匙盘。若是,则执行应用程序,否则中止进程。据此原理,可将制造钥匙盘过程分为三步:则中止进程。据此原理,可将制造钥匙盘过程分为三步:1)用大头针或刀片在盘的读写区内轻刺一下,注意不)用大头针或刀片在盘的读写区内轻刺一下,注意不要在要在0道附近进行,以免损坏引导区。道附近进行,以免损坏引导区。2)在)在debug状态下,用子命令状态下,用子命令LOAD依次装入扇区。依次装入扇区。3)在前两步的基础上,开始编制验证钥匙盘的子程序。)在
15、前两步的基础上,开始编制验证钥匙盘的子程序。这段程序如下:这段程序如下:计算机软件安全技术1L1:MOV CX,4;检测次数;检测次数L2:PUSH CXMOV CH,TRACK;磁道号送;磁道号送CHMOV CL,SECTOR;扇区号送;扇区号送CLMOV DL,DRIVER;驱动器号送;驱动器号送DLMOV DH,HEAD;磁头号送;磁头号送DHMOVAAL,NUMBER;扇区个数送;扇区个数送ALMOV AH,04H;检测功能号送;检测功能号送AH计算机软件安全技术1INTBH;磁盘操作功能调用;磁盘操作功能调用POPCXMOV DH,AHJNBSTOP;正常扇区,则进入死锁;正常扇区,
16、则进入死锁LOOPL2;非正常扇区,继续,直至;非正常扇区,继续,直至CX为为0CMP DH,02H;是否为无地址标号扇区;是否为无地址标号扇区JNZL1;不是,再试;不是,再试RET;是钥匙盘,许可,返回主程序;是钥匙盘,许可,返回主程序STOP:MOV CX,07HLOOPSTOP计算机软件安全技术12反跟踪的实现(反跟踪的实现(程序如下:)程序如下:)PUSH DS;数据段址堆栈;数据段址堆栈MOV AX,000HMOV DS,AX;当前数据段置;当前数据段置000HMOV SI,00HMOV BX,0004MOV AX,BXMOV DX,AXMOV BX,0006MOV AX,BX计算
17、机软件安全技术1MOV DS,AX;DS中存入处理程序段址中存入处理程序段址MOV CX,20H;代码个数;代码个数MOV BX,DX;BX存处理程序偏移量存处理程序偏移量L4:MOV BYTE PTR BX+SI,11H;破坏代码;破坏代码ADDSI,1LOOPL4POPDS返回本节返回本节计算机软件安全技术13.4防止非法复制软件的技术防止非法复制软件的技术3.4.1软件加密的必要性软件加密的必要性3.4.2常用的防止非法复制软件的技术常用的防止非法复制软件的技术3.4.3实例:几种加密软件的使用原理及方法实例:几种加密软件的使用原理及方法返回本章首页返回本章首页计算机软件安全技术13.4
18、.1软件加密的必要性软件加密的必要性 随着计算机通信网络和通用的数据资源的进一步开随着计算机通信网络和通用的数据资源的进一步开放及个人计算机的广泛使用,对计算机资源的保护,特放及个人计算机的广泛使用,对计算机资源的保护,特别是对软件产品的保护,就变得越来越迫切。别是对软件产品的保护,就变得越来越迫切。软件作为一种知识密集的商品化产品,在开发过程软件作为一种知识密集的商品化产品,在开发过程中需要大量的人力,为开发程序而付出的成本往往是硬中需要大量的人力,为开发程序而付出的成本往往是硬件价值的数倍乃至数百倍。然而,软件具有易于复制和件价值的数倍乃至数百倍。然而,软件具有易于复制和便于携带的特性;同
19、时,由于社会、法律为软件产品提便于携带的特性;同时,由于社会、法律为软件产品提供的保护不充分,迫使一些软件公司和开发人员采取了供的保护不充分,迫使一些软件公司和开发人员采取了自卫手段,从而出现了软件保护技术。自卫手段,从而出现了软件保护技术。返回本节返回本节计算机软件安全技术13.4.2常用的防止非法复制软件的技术常用的防止非法复制软件的技术1加密软件的工作方式加密软件的工作方式加密软件的工作方式主要有以下几种方式:加密软件的工作方式主要有以下几种方式:(1)外壳式)外壳式(2)内含式)内含式(3)结合式)结合式 计算机软件安全技术12限制技术限制技术限制就是对用户将要进行的一系列操作通过某限
20、制就是对用户将要进行的一系列操作通过某种手段进行确认,即弄清楚他是谁,他具有什种手段进行确认,即弄清楚他是谁,他具有什么特征,他拥有什么权限。最典型的限制技术么特征,他拥有什么权限。最典型的限制技术有口令和存取控制。有口令和存取控制。(1)口令加密限制技术)口令加密限制技术(2)存取控制技术)存取控制技术 计算机软件安全技术1表表3.1口令文件的单向加密口令文件的单向加密表表3.2存取控制表之一存取控制表之一计算机软件安全技术1表表3.3存取控制表之二存取控制表之二 计算机软件安全技术13利用装配程序防止非法复制利用装配程序防止非法复制(1)基本知识)基本知识(2)设计装入程序)设计装入程序(
21、3)在)在YIN.EXE中要做的工作中要做的工作 计算机软件安全技术1(1)基本知识)基本知识 1)FCB和和FAT。2)一个未打开的)一个未打开的FCB由驱动器号和文件名及文件的扩由驱动器号和文件名及文件的扩展名组成。展名组成。3)置磁盘传输地址。)置磁盘传输地址。4)查找第一登记项。)查找第一登记项。计算机软件安全技术1(2)设计装入程序)设计装入程序 1)设计思想。)设计思想。2)数据区。)数据区。3)程序流程。)程序流程。计算机软件安全技术11)设计思想。)设计思想。在在MIMIYC.EXE将将YIN.EXE装入装入C盘的过盘的过程中,首先以程中,首先以YIN.EXE为名,在为名,在C
22、盘中建立文盘中建立文件,接着取出其在件,接着取出其在C盘中建立时所对应的盘中建立时所对应的FCB,然后再将然后再将YIN.EXE写入到写入到C盘中去。至此,装盘中去。至此,装入程序入程序MIMIYC.EXE完成了装入任务,便取出完成了装入任务,便取出自身在磁盘中的自身在磁盘中的FCB,用软件中断,用软件中断INT 26H(绝(绝对磁盘写),把内存中一些无关数据,写入到对磁盘写),把内存中一些无关数据,写入到由刚才算到的相对扇区号的扇区中去,从而破由刚才算到的相对扇区号的扇区中去,从而破坏坏MIMIYC.EXE文件,完成一次性使用的任务。文件,完成一次性使用的任务。计算机软件安全技术12)数据区
23、。)数据区。举例:建立两个字节串举例:建立两个字节串“A:YIN.EXE”和和“C:YIN.EXE”,装入程序以此为文件名在,装入程序以此为文件名在A:盘中读文件和在盘中读文件和在C:盘中建立文件及写文件。数:盘中建立文件及写文件。数据区形式如下:据区形式如下:计算机软件安全技术1FILA DB 8000H DUP(?)FI DB3,59H,49H,20H,20H,20H,20H,20H,45HDB 58H,45H,20H,00,00,00,00,00,00,00,00DB 00,00,00,00,00,00,00,00,00,00,00VV DB I,4DH,49H,4DH,49H,59H,
24、43H,20H,20H,43H计算机软件安全技术1DB 4FH,4DH,20H,00,00,00,00,00,00,00,00DB 00,00,00,00,00,00,00,00,00,00,00,00FILB DB 40H DUP(?)VVV DB 40D DUP(?)FIL DB C:YIN.EXELY1 DB 0HFILE DB A:YIN.EXELY2 DB 0H计算机软件安全技术13)程序流程。首先将被保护软件)程序流程。首先将被保护软件YIN.EXE读入内存缓冲读入内存缓冲区中,首址为区中,首址为FILA。其流程为:。其流程为:MOV DX,OFFSET FILEMOV AL,2M
25、OV AH,3DH:打开一个文件:打开一个文件INT21H PUSHAXMOV BX,AX:保存文件代号:保存文件代号MOV CX,0FFF0HMOV AH,3FH:读文件:读文件INT21H计算机软件安全技术1POPBX:文件代号送:文件代号送BXPUSH AX:保存文件的字节数:保存文件的字节数MOVAH,3EH:关闭文件:关闭文件INT 21H再以再以C:YIN.EXE为名在硬盘中建立文件:为名在硬盘中建立文件:MOVDX,OFFSET FILCMOVCX,0MOVAH,3CH:建立文件:建立文件INT 21H计算机软件安全技术1对于刚刚以对于刚刚以YIN.EXE为名建立的文件,要把其为
26、名建立的文件,要把其FCB中的开始簇号有效地提出来,还必须在刚中的开始簇号有效地提出来,还必须在刚刚建立的文件中存储如下部分信息:刚建立的文件中存储如下部分信息:MOV DX,OFFSET FILCMOV AL,2MOV AH,3D:打开一个文件:打开一个文件INT21H PUSHAX计算机软件安全技术1MOV DX,OFFSET FILAMOV BX,AXMOV CX,512DMOV AH,40H:写文件:写文件INT21H POPAXMOV BX,AXMOV AH,3EH:关闭文件:关闭文件INT21H计算机软件安全技术1此时,便可用查找第一登记项的办法,把刚才建立文件此时,便可用查找第一
27、登记项的办法,把刚才建立文件的的FCB取出,并能得到一个有效的开始簇号。当然,在取出,并能得到一个有效的开始簇号。当然,在此之前,应为其设置磁盘的传输地址:此之前,应为其设置磁盘的传输地址:MOV DX,OFFSET FILB MOV AH,1AH:置磁盘缓冲区:置磁盘缓冲区INT21HMOV DX,OFFSET FIMOV AH,11H:查找第一登记项:查找第一登记项INT21H计算机软件安全技术1 程序运行完毕,便在以程序运行完毕,便在以FILB为首址的缓冲为首址的缓冲区,得到一个重要的数据:区,得到一个重要的数据:FCB中第中第26,27字字节的低节的低12位数,即位数,即YIN.EXE
28、文件将要在硬盘中文件将要在硬盘中开始存储的簇号。把这一数据写入到程序开始开始存储的簇号。把这一数据写入到程序开始运行时,读入的运行时,读入的YIN.EXE文件的特定单元之中文件的特定单元之中(这一特定单元的位置需要用(这一特定单元的位置需要用DOS的的DEBUG调调试程序确定),待这项工作完成后,便可以将试程序确定),待这项工作完成后,便可以将读入的文件读入的文件YIN.EXE正式写入到硬盘中。正式写入到硬盘中。计算机软件安全技术1MOV DX,OFFSET FILC MOV AL,2MOV AH,3DH:打开文件:打开文件 INT21HPOPCX:先前保存的:先前保存的YIN.EXE文件的字
29、节数送文件的字节数送CXPUSH AX:保存文件代号:保存文件代号MOV BX,AXMOV DX,OFFSET FILAMOV AH,40H:写文件:写文件 INT21HPOPBX:文件代号送:文件代号送BXMOV AH,3EH:关闭文件:关闭文件INT21H计算机软件安全技术1此时,被保护文件已装入到硬盘中。下面的工作,是要此时,被保护文件已装入到硬盘中。下面的工作,是要将所装程序将所装程序MIMIYC.EXE删除。用下面的几条指令,删除。用下面的几条指令,找出找出MIMIYC.EXE磁盘中开始存储的簇号,并换算成磁盘中开始存储的簇号,并换算成相对扇区号,最后进行相对扇区号,最后进行“绝对磁
30、盘写绝对磁盘写”(INT 26H),破,破坏掉坏掉MIMIYC.EXE的程序:的程序:MOV DX,OFFSET VVVMOV AH,1AH:置磁盘缓冲区:置磁盘缓冲区INT21HMOV DX,OFFSET VVMOV AH,11H:查找第一登记项:查找第一登记项计算机软件安全技术1INT21HMOVDI,OFFSET VVVADDDI,27DMOVAX,DI:FCB的第的第26,2 7字节送字节送AXANDAX,0FFFH:取其低:取其低12位位SUBAX,2SALAX,1:乘以:乘以2ADDAX,0CH:加上磁盘数据区开始的相对扇区号:加上磁盘数据区开始的相对扇区号0CHMOVCX,1:写
31、入的扇区数:写入的扇区数MOVBX,OFFSET FILAMOVAL,0INT26H:绝对磁盘写:绝对磁盘写POPF计算机软件安全技术1(3)在)在YIN.EXE中要做的工作中要做的工作 1)应设置一特定单元,以便)应设置一特定单元,以便MIMIYC.EXE程程序有关簇号能写到该单元中。序有关簇号能写到该单元中。2)设置与自身文件相对应的未打开的)设置与自身文件相对应的未打开的FCB,将,将来在程序运行时,以它为依据,用来在程序运行时,以它为依据,用“查找第一查找第一登记项登记项”的办法,找出自身在盘中开始存储的的办法,找出自身在盘中开始存储的簇号。簇号。3)开辟一缓冲区,作为)开辟一缓冲区,
32、作为“查找第一登记项查找第一登记项”时时的磁盘传输地址。的磁盘传输地址。返回本节返回本节计算机软件安全技术13.4.3实例:几种加密软件的使用原理及方法实例:几种加密软件的使用原理及方法1PROLOCK加密程序加密程序2PROTECT加密保护程序加密保护程序3LOCK89加密程序加密程序 计算机软件安全技术11PROLOCK加密程序加密程序(1)使用方法)使用方法一张加密钥匙盘附有一个一张加密钥匙盘附有一个PROLOCK.EXE执行文件,该文件执行文件,该文件自身也是用自身也是用PROLOCK加密的,是一个保密文件。因此,即加密的,是一个保密文件。因此,即便是同一版本的两张钥匙盘,它们也不能相
33、互拷贝。此外,便是同一版本的两张钥匙盘,它们也不能相互拷贝。此外,要求输入的文件扩展名必须为要求输入的文件扩展名必须为.COM或或.EXE,而输出文件名,而输出文件名的扩展名必须是的扩展名必须是.EXE,并且列出,并且列出5个参数项:个参数项:DELAYn 延时(延时(n=1999分)分)FPDRIVE=n钥匙盘所在驱动器号钥匙盘所在驱动器号NOWAIT有此参数,不能进行确认性提问有此参数,不能进行确认性提问TIMER从从INT 08H中断获取时钟信息中断获取时钟信息USER=n用户要求检查解密键的中断向量用户要求检查解密键的中断向量 计算机软件安全技术1(2)加密特征)加密特征用用PROLO
34、CK加密后的文件将增加加密后的文件将增加12KB,增加,增加的数据放在文件前部,使用单一算法加密,原的数据放在文件前部,使用单一算法加密,原理是依照激光加密的定位和指纹识别程序。从理是依照激光加密的定位和指纹识别程序。从钥匙盘读出的指纹,只用作判断该盘是不是钥钥匙盘读出的指纹,只用作判断该盘是不是钥匙盘,而不用作程序解密,即指明具有这一特匙盘,而不用作程序解密,即指明具有这一特征的带密程序,可以在没有钥匙盘的条件下解征的带密程序,可以在没有钥匙盘的条件下解密使用。密使用。计算机软件安全技术1(3)防拷贝技术)防拷贝技术PROLOCK的防拷贝技术是使用激光孔。的防拷贝技术是使用激光孔。(4)分析
35、)分析PROLOCK的加密代码是逐步解密的,每组加的加密代码是逐步解密的,每组加密代码通常只有数十个字节,有数十段这样的密代码通常只有数十个字节,有数十段这样的加密代码。加密代码。计算机软件安全技术12PROTECT加密保护程序加密保护程序(1)使用方法)使用方法键入键入PROTECT后,屏幕显示五条选项,其功后,屏幕显示五条选项,其功能如下:能如下:Protect executable file(保护可执行文件)。(保护可执行文件)。Install protected file to fixed disk。Recover install file(回收被安装的文件)。(回收被安装的文件)。D
36、elete protected file(删除被保护的文件)。(删除被保护的文件)。Quit(退出(退出PROTECT加密程序)。加密程序)。计算机软件安全技术1(2)加密特征)加密特征利用利用PROTECT加密软件保护的文件将增加加密软件保护的文件将增加6KB左右,左右,增加的数据放在文件尾部。增加的数据放在文件尾部。(3)防拷贝技术)防拷贝技术PROTECT加密软件包的防拷贝技术是使用大扇区格式。加密软件包的防拷贝技术是使用大扇区格式。(4)分析)分析PROTECT加密软件技术的独到之处在于使用了加密软件技术的独到之处在于使用了INT 1单步中断和单步中断和1CH中断。中断。计算机软件安全
37、技术13LOCK89加密程序加密程序(1)使用方法)使用方法一张加密钥匙盘附有一个一张加密钥匙盘附有一个LOCK89.EXE执行文件。该文执行文件。该文件自身也是用件自身也是用LOCK89加密的,不能相互拷贝。用户应加密的,不能相互拷贝。用户应将 输 入 文 件 名 和 输 出 文 件 同 时 键 入,后 面 的将 输 入 文 件 名 和 输 出 文 件 同 时 键 入,后 面 的PASSWORD则可输入一个两字节的密码,此密码可增则可输入一个两字节的密码,此密码可增加加密程序的解密键的变化,而不是要求启动被加密文加加密程序的解密键的变化,而不是要求启动被加密文件时输入密码。要求输入文件名及后
38、缀,而输出文件名件时输入密码。要求输入文件名及后缀,而输出文件名默认后缀为默认后缀为.EXE。当执行完毕,则在指定目录下生成一。当执行完毕,则在指定目录下生成一个输出文件。个输出文件。计算机软件安全技术1(2)加密特征)加密特征用用LOCK89加密软件加密后的文件将增加加密软件加密后的文件将增加6KB长度,增加的数据放在文件前部,使用单一算长度,增加的数据放在文件前部,使用单一算法加密。从钥匙盘读出的指纹只能用作判断该法加密。从钥匙盘读出的指纹只能用作判断该盘是否为钥匙盘,不用作程序解密。盘是否为钥匙盘,不用作程序解密。(3)防拷贝技术)防拷贝技术LOCK89的防拷贝技术也使用大扇区格式,大的
39、防拷贝技术也使用大扇区格式,大扇区在扇区在0面面20道前后,扇区的大小值为道前后,扇区的大小值为6,即按,即按照照8KB的方式读入扇区。的方式读入扇区。计算机软件安全技术1(4)分析)分析LOCK的代码解码过程是逐步进行的,其的代码解码过程是逐步进行的,其6KB代码总共分为代码总共分为7个几乎相互独立的部分,除第一个几乎相互独立的部分,除第一部分外,其余代码都经过加密。部分外,其余代码都经过加密。返回本节返回本节计算机软件安全技术13.5保证软件质量的安全体系保证软件质量的安全体系3.5.1概述概述3.5.2软件故障的分类软件故障的分类3.5.3软件测试工具软件测试工具返回本章首页返回本章首页
40、计算机软件安全技术13.5.1概述概述软件的可靠性:是指软件在特定的环境条件下,软件的可靠性:是指软件在特定的环境条件下,在给定的时间内,不发生故障的性质;或者是在给定的时间内,不发生故障的性质;或者是指软件在规定的时间和规定的条件下,能正常指软件在规定的时间和规定的条件下,能正常地完成规定的功能而无差错的概率。地完成规定的功能而无差错的概率。软件存在不可靠问题的原因主要在于:软件存在不可靠问题的原因主要在于:1)计算机软件是人工制造的复杂产品,生产中)计算机软件是人工制造的复杂产品,生产中的种种因素均可使软件造成差错或故障。的种种因素均可使软件造成差错或故障。计算机软件安全技术12)软件开发
41、没有计划,软件需求分析不充分。)软件开发没有计划,软件需求分析不充分。3)软件开发过程无规范,软件的研制至今尚未成熟,)软件开发过程无规范,软件的研制至今尚未成熟,缺乏坚实的科学基础和科学的管理制度,可能造成差错。缺乏坚实的科学基础和科学的管理制度,可能造成差错。4)软件产品无评测手段,至今尚无一套完善的、对程)软件产品无评测手段,至今尚无一套完善的、对程序正确性进行验证的方法和工具,一个软件研制出来以序正确性进行验证的方法和工具,一个软件研制出来以后,无法进行彻底、有效的验证,只能在实际使用中边后,无法进行彻底、有效的验证,只能在实际使用中边用、边改、边提高,往往有一些软件在使用多年后,仍用
42、、边改、边提高,往往有一些软件在使用多年后,仍发现有很大的潜在错误,造成巨大的损失。发现有很大的潜在错误,造成巨大的损失。返回本节返回本节计算机软件安全技术13.5.2软件故障的分类软件故障的分类1按错误的起因分类按错误的起因分类可归纳为设计错误、数据错误和硬件恶化引起可归纳为设计错误、数据错误和硬件恶化引起的元器件失效。的元器件失效。2按错误持续时间分类按错误持续时间分类分为瞬时性错误和永久性错误两类。分为瞬时性错误和永久性错误两类。3按开发阶段分类按开发阶段分类软件开发过程分为软件开发过程分为3个阶段:要求个阶段:要求/说明、系统设说明、系统设计、编码实现、测试确认和使用维护。计、编码实现
43、、测试确认和使用维护。计算机软件安全技术14特殊的错误类型特殊的错误类型(1)逻辑错误)逻辑错误(2)算法错误)算法错误(3)操作错误)操作错误(4)I/O错误错误(5)用户接口错误)用户接口错误 计算机软件安全技术1图图3.1软件错误的起因软件错误的起因返回本节返回本节计算机软件安全技术13.5.3软件测试工具软件测试工具1测试支持系统检测软件中的错误测试支持系统检测软件中的错误 测试支持系统能对软件的错误自动进行测测试支持系统能对软件的错误自动进行测试,寻找程序中潜在的错误。为了有效地测试试,寻找程序中潜在的错误。为了有效地测试被测程序,该系统应该具有以下功能:被测程序,该系统应该具有以下
44、功能:(1)自动生成测试数据。自动生成测试数据。(2)会话式地执行被测试的功能。会话式地执行被测试的功能。(3)提供相应的模拟程序。提供相应的模拟程序。(4)用多种方式自动查询比较测试结果。用多种方式自动查询比较测试结果。计算机软件安全技术12用双份比较检测软件中的错误用双份比较检测软件中的错误 在微型计算机系统中,一种软件一般配置在微型计算机系统中,一种软件一般配置双份。当正在使用的软件出错无法运行时,可双份。当正在使用的软件出错无法运行时,可以将备份软件与其比较(如软盘比较),以确以将备份软件与其比较(如软盘比较),以确定使用的软件是否有错误。若有错误,则将备定使用的软件是否有错误。若有错
45、误,则将备份的软件复制一套再使用,从试用情况找出问份的软件复制一套再使用,从试用情况找出问题。题。计算机软件安全技术13自锁故障的处理自锁故障的处理 在计算机系统的使用中,有时屏幕上出现一幅杂在计算机系统的使用中,有时屏幕上出现一幅杂乱无章的图形,或显示冻结。导致此类故障的原因有:乱无章的图形,或显示冻结。导致此类故障的原因有:(1)没有按上机规范操作,用错了命令或按键。没有按上机规范操作,用错了命令或按键。(2)没有打开驱动器或没有插入软盘,就进行了文没有打开驱动器或没有插入软盘,就进行了文件的存取或其他操作。件的存取或其他操作。(3)在没有开打印机开关的情况下,就执行在没有开打印机开关的情况下,就执行LPRINT或或LLIST命令。命令。(4)后面的用户不知前面用户上机状态,就贸然用后面的用户不知前面用户上机状态,就贸然用命令或功能键,造成系统自锁。命令或功能键,造成系统自锁。返回本节返回本节2023-1-18计算机软件安全技术1