您好,欢迎访问三七文档
计算机安全技术软件安全技术4.l软件安全的基本要求主要目的:一是禁止非法拷贝和使用;二是防止非法阅读和修改。其技术措施应实现三个基本任务:防拷贝、防静态分析和防动态跟踪。4.1.1防拷贝指的是通过采取某种加密措施,使得一般用户利用正常的拷贝命令,甚至于各种拷贝软件都无法将软件进行完整的复制,或者是复制到的软件不能正常运行。防拷贝技术是软件加密的核心技术,利用专用技术制造一种特殊标记,正常的拷贝途径无法复制这种特殊标记,或者是拷贝到的特殊标记不完整。特殊标记:软标记,硬标记计算机安全技术软件安全技术4.l软件安全的基本要求拷贝盘母盘制造的特殊标记特殊标记的不完全拷贝图4—1加密母盘的不完全拷贝示意图图4—2防拷贝软件的一般结构开始读磁盘特殊标记有标记吗?正常运行结束拒绝运行NY计算机安全技术软件安全技术4.l软件安全的基本要求一个简单的手工作业方法制作硬标记:准备一根针,在酒精灯上将针尖部分烧红,然后在磁盘上选择某一位置,将烧红的针尖靠近磁介质表面停留片刻(注意不要接触磁介质表面);当拿开针尖以后,磁盘介质的这一部分就有一个小小的痕迹因受热而发生变化,不能记录信息,被损坏的扇区如果用INT13H读写数据时,会发生10H(CRC)错。这样,我们即制作了一个磁盘标记。在被加密程序中编写一段程序来识别这一标记,因此必须知道被损坏的扇区所在的磁道和扇区号。计算机安全技术软件安全技术补充:BIOSINT13H磁盘I/OAH功能调用00H复位磁盘01H取磁盘状态02H读扇区03H写扇区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扇区,因此就可以在程序中写上下面一段识别母盘的程序片段:RETRY:MOVAX,0201;读一个扇区MOVBX,OFFSETHCQ1MOVCX,0A04H;读10磁道的第4扇区MOVDX,0100;A驱动器的1面INT13HJBOK_PASS;读扇区出错,转OK_PASSJMPRETRY;是非法复制盘,重复读盘OK-PASS:CMPAH,10H;CRC错(受热损坏的结果)吗?JNZRETRY;不是,重复读盘计算机安全技术软件安全技术假定被加密程序是显示字符串“Howareyou!”.STACKSEGMENTPARASTACK‘STACK’DB128DUP(0)STACKENDSDATASEGMENTMSG1DB0DH,0AH,“Howareyou!$”DATAENDSCODESEGMENTASSUMECS:CODE,ES:DATA,DS:DATASTARTPROCFARMOVAX,DATAMOVDS,AXMOVES,AXMOVDX,OFFSETMSG1MOVAH,9INT21HMOVAH4CHINT21HSTARTENDPCODEENDSENDSTART计算机安全技术软件安全技术上述程序采取防拷贝的措施,是将识别母盘的程序片段写入到程序中,修改后的程序如下:STARTSEGMENTPARASTACK‘STACK’DB128DUP(0)STACKENDSDATASEGMENTMSG1DB0DH,0AH,“Howareyou!$”HCQ1DB512DUP(0);设置磁盘缓冲区DATAENDSCODESEGMENTASSUMECS:CODE,ES:DATA,DS:DATASTART:PROCFARMOVAX,DATAMOVDS,AXMOVES,AX计算机安全技术软件安全技术;以下识别母盘RETRY:MOVAX,0201HMOVBX,OFFSETHCQ1MOVCX,0A04HMOVDX,0100HINT13HJBOK_PASS;读扇区出错,转OK_PASSJMPRETRY;是非法复制盘,重复读盘OK_PASS:CMPAH,10HJNZRETRY;不是原盘,转RETRYMOVDX,OFFSETMSG1;是原盘,正常运行MOVAH,9INT21HMOVAH,4CHINT21HSTART:ENDPCODEENDSENDSTART计算机安全技术软件安全技术4.l软件安全的基本要求4.1.2防静态分析破译者可以阅读到防拷贝的这一段程序。然后进行修改,使得被加密的软件在运行时不进行特殊标记的识别而无条件地正常执行,使得防拷贝的功能失去作用。例如,对于上述的加密程序,解密者可用DEBUG的反汇编命令看到如下的程序指令代码(P74):……为了解密,可在读盘操作以后,将1E53:0015处的指令改为无条件转移指令:JMP001E这样,该程序在运行时,不论读没读到磁盘标记,都会正常地运行。进一步地,还可以将1E53:0007处的指令改为:JMP001E这样,该程序在运行时甚至连读盘都不进行,就可以正常运行。计算机安全技术软件安全技术—U0271E53:0000B832lEMOVAX,1E321E53:00038ED8MOVDS,AX1E53:00058EC0MOVES,AX1E53:0007B80102MOVAX,02011E53:000ABB0F00MOVBX,000F1E53:000DB9040AMOVCX,0A041E53:0010BA0001MOVDX,01001E53:0013CD13INT131E53:00157202JB00191E53:0017EBEEJMP00071E53:001980FC10CMPAH,101E53:001C75E9JNZ00071E53:001EBA0000MOVDX,00001E53:0021B409MOVAH,091E53:0023CD21INT211E53:0025B44CMOVAH,4C1E53:0027CD21INT21计算机安全技术软件安全技术4.l软件安全的基本要求防止静态阅读和分析主要方法:将识别磁盘特殊标记的程序放在比较隐蔽的地方,或者是对该段程序进行加密变换,以密文的形式放在软件中。但被加密以后的程序不能被执行,要求在被加密的程序片段之前利用另外一段解码程序,使其变换成明文,然后再运行该段程序进行磁盘特殊标记的识别。经过这样处理以后的软件,不运行解码程序,用DEBUG的“U”命令反汇编出来的密文对破译者来说是根本看不明白的,因此阻止了非法用户对软件的静态分析和修改。例如,将1E53:0007~0028之间的指令代码进行逐字节求反,那么在运行时,必须使用解码程序进行解密变换。为此在1E53:0007处增加一段解码程序,而把原CS:0007~0028H之间的指令代码经逐字节求反加密变换以后,存放在1E53:00lB开始的内存区域中。计算机安全技术软件安全技术4.l软件安全的基本要求……1E53:0007BE1B00MOVSI,00lB;SI指向密码首地址1E53:000AB93D00MOVCX,003D;CX指向密码末地址1E53:000D2BCESUBCX,SI;解密的字节数→CX1E53:000FFCCLD1E53:00102ECS:1E53:00118A04MOVAL,[SI];取一字节密文1E5:0013F6D0NOTAL;求反解密1E53:00152ECS:1E53:00168804MOV[SI],AL;存明文一字节1E53:001846INCSI;改变地址1E53:0019E2F5LOOP0010;循环解密1E53:001B47INCDI1E53:001CFEFD???CH……计算机安全技术软件安全技术4.l软件安全的基本要求如:1E53:001B,001C,001D处内容为:47,FE,FD逐字节取反后为:B8,01,02其汇编指令为:MOVAX,02014.1.3防动态跟踪采取了防静态分析的措施以后,虽然阻止了非法用户对软件的静态分析和阅读及修改,但是可以利用DEBUG对被加密的软件进行跟踪,运行解码程序,找到识别磁盘特殊标记的程序段,然后对其进行修改。所以,进行软件加密的第三个基本任务是:必须采取一定的措施阻止解密者的动态跟踪,使得在正常状态下无法用DEBUG程序或其它调试程序对软件本身进行跟踪执行。例如,对于上面的程序,我们可以在防拷贝和防静态分析的基础上再增加防动态跟踪的技术。所用的防动态跟踪技术是“封锁键盘输入”。计算机安全技术软件安全技术4.l软件安全的基本要求2A61:0018E421INAL,21;读中断控制寄存器2A61:001A0C02ORAL,02;封锁键盘输入2A61:001CE621OUT21,AL;回送中断控制字2A61:001E46INCSI2A61:001FE2EFLOOP0010计算机安全技术软件安全技术4.l软件安全的基本要求程序在运行过程中会封锁键盘的输入,即当用户想使用DEBUG的“T”命令和“G”命令进行跟踪执行时,会出现机器不接受键盘输入的现象,这是由于程序中CS:0018~001DH之间的程序对键盘进行了封锁。在没有跟踪的情况下,程序运行完CS:0010~0020之间的解码程序以后,将CS:0021~0048之间的程序变换成明文,然后进行磁盘标记的识别和运行程序主体的工作,最后在返回之前将键盘开放。即:2A61:004319DESBBSI,BX2A61:00454BDECBX2A61:0046B332MOVBL,322A61:0048DE0AFIMULWORDPTR[BP十SI]计算机安全技术软件安全技术4.2软件防拷贝技术磁盘上做特殊标记,有硬标记、软标记。4.2.1激光孔加密技术激光方向性好、亮度高等特点,用激光在数据区或扇区标识符上烧若干个痕迹,使磁盘的某几点失去磁性,在软盘表面产生永久不可恢复的标志。由于激光孔很小,不仔细看不容易看见。软盘在激光处理过的区域读写时,产生CRC校验错误。而加密软盘都有自己的识别程序,当判断有CRC检验错误时,就认为此盘是原盘,然后执行被保护的用户程序;若没有CRC校验错误,则认为此盘是复制品,从而拒绝运行被保护的用户程序,使拷贝工具无法使用,不能正常工作。计算机安全技术软件安全技术4.2软件防拷贝技术补充:MOVAH,19H;取磁盘驱动器编号放在AL中INT21H;0:A;1:B;2:CINT13HAH=0;复位磁盘,磁盘校准的磁盘操作AH=04;检查磁盘扇区;产生错误则CF=1,错误信息在AH中。激光孔定位程序和激光孔指纹识别程序如书本80页PROLOCK采取如下措施阻止解密者的分析和跟踪:(1)密文处理(2)反跟踪:防止解密者的跟踪分析,PROLOCK采用了多种防跟踪措施。①破坏断点中断和单步中断的向量②隐蔽转移③多循环,多出口④设置堆栈计算机安全技术软件安全技术4.2软件防拷贝技术4.2.2电磁加密技术借助于专用的电磁机构,在所需加密的磁盘上随机生成一系列密钥信息,以供被加密程序识别使用的一种加密技术。它主要采用了一种奇异的编码格式将一些数据写入磁盘,供磁盘上专门的密钥识别程序鉴定。4.2.3掩膜技术采用半导体工艺中的镀膜方法来制造标志,给磁盘某一磁道或某一扇区进行镀膜。这种方法用膜来“遮掉”数据地址,使拷贝工具无法识别。即使原样拷贝出复制品,在识别程序中,首先对被掩膜的磁盘扇区进行格式化,然后再判别该扇区是否读写正常。如果读写扇区正常,则认为此盘是非法复制品而拒绝该软件运行,甚至使该软件自行销毁;否则,认为是原盘,继续运行该软件。计算机安全技术软件安全技术4.3软标记加密法4.3.1磁道软加密法有磁道接缝加密法、额外磁道加密法、宽磁道加密法、未格式化磁道加密法、磁道间距不规则变化加密法和螺线型磁道加密法等。1.磁道接缝加密法利用专门
本文标题:第4章软件安全技术
链接地址:https://www.777doc.com/doc-1267262 .html