650 likes | 768 Views
第三章 计算机软件安全技术. 3.1 计算机软件安全技术概述 3.2 文件加密技术 3.3 软件运行中的反跟踪技术 3.4 防止非法复制软件的技术 3.5 保证软件质量的安全体系. 本章学习目标. (1)掌握计算机软件安全的基本概念、内容和软件安全保护的指导思想。 (2)了解一般采用哪些技术措施来保证计算机软件的安全。 (3)掌握可执行文件的加密方式和加密原理;软件运行中的反跟踪技术;常用的防止非法复制软件的技术;能够编制具有反跟踪功能的加密盘。 (4)了解保证软件质量的安全体系。. 返回本章首页. 3.1 计算机软件安全技术概述. 1.计算机软件安全的定义
E N D
第三章 计算机软件安全技术 • 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为通用计时器提供了一个固定的实时计数器,用来实现计时。在ROM BIOS中,软中断1AH提供了读取当前时钟值的功能。 • MOV AH,0 • INT 1AH 返回本节
3.3.3 实例:编制具有反跟踪功能的加密盘 • 1.物理加密的原理 • 物理加密的原理,即是在软盘片上人为造成一个或多个坏区,在应用程序被执行前,多次验证这些坏扇区,以确定当前盘是否为钥匙盘。若是,则执行应用程序,否则中止进程。据此原理,可将制造钥匙盘过程分为三步: • 1)用大头针或刀片在盘的读写区内轻刺一下,注意不要在0道附近进行,以免损坏引导区。 • 2)在debug状态下,用子命令LOAD依次装入扇区。 • 3)在前两步的基础上,开始编制验证钥匙盘的子程序。这段程序如下:
L1: MOV CX,4 ;检测次数 • L2: PUSH CX • MOV CH,TRACK ;磁道号送CH • MOV CL,SECTOR ;扇区号送CL • MOV DL,DRIVER ;驱动器号送DL • MOV DH,HEAD ;磁头号送DH • MOVA AL,NUMBER ;扇区个数送AL • MOV AH,04H ;检测功能号送AH
INT BH ;磁盘操作功能调用 • POP CX • MOV DH,AH • JNB STOP ;正常扇区,则进入死锁 • LOOP L2 ;非正常扇区,继续,直至CX为0 • CMP DH,02H ;是否为无地址标号扇区 • JNZ L1 ;不是,再试 • RET ;是钥匙盘,许可,返回主程序 • STOP: MOV CX,07H • LOOP STOP
2.反跟踪的实现(程序如下:) • PUSH DS ;数据段址堆栈 • MOV AX,000H • MOV DS,AX ;当前数据段置000H • MOV SI,00H • MOV BX,[0004] • MOV AX,[BX] • MOV DX,AX • MOV BX,[0006] • MOV AX,[BX]
MOV DS,AX ;DS中存入处理程序段址 • MOV CX,20H ;代码个数 • MOV BX,DX ;BX存处理程序偏移量 • L4: MOV BYTE PTR [BX+SI],11H ;破坏代码 • ADD SI,1 • LOOP L4 • POP DS 返回本节
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.利用装配程序防止非法复制 • (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,用软件中断INT 26H(绝对磁盘写),把内存中一些无关数据,写入到由刚才算到的相对扇区号的扇区中去,从而破坏MIMIYC.EXE文件,完成一次性使用的任务。
2)数据区。 • 举例:建立两个字节串“A:YIN.EXE”和“C:YIN.EXE”,装入程序以此为文件名在A:盘中读文件和在C:盘中建立文件及写文件。数据区形式如下:
FILA DB 8000H DUP(?) • FI DB • 3,59H,49H,20H,20H,20H,20H,20H,45H • DB 58H,45H,20H,00,00,00,00,00,00,00,00 • DB 00,00,00,00,00,00,00,00,00,00,00 • VV DB I,4DH,49H,4DH,49H,59H,43H,20H,20H,43H
DB 4FH,4DH,20H,00,00,00,00,00,00,00,00 • DB 00,00,00,00,00,00,00,00,00,00,00,00 • FILB DB 40H DUP(?) • VVV DB 40D DUP(?) • FIL DB ’C:YIN.EXE’ • LY1 DB 0H • FILE DB ’A:YIN.EXE’ • LY2 DB 0H
3)程序流程。首先将被保护软件YIN.EXE读入内存缓冲区中,首址为FILA。其流程为:3)程序流程。首先将被保护软件YIN.EXE读入内存缓冲区中,首址为FILA。其流程为: • MOV DX,OFFSET FILE • MOV AL,2 • MOV AH,3DH :打开一个文件 • INT 21H PUSH AX • MOV BX,AX :保存文件代号 • MOV CX,0FFF0H • MOV AH,3FH :读文件 • INT 21H
POP BX :文件代号送BX • PUSH AX :保存文件的字节数 • MOV AH,3EH :关闭文件 • INT 21H • 再以C:YIN.EXE为名在硬盘中建立文件: • MOV DX,OFFSET FILC • MOV CX,0 • MOV AH,3CH :建立文件 • INT 21H
对于刚刚以YIN.EXE为名建立的文件,要把其FCB中的开始簇号有效地提出来,还必须在刚刚建立的文件中存储如下部分信息: • MOV DX,OFFSET FILC • MOV AL,2 • MOV AH,3D :打开一个文件 • INT 21H PUSH AX
MOV DX,OFFSET FILA • MOV BX,AX • MOV CX,512D • MOV AH,40H :写文件 • INT 21H POP AX • MOV BX,AX • MOV AH,3EH :关闭文件 • INT 21H
此时,便可用查找第一登记项的办法,把刚才建立文件的FCB取出,并能得到一个有效的开始簇号。当然,在此之前,应为其设置磁盘的传输地址:此时,便可用查找第一登记项的办法,把刚才建立文件的FCB取出,并能得到一个有效的开始簇号。当然,在此之前,应为其设置磁盘的传输地址: • MOV DX,OFFSET FILB • MOV AH,1AH :置磁盘缓冲区 • INT 21H • MOV DX,OFFSET FI • MOV AH,11H :查找第一登记项 • INT 21H
程序运行完毕,便在以FILB为首址的缓冲区,得到一个重要的数据:FCB中第26,27字节的低12位数,即YIN.EXE文件将要在硬盘中开始存储的簇号。把这一数据写入到程序开始运行时,读入的YIN.EXE文件的特定单元之中(这一特定单元的位置需要用DOS的DEBUG调试程序确定),待这项工作完成后,便可以将读入的文件YIN.EXE正式写入到硬盘中。
MOV DX,OFFSET FILC MOV AL,2 • MOV AH,3DH:打开文件 • INT 21H • POP CX:先前保存的YIN.EXE文件的字节数送CX • PUSH AX:保存文件代号 • MOV BX,AX • MOV DX,OFFSET FILA • MOV AH,40H:写文件 INT 21H • POP BX:文件代号送BX • MOV AH,3EH:关闭文件 • INT 21H
此时,被保护文件已装入到硬盘中。下面的工作,是要将所装程序MIMIYC.EXE删除。用下面的几条指令,找出MIMIYC.EXE磁盘中开始存储的簇号,并换算成相对扇区号,最后进行“绝对磁盘写”(INT 26H),破坏掉MIMIYC.EXE的程序: • MOV DX,OFFSET VVV • MOV AH,1AH :置磁盘缓冲区 • INT 21H • MOV DX,OFFSET VV • MOV AH,11H :查找第一登记项
INT 21H • MOV DI,OFFSET VVV • ADD DI,27D • MOV AX,[DI] :FCB的第26,2 7字节送AX • AND AX,0FFFH :取其低12位 • SUB AX,2 • SAL AX,1 :乘以2 • ADD AX,0CH :加上磁盘数据区开始的相对扇区号0CH • MOV CX,1 :写入的扇区数 • MOV BX,OFFSET FILA • MOV AL,0 • INT 26H :绝对磁盘写 • POPF
(3)在YIN.EXE中要做的工作 • 1)应设置一特定单元,以便MIMIYC.EXE程序有关簇号能写到该单元中。 • 2)设置与自身文件相对应的未打开的FCB,将来在程序运行时,以它为依据,用“查找第一登记项”的办法,找出自身在盘中开始存储的簇号。 • 3)开辟一缓冲区,作为“查找第一登记项”时的磁盘传输地址。 返回本节
3.4.3 实例:几种加密软件的使用原理及方法 • 1.PROLOCK加密程序 • 2.PROTECT加密保护程序 • 3.LOCK89加密程序
1.PROLOCK加密程序 • (1)使用方法 • 一张加密钥匙盘附有一个PROLOCK.EXE执行文件,该文件自身也是用PROLOCK加密的,是一个保密文件。因此,即便是同一版本的两张钥匙盘,它们也不能相互拷贝。此外,要求输入的文件扩展名必须为.COM或.EXE,而输出文件名的扩展名必须是.EXE,并且列出5个参数项: • /DELAY=n 延时(n=1~999分) • /FPDRIVE=n 钥匙盘所在驱动器号 • /NOWAIT 有此参数,不能进行确认性提问 • /TIMER 从INT 08H中断获取时钟信息 • /USER=n 用户要求检查解密键的中断向量
(2)加密特征 • 用PROLOCK加密后的文件将增加12KB,增加的数据放在文件前部,使用单一算法加密,原理是依照激光加密的定位和指纹识别程序。从钥匙盘读出的指纹,只用作判断该盘是不是钥匙盘,而不用作程序解密,即指明具有这一特征的带密程序,可以在没有钥匙盘的条件下解密使用。
(3)防拷贝技术 • PROLOCK的防拷贝技术是使用激光孔。 • (4)分析 • PROLOCK的加密代码是逐步解密的,每组加密代码通常只有数十个字节,有数十段这样的加密代码。