缓冲区溢出攻击课件.ppt

上传人:飞****2 文档编号:71803230 上传时间:2023-02-06 格式:PPT 页数:58 大小:866KB
返回 下载 相关 举报
缓冲区溢出攻击课件.ppt_第1页
第1页 / 共58页
缓冲区溢出攻击课件.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《缓冲区溢出攻击课件.ppt》由会员分享,可在线阅读,更多相关《缓冲区溢出攻击课件.ppt(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、2023/2/5计算机系统安全原理与技术(第2版)1应用系统的编程安全应用系统的编程安全1 缓冲区溢出缓冲区溢出2 格式化字符串漏洞格式化字符串漏洞3 安全编程安全编程2023/2/5计算机系统安全原理与技术(第2版)21 缓冲区溢出缓冲区溢出1)1)什么是缓冲区溢出什么是缓冲区溢出什么是缓冲区溢出什么是缓冲区溢出简单的说,缓冲区溢出简单的说,缓冲区溢出简单的说,缓冲区溢出简单的说,缓冲区溢出(Buffer Overflow)(Buffer Overflow)就就就就是通过在程序的缓冲区写入超出其长度的内容,是通过在程序的缓冲区写入超出其长度的内容,是通过在程序的缓冲区写入超出其长度的内容,是

2、通过在程序的缓冲区写入超出其长度的内容,从而破坏程序的堆栈,使程序转而执行其他指从而破坏程序的堆栈,使程序转而执行其他指从而破坏程序的堆栈,使程序转而执行其他指从而破坏程序的堆栈,使程序转而执行其他指令,以达到攻击的目的。令,以达到攻击的目的。令,以达到攻击的目的。令,以达到攻击的目的。2023/2/5计算机系统安全原理与技术(第2版)31 缓冲区溢出缓冲区溢出1)1)什么是缓冲区溢出什么是缓冲区溢出什么是缓冲区溢出什么是缓冲区溢出程序是从内存低端向高端按顺序存放的,输入程序是从内存低端向高端按顺序存放的,输入程序是从内存低端向高端按顺序存放的,输入程序是从内存低端向高端按顺序存放的,输入的形

3、参按照自右至左的顺序入栈,而堆栈的生的形参按照自右至左的顺序入栈,而堆栈的生的形参按照自右至左的顺序入栈,而堆栈的生的形参按照自右至左的顺序入栈,而堆栈的生长方向与内存的生长方向相反,因此在堆栈中长方向与内存的生长方向相反,因此在堆栈中长方向与内存的生长方向相反,因此在堆栈中长方向与内存的生长方向相反,因此在堆栈中压入的数据超过预先给堆栈分配的容量时,就压入的数据超过预先给堆栈分配的容量时,就压入的数据超过预先给堆栈分配的容量时,就压入的数据超过预先给堆栈分配的容量时,就会出现堆栈溢出。会出现堆栈溢出。会出现堆栈溢出。会出现堆栈溢出。简单地说,缓冲区溢出的原因是由于字符串处简单地说,缓冲区溢出

4、的原因是由于字符串处简单地说,缓冲区溢出的原因是由于字符串处简单地说,缓冲区溢出的原因是由于字符串处理等函数没有对数组的越界加以监视和限制,理等函数没有对数组的越界加以监视和限制,理等函数没有对数组的越界加以监视和限制,理等函数没有对数组的越界加以监视和限制,结果覆盖了堆栈数据。缓冲区的溢出有各种不结果覆盖了堆栈数据。缓冲区的溢出有各种不结果覆盖了堆栈数据。缓冲区的溢出有各种不结果覆盖了堆栈数据。缓冲区的溢出有各种不同的类型。同的类型。同的类型。同的类型。2023/2/5计算机系统安全原理与技术(第2版)41 缓冲区溢出缓冲区溢出1)1)什么是缓冲区溢出什么是缓冲区溢出什么是缓冲区溢出什么是缓

5、冲区溢出一般而言,有以下几种缓冲区溢出攻击的方式:一般而言,有以下几种缓冲区溢出攻击的方式:一般而言,有以下几种缓冲区溢出攻击的方式:一般而言,有以下几种缓冲区溢出攻击的方式:1 1)攻击者可用任意数据覆盖堆栈中变量的内容。)攻击者可用任意数据覆盖堆栈中变量的内容。)攻击者可用任意数据覆盖堆栈中变量的内容。)攻击者可用任意数据覆盖堆栈中变量的内容。2 2)覆盖堆栈中保存的寄存器内容,导致程序崩溃。)覆盖堆栈中保存的寄存器内容,导致程序崩溃。)覆盖堆栈中保存的寄存器内容,导致程序崩溃。)覆盖堆栈中保存的寄存器内容,导致程序崩溃。3 3)把堆栈里面的返回地址覆盖,替换成一个自己)把堆栈里面的返回地

6、址覆盖,替换成一个自己)把堆栈里面的返回地址覆盖,替换成一个自己)把堆栈里面的返回地址覆盖,替换成一个自己指定的地方,而在那个地方,可以植入一些精心设指定的地方,而在那个地方,可以植入一些精心设指定的地方,而在那个地方,可以植入一些精心设指定的地方,而在那个地方,可以植入一些精心设计了的代码以达到攻击的目的。计了的代码以达到攻击的目的。计了的代码以达到攻击的目的。计了的代码以达到攻击的目的。2023/2/5计算机系统安全原理与技术(第2版)51 缓冲区溢出基础知识缓冲区溢出基础知识-寄存器寄存器32位位CPU所含有的寄存器有:所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2

7、个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP)1个标志寄存器(EFlags)2023/2/5计算机系统安全原理与技术(第2版)61 缓冲区溢出基础知识缓冲区溢出基础知识-寄存器寄存器4个数据寄存器(EAX、EBX、ECX和EDX):数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。2023/2/5计算机系统安全原理与技术(第2版)71 缓冲区溢出基础知识缓冲区溢出基础知识-寄存器寄存器2个变址寄存器(ESI和EDI):寄存器ESI、EDI称为变址寄存

8、器(IndexRegister),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。2023/2/5计算机系统安全原理与技术(第2版)81 缓冲区溢出基础知识缓冲区溢出基础知识-寄存器寄存器2个指针寄存器(ESP和EBP):它们主要用于访问堆栈内的存储单元,并且规定:EBP为基指针(BasePointer)寄存器,用它可直接存取堆栈中的数据;ESP为堆栈指针(StackPointer)寄存器,用它只可访问栈顶。2023/2/5计算机系统安全原理与技术(第2版)91 缓冲区溢出基础知识缓冲区溢出基础知识-寄存器寄存器6个段寄存

9、器(ES、CS、SS、DS、FS和GS):段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。CPU内部的段寄存器:ECS代码段寄存器(CodeSegmentRegister),EDS数据段寄存器(DataSegmentRegister),2023/2/5计算机系统安全原理与技术(第2版)101 缓冲区溢出基础知识缓冲区溢出基础知识-寄存器寄存器EES附加段寄存器(ExtraSegmentRegister),ESS堆栈段寄存器(StackSegmentRegister),EFS附加段寄

10、存器(ExtraSegmentRegister),EGS附加段寄存器(ExtraSegmentRegister),2023/2/5计算机系统安全原理与技术(第2版)111 缓冲区溢出基础知识缓冲区溢出基础知识-寄存器寄存器1个指令指针寄存器(EIP):指令指针EIP(InstructionPointer)是存放下次将要执行的指令在代码段的偏移量。121 缓冲区溢出基础知识缓冲区溢出基础知识-常用汇编指令常用汇编指令sub:减法指令第一个参数是被减数所在的寄存器,第二个参数是减数。add:加法指令第一个参数是被加数所在的寄存器,第二个参数是加数。注:sub和add指令常被用来操作堆栈,例如,如果

11、要在堆栈中分配四个四字节长整型数的空间,就没有必要调用四次push指令,简单调用subesp,16(16=4*4)就可以了,当然也可以调用add指令恢复堆栈。131 缓冲区溢出基础知识缓冲区溢出基础知识-常用汇编指令常用汇编指令push:入栈指令32位平台,push指令将一个32位的操作数压入堆栈,导致esp减4。因为esp指向栈顶,且堆栈是向小地址生长的,所以会导致esp减4。pop:出桟指令跟push指令对应,在32位平台,pop指令将一个32的数弹出堆栈,会导致esp加4.pop指令的参数一般是寄存器,将栈顶的数据弹出到寄存器。2023/2/5计算机系统安全原理与技术(第2版)141 缓

12、冲区溢出基础知识缓冲区溢出基础知识-常用汇编指令常用汇编指令call:调用函数call指令和jmp指令不同,call指令会先把下一条要执行的指令入栈,然后跳到被调用的函数的地方。所以,call指令相当于push+jmp。ret:从函数返回ret指令和jmp指令不同,ret指令会先把函数的返回地址出桟,再跳到返回的地址。所以,ret指令相当于pop+jmp。栈帧的一般结构2023/2/5计算机系统安全原理与技术(第2版)15local1 local2 localnEBPRET地址参数1 参数2参数n缓冲区溢出程序缓冲区溢出程序1 1(testtest)关注函数调用时堆栈变化voidfoo(int

13、m,intn)intlocal;local=m+n;voidmain()intt1=0 x1111;intt2=0 x2222;foo(t1,t2);2023/2/5计算机系统安全原理与技术(第2版)16缓冲区溢出方式缓冲区溢出的原因是由于字符串处理等函数(strcpy、strcmp)没有对数组的越界加以监视和限制,结果覆盖了堆栈数据。有以下几种缓冲区溢出攻击方式:1)攻击者可用任意数据覆盖堆栈中变量的内容;2)覆盖堆栈中保存的寄存器内容,导致程序崩溃;3)把堆栈里面的返回地址覆盖,替换成一个自己指定的地方,而在这个个地方,可以植入一些精心设计了的代码以达到攻击的目的。2023/2/5计算机系

14、统安全原理与技术(第2版)172023/2/5计算机系统安全原理与技术(第2版)18 缓冲区溢出程序缓冲区溢出程序2 22)2)覆盖堆栈中变量的内容(覆盖堆栈中变量的内容(覆盖堆栈中变量的内容(覆盖堆栈中变量的内容(7-2pass7-2pass)2023/2/5计算机系统安全原理与技术(第2版)19 缓冲区溢出程序缓冲区溢出程序3 33)3)覆盖堆栈中寄存器的内覆盖堆栈中寄存器的内覆盖堆栈中寄存器的内覆盖堆栈中寄存器的内容(容(容(容(7-3 7-3字符覆盖溢出)字符覆盖溢出)字符覆盖溢出)字符覆盖溢出)在栈上声明的各种变量的位在栈上声明的各种变量的位在栈上声明的各种变量的位在栈上声明的各种变

15、量的位置就紧靠着调用函数的返回置就紧靠着调用函数的返回置就紧靠着调用函数的返回置就紧靠着调用函数的返回地址。如果用户输入的数据地址。如果用户输入的数据地址。如果用户输入的数据地址。如果用户输入的数据越过边界就会将调用函数的越过边界就会将调用函数的越过边界就会将调用函数的越过边界就会将调用函数的返回地址覆盖,造成程序崩返回地址覆盖,造成程序崩返回地址覆盖,造成程序崩返回地址覆盖,造成程序崩溃。溃。溃。溃。缓冲区溢出程序缓冲区溢出程序缓冲区溢出程序缓冲区溢出程序4 4 4 4voidcome()printf(Success!);voidtest(inti)charbuf12;/用于发生溢出的数组i

16、ntaddr4;intk=(int)&i-(int)buf;intgo=(int)&come;addr0=(go24;addr1=(go24;addr2=(go24;addr3=go24;for(intj=0;j4;j+)bufk-j-1=addr3-j;voidmain()voidtest(inti);test(1);202023/2/5计算机系统安全原理与技术(第2版)212 格式化字符串漏洞格式化字符串漏洞格式化字符串的漏洞产生于数据输出函数中对输出格格式化字符串的漏洞产生于数据输出函数中对输出格格式化字符串的漏洞产生于数据输出函数中对输出格格式化字符串的漏洞产生于数据输出函数中对输出格

17、式解析的缺陷,其根源也是式解析的缺陷,其根源也是式解析的缺陷,其根源也是式解析的缺陷,其根源也是C C程序中不对数组边界进行程序中不对数组边界进行程序中不对数组边界进行程序中不对数组边界进行检查的缓冲区错误。检查的缓冲区错误。检查的缓冲区错误。检查的缓冲区错误。以以以以printf()printf()函数为例:函数为例:函数为例:函数为例:int printf(const char*format,agr1,agr2,int printf(const char*format,agr1,agr2,););formatformat的内容可能为的内容可能为的内容可能为的内容可能为(%s,%d,%p,%

18、x,%n(%s,%d,%p,%x,%n),将数据格式化后输出。这种函数的问题在于函数将数据格式化后输出。这种函数的问题在于函数将数据格式化后输出。这种函数的问题在于函数将数据格式化后输出。这种函数的问题在于函数printfprintf不能确定数据参数不能确定数据参数不能确定数据参数不能确定数据参数arg1,arg2,arg1,arg2,究竟在什么究竟在什么究竟在什么究竟在什么地方结束,也就是说,它不知道参数的个数。地方结束,也就是说,它不知道参数的个数。地方结束,也就是说,它不知道参数的个数。地方结束,也就是说,它不知道参数的个数。printfprintf函数只会根据函数只会根据函数只会根据函

19、数只会根据formatformat中的打印格式的数目依次打印堆中的打印格式的数目依次打印堆中的打印格式的数目依次打印堆中的打印格式的数目依次打印堆栈中参数栈中参数栈中参数栈中参数formatformat后面地址的内容。后面地址的内容。后面地址的内容。后面地址的内容。2023/2/5计算机系统安全原理与技术(第2版)222 格式化字符串漏洞格式化字符串漏洞1 1printfprintf中的缺陷中的缺陷中的缺陷中的缺陷第一个第一个第一个第一个printfprintf调用是正确的,调用是正确的,调用是正确的,调用是正确的,第二个调用中则缺少了输出第二个调用中则缺少了输出第二个调用中则缺少了输出第二个

20、调用中则缺少了输出数据的变量列表。那么第二数据的变量列表。那么第二数据的变量列表。那么第二数据的变量列表。那么第二个调用将引起编译错误还是个调用将引起编译错误还是个调用将引起编译错误还是个调用将引起编译错误还是照常输出数据?如果输出数照常输出数据?如果输出数照常输出数据?如果输出数照常输出数据?如果输出数据又将是什么类型的数据呢据又将是什么类型的数据呢据又将是什么类型的数据呢据又将是什么类型的数据呢?2023/2/5计算机系统安全原理与技术(第2版)232 格式化字符串漏洞格式化字符串漏洞1 1printfprintf中的缺陷中的缺陷中的缺陷中的缺陷2023/2/5计算机系统安全原理与技术(第

21、2版)242 格式化字符串漏洞格式化字符串漏洞2 2用用用用printfprintf读取内存数据读取内存数据读取内存数据读取内存数据输入输入输入输入“%p,%p,%p%p,%p,%p”,实际上可以读出栈中,实际上可以读出栈中,实际上可以读出栈中,实际上可以读出栈中的数据的数据的数据的数据2023/2/5计算机系统安全原理与技术(第2版)252 格式化字符串漏洞格式化字符串漏洞3 3用用用用printfprintf向内存写数据向内存写数据向内存写数据向内存写数据在格式化控制符中,有一种鲜为人知的控制符在格式化控制符中,有一种鲜为人知的控制符在格式化控制符中,有一种鲜为人知的控制符在格式化控制符中

22、,有一种鲜为人知的控制符%n%n。这个控制符用于把当前输出的所有数据。这个控制符用于把当前输出的所有数据。这个控制符用于把当前输出的所有数据。这个控制符用于把当前输出的所有数据的长度写回一个变量中去的长度写回一个变量中去的长度写回一个变量中去的长度写回一个变量中去2023/2/5计算机系统安全原理与技术(第2版)262 格式化字符串漏洞格式化字符串漏洞3 3用用用用printfprintf向内存写数据向内存写数据向内存写数据向内存写数据2023/2/5计算机系统安全原理与技术(第2版)272 格式化字符串漏洞格式化字符串漏洞3 3用用用用printfprintf向内存写数据向内存写数据向内存写

23、数据向内存写数据这是因为程序中将变量这是因为程序中将变量这是因为程序中将变量这是因为程序中将变量numnum的地址的地址的地址的地址压入堆栈,作为压入堆栈,作为压入堆栈,作为压入堆栈,作为printf()printf()的第二个参的第二个参的第二个参的第二个参数,数,数,数,“%n”%n”会将打印总长度保存到会将打印总长度保存到会将打印总长度保存到会将打印总长度保存到对应参数的地址中去。打印结果见对应参数的地址中去。打印结果见对应参数的地址中去。打印结果见对应参数的地址中去。打印结果见图图图图7-257-25,0 x6161610 x616161的十进制值为的十进制值为的十进制值为的十进制值为

24、16337718731633771873,按照,按照,按照,按照DWORDDWORD类型,类型,类型,类型,其值长度为其值长度为其值长度为其值长度为2020。2023/2/5计算机系统安全原理与技术(第2版)283 安全安全编编程程程序的正确性是由程序的编写者来保证的。为了避免程序的正确性是由程序的编写者来保证的。为了避免程序的正确性是由程序的编写者来保证的。为了避免程序的正确性是由程序的编写者来保证的。为了避免出现缓冲区溢出的漏洞,在编写程序的一开始就必须出现缓冲区溢出的漏洞,在编写程序的一开始就必须出现缓冲区溢出的漏洞,在编写程序的一开始就必须出现缓冲区溢出的漏洞,在编写程序的一开始就必须

25、将安全因素考虑在内。将安全因素考虑在内。将安全因素考虑在内。将安全因素考虑在内。忽略了编码的安全性大致来说有两种。忽略了编码的安全性大致来说有两种。忽略了编码的安全性大致来说有两种。忽略了编码的安全性大致来说有两种。第一种是直接进行设计、编写、测试,然后发布,忘第一种是直接进行设计、编写、测试,然后发布,忘第一种是直接进行设计、编写、测试,然后发布,忘第一种是直接进行设计、编写、测试,然后发布,忘记了程序的安全性。或者设计者自认为已经考虑到了,记了程序的安全性。或者设计者自认为已经考虑到了,记了程序的安全性。或者设计者自认为已经考虑到了,记了程序的安全性。或者设计者自认为已经考虑到了,而做出了

26、错误的设计。而做出了错误的设计。而做出了错误的设计。而做出了错误的设计。第二种错误是在程序完成以后才考虑添加安全因素,第二种错误是在程序完成以后才考虑添加安全因素,第二种错误是在程序完成以后才考虑添加安全因素,第二种错误是在程序完成以后才考虑添加安全因素,在已经完成了的功能外包裹上安全功能。这样做不仅在已经完成了的功能外包裹上安全功能。这样做不仅在已经完成了的功能外包裹上安全功能。这样做不仅在已经完成了的功能外包裹上安全功能。这样做不仅要付出非常昂贵的代价,更重要的是添加的安全功能要付出非常昂贵的代价,更重要的是添加的安全功能要付出非常昂贵的代价,更重要的是添加的安全功能要付出非常昂贵的代价,

27、更重要的是添加的安全功能有可能会影响已经实现的功能,甚至会造成某些功能有可能会影响已经实现的功能,甚至会造成某些功能有可能会影响已经实现的功能,甚至会造成某些功能有可能会影响已经实现的功能,甚至会造成某些功能的不可实现。的不可实现。的不可实现。的不可实现。2023/2/5计算机系统安全原理与技术(第2版)293 安全安全编编程程1 1C C语言的安全编程语言的安全编程语言的安全编程语言的安全编程(1 1)对内存访问错误的检测和修改。)对内存访问错误的检测和修改。)对内存访问错误的检测和修改。)对内存访问错误的检测和修改。(2 2)对于缓冲区溢出的覆盖错误,可由程序员预设缓)对于缓冲区溢出的覆盖

28、错误,可由程序员预设缓)对于缓冲区溢出的覆盖错误,可由程序员预设缓)对于缓冲区溢出的覆盖错误,可由程序员预设缓冲区的大小。冲区的大小。冲区的大小。冲区的大小。(3 3)指针引用是)指针引用是)指针引用是)指针引用是C C中最灵活、最核心、最复杂,也是中最灵活、最核心、最复杂,也是中最灵活、最核心、最复杂,也是中最灵活、最核心、最复杂,也是最易出错的部分。最易出错的部分。最易出错的部分。最易出错的部分。(4 4)出于保密的需要,在程序设计时要涉及到创建密)出于保密的需要,在程序设计时要涉及到创建密)出于保密的需要,在程序设计时要涉及到创建密)出于保密的需要,在程序设计时要涉及到创建密钥或密码等问

29、题,具体到钥或密码等问题,具体到钥或密码等问题,具体到钥或密码等问题,具体到C C程序设计中则是随机数的选程序设计中则是随机数的选程序设计中则是随机数的选程序设计中则是随机数的选取和使用问题。取和使用问题。取和使用问题。取和使用问题。2023/2/5计算机系统安全原理与技术(第2版)303 安全安全编编程程1 1C C语言的安全编程语言的安全编程语言的安全编程语言的安全编程(5 5)C C语言没有提供异常处理机制,其异常检测处理语言没有提供异常处理机制,其异常检测处理语言没有提供异常处理机制,其异常检测处理语言没有提供异常处理机制,其异常检测处理是由程序员预设完成的。是由程序员预设完成的。是由

30、程序员预设完成的。是由程序员预设完成的。微软的微软的微软的微软的Michael HowardMichael Howard与与与与David LeBlancDavid LeBlanc所合著的所合著的所合著的所合著的“Writing Secure CodeWriting Secure Code”(编写安全的代码编写安全的代码编写安全的代码编写安全的代码)一书中集一书中集一书中集一书中集中讨论了编写安全代码的方方面面,读者可进一步阅中讨论了编写安全代码的方方面面,读者可进一步阅中讨论了编写安全代码的方方面面,读者可进一步阅中讨论了编写安全代码的方方面面,读者可进一步阅读。读。读。读。2023/2/5

31、计算机系统安全原理与技术(第2版)317.4 软件保护软件保护7.4.1 软件技术保护的基本原则软件技术保护的基本原则7.4.2 密码保护技术密码保护技术7.4.3 电子注册保护技术电子注册保护技术7.4.4 结合硬件的保护技术结合硬件的保护技术7.4.5 基于数字签名的保护技术基于数字签名的保护技术7.4.6 软件水印软件水印7.4.7 软件的反动态跟踪技术软件的反动态跟踪技术2023/2/5计算机系统安全原理与技术(第2版)327.4.1 安全安全编编程程软件技术保护的基本原则软件技术保护的基本原则软件技术保护的基本原则软件技术保护的基本原则(1 1)实用性。用户购买的软件,当然会频繁)实

32、用性。用户购买的软件,当然会频繁)实用性。用户购买的软件,当然会频繁)实用性。用户购买的软件,当然会频繁地使用,对合法用户来说,如果在使用或安装地使用,对合法用户来说,如果在使用或安装地使用,对合法用户来说,如果在使用或安装地使用,对合法用户来说,如果在使用或安装过程中加入太多的障碍,甚至需要改变计算机过程中加入太多的障碍,甚至需要改变计算机过程中加入太多的障碍,甚至需要改变计算机过程中加入太多的障碍,甚至需要改变计算机的硬件结构,会影响用户购买的积极性。除非的硬件结构,会影响用户购买的积极性。除非的硬件结构,会影响用户购买的积极性。除非的硬件结构,会影响用户购买的积极性。除非是功能上的需要,

33、或是特定用户群的强制性要是功能上的需要,或是特定用户群的强制性要是功能上的需要,或是特定用户群的强制性要是功能上的需要,或是特定用户群的强制性要求,任何纯为加密而对用户提出的一些硬件上求,任何纯为加密而对用户提出的一些硬件上求,任何纯为加密而对用户提出的一些硬件上求,任何纯为加密而对用户提出的一些硬件上的要求,都是不可接受的。况且,目前大多数的要求,都是不可接受的。况且,目前大多数的要求,都是不可接受的。况且,目前大多数的要求,都是不可接受的。况且,目前大多数计算机用户都不敢自行改变计算机的硬件。计算机用户都不敢自行改变计算机的硬件。计算机用户都不敢自行改变计算机的硬件。计算机用户都不敢自行改

34、变计算机的硬件。2023/2/5计算机系统安全原理与技术(第2版)337.4.1 安全安全编编程程软件技术保护的基本原则软件技术保护的基本原则软件技术保护的基本原则软件技术保护的基本原则2 2)局部可共享特性。相当多的计算机用户,)局部可共享特性。相当多的计算机用户,)局部可共享特性。相当多的计算机用户,)局部可共享特性。相当多的计算机用户,都需要一定范围内非商业目的的软件交流,或都需要一定范围内非商业目的的软件交流,或都需要一定范围内非商业目的的软件交流,或都需要一定范围内非商业目的的软件交流,或学术性,或社交性,必须满足他们这方面的要学术性,或社交性,必须满足他们这方面的要学术性,或社交性

35、,必须满足他们这方面的要学术性,或社交性,必须满足他们这方面的要求。不能交流的软件是没有活力的,也是难以求。不能交流的软件是没有活力的,也是难以求。不能交流的软件是没有活力的,也是难以求。不能交流的软件是没有活力的,也是难以推广的。当然,这种交流不应该是大范围的、推广的。当然,这种交流不应该是大范围的、推广的。当然,这种交流不应该是大范围的、推广的。当然,这种交流不应该是大范围的、无限制性的。无限制性的。无限制性的。无限制性的。3 3)可重复使用性。计算机软件被装在计算机)可重复使用性。计算机软件被装在计算机)可重复使用性。计算机软件被装在计算机)可重复使用性。计算机软件被装在计算机上,难免被

36、损坏而需要重新安装,如果因为加上,难免被损坏而需要重新安装,如果因为加上,难免被损坏而需要重新安装,如果因为加上,难免被损坏而需要重新安装,如果因为加密而使买来的计算机软件不能重新安装,便可密而使买来的计算机软件不能重新安装,便可密而使买来的计算机软件不能重新安装,便可密而使买来的计算机软件不能重新安装,便可能给用户带来不必要的损失。能给用户带来不必要的损失。能给用户带来不必要的损失。能给用户带来不必要的损失。2023/2/5计算机系统安全原理与技术(第2版)347.4.2 密密码码保保护护技技术术密码保护技术是在每一件软件产品中都附带一密码保护技术是在每一件软件产品中都附带一密码保护技术是在

37、每一件软件产品中都附带一密码保护技术是在每一件软件产品中都附带一个密码,在软件安装和运行过程中的某些关键个密码,在软件安装和运行过程中的某些关键个密码,在软件安装和运行过程中的某些关键个密码,在软件安装和运行过程中的某些关键环节要求用户输入该密码,只有用户输入正确环节要求用户输入该密码,只有用户输入正确环节要求用户输入该密码,只有用户输入正确环节要求用户输入该密码,只有用户输入正确的密码,软件才能正确地安装和正常地运行。的密码,软件才能正确地安装和正常地运行。的密码,软件才能正确地安装和正常地运行。的密码,软件才能正确地安装和正常地运行。优点是:简便易行,且无附加成本,是目前很优点是:简便易行

38、,且无附加成本,是目前很优点是:简便易行,且无附加成本,是目前很优点是:简便易行,且无附加成本,是目前很流行的保护方法。流行的保护方法。流行的保护方法。流行的保护方法。缺点是:由于其密码相对固定,要保证合法用缺点是:由于其密码相对固定,要保证合法用缺点是:由于其密码相对固定,要保证合法用缺点是:由于其密码相对固定,要保证合法用户获得有效的密码,就不能防止盗版者通过合户获得有效的密码,就不能防止盗版者通过合户获得有效的密码,就不能防止盗版者通过合户获得有效的密码,就不能防止盗版者通过合法途径获取密码后再进行非法复制流通。法途径获取密码后再进行非法复制流通。法途径获取密码后再进行非法复制流通。法途

39、径获取密码后再进行非法复制流通。2023/2/5计算机系统安全原理与技术(第2版)357.4.2 密密码码保保护护技技术术在软件载体上所附的序列号并不能直接输入,对软件在软件载体上所附的序列号并不能直接输入,对软件在软件载体上所附的序列号并不能直接输入,对软件在软件载体上所附的序列号并不能直接输入,对软件实现解密,而只能将其作为该软件的身份识别标志,实现解密,而只能将其作为该软件的身份识别标志,实现解密,而只能将其作为该软件的身份识别标志,实现解密,而只能将其作为该软件的身份识别标志,并通过向软件生产者提供该标识,以换取针对该软件并通过向软件生产者提供该标识,以换取针对该软件并通过向软件生产者

40、提供该标识,以换取针对该软件并通过向软件生产者提供该标识,以换取针对该软件的解密密码的解密密码的解密密码的解密密码(即授权号即授权号即授权号即授权号),便可以限制该软件的序列号,便可以限制该软件的序列号,便可以限制该软件的序列号,便可以限制该软件的序列号直接被盗版流通,即使发生了盗版行为,也可能通过直接被盗版流通,即使发生了盗版行为,也可能通过直接被盗版流通,即使发生了盗版行为,也可能通过直接被盗版流通,即使发生了盗版行为,也可能通过该授权过程来追访盗版者的踪迹。该授权过程来追访盗版者的踪迹。该授权过程来追访盗版者的踪迹。该授权过程来追访盗版者的踪迹。可以在授权系统中对每一份软件的可授权次数加

41、以适可以在授权系统中对每一份软件的可授权次数加以适可以在授权系统中对每一份软件的可授权次数加以适可以在授权系统中对每一份软件的可授权次数加以适当的限制。当的限制。当的限制。当的限制。为了更进一步防范盗版者在购买正版软件后,先通过为了更进一步防范盗版者在购买正版软件后,先通过为了更进一步防范盗版者在购买正版软件后,先通过为了更进一步防范盗版者在购买正版软件后,先通过正当途径获取授权号,然后再将授权号随同盗版软件正当途径获取授权号,然后再将授权号随同盗版软件正当途径获取授权号,然后再将授权号随同盗版软件正当途径获取授权号,然后再将授权号随同盗版软件一起复制传播,可以考虑在授权号中加入授权日期信一起

42、复制传播,可以考虑在授权号中加入授权日期信一起复制传播,可以考虑在授权号中加入授权日期信一起复制传播,可以考虑在授权号中加入授权日期信息。那样,该授权号可以预先设定其有效时间,如果息。那样,该授权号可以预先设定其有效时间,如果息。那样,该授权号可以预先设定其有效时间,如果息。那样,该授权号可以预先设定其有效时间,如果超过了规定的日期后,该授权号即自行失效。超过了规定的日期后,该授权号即自行失效。超过了规定的日期后,该授权号即自行失效。超过了规定的日期后,该授权号即自行失效。2023/2/5计算机系统安全原理与技术(第2版)367.4.3 电电子注册保子注册保护护技技术术用户可在网上获得使用采用

43、该技术加密的软件,用户可在网上获得使用采用该技术加密的软件,用户可在网上获得使用采用该技术加密的软件,用户可在网上获得使用采用该技术加密的软件,这时该软件一般是功能受限制,或者使用时间这时该软件一般是功能受限制,或者使用时间这时该软件一般是功能受限制,或者使用时间这时该软件一般是功能受限制,或者使用时间受限制,或者经常出现要求注册的画面等。用受限制,或者经常出现要求注册的画面等。用受限制,或者经常出现要求注册的画面等。用受限制,或者经常出现要求注册的画面等。用户使用后觉得满意,可按要求进行注册,注册户使用后觉得满意,可按要求进行注册,注册户使用后觉得满意,可按要求进行注册,注册户使用后觉得满意

44、,可按要求进行注册,注册法因开发商而异。法因开发商而异。法因开发商而异。法因开发商而异。2023/2/5计算机系统安全原理与技术(第2版)377.4.3 电电子注册保子注册保护护技技术术下面给出下面给出下面给出下面给出4 4种注册法:种注册法:种注册法:种注册法:1 1)用户交费之后,软件公司会告诉用户一个地址、用户名和)用户交费之后,软件公司会告诉用户一个地址、用户名和)用户交费之后,软件公司会告诉用户一个地址、用户名和)用户交费之后,软件公司会告诉用户一个地址、用户名和密码,然后用户去那个地址就可以下载到正式版。密码,然后用户去那个地址就可以下载到正式版。密码,然后用户去那个地址就可以下载

45、到正式版。密码,然后用户去那个地址就可以下载到正式版。2 2)用户交费之后,软件公司会通过)用户交费之后,软件公司会通过)用户交费之后,软件公司会通过)用户交费之后,软件公司会通过E-mailE-mail传给用户一个文件,传给用户一个文件,传给用户一个文件,传给用户一个文件,用户把这个文件复制到软件安装的目录之后,就成为正式用用户把这个文件复制到软件安装的目录之后,就成为正式用用户把这个文件复制到软件安装的目录之后,就成为正式用用户把这个文件复制到软件安装的目录之后,就成为正式用户了。一般来说,这个文件很小户了。一般来说,这个文件很小户了。一般来说,这个文件很小户了。一般来说,这个文件很小(几

46、百个几百个几百个几百个BytesBytes和几和几和几和几K)K)。这些。这些。这些。这些文件一般来说扩展名是文件一般来说扩展名是文件一般来说扩展名是文件一般来说扩展名是*.reg(.reg(注册表文件注册表文件注册表文件注册表文件)或或或或*.1ic.1ic。3 3)软件给出该软件的序列号,用户交费时把这一序列号一起)软件给出该软件的序列号,用户交费时把这一序列号一起)软件给出该软件的序列号,用户交费时把这一序列号一起)软件给出该软件的序列号,用户交费时把这一序列号一起寄给软件提供商或开发商,软件开发商利用注册机寄给软件提供商或开发商,软件开发商利用注册机寄给软件提供商或开发商,软件开发商利

47、用注册机寄给软件提供商或开发商,软件开发商利用注册机(软件软件软件软件)产生产生产生产生该软件的注册号寄给用户即可。该软件的注册号寄给用户即可。该软件的注册号寄给用户即可。该软件的注册号寄给用户即可。4 4)用户按要求填写个人资料,交费时把这份个人资料一起寄)用户按要求填写个人资料,交费时把这份个人资料一起寄)用户按要求填写个人资料,交费时把这份个人资料一起寄)用户按要求填写个人资料,交费时把这份个人资料一起寄给软件提供商或开发商,软件开发商利用注册机给软件提供商或开发商,软件开发商利用注册机给软件提供商或开发商,软件开发商利用注册机给软件提供商或开发商,软件开发商利用注册机(软件软件软件软件

48、)产生该产生该产生该产生该软件的注册号寄给用户即可。软件的注册号寄给用户即可。软件的注册号寄给用户即可。软件的注册号寄给用户即可。2023/2/5计算机系统安全原理与技术(第2版)387.4.3 电电子注册保子注册保护护技技术术电子注册保护方式的优点是:不需要任何硬件电子注册保护方式的优点是:不需要任何硬件电子注册保护方式的优点是:不需要任何硬件电子注册保护方式的优点是:不需要任何硬件或软盘,方便易用,价格低廉。或软盘,方便易用,价格低廉。或软盘,方便易用,价格低廉。或软盘,方便易用,价格低廉。电子注册保护方式的缺点是:网上付费方式尚电子注册保护方式的缺点是:网上付费方式尚电子注册保护方式的缺

49、点是:网上付费方式尚电子注册保护方式的缺点是:网上付费方式尚未标准化,能够接受的人不未标准化,能够接受的人不未标准化,能够接受的人不未标准化,能够接受的人不2023/2/5计算机系统安全原理与技术(第2版)397.4.4 结结合硬件的保合硬件的保护护技技术术1 1“钥匙盘钥匙盘钥匙盘钥匙盘”2 2光盘光盘光盘光盘3 3ROMROM片片片片4 4软件狗软件狗软件狗软件狗2023/2/5计算机系统安全原理与技术(第2版)407.4.5 基于数字基于数字签签名的保名的保护护技技术术一种签名方案,该系统由三部分组成:一种签名方案,该系统由三部分组成:一种签名方案,该系统由三部分组成:一种签名方案,该系

50、统由三部分组成:1 1)签证中心。中心的任务是对每个软件供应商的)签证中心。中心的任务是对每个软件供应商的)签证中心。中心的任务是对每个软件供应商的)签证中心。中心的任务是对每个软件供应商的资格进行审查,审查合格者,发给签证密钥。资格进行审查,审查合格者,发给签证密钥。资格进行审查,审查合格者,发给签证密钥。资格进行审查,审查合格者,发给签证密钥。2 2)软件供应商。发行软件的售主或个人。)软件供应商。发行软件的售主或个人。)软件供应商。发行软件的售主或个人。)软件供应商。发行软件的售主或个人。3 3)用户。从软件供应商那里购买软件的顾客。)用户。从软件供应商那里购买软件的顾客。)用户。从软件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com