B3
密钥管理
密钥分类:
按时长:
- short term:短期密钥,用于一次加密。
- long term:长期密钥,用于加密或者授权。
按服务类型:
- Authentication keys:公钥长期,私钥短期。
- Confidentiality keys:短期。confidentiality 确保的是第三方不能读取到信息。
公钥分发
我们已经知道对称密钥使用公钥加密分发。公钥怎么分发?
public announcement:直接广播,“这是我的公钥”!缺点在于容易被别人伪造 forgery。
Publicly Available Directory:向公共机构注册保管,定期更改;也有访问公共机构查密钥的方法;但是也不安全。
Public-Key Authority:一个负责验证和颁发公钥证书的机构,将个人信息和公钥绑定,比 Directory 更安全(by tightening
control over distribution of keys from directory)。但是他是一个中心化的实体,可能容易被篡改
tampering。
Public-Key Certificates:CA 存储你的公钥信息和对应你的个人信息,可以核实这个公钥确实是你的,这样对方拿到公钥后可以校验。
X.500 标准
针对目录结构的标准。
X.509 标准
公钥证书格式的标准。不过我们知道,目录公钥分发方法缺点在于任何人都可以访问,因此后来改进决定使用证书进行身份认证。
- X.509 是 X.500 的一部分,用于公钥证书校验。
- X.509 提供了授权服务的框架,即用于提供基于公钥证书的身份验证服务。
- X.509 定义了授权协议,即如何利用公钥证书校验用户。
- 算法上:使用公钥算法和数字签名,不局限于特定一种算法,但是推荐 RSA。
CA 或者用户把证书放到目录服务器上,目录服务器自己不添加证书。
用户只要认证过公钥信息,就可以随时从 CA 恢复自己的公钥。
只有 CA 能修改证书,其他第三方修改证书会被检测到。
CA <> 表示 CA 给 A 签名的证书。
![1704112803132](https://img-
blog.csdnimg.cn/img_convert/b8700a69eadf76658ece86a9f3d82c40.png)
用户私钥被泄露时(用户私钥泄露,或 CA 被攻破 compromised),或者不想使用这家 CA 机构继续代理证书时,要撤销证书。
CA 会定期发布 CRL 公示不再使用的证书,用户以此校验是否撤销成功。
如果 AB 使用了不同的 CA 机构,两者之间可能会请求另一方试图获取其证书。有的时候我们切换网站提示,该网站可能不安全,问我们是否要进入,其实就是换了
CA 代理机构的表现。
CA 的结构是树状的,根节点是根证书颁发机构,可以签发所有其他的证书;中间证书作为中间人,可以更好地保密根节点证书,且方便定期更换;终端结点是一些接受 CA
服务的用户、服务器等。
![image-20240101210418957](https://img-
blog.csdnimg.cn/img_convert/db9fea89439aed528881938e9518ef1d.png)
User Authentication
重点在于标识用户身份而不是消息
主要分为:确定标识符 identifier ,绑定用户与标识符。
认证协议
认证协议:用于校验用户双方并交换会话密钥,需要保密性(会话密钥不能泄露)和时效性(防止有人拦截重复发送认证信息)。
身份管理
如何管理登记用户身份?
联合管理系统涉及很多步骤:认证用户身份,授权用户权限,记录用户资源活动……
简单身份管理流程如下:类似学生借书,先去学生中心认证自己的身份,学生中心核实后认为你小子有资格借书,于是给你一张借书票,你再拿着借书票去图书馆借书。
详细流程:客户端发送自己 ID,server 服务器 ID,自己的密码,以上信息发给 AS。AS
收到后先核实是不是你,是你的话你有没有权限使用服务?如果有,我用你的这些信息做一张 ticket 给你,你拿着去找服务端。服务端收到后解密(ticket
是用 AS 和 Server 都知道的密钥加密的),核实后提供给用户服务。
![image-20240102005111329](https://img-
blog.csdnimg.cn/img_convert/e5854289745b03bc71f9149eb3d703ab.png)
问题在于需要用户输入密码,而且密码明文传输。因此如果我们有办法用 ticket 也替代用户传入的 password 就好了。我们用一个 TGS
服务器存用户密钥信息,这样客户端只需要发自己的 ID 和 server ID 给 server 就行。这就是下面的 kerberos 算法。
Kerberos
Kerberos 这个起名很有意思,是地狱三头犬的意思。
它是一种用户授权和访问控制应用 an authentication service designed for use in a distributed
environment,通过第三方校验用户身份,建立授权通信,允许用户在不安全网络中证明自己的身份 It makes use of a trusted
third-party authentication service that enables clients and servers to
establish authenticated communication。
用户认证过程可能出现的三个主要问题:模拟用户获得该用户对工作站的访问权限,模拟工作站给用户服务,截获用户认证信息进行重放来获得权限。Kerberos
主要是围绕解决这些问题而展开。
首先 Kerberos 身份认证中有几个对象:KDC 是其服务器(包括下图的 AS 和 TGS);客户端;服务端。K 服务器拥有用户向他注册的所有 id
密码信息,且与其他服务器共享密钥用于 ticket 生成(不同域 Realm 的 K 服务器也共享密钥)。
![img](https://img-
blog.csdnimg.cn/img_convert/b7c8ac7b77fec503c3263f0566f5ee0c.png)
AS TGS 共享一个解密 TGT 的密钥,TGS S 共享一个解密 ST 的密钥。
![image-20240102110404153](https://img-
blog.csdnimg.cn/img_convert/bbe92868909ae65023ae747694ba0537.png)
为什么不通过密码校验用户身份,而是票呢?因为不安全网络,小心被窃听者 eavesdropper 偷听到密码。
另一个问题是,用户每次登录都需要输入用户信息很麻烦,我们可以把信息保存一段时间,而且保存时间不宜过长,定期需要重新发送确保安全性。这就引入了时间戳的概念。
![image-20240102124810929](https://img-
blog.csdnimg.cn/img_convert/5398a684327276bad28569d4b5824993.png)
以上内容主要是围绕 Kerbero4 算法的讲解。5的话就是安全性高了一些,而且支持的算法也多了,比如 4 只支持 DeS 算法。
IP 安全
前面的加解密算法主要是在会话层和表示层,ip 安全主要是网络层。
IPSec
一种 IP 安全协议,提供 IP packet 数据包的保密性、授权性或二者都有的保护。没有 IP 层的保护,IP 数据包很容易被攻击篡改。IPSec
建立一条加密通道来传输信息。
主要组成部分还是前面那几大类:encryption,authentication,key management。
能实现的功能:
- encryption 加密。
- authentication 数据认证。
- Connectionless integrity 无连接的完整性,比如 UDP 就是没有建立连接的通信协议。
- access control 访问控制。
- Rejection of replayed packets 拒绝重放,重放是认证的一个大隐患。
- Limited traffic flow confidentiality 流量保密,不然让第三方知道自己的流量承受限度,也许会遭到大流量攻击。
IPSec 主要在数据包中添加 AH 和 ESP 两个字段来分别确保认证和加密。具体算法都是前面学过的方法,比如 HMAC 附着哈希值认证,加密采用 CBC
的 DES。还有一个新增的可选字段 domain of interpretation DOI,和学术论文 id 的 DOI 不同,这个 DOI
主要是用于标识加密方法的(比如0是 ISAKMP DOI,1是 IPSec DOI)。
SA
SA:security association,就是发数据要建立的单向安全数据连接,如果要收发数据,需要建立两条 SA。
SA 包括的属性:
- Sequence Number Counter:自增的序列号,唯一标识不同的数据包,可以防止重放攻击。
- Sequence Counter Overflow:用于处理序列号溢出,处理不当可能也会遭到重放攻击。
- Anti-Replay Window:规定只接收特定窗口范围内的数据,同样为了防止重放攻击。
- AH Information:前面介绍过,用于认证。
- ESP Information:介绍过,用于加密(以及可选的数据完整性校验)。
- Lifetime of this Security Assocation:SA 有效生命周期,比较好理解。
- IPSec Protocol Mode:两种模式,隧道模式 tunnel mode 加密整个数据包,传输模式 transport 只加密其有效载荷部分 payload。看下图好像就多了一个原 ip header。VPN virtual private network 就是隧道模式建立的,保密性更好;而传输模式通过 ESP 加密实现,效率更高。
- Path MTU:规定最大传输单元大小。
![image-20240102201442527](https://img-
blog.csdnimg.cn/img_convert/897eb5278372d886e677aeafe0bf750f.png)
ESP 和 AH 的同时实现需要结合多个 SA。
Sockets
应用程序通过 Sockets 通信,相当于终点。
![1704198690529](https://img-
blog.csdnimg.cn/img_convert/ed176330ff6da772d5b2fa22488cab8c.png)
格式如下:
![1704199096335](https://img-
blog.csdnimg.cn/img_convert/97c0c52459caa07d3d1110d2859da288.png)
ipsec 可以指定 pre-packet 和 pre-socket 两种加密方式,packet 是指定目的地加密,比如发到哪些 ip
地址时需要加密;socket 是从这台主机发出的所有 packets 都加密。
key management
讲了加密,认证,还有就是密钥管理。
Oakley Key Determination Protocol 是一种改进自 DH 的密钥交换协议。ISAKMP
是一种密钥管理协议框架,双方协商建立、修改、删除 SA,包括一系列消息类型,他自己并非具体的密钥交换算法,但是这些消息类型支持不同密钥交换算法的实现。
![1704202618085](https://img-
blog.csdnimg.cn/img_convert/2fdc6947c89236f490f33dd50becb259.png)
防火墙
允许访问其他网络的同时,保护本地主机/网络免受威胁。位于本地网络和 internet 之间。
能实现的:
- 服务控制:比如 http 服务可以,ftp 不行。
- 方向控制:比如企业外部访问不了企业内部。
- 使用控制:用户可以访问到网络,但是对访问到的资源有限制,比如企业内部分权限。
- 行为控制:比如防止恶意文件传输等。
防不了:内部攻击,能绕过 bypass 防火墙的攻击,计算机病毒(特洛伊木马)。
实现方法:
- 包过滤 Packet Filtering:简单控制,双向校验源地址,目标地址,端口,协议等。不符合就丢弃。但是不安全,没有身份认证,而且可以通过数据包流量猜出 ip 地址,而且对高级协议有效性没有校验。可能的攻击方式:
- 伪造 ip 地址,可以通过路由阻挡。
- 伪造假路由,直接阻挡假路由。
- 把数据段拆成微小碎片,可以在检查前组装或干脆丢弃小碎片来阻挡。
- 应用层网关 Application-Level Gateway:会校验高层协议的内容信息。缺点在于开销大。
- 电路级网关 Circuit-Level Gateway:用于转换内部网络地址,不被外部网络看见(抽象)。并且也会校验哪些连接是允许的。
- 代理服务 Proxy Services:代理服务器实现内部主机和外部主机的通信,从而完全隔离内外网络(只能通过代理服务器,就好像 private 类通过 public get set 方法访问的感觉)。
![image-20240102215945948](https://img-
blog.csdnimg.cn/img_convert/7e087e6b2cb4d6f69e6b7c0d4713eaa3.png)
![image-20240102221358543](https://img-
blog.csdnimg.cn/img_convert/e994b1054aedc236096112bc8d087620.png)
![1704205325601](https://img-
blog.csdnimg.cn/img_convert/af1cc4934f4a30e04f72ca5ec6f406af.png)
堡垒机 Bastion Host 是实现电路级网关和应用层网关的主机,一般只安装必要的安全服务 proxy Telnet, DNS,
FTP……,有强大安全性的操作系统,需要用户身份认证。
防火墙前后还有 De-Militarised Zones and Screened Subnets,相当于多了两层防火墙。
trusted system
用于设置安全级别来控制用户访问不同的资源(比如不同部门能访问到的资源类型不同)。有两个规则:读取只能读取安全等级更低的对象,写入只能写入安全等级更高的对象
No read up (simple security property) & No write down
(*–property)。使用参考监视器来确保规则的正确执行。
![image-20240102223753822](https://img-
blog.csdnimg.cn/img_convert/e70e32bcedc510771c418a7cd364b02a.png)
不过有一种攻击方式:特洛伊木马。
![85fcdcf35174a2ce5d8a6d8888c11e9](https://img-
blog.csdnimg.cn/img_convert/f51cc3701abb41c509c274c3e9666c11.png)
后备数据两者都能访问,重要数据只有 hero 能访问。但是 hero 运行特洛伊木马文件后,特洛伊木马文件把 data file 的数据复制到
backpocket file 里了,导致恶棍这下也能访问了。
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!