软件设计师——系统安全分析与设计

博客介绍了信息系统安全属性,包括保密性、完整性等。阐述对称与非对称加密技术,如DES、RSA等,还提及信息摘要、数字签名、数字信封与PGP。同时列举网络安全威胁,如重放攻击、拒绝服务等,最后介绍防火墙的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信息系统安全属性

安全属性:
1.保密性:最小授权原则,防暴露,信息加密,物理加密
2.完整性:安全协议,校验码,密码校验,数字签名,公证
3.可用性:综合保障(IP过滤, 业务流控制,路由选择控制,审计跟踪)
4.不可抵赖性:数字签名

对称加密技术

对称加密技术:加密和解密时使用密钥是完全相同的。

常见的对称加密算法:
1.DES:采用的手段主要是替换+移位的方式,(替换就类似于是对应这一张密文对应表,一一对应。类似于抗战片中的报文解密,只需要拿到密码本就能进行解密。),密钥长度位56位
DES加密可以分为数据流和数据块两种加密方式
2.3DES(三重DES):对DES用法的复杂化,安全性有所加强,用到了两个不同的 56 位的密钥(K1,K2)
例如:
加密:K1加密->K2解密->K1加密
解密:K1解密->K2加密->K1解密
3.AES
4.RC-5
5.IDEA

优点:加密速度快,效率高。
缺点:加密强度不高。(密钥长度短)密钥的分发困难。

非对称加密技术

非对称加密技术:加密和解密时使用的密钥是完全不相同的。
例如:
情况1:用公钥进行加密,用私钥解密。
情况2:用私钥加密,用公钥解密。
不能用相同的公钥加密用先相同的公钥解密。

常用的非对称加密技术:
1.RSA:512位(或1024位)密钥,计算量极大,难破解
2.Elgamal
3.ECC
4.其他非对称算法包括:背包算法,Rabin,D-H

针对PDF和word加密属于典型的对称加密技术。

信息摘要

单向散列函数(又称为单向Hash函数),固定长度的散列值。(即明文可以通过摘要算法算出摘要的结果,但反过来不能通过摘要算法得出明文)

常用的消息摘要算法由MD5,SHA等,市场上广泛使用的MD5,SHA算法的散列值分别位128位和160位,由于SHA通常采用的密钥长度较长,因此安全性高于MD5 。
常见的MD5解密,只是因为后台记录了一个庞大的数据库(只能记录部分,所以并不能解密所有MD5加密后的值)。

数字签名

数字签名技术主要是一种防抵赖的技术。(没有保密的职能,只有识别身份的职能。)
两个过程:数字签名过程,数字签名验证过程。

通常是将信息摘要和数字签名技术结合起来使用。

数字信封与PGP

数字信封
发送方将原文用对称密钥加密传输,而将对称密钥用接收方公钥加密发送给对方。
(将原文用对称密钥的方式传输,然后用非对称密钥的方式将密钥传送给对方)
接收方收到电子信封,用自己的私钥解密信封,取出对称密钥得原文。

PGP
PGP是一种协议,既可用于电子邮件,也可以用于文件存储。
PGP承认两种证书格式:PGP证书和X.509证书
PGP证书需要包含的信息有:PGP版本号,证书持有者的公钥,证书持有者的信息,证书持有者的数字签名,证书的有效期,密钥首选的对称加密算法。
X.509证书需要包含的信息有:证书版本,证书的序列号,签名算法标识,证书有效期,证书发行商名称,证书主体名,主体公钥信息,发布者的数字签名。

例——设计邮件加密系统
要求邮件以加密方式传输,邮件最大附件内容可达500MB,发送者不可抵赖,若邮件被第三方截获,第三方无法篡改。
(即主要涉及到的技术有 加密解密技术,对称加密,数字签名,信息摘要技术)
a.发送方正文用对称密钥加密发送,密钥用非对称密钥发送(接收方的公钥加密)
b.验证数字签名
c.形成摘要,把数字签名之后的摘要发送给接收方,接收方通过解密签名得到邮件摘要和邮件正文中的邮件摘要做对比。

网络安全——各个网络层次的安全保障

在这里插入图片描述

网络安全——网络威胁与攻击

威胁分类:
1.重放攻击(ARP):又叫ARP欺骗攻击,所截获的某次合法的通信数据拷贝,出于非法的目的而被重新发送。
2.拒绝服务(DOS):破坏系统的可用性,合法用户无法合法的使用合法资源。对信息或其他资源的合法访问被无条件地阻止。
3.窃听:用各种可能的合法或非法的手段窃取系统中的信息资源和敏感信息。例如对通信线路中传输的信号进行搭线监听,或者利用通信设备在工作过程中产生的电磁泄露截取有用信息等。
4.业务流分析:通过对系统进行长期监听,利用统计分析方法对诸如通信频度,通信的信息流向,信息总量的变化等参数进行研究,从而发现有价值的信息和规律。(和窃听的最主要的区别就是 长期!!!)
5.信息泄露:信息被泄露或透露给某个非授权的实体。
6.破坏信息的完整性:信息被非授权地进行增删,修改或破坏而受到损失。
7.非授权访问:某一资源被某个非授权的人,或以非授权的方式使用。
8.假冒:通过欺骗通信系统(用户)达到非法用户冒充称为合法用户,或者特权小的用户冒充成为特权大的用户的目的。黑客大多是采用假冒进行攻击。
9.旁路控制:攻击者利用系统的安全缺陷或安全性上的脆弱之处获得非授权的权利或特权。例如,攻击者通过各种攻击手段发现原本应该保密,但是却又暴露出来的一些系统“特性”。利用这些“特性”,攻击者可以绕过防线守卫者侵入系统的内部。
10.授权侵犯:被授权以某一目的的使用某一系统或资源的某个人,却将此权限用于其他非授权的目的,也称为“内部攻击”。
11.特洛伊木马:软件中含有一个察觉不出的或者无害的程序段,当他被执行时,会破坏用户的安全。
12.陷阱门:在某个系统或某个部件中设置了”机关“,使得当提供特定的输入数据时允许违反安全策略。
13.抵赖:这是一种来自用户的攻击,比如:否认自己曾经发布过的某条信息,伪造一份对方来信等。

网络安全——防火墙

防火墙通俗理解为”关卡“,”门卫“,限制来源的信息,地址等。
在这里插入图片描述

{************************************************************** 浅谈软件安全设计(一) 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
发出的红包

打赏作者

MelanceXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值