第三章计算机软件安全技术第三章计算机软件安全技术3.1计算机软件安全技术概述3.2文件加密技术3.3软件运行中的反跟踪技术3.4防止非法复制软件的技术3.5保证软件质量的安全体系第三章计算机软件安全技术本章学习目标(1)掌握计算机软件安全的基本概念、内容和软件安全保护的指导思想。(2)了解一般采用哪些技术措施来保证计算机软件的安全。(3)掌握可执行文件的加密方式和加密原理;软件运行中的反跟踪技术;常用的防止非法复制软件的技术;能够编制具有反跟踪功能的加密盘。(4)了解保证软件质量的安全体系。返回本章首页第三章计算机软件安全技术3.1计算机软件安全技术概述1.计算机软件安全的定义2.计算机软件安全的内容3.计算机软件安全的技术措施4.软件的本质及特征5.软件安全保护的指导思想返回本章首页第三章计算机软件安全技术1.计算机软件安全的定义软件的安全就是为计算机软件系统建立和采取的技术和管理的安全保护,保护计算机软件、数据不因偶然或恶意的原因而遭破坏、更改、显露、盗版、非法复制,保证软件系统能正常连续的运行。第三章计算机软件安全技术2.计算机软件安全的内容(1)软件的自身安全(2)软件的存储安全(3)软件的通信安全(4)软件的使用安全(5)软件的运行安全第三章计算机软件安全技术3.计算机软件安全的技术措施必须采取两个方面的措施:一是非技术性措施,如制定有关法律、法规,加强各方面的管理。二是技术性措施,如软件安全的各种防拷贝加密技术、防静态分析、防动态跟踪技术等。第三章计算机软件安全技术4.软件的本质及特征1)软件是用户使用计算机的工具2)软件是一种知识产品3)软件是人类社会的财富4)软件可以存储和移植5)软件是具有巨大威慑力量的武器6)软件具有寄生性第三章计算机软件安全技术5.软件安全保护的指导思想软件安全保护的指导思想是采用加密、反跟踪、防非法复制等技术。在软件系统上或原盘上产生一种信息,这种信息既是软件系统中各可执行文件在运行中必须引用的,又是各种文件复制命令或软盘复制软件所无法正确复制、无法正确安装或无法正确运行的。返回本节第三章计算机软件安全技术3.2文件加密技术3.2.1数据文件加密原理3.2.2可执行文件的加密方式返回本章首页第三章计算机软件安全技术3.2.1数据文件加密原理文本文件和可执行文件都是以二进制数的形式以字节为单位存放在磁盘上,所以可把它们一律视为数据文件来进行加密解密操作,但可执行文件加密后不能运行,但可有效地保护源程序和数据库文件中的信息,使非法用户不能从中得到有用信息。为了实现数据文件的加密,一般采用加密软件或用户自己编写集成化的加密软件,实现数据文件的加、解密操作。返回本节第三章计算机软件安全技术3.2.2可执行文件的加密方式1.可执行文件的结构及运行DOS环境下可执行文件有两种结构:一种扩展名为.COM,它无文件头,可直接装入内存运行;另一种扩展名为.EXE,它必须根据文件头中的信息,经过初始化工作以后才能顺利运行,这种不同的结构决定了它们不同的加密方式。第三章计算机软件安全技术2.可执行文件的加密(1).COM文件的加密方式.COM文件的结构简单,可以很容易地对它进行加密,最简单的方法是口令加密。(2).EXE文件的加密方式只要在.COM嵌入模块CCBN的基础上稍做修改,即可得到对.EXE文件加密的嵌入模块CE.BIN。返回本节第三章计算机软件安全技术3.3软件运行中的反跟踪技术3.3.1跟踪工具及其实现3.3.2软件运行中的反跟踪技术3.3.3实例:编制具有反跟踪功能的加密盘返回本章首页第三章计算机软件安全技术3.3.1跟踪工具及其实现DOS系统中的debug.com动态调试程序,是一个使用简单且非常有用的工具程序。它既可以用于对任何格式的文件进行观察和修改,也可以对软盘和硬盘的任何区域进行直接读写。尤其是可以用于对执行程序的跟踪分析和把二进制代码转换为汇编指令,还可以查看内存状态,分析程序出错原因、病毒感染情况等。返回本节第三章计算机软件安全技术3.3.2软件运行中的反跟踪技术1.抑制跟踪命令DEBUG在执行T命令和G命令时,分别要运行系统单步中断和断点中断服务程序。在系统中断向量表中,这两种中断的中断向量分别为1和3,中断服务程序入口地址分别存放在内存0000:0004和0000:000C起始的4个字节中,其中前2个字节是偏移地址,后2个字节是段地址。因此,当这些单元的内容被改变后,T命令和G命令就不能正常执行,从而抑制跟踪命令。第三章计算机软件安全技术2.封锁键盘输入1)改变键盘中断服务程序的入口地址。2)禁止键盘中断。3)禁止接收键盘数据。第三章计算机软件安全技术3.改变CRT显示特性1)debug各种命令被执行后,其结果均要在屏幕上显示出来,供人们查看。2)DEBUG在显示信息时,必然会出现屏幕上卷、换页等。第三章计算机软件安全技术4.定时技术设程序中有两点A和B,在正常情况下,从A到B所需的运行时间为C,而在跟踪运行时,速度较慢,所需时间将远远超过C,这样便可利用这种时间差判明是否有人在跟踪程序。如何知道A、B两点间的实际运行时间呢?PC主机板上设有8253计时器,其中通道0为通用计时器提供了一个固定的实时计数器,用来实现计时。在ROMBIOS中,软中断1AH提供了读取当前时钟值的功能。MOVAH,0INT1AH返回本节第三章计算机软件安全技术3.3.3实例:编制具有反跟踪功能的加密盘1.物理加密的原理物理加密的原理,即是在软盘片上人为造成一个或多个坏区,在应用程序被执行前,多次验证这些坏扇区,以确定当前盘是否为钥匙盘。若是,则执行应用程序,否则中止进程。据此原理,可将制造钥匙盘过程分为三步:1)用大头针或刀片在盘的读写区内轻刺一下,注意不要在0道附近进行,以免损坏引导区。2)在debug状态下,用子命令LOAD依次装入扇区。3)在前两步的基础上,开始编制验证钥匙盘的子程序。这段程序如下:第三章计算机软件安全技术L1:MOVCX,4;检测次数L2:PUSHCXMOVCH,TRACK;磁道号送CHMOVCL,SECTOR;扇区号送CLMOVDL,DRIVER;驱动器号送DLMOVDH,HEAD;磁头号送DHMOVAAL,NUMBER;扇区个数送ALMOVAH,04H;检测功能号送AH第三章计算机软件安全技术INTBH;磁盘操作功能调用POPCXMOVDH,AHJNBSTOP;正常扇区,则进入死锁LOOPL2;非正常扇区,继续,直至CX为0CMPDH,02H;是否为无地址标号扇区JNZL1;不是,再试RET;是钥匙盘,许可,返回主程序STOP:MOVCX,07HLOOPSTOP第三章计算机软件安全技术2.反跟踪的实现(程序如下:)PUSHDS;数据段址堆栈MOVAX,000HMOVDS,AX;当前数据段置000HMOVSI,00HMOVBX,[0004]MOVAX,[BX]MOVDX,AXMOVBX,[0006]MOVAX,[BX]第三章计算机软件安全技术MOVDS,AX;DS中存入处理程序段址MOVCX,20H;代码个数MOVBX,DX;BX存处理程序偏移量L4:MOVBYTEPTR[BX+SI],11H;破坏代码ADDSI,1LOOPL4POPDS返回本节第三章计算机软件安全技术3.4防止非法复制软件的技术3.4.1软件加密的必要性3.4.2常用的防止非法复制软件的技术3.4.3实例:几种加密软件的使用原理及方法返回本章首页第三章计算机软件安全技术3.4.1软件加密的必要性随着计算机通信网络和通用的数据资源的进一步开放及个人计算机的广泛使用,对计算机资源的保护,特别是对软件产品的保护,就变得越来越迫切。软件作为一种知识密集的商品化产品,在开发过程中需要大量的人力,为开发程序而付出的成本往往是硬件价值的数倍乃至数百倍。然而,软件具有易于复制和便于携带的特性;同时,由于社会、法律为软件产品提供的保护不充分,迫使一些软件公司和开发人员采取了自卫手段,从而出现了软件保护技术。返回本节第三章计算机软件安全技术3.4.2常用的防止非法复制软件的技术1.加密软件的工作方式加密软件的工作方式主要有以下几种方式:(1)外壳式(2)内含式(3)结合式第三章计算机软件安全技术2.限制技术限制就是对用户将要进行的一系列操作通过某种手段进行确认,即弄清楚他是谁,他具有什么特征,他拥有什么权限。最典型的限制技术有口令和存取控制。(1)口令加密限制技术(2)存取控制技术第三章计算机软件安全技术表3.1口令文件的单向加密表3.2存取控制表之一第三章计算机软件安全技术表3.3存取控制表之二第三章计算机软件安全技术3.利用装配程序防止非法复制(1)基本知识(2)设计装入程序(3)在YIN.EXE中要做的工作第三章计算机软件安全技术(1)基本知识1)FCB和FAT。2)一个未打开的FCB由驱动器号和文件名及文件的扩展名组成。3)置磁盘传输地址。4)查找第一登记项。第三章计算机软件安全技术(2)设计装入程序1)设计思想。2)数据区。3)程序流程。第三章计算机软件安全技术1)设计思想。在MIMIYC.EXE将YIN.EXE装入C盘的过程中,首先以YIN.EXE为名,在C盘中建立文件,接着取出其在C盘中建立时所对应的FCB,然后再将YIN.EXE写入到C盘中去。至此,装入程序MIMIYC.EXE完成了装入任务,便取出自身在磁盘中的FCB,用软件中断INT26H(绝对磁盘写),把内存中一些无关数据,写入到由刚才算到的相对扇区号的扇区中去,从而破坏MIMIYC.EXE文件,完成一次性使用的任务。第三章计算机软件安全技术2)数据区。举例:建立两个字节串“A:YIN.EXE”和“C:YIN.EXE”,装入程序以此为文件名在A:盘中读文件和在C:盘中建立文件及写文件。数据区形式如下:第三章计算机软件安全技术FILADB8000HDUP(?)FIDB3,59H,49H,20H,20H,20H,20H,20H,45HDB58H,45H,20H,00,00,00,00,00,00,00,00DB00,00,00,00,00,00,00,00,00,00,00VVDBI,4DH,49H,4DH,49H,59H,43H,20H,20H,43H第三章计算机软件安全技术DB4FH,4DH,20H,00,00,00,00,00,00,00,00DB00,00,00,00,00,00,00,00,00,00,00,00FILBDB40HDUP(?)VVVDB40DDUP(?)FILDB’C:YIN.EXE’LY1DB0HFILEDB’A:YIN.EXE’LY2DB0H第三章计算机软件安全技术3)程序流程。首先将被保护软件YIN.EXE读入内存缓冲区中,首址为FILA。其流程为:MOVDX,OFFSETFILEMOVAL,2MOVAH,3DH:打开一个文件INT21HPUSHAXMOVBX,AX:保存文件代号MOVCX,0FFF0HMOVAH,3FH:读文件INT21H第三章计算机软件安全技术POPBX:文件代号送BXPUSHAX:保存文件的字节数MOVAH,3EH:关闭文件INT21H再以C:YIN.EXE为名在硬盘中建立文件:MOVDX,OFFSETFILCMOVCX,0MOVAH,3CH:建立文件INT21H第三章计算机软件安全技术对于刚刚以YIN.EXE为名建立的文件,要把其FCB中的开始簇号有效地提出来,还必须在刚刚建立的文件中存储如下部分信息:MOVDX,OFFSETFILCMOVAL,2MOVAH,3D:打开一个文件INT21HPUSHAX第三章计算机软件安全技术MOVDX,OFFSETFILAMOVBX,AXMOVCX,512DMOVAH,40H:写文件INT21HPOPAXMOVBX,AXMOVAH,3EH:关闭文件INT21H第三章计算机软件安全技术此时,便可用查找第一登记项的办法,把刚才建立文件的FCB取出,并能得到一个有效的开始簇号。当然,在此之前,应为其设置磁盘的传输地址:MOVDX,OFFSETFILBMOVAH