《网络空间安全导论》 课程作业

第四章 数据加密

1公钥密码的出现解决了对称加密算法的什么问题但对称加密至今仍被广泛使用请至少从一个角度简述对称加密算法未被淘汰的原因

使用对称加密算法进行传输数据需要使用基于共享密钥的数据传输方式共享密钥这一过程同样面临着被窃听的问题 —— 对称密码中密钥的分发问题

从算法速度的角度上来说对称加密比公钥加密的速度快得多使用公钥加密传输大规模的信息会拖慢信息传输的速度

2请分别简述五种密码分析技术的大致流程

  • 唯密文攻击密码分析者已知一些用相同密钥加密的多个消息的密文其任务是尽可能恢复足够多的明文或者推算出加密消息的密钥
  • 已知明文攻击密码分析者已知部分明文及其对应的密文(这些密文全部用相同的密钥加密得到)其任务是推算出加密消息的密钥或者某种算法这种算法可以对使用该密钥加密的任意消息进行解密
  • 选择明文攻击密码分析者不仅已知部分明文及其对应的密文他们还可以选择一个或多个明文并得到这些明文被同一密钥加密后的密文在这种攻击中分析者的任务是推算出加密消息的密钥或者某种算法这种算法可以对使用该密钥加密的任意消息进行解密
  • 选择密文攻击密码分析者可以选择一个或多个密文并基于相同的密钥得到与之对应的明文其任务是推算出加密消息的密钥
  • 选择密钥攻击该种攻击是选择明文攻击和选择密文攻击的结合在这种攻击中基于同一个密钥密码分析者不仅可以进择一个或多个明文并得到其对应的密文还可以选择一个或多个密文并得到其对应的明文

至于具体的操作流程均是在对应的攻击设定下先收集足够多的输入比如在选择明文攻击中先收集部分明文及其对应的密文以及选择一个或多个明文并得到这些明文被同一密钥加密后的密文然后针对这些输入做分析最终得出结果

第五章 隐私保护

1请从基本思想隐私保护水平等角度分析比较差分隐私与匿名化的不同并举例说明.

差分隐私在基本思想是通过针对统计输出的随机化方式比如通过查询函数的返回值中加入噪声来实现使攻击者无法得到查询结果间的差异从而达到对数据集中的每个个体的隐私进行保护的效果比如在查询数据集中 $i$ 行患病的记录数量时通过先任意采样 $i$再统计这 $i$ 行的患病人数而非直接返回前 $i$ 行的患病人数来实现

匿名化在基本思想上重点是隐藏用户身份和数据的对应关系比如删去表中容易关联到患者本人且研究价值不大的属性即姓名和家庭住址同时将姓名替换为假名等

在隐私保护水平上差分隐私对隐私保护进行了严格的定义并提供了量化评估方法使不同参数处理下的数据集所提供的隐私保护水平具有可比较性匿名化方式则不能提供严格和科学的方法证明其隐私保护水平当模型参数改变时无法对其隐私保护水平进行定量分析总之与匿名化相比差分隐私是一种严格的可证明的隐私保护模型

2同态加密中的半同态加密和全同态加密各指什么各有何优缺点

半同态加密指的是仅支持加法同态或乘法同态但不是两者同时支持的的加密体制全同态加密指的是同时满足加同态和乘同态性质的加密体制可以进行任意多次加和乘运算

全同态加密相比半同态加密加密算法功能更强大但具有较高的计算复杂度加密算法设计更复杂

第六章 硬件安全

1请简要描述 Meltdown 与 Spectre 的攻击原理并比较其共同点和区别

Meltdown 利用了指令乱序执行只在提交重排序阶段才检测特权级违例的特点实现原理如下在乱序执行的指令中加入一条加载敏感内存区域所在的页的指令虽然在重排序检测时将该指令清除但是该页被放在了缓存中我们就可以通过缓存侧信道攻击提取敏感信息

Spectre 的原理是当 CPU 发现分支预测错误时会丢弃分支执行的结果恢复 CPU 的状态但是不会恢复 CPU Cache 的状态利用这一点可以突破进程间的访问限制从而获取其他进程的数据至于训练过程首先训练 CPU 的分支预测单元使其在运行代码时执行特定的预测然后使得分支预测越权访问敏感数据并将其映射到 cache 中进而利用缓存测信道通过 Cache 使用情况窃取敏感数据

二者都是利用缓存侧信道攻击来提取敏感数据都利用了 CPU 在架构设计上的漏洞而其区别则是具体利用的漏洞不同Meltdown 是利用的乱序执行中违例检测的滞后性Spectre 是依赖于分支预测器的训练

2请简要描述侧信道分析的原理并简述其用于硬件木马检测的原理

侧信道分析是指利用硬件系统的旁路信息实施分析比如利用系统的时间信息功率消耗缓存使用等来获取系统的有关信息通过对这些侧信道信息的分析攻击者可以推断出设备中的敏感信息

侧信道分析法用于硬件木马检测是基于在芯片中植入任何恶意电路都会影响某些旁路信道的参数值如漏电流静态电源电流动态功耗轨迹路径延迟特性和电磁辐射等等如果存在硬件木马则会破坏这些旁路信道参数值的出厂时规律而通过侧信道分析的方式便可以将其检测出来

第七章 操作系统安全

1请描述栈溢出攻击和堆溢出攻击的基本原理

栈溢出攻击是一种攻击者越界访问并修改栈帧当中的返回地址以控制进程的攻击方案的总称具体来说我们在程序运行栈中写入超过栈帧长的数据使我们写入的数据可以覆盖掉当前栈的返回地址进而在函数结束退运行栈时会跳转到我们覆盖后的返回地址

堆溢出攻击是一类攻击者越界访问并篡改堆管理数据结构实现恶意内存读写的攻击具体来说我们可以通过构造堆块重叠或利用堆管理其他机制等方式来实现对堆内存的任意读写

2请简述面向返回地址编程 (ROP)和全局偏置表劫持攻击(GOT Hijacking)的原理并分析他们能否绕过以下三种内存防御机制并简述原因 a. W^X (Write XOR eXecution) b. ASLR (Address Space Layout Randomization) c. Stack Canary

ROP 攻击利用栈溢出在栈上布置一系列内存地址每个内存地址对应一个 gadget即以 ret/jmp/call 等指令结尾的一小段汇编指令通过一个接一个的跳转从而达到控制程序执行流程的目的GOT Hijacking 攻击通过恶意篡改 GOT 表将其中的函数地址修改为攻击者所指定的函数地址从而在程序调用该函数时执行的实际是攻击者所指定的恶意代码

a. W^X (Write XOR eXecution)本方案指定每一个内存页拥有写权限或者执行权限不可兼具两者ROP 和 GOT Hijacking 都能绕过 W^X 保护因为虽然返回至溢出数据的栈溢出攻击失效但 ROP 和 GOT Hijacking 也可以不需要注入新代码而是使用程序中已有的代码片段因此不受 W^X 保护影响

b. ASLR (Address Space Layout Randomization)对虚拟空间当中的基地址进行随机初始化以防止恶意代码定位进程虚拟空间当中的重要地址因为目前 ASLR 的随机性不强且依赖模块自身的支持载入应用时不会随机初始化代码段的地址与 GOT 表的地址于是 ROP 和 GOT Hijacking 都可以绕过 ASLR 机制

c. Stack Canary在保存的栈帧基地址EBP之后插入一段信息当函数返回时验证这段信息是否被修改过对于 ROP当发生栈区溢出时攻击者为了修改返回地址必须先覆盖 Stack Canary造成攻击行为暴露GOT Hijacking 则不涉及修改返回地址而是修改全局偏移表中的函数地址所以可以绕过 Stack Canary 保护

第八章 协议栈安全

1请描述 IP 分片污染攻击的原理与攻击者需要具备的能力

在原始报文被分片传输过程中攻击者伪造一些分片注入到正常分片流中篡改原始报文内容从而形成对合法流量的污染攻击者需要具备的能力

  • 源地址欺骗
  • IPID 的猜测
  • 原始报文校验和的欺骗等

2结合几个针对 DNS 域名服务实施的 DDoS 攻击案例分析提升 DDoS 攻击防御能力的可行措施

恶意服务器回复伪造攻击恶意人员发送随机查询请求到 DNS 服务器抢在权威应答前伪造应答包发送给服务器修改授权资源记录其成功的原因在于缺乏端节点身份和发布内容验证数据未采用加密传输等

恶意服务器回复伪造攻击攻击者可依赖目标权威服务器或 DNS 软件漏洞控制特定权威域名服务器篡改区域文件中的授权数据形成恶意服务器回复伪造攻击原因是域名系统存在复杂的解析依赖DNS管理方面缺乏验证配置内容能力存在错误输入的记录

拒绝服务攻击攻击者通过控制大量用户发起 DDoS 攻击耗尽 DNS 域名服务的资源原因是被攻击服务器没有将这些恶意流量与正常流量区分的能力

提升防御能力的措施

  • 通过非对称加密验证身份 —— DNSSEC
  • DNS-over-TLSDoT
  • DNS-over-HTTPS (DoH)
  • 安全的网络体系架构如采用真实网络地址保障每一台接入网络计算机的安全性建立快速 DDoS 溯源机制
  • 专用 DNS 请求过滤系统针对 DNS 数据包进行恶意流量进行过滤
  • 分布式部署降低攻击对性能的影响

案例http://blog.nsfocus.net/dns-ddos-attack-analysis/

Ch9 DNS 安全

1简述 DNS 缓存策略在性能提升和引入安全威胁上具有的影响

DNS缓存策略通过缓存域名解析结果可以提高访问网站的速度和性能当用户首次访问域名时DNS解析器会向域名服务器查询并获取域名的IP地址然后将结果缓存起来对于后续的请求如果域名解析结果在缓存中存在解析器将直接使用缓存的结果避免了重复的网络查询从而提高了响应速度和整体性能

DNS会有引入缓存中毒攻击的风险包括本地与远程两种攻击者可以对用户进行DNS欺骗攻击

2请描述一下 DNS 基础设施中stub resolver, public resolver, open resolverauthoritative name serverrecursive name serveriterative name serverroot name server 之间的关系和区别

  • stub resolver本地主机上运行的DNS解析工具
  • public resolverISP 提供的递归解析器接收用户请求并递归查询全球DNS层次结构
  • open resolver接受来自任何源IP地址的DNS查询请求通常不对请求进行验证或限制并可能容易受到滥用
  • authoritative nameserver负责存储特定域名的DNS记录的服务器当递归解析器发起请求时权威名称服务器提供域名的实际解析结果
  • recursive nameserver提供递归查询服务的DNS解析器接收来自Stub Resolver的查询请求并在DNS层次结构中逐级查询
  • iterative nameserver提供迭代查询服务的DNS服务器当递归名称服务器发起查询请求时迭代名称服务器会返回当前已知的最接近所需解析结果的名称服务器供请求方迭代查询
  • root nameserver存储顶级域名的权威名称

Ch10 真实源地址验证

1简述真实源地址认证SAVA体系结构的三个设计原则和原因

  • 可扩展性应具备可扩展性以适应复杂的网络环境以及新的需求支持在整个互联网不同位置不同粒度需求的大规模部署
  • 可演进SAVA体系结构建立在当前互联网体系结构基础上整体的技术依附于现有体系结构实现因此必须要求技术对应协议与现有体系结构协议兼容SAVA的部署是一个持续性的过程所以会出现部分区域已经部署SAVA而部分区域尚未部署SAVA的情况需要考虑在发展部署的过渡阶段SAVA自身的兼容性考虑到网络中不同运营商的存在SAVA体系结构还应允许运营商可以采用各自不同的实现SAVA系统各部分相互独立且功能彼此不依赖
  • 安全性SAVA体系结构的构建是支撑真实可信互联网体系结构实现通过将安全性赋予现有体系结构弥补其信任缺失的问题所以保障SAVA自身的安全性至关重要

2面向地址域的真实源地址认证SAVA体系结构的三层结构是什么简述每层结构的作用

  • 接入网接入层面提供主机粒度的源地址验证能力以保证地址使用的可追溯性
  • 地址域内在地址域内层面提供前缀级别的保护能力以保护核心设备不被攻击
  • 地址域间在地址域间层面提供地址域级别的联盟内可验证能力以及保护自身不被伪造的能力

Ch11 公钥基础设施安全

1一个典型的PKI应用系统由哪几部分组成

PKI体系通常由终端实体用户证书认证机构(CA)证书注册机构(RA)和证书数据库以及安全服务器组成

2认证机构CA的职能有哪些

  • 产生自身证书并传输给安全服务器
  • 验证用户的身份产生分配并管理PKI结构下的所有用户的证书
  • 核心功能就是发放和管理数字证书
  • 负责用户证书的黑名单登记和发布

Ch12 分布式系统安全

1请解释分布式系统当中的日蚀攻击和拜占庭节点攻击

日蚀攻击针对网络节点发现以及邻居节点维护两个过程进行攻击使得受害节点的所有邻居节点都是由攻击者所控制的恶意节点攻击者可以选择性的转发对攻击者有利的消息给受害者从而配合其它网络攻击攻击者可以完全隔离受害者与网络中其它节点的信息交互

拜占庭节点攻击拜占庭节点攻击是指在分布式系统中存在一些恶意节点拜占庭节点的情况下通过这些节点传播错误或错误信息以破坏系统的一致性和正确性拜占庭节点可能会发送虚假或冲突的信息或者完全拒绝发送信息从而导致系统出现错误的决策或行为

Ch13 应用安全

1请解释XSS攻击的原理简述一种防御方法并简单分析原因

攻击原理跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码用户浏览该页之时嵌入其中 Web 里面的脚本代码会被执行

防御方法对用户输入的直接要在网页中渲染的部分进行检查和处理转义或替换其中可执行的部分从而防止其输入以可执行的方式出现在网页中

2请解释SQL注入攻击的基本原理和防御的基本原理

攻击原理SQL注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严导致攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句进而实现在管理员不知情的情况下实现非法操作以此来实现欺骗数据库服务器执行非授权的任意查询从而进一步得到相应的数据信息

防御方法将数据与代码分离(1) 后端代码检查输入的数据是否符合预期严格限制变量的类型(2) 对进入数据库的特殊字符'"<>&*;等进行转义处理或编码转换(3) 所有的查询语句建议使用数据库提供的参数化查询接口参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中即不要直接拼接 SQL 语句(4) 严格限制Web应用的数据库的操作权限给此用户提供仅仅能够满足其工作的最低权限从而最大限度的减少注入攻击对数据库的危害

Ch14 人工智能安全

1请解释人工智能算法的鲁棒性和可解释性

深度学习领域的鲁棒性可以理解为模型对数据变化的容忍度鲁棒性越高的模型其识别噪声和对抗样本的准确率越高鲁棒性差的模型在受到对抗攻击时容易给出高可信度的错误结果鲁棒性差的模型在更换数据集时如训练数据更换为测试数据或投入使用时的实际数据性能往往表现出巨大的差异

可解释性就是让人类了解模型做出某一决策的深层原因在解决现实生活中的数据科学问题时如果能够更透明地了解模型的决策过程往往有助于人们对模型建立起一定程度的信任

2请简述投毒攻击和对抗攻击的不同点请利用自动驾驶为场景各举一例

数据投毒攻击在训练阶段实行强调的是通过混入特殊样本的形式直接对模型进行修改而不修改测试数据对抗样本攻击在测试阶段实行在不改变目标机器学习系统的情况下通过构造特定输入样本以完成欺骗目标系统的攻击

在自动驾驶场景下数据投毒攻击的例子为将红绿灯的标注信息反置等对抗样本攻击为在现实世界中构造具有某种特殊样式的 pattern 使得 model 在见到这种 pattern 时会输出错误的结果