最新EBU7140 Security and Authentication(三)密钥管理;IP 层安全,2024年网络安全笔试题总

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

详细流程:客户端发送自己 ID,server 服务器 ID,自己的密码,以上信息发给 AS。AS 收到后先核实是不是你,是你的话你有没有权限使用服务?如果有,我用你的这些信息做一张 ticket 给你,你拿着去找服务端。服务端收到后解密(ticket 是用 AS 和 Server 都知道的密钥加密的),核实后提供给用户服务。

image-20240102005111329

问题在于需要用户输入密码,而且密码明文传输。因此如果我们有办法用 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

AS TGS 共享一个解密 TGT 的密钥,TGS S 共享一个解密 ST 的密钥。

image-20240102110404153

为什么不通过密码校验用户身份,而是票呢?因为不安全网络,小心被窃听者 eavesdropper 偷听到密码。

另一个问题是,用户每次登录都需要输入用户信息很麻烦,我们可以把信息保存一段时间,而且保存时间不宜过长,定期需要重新发送确保安全性。这就引入了时间戳的概念。

image-20240102124810929

以上内容主要是围绕 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

ESP 和 AH 的同时实现需要结合多个 SA。

Sockets

应用程序通过 Sockets 通信,相当于终点。

1704198690529

格式如下:

1704199096335

ipsec 可以指定 pre-packet 和 pre-socket 两种加密方式,packet 是指定目的地加密,比如发到哪些 ip 地址时需要加密;socket 是从这台主机发出的所有 packets 都加密。

key management

讲了加密,认证,还有就是密钥管理。

Oakley Key Determination Protocol 是一种改进自 DH 的密钥交换协议。ISAKMP 是一种密钥管理协议框架,双方协商建立、修改、删除 SA,包括一系列消息类型,他自己并非具体的密钥交换算法,但是这些消息类型支持不同密钥交换算法的实现。

1704202618085

防火墙

允许访问其他网络的同时,保护本地主机/网络免受威胁。位于本地网络和 internet 之间。

能实现的:

  • 服务控制:比如 http 服务可以,ftp 不行。
  • 方向控制:比如企业外部访问不了企业内部。
  • 使用控制:用户可以访问到网络,但是对访问到的资源有限制,比如企业内部分权限。
  • 行为控制:比如防止恶意文件传输等。

防不了:内部攻击,能绕过 bypass 防火墙的攻击,计算机病毒(特洛伊木马)。

实现方法:

  • 包过滤 Packet Filtering:简单控制,双向校验源地址,目标地址,端口,协议等。不符合就丢弃。但是不安全,没有身份认证,而且可以通过数据包流量猜出 ip 地址,而且对高级协议有效性没有校验。可能的攻击方式:
    • 伪造 ip 地址,可以通过路由阻挡。
    • 伪造假路由,直接阻挡假路由。
    • 把数据段拆成微小碎片,可以在检查前组装或干脆丢弃小碎片来阻挡。
  • 应用层网关 Application-Level Gateway:会校验高层协议的内容信息。缺点在于开销大。
  • 电路级网关 Circuit-Level Gateway:用于转换内部网络地址,不被外部网络看见(抽象)。并且也会校验哪些连接是允许的。
  • 代理服务 Proxy Services:代理服务器实现内部主机和外部主机的通信,从而完全隔离内外网络(只能通过代理服务器,就好像 private 类通过 public get set 方法访问的感觉)。

image-20240102215945948

image-20240102221358543

1704205325601

堡垒机 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

不过有一种攻击方式:特洛伊木马。

85fcdcf35174a2ce5d8a6d8888c11e9

后备数据两者都能访问,重要数据只有 hero 能访问。但是 hero 运行特洛伊木马文件后,特洛伊木马文件把 data file 的数据复制到 backpocket file 里了,导致恶棍这下也能访问了。

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码有几个问题需要优化: 1. 如果其中一个文件读取失败,整个方法就会返回并且数据无法正确导入,应该在每个文件读取失败后继续读取其他文件。 2. 在读取文件时,最好使用绝对路径,因为相对路径可能会因为不同的执行环境而不同。 3. 在解析文件内容时,最好检查文件内容的行数是否相等,否则会导致数据不匹配。 以下是优化后的代码: ``` public void importData() { List<String> files = Arrays.asList("courses.txt", "scores.txt", "credits.txt", "semesters.txt", "types.txt"); List<List<String>> fileContents = new ArrayList<>(); for (String file : files) { try (Stream<String> stream = Files.lines(Paths.get("F:/ProgramData/IdeaProjects/BUPT-EBU6304G49-main/SE0514/src/data/" + file), StandardCharsets.UTF_8)) { fileContents.add(stream.collect(Collectors.toList())); } catch (IOException e) { JOptionPane.showMessageDialog(null, "Failed to import data from file: " + file); } } if (fileContents.size() != 5) { JOptionPane.showMessageDialog(null, "Failed to import data"); return; } // Check if each file has the same number of lines int numLines = fileContents.get(0).size(); for (List<String> content : fileContents) { if (content.size() != numLines) { JOptionPane.showMessageDialog(null, "Failed to import data: files do not have the same number of lines"); return; } } // Clear current data this.courses.clear(); // Read data from files and add to list for (int i = 0; i < numLines; i++) { String course = fileContents.get(0).get(i); String score = fileContents.get(1).get(i); String credit = fileContents.get(2).get(i); String semester = fileContents.get(3).get(i); String courseType = fileContents.get(4).get(i); addData(course, credit, score, semester, courseType); this.courses.add(new Course(course, score, credit, semester, courseType)); } JOptionPane.showMessageDialog(null, "Data has been imported"); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值