软件设计师笔记:系统安全分析与设计

一、信息系统安全属性

在这里插入图片描述

二、对称加密与非对称加密

2.1 对称加密技术

在这里插入图片描述
对称加密指的是,在加密和解密过程中用的密钥是完全一样的。优点是速度快。

2.2 非对称加密技术

在这里插入图片描述
前提:每个人有自己的私钥,且不能传给任何人,只有自己能够拥有。

假设:甲有公钥A和私钥a,乙有公钥B和私钥b,甲发送给乙文件,且文件要加密

过程:只能乙将公钥发送给甲,甲用乙的公钥加密文件发送给乙,乙再用自己的私钥打开。

注意:非对称加密技术加密时间有甚者能达到对称加密所需时间的数千倍,故不适合加密大文件,可采用对称加密文件并且用非对称加密对称密钥的方式进行加密操作。

三、信息摘要

在这里插入图片描述
类似研究生数学建模竞赛提交作品时,生成MD5码提交,再把作品提交,如果主办方收到的作品产生的MD5和之前学生提交的MD5相同,则说明作品在比赛时间截止后没有被篡改。

信息摘要的算法为单向散列函数(单向Hash函数),可以把明文形成摘要,但是无法反向得到明文,摘要是具有破坏性的加密手法。

四、数字签名

在这里插入图片描述
前面讲非对称加密技术时提到,用谁的公钥加密,就要用谁的私钥解密;用谁的私钥加密,就要用谁的公钥解密。在这一基础上,我们知道私钥只能自己拥有,相当于每个人一张身份证,而且假定任何人都不能从你身上拿走这个身份证。那么如果用私钥a加密,则只能用相应的公钥A解密,这就验证了加密者一定是私钥a的持有者。这就是数字签名的原理。

之所以成为数字签名而不是私钥加密,是因为用了加密的手段但是却没有任何加密的效果,原因是用私钥加密,公钥却可以被分享给任何人,这也就是说,任何人只要拿到了对应的公钥就可以解密,毫无加密的作用。

正因为数字签名不具有加密作用,所以数字签名干脆不作对加密信息还原的打算,毕竟非对称加密技术不适合加密大文件,所以数字签名技术和信息摘要结合起来了,先将信息产生对应的信息摘要,再将该信息摘要用私钥a加密,如此一来,该信息就被印上了不可磨灭的“a”的印记,数字签名不可抵赖。

五、数字信封与PGP

在这里插入图片描述
接收方用自己的私钥可以打开对方用自己公钥加密的原文,这类似于信封,所以称为电子信封。

PGP是一种协议可用于电子邮件加密,也可用于文件存储加密。

练习:
在这里插入图片描述

六、各个网络层次的安全保障

在这里插入图片描述
互联网发展壮大有一定偶然因素,当时没有人想到互联网会发展到这么极致,所以HTTP协议族里协议都是走的明文形式,导致整个协议在安全性是欠缺考虑。

Https被提出来,原因是原有的Http走的是明文传输,网页的明文传输一旦被截获,安全隐患是非常大的。所以就把HTTP与SSL安全协议结合起来形成了Https。平常登陆网页一般都使用HTTPS。

物理层的手段一般是隔离和屏蔽,比如科研院所的墙壁最好是做成可屏蔽信号的,将实验室内的无线信号与外界屏蔽。隔离方面:比如民用网,公安专网,军用网络相互是隔离的。

数据链路层的PPTP和L2TP是两种隧道协议,隧道协议基本理念是在开放的互联网之上开辟安全隧道,传输不会被解惑,通过加密机制实现。

网络层典型安全保障之一是防火墙技术,有软件性质,也有软硬件结合的性质。防火墙有多种类型。IPSec可以把原有的IP包加密再传。

传输层:TLS是标准的传输层安全协议,SET是面向电子商务的安全协议。

特殊地,SSL跨过了多个层次(传输,会话,表示,应用)。

应用层:PGP、Https,PGP既可以用于邮件加密,也可以文件加密。

七、网络威胁与攻击

在这里插入图片描述
在这里插入图片描述

八、防火墙技术

在这里插入图片描述

网络及防火墙工作层次低,效率高,应用层反之。

网络层只检查IP头信息。应用级要把信息拆出来检查。

屏蔽子网防火墙是安全性最高的防火墙。基本思路是弥补防火墙的特点“放外不妨内”。屏蔽子网防火墙在外部网络和内部网络之间建立了被屏蔽子网区,也成为隔离区或DMZ(非军事区),一般存放放对外服务的服务器如web服务器。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
{************************************************************** 浅谈软件安全设计(一) code by 黑夜彩虹 & vxin with almost pure delphi 网站:http://soft.eastrise.net 2007-03-07 --- 转载时请保留作者信息。 **************************************************************} 此CM的设计模式: 1、插入一些花指令 2、写了一些代码迷惑Cracker 3、有简单的Anti_DEDE 和检测调试器 话不多说,请看以下代码: unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,strutils; Const C1= 17856; C2= 23589; type TForm1 = class(TForm) Image1: TImage; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Edit2: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Procedure Anti_DeDe();//检测DEDE反编译器 var DeDeHandle:THandle; i:integer; begin DeDeHandle:=FindWindow(nil,chr($64)+chr($65)+chr($64)+chr($65)); if DeDeHandle0 then begin For i:=1 to 4500 do SendMessage(DeDeHandle,WM_CLOSE,0,0); end; end; Function ABC42():Boolean; //检测调试器; var YInt,NInt:Integer; begin asm mov eax,fs:[30h] movzx eax,byte ptr[eax+2h] or al,al jz @No jnz @Yes @No: mov NInt,1 @Yes: Mov YInt,1 end; if YInt=1 then Result:=True; if NInt=1 then Result:=False; end; function EncryptModule(SourceStr:String;Key:Word;N:Integer):String; var //加密函数 I:Integer; begin SetLength(Result,Length(SourceStr));//利用SetLength函数指定密文长度 //对每一个索引元素进行变换 for I:=1 to Length(SourceStr) do begin Result[I]:=Char(byte(SourceStr[I]) xor (Key Shr N)); Key:= (byte(Result[I]) + Key)*C1+C2; end; end; //==========以下是549的函数,据说没有暴破点,顺便试一试 //========函数作用:动态改变程序运行罗辑 function GetEIP: Integer;//自动生成address的方法 asm mov eax, [esp]; sub eax, 5; //call GetEIP占用5字节 end; function PatchOneItem(PatchItem: String): Boolean; var PatchAddress: Integer; PatchLength: DWord; PatchData: Pointer; PatchDataStr: String; i: Integer; PatchByte: Byte; PID, PHandle: THandle; WriteCount: DWord; begin Result := False; if Length(PatchItem) < 11 then Exit; PatchAddress := StrToInt(\'0x\' + LeftStr(PatchItem, 8)); for i := 1 to Length(PatchItem) do begin if PatchItem[i] \' \' then PatchDataStr := PatchDataStr + PatchItem[i]; end; PatchLength := (Length(PatchDataStr) - 9) div 2; GetMem(PatchData, PatchLength); try for i := 0 to PatchLength - 1 do begin PatchByte := StrToInt(\'0x\'+PatchDataStr[10 + i * 2] + PatchDataStr[10 + i * 2 + 1]); Byte(Pointer(Integer(PatchData) + i)^) := PatchByte; end; GetWindowThreadProcessId(Application.Handle, PID); PHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID); WriteProcessMemory(PHandle, Pointer(PatchAddress), PatchData, PatchLength, WriteCount); CloseHandle(PHandle); finally FreeMem(PatchData, PatchLength); end; Result := PatchLength = WriteCount; end; procedure Patch(PatchFile: String); var PatchItems: TStrings; PatchIndex: Integer; begin if not FileExists(PatchFile) then Exit; PatchItems := TStringList.Create; try PatchItems.LoadFromFile(PatchFile); for PatchIndex := 0 to PatchItems.Count - 1 do begin PatchOneItem(PatchItems[PatchIndex]); end; finally PatchItems.Free; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Anti_DeDe; //检测DEDE,检测到关闭它。 if ABC42 then ExitProcess(0); //检测调试器,终止。 end; procedure TForm1.Button1Click(Sender: TObject); //注册按纽,开始检测 begin //========在这里插入一些花指令 asm jz @Start jnz @Start db 0E8h, 24h, 0, 0 ; db 0, 8Bh, 44h, 24h db 4, 8Bh, 0, 3Dh db 4, 0, 0, 80h db 75h, 8, 8Bh, 64h db 24h, 8, 0EBh, 4 db 58h, 0EBh, 0Ch, 0E9h db 64h, 8Fh, 5, 0 db 0, 0, 0, 74h db 0F3h, 75h, 0F1h, 0EBh db 24h, 64h, 0FFh, 35h db 0, 0, 0, 0 db 0EBh, 12h, 0FFh, 9Ch db 74h, 3, 75h, 1 db 0E9h, 81h, 0Ch, 24h db 0, 1, 0, 0 db 9Dh, 90h, 0EBh, 0F4h db 64h, 89h, 25h, 0 db 0, 0, 0, 0EBh db 0E6h db 0EBh, 1, 0Fh, 31h ; db 0F0h, 0EBh, 0Ch, 33h db 0C8h, 0EBh, 3, 0EBh db 9, 0Fh, 59h, 74h db 5, 75h, 0F8h, 51h db 0EBh, 0F1h db 0B9h, 4, 0, 0 ; @Start: end; if length(edit2.Text)>3 then //比较大于3位 begin //============再写一些骗Cracker if edit2.Text=EncryptModule(Edit1.Text,12345,10) then begin showmessage(\'请重启本软件。\'); //=======还可以再写一些记号,这里我就不写了 end; PatchOneItem(edit2.Text); //真正的比较 showmessage(\'ok\'); //弹出OK对话框 end; end; end.  //====附件为CM,会破解的兄弟可以试试其强度....

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值