[精选]第4章软件安全技术.pptx
《[精选]第4章软件安全技术.pptx》由会员分享,可在线阅读,更多相关《[精选]第4章软件安全技术.pptx(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.l 软件安全的基本要求 主要目的:一是禁止非法拷贝和使用;二是防止非法阅读和修改。其技术措施应实现三个基本任务:防拷贝、防静态分析和防动态跟踪。4.1.1防拷贝 指的是通过采取某种加密措施,使得一般用户利用正常的拷贝命令,甚至于各种拷贝软件都无法将软件进行完整的复制,或者是复制到的软件不能正常运行。防拷贝技术是软件加密的核心技术,利用专用技术制造一种特殊标记,正常的拷贝途径无法复制这种特殊标记,或者是拷贝到的特殊标记不完整。特殊标记:软标记,硬标记4.l 软件安全的基本要求拷贝盘母盘制造的特殊标记特殊标记的不完全拷贝图41 加密母盘的不完全拷贝示意图图42 防拷贝软件的一般结构开 始读磁盘
2、特殊标记有标记吗?正常运行结 束拒绝运行NY4.l 软件安全的基本要求一个简单的手工作业方法制作硬标记:准备一根针,在酒精灯上将针尖局部烧红,然后在磁盘上选择某一位置,将烧红的针尖靠近磁介质外表停留片刻注意不要接触磁介质外表;当拿开针尖以后,磁盘介质的这一局部就有一个小小的痕迹因受热而发生变化,不能记录信息,被损坏的扇区如果用INT13H读写数据时,会发生10HCRC错。这样,我们即制作了一个磁盘标记。在被加密程序中编写一段程序来识别这一标记,因此必须知道被损坏的扇区所在的磁道和扇区号。补充:BIOS INT 13H 磁盘I/OAH功能调用00H复位磁盘01H取磁盘状态02H读扇区03H写扇区
3、04H检测扇区功能调用02H入口参数:AH=02HAL:置要读的扇区数目DL:进行读操作的驱动器代码。数码0和1用于识别软盘,数码80H和81H识别硬盘。DH:所读磁盘磁头号。CH:识别10位磁道柱面号的低8位数。CL:低6位放入所读的起始扇区号。高2位存放磁道柱面号的高2位。ES:BX:缓冲区地址。出口参数:错误则CF=1,错误信息放在AH中,否则CF=0,AL=0。AH中错误状态:00H未出错;01H非法功能调用;03H对写保护的磁盘执行写操作;10H读磁盘时循环校验码CRC奇偶校验错。4.l 软件安全的基本要求知道被烧坏的扇区为1面 10磁道的第4扇区,因此就可以在程序中写上下面一段识别
4、母盘的程序片段:RETRY:MOV AX,0201 ;读一个扇区 MOV BX,OFFSET HCQ1 MOV CX,0A04H ;读10磁道的第4扇区 MOV DX,0100 ;A驱动器的1面 INT 13H JB OK_PASS ;读扇区出错,转OK_PASS JMP RETRY ;是非法复制盘,重复读盘OKPASS:CMP AH,10H;CRC错受热损坏的结果吗?JNZ RETRY ;不是,重复读盘 假定被加密程序是显示字符串“How are you!.STACK SEGMENT PARA STACK STACK DB 128 DUP0 STACK ENDS DATA SEGMENT M
5、SG1 DB 0DH,0AH,“How are you!DATA ENDS CODE SEGMENT ASSUME CS:CODE,ES:DATA,DS:DATA START PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,OFFSET MSG1 MOV AH,9 INT 21H MOV AH 4CH INT 21H START ENDP CODE ENDS END START 上述程序采取防拷贝的措施,是将识别母盘的程序片段写入到程序中,修改后的程序如下:START SEGMENT PARA STACKSTACK DB 128DUP0 STAC
6、K ENDS DATA SEGMENT MSG1 DB 0DH,0AH,“How are you!HCQ1 DB 512 DUP0 ;设置磁盘缓冲区 DATA ENDS CODE SEGMENT ASSUME CS:CODE,ES:DATA,DS:DATA START:PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX ;以下识别母盘 RETRY:MOV AX,0201H MOV BX,OFFSET HCQ1 MOV CX,0A04H MOV DX,0100H INT 13H JB OK _PASS ;读扇区出错,转OK_PASS JMP RETRY ;是非法复制
7、盘,重复读盘 OK_PASS:CMP AH,10H JNZ RETRY ;不是原盘,转RETRY MOV DX,OFFSET MSG1 ;是原盘,正常运行 MOV AH,9 INT 21H MOV AH,4CH INT 21H START:ENDP CODE ENDS END START4.l 软件安全的基本要求4.1.2防静态分析 破译者可以阅读到防拷贝的这一段程序。然后进行修改,使得被加密的软件在运行时不进行特殊标记的识别而无条件地正常执行,使得防拷贝的功能失去作用。例如,对于上述的加密程序,解密者可用DEBUG的反汇编命令看到如下的程序指令代码P74:为了解密,可在读盘操作以后,将 1E
8、53:0015处的指令改为无条件转移指令:JMP 001E这样,该程序在运行时,不管读没读到磁盘标记,都会正常地运行。进一步地,还可以将1E53:0007处的指令改为:JMP 001E这样,该程序在运行时甚至连读盘都不进行,就可以正常运行。U 0 27 1E53:0000 B832lE MOV AX,1E32 1E53:0003 8ED8 MOV DS,AX 1E53:0005 8EC0 MOV ES,AX 1E53:0007 B80102 MOV AX,0201 1E53:000A BB0F00 MOV BX,000F 1E53:000D B9040A MOV CX,0A04 1E53:00
9、10 BA0001 MOV DX,0100 1E53:0013 CD13 INT 13 1E53:0015 7202 JB 0019 1E53:0017 EBEE JMP 0007 1E53:0019 80FC10 CMP AH,10 1E53:001C 75E9 JNZ 0007 1E53:001E BA0000 MOV DX,0000 1E53:0021 B409 MOV AH,09 1E53:0023 CD21 INT 21 1E53:0025 B44C MOV AH,4C 1E53:0027 CD21 INT 21 4.l 软件安全的基本要求防止静态阅读和分析主要方法:将识别磁盘特殊标
10、记的程序放在比较隐蔽的地方,或者是对该段程序进行加密变换,以密文的形式放在软件中。但被加密以后的程序不能被执行,要求在被加密的程序片段之前利用另外一段解码程序,使其变换成明文,然后再运行该段程序进行磁盘特殊标记的识别。经过这样处理以后的软件,不运行解码程序,用 DEBUG的“U命令反汇编出来的密文对破译者来说是根本看不明白的,因此阻止了非法用户对软件的静态分析和修改。例如,将1E53:00070028之间的指令代码进行逐字节求反,那么在运行时,必须使用解码程序进行解密变换。为此在1E53:0007处增加一段解码程序,而把原CS:00070028H之间的指令代码经逐字节求反加密变换以后,存放在1
11、E53:00lB开始的内存区域中。4.l 软件安全的基本要求 1E53:0007 BE1B00 MOV SI,00lB ;SI指向密码首地址1E53:000A B93D00 MOV CX,003D;CX指向密码末地址1E53:000D 2BCE SUB CX,SI ;解密的字节数CX1E53:000F FC CLD1E53:0010 2E CS:1E53:0011 8A04 MOV AL,SI ;取一字节密文1E5:0013 F6D0 NOT AL ;求反解密1E53:0015 2E CS:1E53:0016 8804 MOVSI,AL ;存明文一字节1E53:0018 46 INC SI ;
12、改变地址1E53:0019 E2F5 LOOP 0010 ;循环解密1E53:001B 47 INC DI1E53:001C FEFD?CH4.l 软件安全的基本要求如:1E53:001B,001C,001D处内容为:47,FE,FD逐字节取反后为:B8,01,02其汇编指令为:MOV AX,02014.1.3防动态跟踪 采取了防静态分析的措施以后,虽然阻止了非法用户对软件的静态分析和阅读及修改,但是可以利用DEBUG对被加密的软件进行跟踪,运行解码程序,找到识别磁盘特殊标记的程序段,然后对其进行修改。所以,进行软件加密的第三个基本任务是:必须采取一定的措施阻止解密者的动态跟踪,使得在正常状态
13、下无法用DEBUG程序或其它调试程序对软件本身进行跟踪执行。例如,对于上面的程序,我们可以在防拷贝和防静态分析的基础上再增加防动态跟踪的技术。所用的防动态跟踪技术是“封锁键盘输入。4.l 软件安全的基本要求 2A61:0018 E421 IN AL,21 ;读中断控制存放器 2A61:001A 0C02 OR AL,02 ;封锁键盘输入 2A61:001C E621 OUT 21,AL ;回送中断控制字 2A61:001E 46 INC SI 2A61:001F E2EF LOOP 00104.l 软件安全的基本要求程序在运行过程中会封锁键盘的输入,即当用户想使用DEBUG的“T命令和“G命令
14、进行跟踪执行时,会出现机器不接受键盘输入的现象,这是由于程序中CS:0018001DH之间的程序对键盘进行了封锁。在没有跟踪的情况下,程序运行完CS:00100020之间的解码程序以后,将CS:00210048之间的程序变换成明文,然后进行磁盘标记的识别和运行程序主体的工作,最后在返回之前将键盘开放。即:2A61:0043 19DE SBB SI,BX 2A61:0045 4B DEC BX 2A61:0046 B332 MOV BL,32 2A61:0048 DE0A FIMUL WORD PTRBP十SI4.2 软件防拷贝技术 磁盘上做特殊标记,有硬标记、软标记。4.2.1激光孔加密技术
15、激光方向性好、亮度高等特点,用激光在数据区或扇区标识符上烧假设干个痕迹,使磁盘的某几点失去磁性,在软盘外表产生永久不可恢复的标志。由于激光孔很小,不仔细看不容易看见。软盘在激光处理过的区域读写时,产生CRC校验错误。而加密软盘都有自己的识别程序,当判断有CRC检验错误时,就认为此盘是原盘,然后执行被保护的用户程序;假设没有CRC校验错误,则认为此盘是复制品,从而拒绝运行被保护的用户程序,使拷贝工具无法使用,不能正常工作。4.2 软件防拷贝技术补充:MOV AH,19H;取磁盘驱动器编号放在AL中INT 21H ;0:A;1:B;2:CINT 13H AH=0;复位磁盘,磁盘校准的磁盘操作 AH
16、=04;检查磁盘扇区;产生错误则CF=1,错误信息在AH中。激光孔定位程序和激光孔指纹识别程序如书本80页PROLOCK采取如下措施阻止解密者的分析和跟踪:1密文处理 2反跟踪:防止解密者的跟踪分析,PROLOCK采用了多种防跟踪措施。破坏断点中断和单步中断的向量 隐蔽转移 多循环,多出口 设置堆栈4.2 软件防拷贝技术4.2.2 电磁加密技术 借助于专用的电磁机构,在所需加密的磁盘上随机生成一系列密钥信息,以供被加密程序识别使用的一种加密技术。它主要采用了一种奇异的编码格式将一些数据写入磁盘,供磁盘上专门的密钥识别程序鉴定。4.2.3掩膜技术 采用半导体工艺中的镀膜方法来制造标志,给磁盘某一
17、磁道或某一扇区进行镀膜。这种方法用膜来“遮掉数据地址,使拷贝工具无法识别。即使原样拷贝出复制品,在识别程序中,首先对被掩膜的磁盘扇区进行格式化,然后再判别该扇区是否读写正常。如果读写扇区正常,则认为此盘是非法复制品而拒绝该软件运行,甚至使该软件自行销毁;否则,认为是原盘,继续运行该软件。4.3 软标记加密法 4.3.1磁道软加密法 有磁道接缝加密法、额外磁道加密法、宽磁道加密法、未格式化磁道加密法、磁道间距不规则变化加密法和螺线型磁道加密法等。1磁道接缝加密法 利用专门的技术制作特殊的磁道。这种特殊的磁道给复制工作造成了困难,甚至有些特殊磁道完全不能复制。此外,它还利用了磁道接缝信息及长度的随
18、机性。这种随机性导致不同磁盘的磁道接缝信息不同,从而可到达防拷贝的目的。磁道后置区占据的长度是随机变化的,其范围在200300字节之间,且内容也随机地变化。4.3 软标记加密法所谓的磁道接缝软指纹,就是指磁道的后置区,因而利用磁道接缝软指纹进行加密是完全可能的。将不定长度的后置区取出以作为鉴别的依据,是磁道接缝软指纹进行加密的关键。对于标准的磁道,读取困难,除非用端口读磁道命令来实现,而端口读磁道命令又是十分繁琐的。利用修改扇区 ID标志和软盘基数表的方法可以较容易地实现磁道后置区的读取。修改扇区ID标志实际上是修改磁道上最后一个扇区的ID标志,因为磁道上最后一个扇区与后置区相连。考虑到后置区
19、长度不到300字节,因而将磁道最后一个扇区ID标志中的 N改为 3即可。4.3 软标记加密法补充:INT 13H AH=5 格式化磁盘的单条磁道。AH,AL,CH,DH,DL与磁盘读写功能类似,CL低6位不用。BX:被格式化的地址字段集合地址,四个字节组成。字节1:磁柱号;字节2:磁头号;字节3:扇区号;字节4:每个扇区的字节数目,它有四种可能的数值:0:128字节;1:256字节;2:512字节;3:1024字节。P862额外磁道加密法 一般磁盘机可以正常读写44个磁道。有些磁盘机甚至还可以多读写一些。可以设想,如果将一些关键数据放在内圈的磁道上,比方放在41道,由于标准的拷贝软件只能拷贝
20、039道,因此可以起到软盘防拷贝的目的。由于标准的格式化程序只能格式化出40个磁道,所以额外磁道的制作要由自己编制的汇编程序来实现。假设将A驱动器中磁盘的0面40道格式化成一个标准格式的磁道,具体操作如下:ADEBUG AXXXX:100 MOV AX,0501 MOV BX,1000 MOV CX,2801 MOV DX,0 INT 13 JC 100 INT 3-E 1000 28 00 01 02 28 00 02 02-E 1008 28 00 03 02 28 00 04 02-E 1010 28 00 05 02 28 00 06 02-E 1018 28 00 07 02 28
21、00 08 02-E 1020 28 00 09 02-G=1004.3 软标记加密法3宽磁道加密法 给磁盘驱动器配以宽磁头,使之能够同时在两个或多个磁道上读写信息。例如,配以宽磁头的磁盘驱动器可以在两个相邻的磁道以及磁道之间的间隙同时写下完全相同的信息而制成一个宽磁道。如果读该磁盘的一段程序能够使磁盘驱动器的读写磁头在写有相同信息的两个磁道之间物理上实际是一个宽“磁道来回步进,那么读出的数据流也不会是中断的,即可以将宽磁道上的数据完整读出。但在复制磁盘时,普通磁头则无法复制这样的宽磁道。由于读写磁头两侧的抹磁头的抹除作用,在复制盘中必然将这个宽磁道物理上分开,成为两个普通磁道,在这两个磁道间
22、存在物理间隙即在间隙中没有任何信息,而磁头步进地读取这两道的信息,必然导致读出信息的不连续,从而就可以到达防拷贝的目的。4.3 软标记加密法4未格式化磁道加密法 在格式化磁盘时,跳过某个或某些磁道,造成一个或多个未格式化的空白磁道,使被加密程序在系统下能正常工作,而传统的拷贝软件则无法正常拷贝。使用被加密程序时,先用在被加密程序中的一段特殊程序对磁盘进行检查,如果发现某一或某些特定的磁道为未格式化磁道,则此盘为原盘,否则为非法拷贝盘。5磁道间距不规则变化加密法 磁道间距不规则变化技术的原理就是利用软件来控制步进电机,使得磁头在磁盘上产生不规则的磁道间距,使传统拷贝软件无法复制传统的拷贝工具是利
23、用程序控制步进电机,使磁盘驱动器的读写磁头在磁道间距相等的磁道上来回移动而完成其复制工作的。4.3 软标记加密法6螺线型磁道加密法 螺线型磁道技术的原理是在磁盘上制作一些螺线型磁道,致使磁头在进行读写操作时仍在步进,即磁头步进与读写数据同时进行。这样就完全打乱了传统 的拷贝工具的复制过程,使经过这种方法加密的磁盘无法被拷贝,到达加密的目的。4.3.2其它软加密法 1利用错误CRC码加密 2磁道噪声法 3双机加密法 4卷标加密法 5弱位加密法 6ID ROM加密法 7利用加密器进行加密 4.4扇段软标记加密法 扇段软标记加密方法很多,如扇区间隙加密法、扇区软指纹加密法、异常 ID加密法、额外扇段
24、加密法、超级扇段加密法、扇区错乱排序法、未格式化扇区法和扇段对齐技术法等。4.4.1扇区软指纹加密法 扇区间隙软指纹加密方法为:磁盘格式化以后,在某一磁道上的第一个扇区后的某个扇区写上需要重写的信息,如被加密程序的数据或软件的一局部,然后再从该扇区的前一个扇区读该扇区的内容,并利用该扇区读出的信息去加密要保护的软件。由于从前一段扇区读出该扇区内容时,该扇区的GAP2一起被读人,所以从该扇区读出的内容将受GAP2长度的影响。再利用这些受GAP2影响的CRC码去加密用户程序,其方法和途径可以灵活多样。4.4扇段软标记加密法按扇区间隙软件指纹加密的一个实例设被处理的扇区为第40道0面1扇区。1对第
25、40道可以选择任意一道进行特殊格式化只格式化 0面,使第二扇区中从第一扇区开始,读该重写扇区数据时,所读的内容与重写前是不同的。GAP2 SYNC AM2 Old Data(512字节)CRC GAP2 SYNC AM2 New data(512字节)CRC同一磁道的同一扇区新数据写入后Data Field of a Sector扇 区 软指 纹 信息图4-12 软指纹的形成2读第 40道 0面3扇区,读之前修改软盘基数表中的N值,使N=4,这样就可以把第40道0面2扇区的全部内容读出,而不是仅读出数据域的内容。3经这样处理后的软盘,第40道0面上的9个扇区就不能被许多拷贝软件所复制。4.4.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精选 软件 安全技术
限制150内