导论

  • 《中华人民共和国密码法》2019年10月29日,《数据安全法》2021年6月,《个人信息保护法》2021年8月,欧盟《通用数据保护条例》。
  • 熊猫烧香,DarkSide,WannaCrypt勒索病毒。
  • 无条件安全,敌手即使拥有无限的计算能力也能保障密码系统的安全性,只有一次一密是无条件安全。
  • 计算安全敌手的计算资源是有限的条件下能保障密码系统的安全性。
    • 破译密码的代价超过了被加密信息的价值。
    • 破译密码所需要的时间超过了信息的保密期限。
  • 理论安全,即使攻击者有无限的计算时间和存储空间也不能攻破 ;密码在理论上是不安全的,⼀次⼀密在理论上是安全的,穷举攻击可以找到所有可能的结果,但无法判断哪个是正确的。
  • 实践上的安全,⼀个密码不能在合理的时间、内存、硬件、能力、金钱等条件下破解。

密码学基础

  • 对称加密,加密和解密使用相同密钥。

    • C=Enk(m)C=En_k(m)m=Dek(C)m=De_k(C)
    • CC 明文,EnEn 加密算法,kk 密钥,mm 密文,DeDe 解密算法。
  • 凯撒密码,平移三位;单表代换密码,任意排列,穷举攻击为 26!26!,可用自然语言中字母分布规律破解。

  • 欧几里得算法 gcd(a,b)=gcd(b,amodb)\gcd(a,b)=\gcd(b,a\bmod b)

  • 裴蜀定理,求 sa+tb=gcd(a,b)sa+tb=\gcd(a,b)。用辗转相除举例。26s+15t=126=1×26+0×1515=0×26+1×1511=1×261×154=1×26+2×153=3×265×151=4×26+7×1526s+15t=1\\26=1\times 26+0\times 15\\15=0\times26+1\times15\\11=1\times26-1\times15\\4=-1\times26+2\times15\\3=3\times26-5\times15\\1=-4\times26+7\times15

  • 扩展欧拉定理 ab{abmodφ(m),gcd(a,m)=1,ab,gcd(a,m)1,b<φ(m),(modm)a(bmodφ(m))+φ(m),gcd(a,m)1,bφ(m).a^{b} \equiv\left\{\begin{array}{ll} a^{b \bmod \varphi(m)}, & \operatorname{gcd}(a, m)=1, \\ a^{b}, & \operatorname{gcd}(a, m) \neq 1, b<\varphi(m), \quad(\bmod m) \\ a^{(b \bmod \varphi(m))+\varphi(m)}, & \operatorname{gcd}(a, m) \neq 1, b \geq \varphi(m) . \end{array}\right.

  • 对称密码体制如何传输密码是巨大的挑战(密钥必须保密),不能实现数字签名,对于 nn 个用户需要 n(n1)2\frac{n(n-1)}{2} 个密钥。

  • 对称密码

    • 加密与解密的密钥相同,密钥为双方共享。
    • 密钥必须保密。
    • 已知算法和密文不易推导出密钥。
  • 公钥密码

    • 加密与解密的密钥不同,双方各持一个。
    • 其中一个密钥必须保密,称为私钥。
    • 已知算法和公钥,不易推导出私钥。
  • RSA 算法,利用大数难以分解质因数的困难。

    • 选两个素数 ppqq,得 n=pqn=pqφ(n)=(p1)(q1)\varphi(n)=(p-1)(q-1)nn 为公钥。
    • 选择 1<e<φ(n)1<e<\varphi(n),使得 (e,φ(n))=1(e,\varphi(n))=1ee 为公钥。
    • 计算私钥 dd,使得 ed1(modφ(n))ed\equiv1\pmod{\varphi(n)},即利用扩展欧几里得算法求 se+tφ(n)=1se+t\varphi(n)=1
    • 明文 mm,密文 c=memodnc=m^e\bmod n
    • 解密 m=cdmodnm=c^d\bmod n
  • DH 密钥交换,pp 是大素数,ggFp\mathbb F^\ast_p 的生成元。

    • 用户 A 选择秘密值 xx,用户 B 选择秘密值 yy,两者交换 gxmodpg^x\bmod pgymodpg^y\bmod p,生成共同密钥 gxymodpg^{xy}\bmod p
    • 基于离散对数的困难,给定 g,pg,p,已知 gxmodpg^x\bmod pgymodpg^y\bmod p,难以得到 x,yx,y 就无法破解密钥。
    • 这样的协议无法抵挡中间人攻击,假设有中间人 C,C 截获 A的 gxmodpg^x\bmod p,向 A 发送 gxmodpg^{x'}\bmod p,A 和 C 之间共享密钥 gxxmodpg^{xx'}\bmod p;同样的,B 和 C 之间也可产生另一对共享密钥。
  • LUCIFER分组长度64比特,密钥长度128比特,而DES是56比特,不能抵抗穷搜索攻击。

  • DES 中的 S 盒设计不公开,有人质疑是否存在未公开的后门。

  • 扩散和混淆被称作分组加密算法的基石,扩散主要表现为明文比特尽可能多影响密文,混淆意味着加密密钥和密文必须尽可能复杂。

  • 分组密码运行模式

    • 电码本模式 (Electronic Code Book, ECB)
    • 密文分组链接模式 (Cipher Block Chaining Mode, CBC)
    • 密文反馈模式 (Cipher Feedback Mode, CFB)
    • 输出反馈模式 (Output Feedback Mode, OFB)
    • 计数器模式 (Counter Mode, CTR)
  • RSA 签名

    • e,ne,n 是公钥,d,p,qd,p,q 是签名者使用的私钥。
    • 签名者计算 Sig=Mdmodn\text{Sig}=M^d\bmod n 作为 MM 的签名,验证者只需计算 Sigemodn\text{Sig}^e\bmod n 核对即可。
    • 签名时,通常会先将需要签名信息进行处理,如 SHA-256;签名者计算 Sig=[h(M)]dmodn\text{Sig}=[h(M)]^d\bmod n,验证者只需计算 Sigemodn\text{Sig}^e\bmod n 是否于 h(M)h(M) 相等即可。
  • ElGamal 签名

  • Hash 函数以任意长度的数据作为输入,输出相应固定长度的值,如MD5(128位)、SHA-1、SHA-512、SHA-256、SHA-3。

  • Hash 函数是数字签名、口令安全、随机数生成、消息身份验证和区块链体系结构中的基本组件。

  • 一个良好的Hash函数应具有单向性、抗碰撞性。

  • MD5、SHA-0、SHA-1不安全,SHA-2 和 SHA-3 是安全的。

  • 区块链类似于 Hash 链,前一个区块的Data作为这一个区块Hash函数的输入。

  • 利用对等网络和密码技术实现的密码货币系统,交易账单不可逆,不可伪造,不可否认,可验证。

  • 智能合约是一套以数字形式定义的承诺, 包括合约参与方可以在上面执行这些承诺的协议。

  • 攻击成本

    • 并行性,使用多个处理器计算。
    • 内存,算法占用大量内存,内存比寄存器慢很多。
    • 预计算,有些操作只需要执行一次,比如彩虹表。
    • 目标数。
  • 128比特是一般用途,256比特是高安全级用途。

  • 可证明安全性,证明破解加密方案至少与已知困难问题⼀样难。

    • 数学证明。
    • 依赖于自然规律。
    • 数学难题求解困难。
  • 启发式安全

    • 给出攻击失效的证据。
    • 基于已知的攻击算法的复杂性定义。
  • 密码算法注意事项

    • 底层系统(如BIOS)可能被破坏。
    • 算法证明可能忽略了针对真实实现的攻击。
    • 算法证明可能存在错误。
    • 侧信道攻击可能会发现密钥。
    • 不要使用自己设计的算法,不合理使用带来的威胁更大。
  • 安全裕度:密码分析专家经常攻击⼀种密码的简化版本, 如对较少的轮次进行攻击;通过实验或理论分析评估自己能破解多少轮;这种完整密码中的实际轮数与他们能破解的轮数之间的差异就是安全裕度。

  • 密钥生成方法

    • 随机使用伪随机数发生器。
    • 基于口令使用一个密钥生成函数。
    • 密钥协商协议利用参与人之间的一系列消息建立共享密钥。
  • 密钥保护

    • 使用第二个密钥加密,第二个密钥用口令生成。
    • 从口令实时生成密钥。
    • 将密钥存储在硬件令牌上。
  • 一次一密,e(xi)=xikie(x_i)=x_i\oplus k_id(yi)=yikid(y_i)=y_i\oplus k_i

  • 真随机数TRNGs

    • 基于物理随机过程
    • 输出流具有良好的统计特性
    • 输出既不能被预测也不能被复制
  • 伪随机数PRNGs

    • 从初始种子生成序列
    • 通常具有良好的统计特性
    • 输出可能被复制和预测
    • 通常以递归的方式计算
  • 密码学意义的伪随机数CSPRNG

    • 具有额外属性的PRNG
    • 输出必须是不可预知的
  • 消息验证码MACs

    • T=MAC(K,M)T=\text{MAC}(K,M),验证MAC可以证明消息 MM 没有被篡改,并且证明它来自密钥 KK 的持有者。发送者要同时发送 MM 和 MAC值,以用于验证。
    • 不可伪造一对正确的 M,TM,T 称为系统不可伪造。
    • HMAC,在hash中加入密钥的长度,避免字符串拼接错误。
  • 伪随机函数PRFs

    • 使用保密密钥得到 PRF(K,M)\text{PRF}(K,M)
    • 用PRFs构造密钥产生方法和识别方案。
  • 密钥派生

  • 密钥更换

  • 密钥分发中心KDC

    • 受信任的中央系统。

    • KDC与每个用户共享一个加密密钥KEK。

    • 将会话密钥发送给用KEK加密的用户。

    • 优点

      • 系统中只有 nn 个长期密钥对。
      • 如果添加了新用户,则只需要该用户与KDC之间的安全密钥(其他用户不受影响)。
      • 可以很好地扩展到中等规模的网络
    • 遗留问题

      • KEKs泄露且攻击者存储了之前的密文。
      • KDC单点故障。
      • 每一次通信都涉及到KDC(可以通过延长会话密钥生命)。

系统安全

  • 访问控制,主体依据控制策略,获得不同的权限对客体进行不同的授权访问。
  • 访问控制三要素:主体、客体、控制策略。
  • 访问控制目标
    • 对主体和客体提供安全防护。
    • 确保不会有非授权者使用合法或敏感信息。
    • 确保授权者能正确使用信息资源。
    • 实现安全的分级管理。
  • 多级安全系统
    • 层次型:绝密、秘密、机密、受限、无级别。
    • 无层次型:给出客体接受访问时允许的规则和主体。
  • 访问控制三步骤:身份认证,控制策略的制定和实现,审计。
  • 控制策略,设定适当的规则,确保授权用户以多级安全访问信息,防止敏感信息被泄露给非授权用户。
    • 制定:创建用户、文件共享。
    • 实现:用户访问行为。
  • 审计
    • 审计是访问控制的重要内容与补充,可以对用户使用何种信息资源、使用的时间、以及如何使用进行记录监控, 是实现系统安全的最后一道防线
    • 审计的意义在于记录异常事件,便于查漏补缺,从而达到追踪和威慑非授权者的目的;也可以避免合法用户滥用职权(不能被控制策略限制的不安全行为);给数据恢复提供帮助。
  • 自主访问控制DAC
    • 属于无层次型多级安全,允许合法用户根据访问策略以用户或用户组的身份访问客体,同时阻止非授权用户访问客体。某些用户还可以自主地把自己所拥有的客体的访问权限授予他人。
    • 访问权限的赋予和回收由管理员实现,也可由文件创建者自身实现。
    • 访问控制由访问控制矩阵和访问控制列表来实现。
    • 方便灵活,广泛应用于商业和工业。
    • 任意授权,安全防护相对较低 。
  • 强制访问控制MAC
    • 属于层次型多级安全,系统事先给主体和客体分配不同的安全级别;在实施访问控制时,系统先对主体和客体的安全级别进行比较,再决定主体能否访问该客体。
    • 访问方式
      • 下读,主体级别高于客体,数据由低到高。
      • 上读,主体级别低于客体,数据由高到低。
      • 下写,主体级别高于客体,数据由高到低。
      • 上写,主体级别低于客体,数据由低到高。
    • BLP模型
      • 下读、上写,数据流向由低到高。
      • 有效防止低级用户和进程访问安全级别比他高的资源。
      • 安全级别高的用户和进程也不能向比他安全级别低的用户和进程写入数据。
      • 使非法、越权篡改成为可能。
    • Biba模型
      • 上读、下写,数据流向由高到低。
      • 用户只能向比自己安全级别低的客体写入信息,防止非法用户创建安全级别高的信息,避免越权篡改。
      • 维护了完整性,但忽略了保密性。
      • 信息有可能从高级别主体向低级别客体流动,造成敏感信息泄露。
    • MAC实现了信息的单向流通,BLP模型只允许下读上写,有效防止机密信息向下级泄露,Biba模型只允许上读下写,可以有效保护数据的完整性。
  • DAC和MAC的区别
    • 前者是无层次型,后者是层次型。
    • 前者的授权是基于用户,用户的访问权限可以自由赋予他人;后者的授权基于安全级别,访问权限是严格按照安全级别执行的,仅能由安全管理员修改级别。
  • 基于角色的访问控制RBAC
    • 将访问许可权分配给一定的角色,用户通过饰演不同的角色获得角色所拥有的访问许可权。
    • 实施面向企业的安全策略的一种有效的访问控制方式。
    • 根据管理中相对稳定的职权和责任来划分角色,通过给用户分配合适的角色,让用户与访问权限相联系。 角色成为访问控制中访问主体和受控对象之间的一座桥梁。
  • RBAC与DAC的区别,用户不能自主将访问权限授予别的用户。
  • RBAC与MAC的区别,RBAC属于无层次型,MAC属于层次型。
  • 访问权限
    • 读。
    • 写/执行。
    • 管理,修改访问控制规则或安全级别的能力。
  • 访问控制列表,以客体为中心;访问控制矩阵,包含所有主客体及其关系的矩阵。
  • Windows安全模型
    • 核心组件Winlogon、SRM、Lsass,Winlogon和Lsass是两个用户模式进程,SRM是Windows内核执行体中的组件。
    • SRM(安全引用监视器):负责执行对象的访问权限检查、生成安全审计消息,是实现访问控制的核心部件。
    • Winlogon:系统启动时自动加载的进程,监控登录过程。
    • Lsass(本地安全权威子系统):包含LSA服务、安全账户管理SAM等组件,负责安全策略认证审计等功能
    • SAM(安全账户管理器)数据库:包含了本地用户及用户组的口令及属性。
    • LSA策略数据库:包含了访问控制策略审计策略
  • 访问令牌,属于主体,用户在通过认证时获得,包括安全标识符、所属组的SID、账户的特权信息。
  • 安全描述符,属于客体,描述客体对象的安全属性及安全规则,包含客体对象所有者的SID和访问控制列表ACL。
  • 活动目录是一个面向网络对象管理综合目录服务,网络对象包括用户、用户组、计算机、打印机、应用服务器、域、组织单元及安全策略等。
    • AD提供各种网络对象的索引集合,也可以看作数据存储的视图。
    • 将分散的网络对象组织起来,有利于管理、 检索和配置。
    • 提供基于目录的用户、资源、网络、应用等管理。
  • 域:网络系统的安全性边界,活动目录的实现形式,最核心的管理单位和复制单位。由域控制器、成员计算机、打印机等网络对象组成,每个对象在域中有唯一的ID,基于ID实现管理。多个域控制器之间可以复制更新的组策略。
  • 组织单元:域被划分为若干组织单元OU,是比域更小的管理单元,下级OU能继承上级OU的访问权限,也可以由OU的管理员管理权限。
  • GP是AD安全性的重要体现,是依据特定安全需求定制的安全配置规则;域中所有网络对象都受到AD的直接管理,依据域下发到OU的GP或本地管理员制定的GP来实施安全配置,AD的GP优先权高于本地GP。
  • Alice与Bob建立一条监听者Wendy无法发现的隐蔽通信线路即Alice将秘密信息在嵌入密钥的控制下,通过嵌入算法将隐秘信息隐藏于载体中形成隐密载体,隐密载体再通过监狱通道传输给Bob, Bob利用密钥从隐密载体中恢复出秘密信息的过程。由于隐写可以将秘密信息隐藏到任何一种正常多媒体报文中,因而报文在网上传输时不会引起监听者的注意,从而达到麻痹监听者的目的,即使监听者预知含有秘密信息的载体也很难将信息提取和还原出来。
  • 数字水印
    • 定义:在数字媒体中添加不可察觉的版权信息(如:唯一标识符或序列号),在需要时被提取以作为非授权拷贝的证据。
    • 要求:版权信息的嵌入或提取不会影响宿主媒体的正常使用。
    • 特点:透明性,鲁棒性。
    • 分类: 空域和频域。
  • LSB最低有效位算法,修改数字图像的低位比特来隐藏信息,隐藏的信息可能被信息处理破坏。
  • 水印与隐写对比
    • 算法和技术相同,使用场景不同。
    • 取决于提取算法和使用的密钥公开还是私有。
  • 针对隐私的链接攻击:攻击者通过对发布的数据和其他渠道获取的外部数据进行链接操作,以推理出隐私数据,从而造成隐私泄露。
  • KK 匿名:通过泛化技术,发布精度较低的数据,使得每条记录至少与数据表中其他 K1K-1 条记录具有完全相同的准标识符属性值,从而减少链接攻击所导致的隐私泄露风险。
  • 信息内容安全是研究利用计算机从包含海量信息并且迅速变化的网络中对特定安全主题相关信息进行自动获取、识别和分析的技术。

网络安全

  • 信息安全三要素:保密性、可用性、完整性。
  • 第一道屏障是防火墙、第二道屏障是检测技术。
  • 应用层常见协议端口
    • HTTP 80
    • SMTP 25
    • HTTPS 443
    • POP3 110
    • IMAP 143
    • Telnet 23
    • FTP 20(主动模式的数据端口)、21(控制端口)
    • DNS 53
  • 抓包(以TCP三次握手举例)
    • 服务,看端口。
    • 序列号
    • 第几次握手(SYN,ACK)
    • 第一次握手 SYN=1,ACK=0;第二次握手 SYN=1,ACK=1;第三次握手 SYN=0,ACK=1。
  • 四次挥手
    • 主机请求 FIN=1 ACK=1
    • 服务器应答 ACK=1
    • 服务器发出 FYN=1 ACK=1 与主机断连
    • 主机返回ACK=1 断连
  • ping flooding
    • 一台主机通过ping向另一台主机发送ICMP报文,远端主机返回ICMP报文。通过发送超过IP协议规范所规定的包长度的ICMP包使服务器崩溃。
    • 预防:打开防火墙,增加网络带宽,更换主机IP或关闭被ping的端口号。
  • SYN flooding
    • 攻击者向服务器在短时间内伪造大量SYN请求连接包,发送了大量伪造的TCP连接请求,使得被攻击方资源耗尽,无法及时回应或处理正常的服务请求。如果大量的SYN包发到服务器端后客户端没有应答,就会使服务器会等待直到超时,大量半连接状态导致正常的连接不能进入,甚至会导致服务器的系统崩溃。
    • 预防
      • 使用SYN网关,当防火墙接收到SYN包,直接转发给服务器,网关收到SYN/ACK包,将其发出,并同时给服务器发送ACK包,当客户端的ACK包到达时,若有信息则转发给服务器,否则丢弃;如此做法是因为服务器承受连接状态比承受半连接状态好得多。
      • 缩短SYN timeout时间。
      • 设置SYN cookie。
  • ARP 欺骗
    • ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的网关或是篡改后再转送。攻击者亦可将ARP数据包导到不存在的MAC阻断服务攻击的效果。
    • 防范
      • 设置静态MAC地址。
      • 手动更改网关的ARP高速缓存。
      • 使用ARP防火墙。
  • 攻击
    • 网络攻击:所有试图破坏的行为。
    • 入侵:成功的攻击。
    • 主动攻击:攻击加破坏。
    • 被动攻击:攻击、监听、嗅探。
  • 常见DOS网络命令
    • ping 确定网络连通性,可通过TTL推算数据包通过多少路由器。
    • netstat 检测计算机与网络之间的详细连接情况,得到以太网的统计信息和所有协议的状态。
    • ipconfig 显示当前 TCP/IP 配置的设置值。
    • arp 查看计算机ARP缓存的内容。
    • tracert 到达目的主机的路径。
    • route print 显示路由表。
    • nslookup 查看主机IP和主机名称。
    • nbtstat 查看计算机网络配置信息。
  • 常用监听工具 wireshark、win sniffer。
  • 病毒与一般程序比较
    • 病毒程序
      • 一般比较小
      • 不能独立运行,依附于其他程序。
      • 能自我复制
      • 具有破坏性
      • 没有文件名
      • 在用户不察觉的情况下执行
    • 一般程序
      • 一般比较大
      • 能独立运行
      • 不能自我复制
      • 没有破坏性
      • 用于文件名和扩展名
      • 根据用户命令执行