Bonky
Neither beliver nor reject anything, because any other person has rejected of believed it. Heaven has given you a mind for judging truth and error, Use it.
By Thomas Jefferson

【完全】信息安全笔记

信息安全笔记

安全体系结构与模型

目标

数据和信息计算服务的基本安全目标可以概括成 CIA 三元组:机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。

  • 机密性:主要做的有两点:不允许未授权的读取和泄露数据。
  • 完整性:避免不当地数据损失和修改。
  • 可用性:在各种情况下,系统正常运行。

OSI安全体系结构

OSI安全模型关注安全攻击(威胁安全的行为)、安全机制(检测、防范攻击以及恢复系统)和安全服务(利用安全手段提供服务)。

安全攻击

安全攻击可分为被动攻击和主动攻击。

  • 被动攻击:目标是获得传输的信息,本质是对传输进行窃听和监测。难以检测,所以解决办法是防范为主,如加密。
    • 信息内容泄漏:直接分析窃听到的内容(如果没有加密的话)。
    • 流量分析:如果通信双方进行了加密,但不过我们仍可以通过分析交流的频率和长度推测一些有用的信息。
  • 主动攻击:改写、伪造数据流。
    • 重放 relay:获取数据单元并按照它之前的顺序重新传输,以此来获得某些权利和效应。
    • 改写信息 Modification of messages:通过改写信息,获得某些权利和效应。
    • 拒绝服务 denial of service:破坏设施的功能。比如:破坏网络,安全审计服务(比如墙)。

安全服务

为系统或数据传输提供足够安全的协议层服务:

  • 认证 Authentication:确保通信实体就是它所声称的实体。
    • 对等实体认证:用于建立连接的两个实体,互相确认对方的身份。可以发生在建立连接和数据传输时候。
    • 数据源认证:用于无连接传输中,确保数据来源与声称一致。
  • 访问控制 Access Control:防止对资源的非授权使用。
  • 数据保密性 Data Confidentiality:防止非授权的数据泄露。
    • 连接保密性,无连接保密性,选择域保密性
    • 流量保密性:对可能从流量中获取的信息的保护(防范的是流量分析)。
  • 数据完整性 Data Integrity:确保授权实体发送的数据与接收到的数据完全相同(无篡改、插入、删除、重放)。
  • 不可否认性 Nonrepudiation:防止通信过程中任一通信实体进行否认的行为。
  • 可用性 Availability

安全机制

image-20200605082754353

  • 加密 Encipherment:使用数学算法将数据转换为不可知的形式。
  • 数字签名:通过密码算法使接收方可证明数据和数据源的完整性。关于数字签名(确保完整性)和数字证书(获取公钥)可以看这篇文章
  • 访问控制:强制执行对资源的访问权限的各种机制。
  • 数据完整性:确保数据单元或数据单元流完整性的各种机制。
  • 认证交换:通过信息交换以确保实体身份的各种机制。
  • 流量填充 Traffic Padding:通过填充数据流空余位的方式干扰流量分析。
  • 路由控制:支持对某些数据的特定物理安全通道的选择。
  • 公证 Notarization:利用可信的第三方确保数据交换的某些属性。

网络安全模型

image-20200605085428902

基本任务有这一些:

  • 设计用于执行与安全相关的转换算法,算法要求安全性。
  • 生成用于该算法的秘密信息。
  • 开发分发和共享秘密信息的方法。
  • 指定一种能被两个主题使用的协议,该协议利用安全算法和秘密信息以便获得特定的安全服务。

对称加密算法

对称密码模型

image-20200605091646839

首先对称加密有五个组成部分:明文、密钥、加密算法、解密算法、密文。有如下两个要求:

  • 需要一个强加密算法。当攻击者知道算法时,并不能够破译密文或者密钥。甚至当攻击者拥有密文以及对应的明文时,他依然不能解出密钥。
  • 发送者和接收者必须通过一个安全的方式获得密钥并且保证密钥安全。

对称加密只需要保障密钥的保密性,而且发送方和接收方的密钥是一样的,而不需要保证算法的保密性。对称加密的数学表示如下:C= E[D[C, K], K],加密算法的选择要满足计算安全

  • 破解密文的代价超出加密信息的价值。
  • 破解密文需要的时间超出信息的有效生命期。

古典加密算法

  • 代替技术:典型的代替密码是Caesar密码,将明文中每个字母整体位移。
  • 一次一密:使用和消息一样长且无重复(可以利用加法来加密)的随机密钥来加密消息,且密钥只对一个消息进行加解密,之后丢弃不用。一次一密不包含明文任何信息,所以无法可破。但不过目前为止还没法实现。
  • 置换技术:典型置换技术有:栅栏技术,位置为奇数的在前面,偶数的放在放后面。如:meet me after the toga parth 转换为密文就是 mematrhtgpryetefeteoaat

DES 算法

  • 分组长度有64位,密钥长度有56位
  • 加密过程:通过Feistel网络进行16轮迭代。
  • 解密过程:与加密相反,通过Feistel网络进行16轮反向迭代。
  • DES强度:依赖于密钥长度。

image-20200605100336321

第一轮中,首先直接把输入右部作为输出左部,然后右部和子密钥通过轮函数F再和左部进行异或操作 \mathrm{RE} _1 = \mathrm{LE}_0 ⊕\mathrm{F}(\mathrm{RE}_0,\mathrm{K}_1)

Feistel结构的具体实现依赖于以下参数和特征:

  • 分组长度:分组越长代表安全性越高,但会降低加解密速度
  • 密钥长度:密钥越长代表安全性越高,但会降低加解密速度迭代轮数:单轮迭代不能提供充分的安全性
  • 子密钥产生算法:算法复杂度越高,破译难度越大
  • 轮函数:越高的复杂度代表破译难度越大

基本流程图如下,其中最后要32位互换,是因为解密的时候,如果加密的时候不进行32位互换的话,那么得到的结果是相反的。

image-20200605101930171

初始置换 & 逆初始置换

置换表中每个元素表明某个输入位在64位输入中的位置,目的在于打乱比特数据,初始置换与逆初始置换可逆,而且这个置换表是规定的,并不能自己更改。

image-20200605102741482

密钥生成

密钥输入为64位,其中8位是校验码,每一轮输出子密钥为48位。基本步骤如下:置换选择1 → 循环左移 → 置换选择2 → 循环左移 → 置换选择3 → ...

置换选择1:输入为64位,输出56位。置换表的每行第8位被忽略,作为奇偶校验位。

image-20200705095435561

循环左移:将置换选择1的56位输出分为两个28位的数据,然后两部分分别进行循环左移,左移位数由位数表决定(打乱子密钥之间的联系)。

image-20200605103749247

置换选择2:将对应的经过循环左移的56位输入按照置换选择2表作用,得到48位输出每一轮迭代中的子密钥。

image-20200605104054537

F 函数

image-20200605104159823

首先,右部32位经过拓展置换表,重复某些位,然后得到48位结果。得到的结果再和子密钥进行异或操作。得到的结果,送入8个S盒,输入六位,输出四位,得到32位的结果。

image-20200605104346071

其中,S 盒也是置换表,输入的前两位作为行的索引,后四位作为列的索引。若输入为011001,则行是01(1),列是1100(12),即值位1001(9)。

image-20200605104525284

总结

Feistel密码强度来自于三个方面:迭代轮数、F函数、密钥扩展算法。密钥扩展算法应保证密钥和密文符合严格雪崩标准(明文或密钥的微小改变使密文很多位发生变化)和位独立标准。穷举搜索的时间如下:

image-20200605105213980

3DES 算法

  • 分组大小64位,密钥大小168位。
  • 加密过程:加密过程使用3个密钥,分别进行加密,解密,加密。
  • 解密过程:使用相反的密钥顺序,分别进行解密,加密,解密(这么做的原因是,当三个密钥相同的时候,就相当于一次 DES,起到了兼容 DES 的作用)。

AES 算法

  • 分组长度: 128位(16字节)
  • 密钥长度: 128位(16字节)、192位(24字节)、 256位(32字节)
  • 加密过程:轮密钥加、字节替换、行移位、列混合. ..
  • 解密过程:轮密钥加、反向列移位、逆字节替换、反向列混合…

image-20200605111751781

如果分组没有达到16字节的话,则需要补位。补位方法可以参考这篇文章

数据结构

输入输出都是根据字节分组,形成一个4×4的方阵:

image-20200605112047824

密钥扩展函数将128位密钥产生互不相同的4×4方阵的N+1个密钥(N为轮数)。因为0到10一共十一轮,所以一共44个。

image-20200605112146104

字节替换

image-20200605112355067

对于输入,利用 S 盒进行替换。输入的每一个组作为 S 表中的坐标,然后替换为 S 盒表中的值。

image-20200605112511721

行移位 & 列混合

行移位:第0行左移0字节,第1行左移1字节…第3行左移3字节

image-20200605112754120

列混合:对分组中整列进行替换,每列中每个字节均被映射为一个新值。

image-20200605112943545

轮密钥加

将当前分组与对应密钥按位XOR。AES通过子密钥生成的复杂性和其它阶段运算的复杂性保证其安全性。

密钥扩展:除了最开始的w0w3是直接复制,剩下w[i]依赖于w[i-1]w[i-4],其中每四个的第一个还需要对w[i-1]进行一个 g 函数的运算。

image-20200605114234910

g 函数:

  • 自循环:使一个字中的4个字节循环左移一个字节。
  • 字代替:利用S盒对输入字中的每个字节进行代替(与字节替换使用相同S盒)。
  • 异或:将上步骤结果与轮常量Rcon[j]相异或。

image-20200605114538739

随机数

要求

  • 随机性:
    • 均匀分布:序列中比特位分布要均匀,即0和1出现概率大致相同
    • 独立:同一序列中任何子序列不能影响其它子序列
  • 不可预测性

TRNG

截屏2020-06-13 下午4.28.12

TRNG(True Random Number Generator) :真随机数发生器。特点是使用的真随机源是不可预测的,比如掷骰子,大气噪音的政府变化等等。

比如,intel 8109 芯片组使用的是分子的热运动作为真随机数生成器:

image-20200613163146073

PRNG

image-20200613163251928

PRNG(Pseudo-random Number Generator):伪随机数发生器。一般来说,都会有一个种子的概念,种子唯一决定所产生的随机数(有了种子可以推测出产生随机数的序列)。

一个方法是平方取中法。每次对于种子进行平方运算,然后取位置为中间的作为下一轮的输入,以此循环。

![](http://bonky-picture.oss-cn-beijing.aliyuncs.com/pic/2020-06-13-屏幕录制2020-06-13 下午4.34.55.gif)

由于知道了种子就可以推测出随机事件,我们可以用 TRNG 产生种子。

RPF

image-20200613164105440

PRF(Psuedo-random Function):伪随机函数。和 PRNG 不同的是,他产生的是固定长度的随机比特串。

总结

TRNG PRNG
效率 较低 较高
确定性 非确定性 确定性
周期性 非周期性 周期性

流密码和RC4

流密码

image-20200613164924426

其中,两个 PRNG 是相同的,通过 PRNG 可以达到一次一密的效果,但没有一次一密的密钥长度与明文一样长,密钥共享困难的缺点(两边当然使用的是对称密码模型)。

PRNG 的输出受输入密钥K的调节,为防止穷举攻击,必须保证K应该组构长, 目前一般要求不少于128位。

分组密码的可以重复使用密钥,而流密码的密钥不可重复使用,效率比较高。一般而言在数据通信或网页浏览连接方面,流密码更适用。文件、Email、数据库等,分组密码更为适用。

RC4

RC4,Rivest Cipher 4。应用场景有WEP、WPA(路由器加密方式),SSH 、Kerberos。由于现在RC4在很短的时间就可以破解,WIndows等软件和网络协议都禁止使用了RC4。

用1-256字节(8-2048位)的可变长度密钥初始化一个256字节的状态向量S,S的元素为S[0], S[1], S[2]…… S[255]。从始至终置换后的S包含0-255的所有8位数,加密和解密时,按某种的方法从S的256个元素中选出一个字节k,每生成一个k,重新排列S的元素。

  • 初始化S
    • 开始时,S中的元素按升序被设置为0-255,即S[0]=0, S[1]=1,…S[255]=255,同时建立一个临时向量T(和S一样长)

    • 如果密钥K的长度等于T,则将K赋给T。

    • 如果K和T不一样长的话,就复制K,直到填充满T。

    • 然后用T产生S的初始置换,从S[0]到S[255],对每个S[i],根据由T[i]确定的方案,将S[i]置换为 S中的另一字节:

    • 此操作目的是打乱S,使S的排列随机,但不过仍然是从0到255。

  • 密钥流产生

    • 向量S一旦完成初始化,输入的密钥就不再被使用。

    • 产生的t是密钥字符,根据s的性质,可以知道k是0-255区间的随机数。

分组密码

工作模式

明文长度若不等于分组密码处理单元,需对明文进行分组处理,若每次使用相同的密钥对多个分组加密,则会引发许多安全问题。

主要有五种:电子密码本模式(ECB: Electronic Codebook),密码分组链接模式(CBC: Cipher Block Chaining),密码反馈模式(CFB: Cipher Feedback),输出反馈模式(OFB: Output Feedback)和计数器模式(CTR: Counter)。

ECB 模式

加密过程一次处理一组明文分组,每个分组使用相同的密钥。ECB模式实现很简单,不同明文分组可并行试试,尤其是硬件实现速度很快。

对于很长的消息,ECB模式很不安全

  • 消息中若有相同的明文组,则对应密文组也相同
  • 对于高度结构化数据,密码分析者可获得大量已知明密文对以展开分析(比如协议头,头的信息一般来说都是固定的)。
  • 若消息有重复成分,且重复周期正好是分组单元的倍数,则分析者能辨认出这些成分,然后用代换或重排这些块进行攻击。

比如银行A和银行B之间资金转账系统所使用的的报文模式如下,攻击者可通过截取A到B的加密消息,并将5-12分组进行替换,导致转账错误:

image-20200615090948818

但不过我们还可以用 ECB 在一些不需要分组的情况,比如随机数的加密保护,不分组明文的加密。

CBC 模式

加密算法输入为当前明文与前一次密文的异或,每个分组使用相同的密钥。解密的话是前一个密文和结果进行异或。

image-20200615091515908

CBC优点:

  • 各密文分组不仅与当前明文分组有关,还与上一个明文分组或初始向量有关,从而隐蔽了明文的统计特性。
  • 具有有限的错误传播特性,一个密文分组的错误,将导致两个密文分组有错误,不会导致所有出现错误(注意是解密哦,加密一个错了当然就都错了,但不过加密一般都很难出错,主要是传输过程中可能出错)
  • 具有自同步功能,密文出现分组丢失和错误不影响后续密文分组的解密,若从第t个密文分组起正确,则第t+1个明文分组就能正确得到。

CFB 模式

CFB模式可将任意分组密码转化为流密码,无需将消息填充为分组的整数倍。

image-20200615094835990

上图中,s 是每次处理的单元是8个比特,b 的长度等于密钥的长度。首先,初始向量循环左移 s 位,得到 I,然后利用密钥 K 进行加密。加密函数结果的前 s 位与明文 P 的第1个单元进行异或,产生 C 的第一个单元,将 C 放在以为寄存器的最低s位,并继续下一轮操作。

OFB 模式

和 CFB 类似,但不是进行流密码类似的处理,而是一次对一个分组进行处理,所以不需要移位。

image-20200615102654484

CTR 模式

针对每个计数器,计数器初始化为某一值,每个计数器初始值是不一样的,每次操作计数器的值会加一。

image-20200615102930326

  • 硬件效率:CTR模型可并行处理多块数据的加密和解密。
  • 预处理:可预计算加密盒的输出,等到明文来的时候直接进行异或操作即可。
  • 随机访问:各信息见互不影响,每个明文或密文分组可随机存取。
  • 可证明的安全性:能够证明CTR模式和其它模式一样安全
  • 简单性:CTR模式只要求实现加密算法并不要求实现解密算法。

应用

模式 描述 典型应用
电子密码本模式(ECB) 相同密钥分别对明文分组独立加密 单个输入的传输,如密钥传输
密码分组链接模式(CBC) 加密算法的输入是上一个密文组和下一个 明文组的异或 1、面向分组的通用传输
2、认证
密码反馈模式(CFB) 一次处理s位,上一块密文作为加密算法 的输入,产生的伪随机数输出与明文异或 作为下一单元的密文 1、面向数据流的通用传输
2、认证
输出反馈模式(OFB) 与CFB类似,加密算法的输入是上一次加 密的输出,且按组操作 噪声信道上的数据流传输, 如卫星通信
计数器模式(CTR) 每个明文分组都与一个经过加密的计数器 异或,计数器随操作递增 1、面向分组的通用传输
2、用于高速需求

公钥密码和消息认证

哈希函数

Hash函数的作用是将可变长的数据块作为输入,产生固定长度的哈希值。比如取模运算就是一种哈希函数。著名Hash函数的有SHA、MD5。主要应用有消息认证和数字签名。

消息认证

消息认证是用来验证消息完整性的机制或服务,用于确保收到的数据没有被修改、删除或重放以及确保发送方声称的身份真实有效。

image-20200617132453949

为防止 Hash 值被篡改,Hash 值必须通过安全的方式传输,可通过不同方式对 Hash 值进行保护以实现消息认证:

  • 同时对消息和 Hash 值进行加密。
  • 只对 Hash 值进行加密,可以减少性能负担。
  • 不使用加密算法,使用一个双方共享的S值(S值不在网络中传送),用S值和消息串联后计算其 Hash 值。

数字签名

数字签名的原理是,使用用户的私钥加密消息的Hash值,其它任何知道该用户公钥的人都能通过数字签名来验证消息的完整性。

简单Hash函数

若干个比特位分为一组,组之间进行异或操作得到 Hash 值。

image-20200617135609424

一般结构

Hash 函数中重复使用压缩函数f,f输入包含前一步中得出的n位结果(链接变量)和b位分组, f函数输出为n位分组:

image-20200617135824395

如果输入信息不同,而得到的哈希值都是相同,则称出现碰撞。一般来说每个哈希值都会对应 2^{b-n} 个原始信息。

安全需求

满足1-5成为弱 Hash 函数,满足1-6成为强 Hash 函数。

序号 需求 描述
1 输入长度可变 可应用于任意长度数据块
2 输出长度固定 固定长度Hash码
3 计算效率高 对任意给定的x,软硬件方式均可容易计算H(x)
4 单向性/抗原像攻击性 找到满足的某一哈希值的原文在计算上不可行
5 抗第二攻击性原像/抗弱碰撞攻击性 对于给定的原文,找到同一哈希值的另外一个原文在计算上不可行
6 抗碰撞性/抗强碰撞性 不管什么样的原文找到同一哈希值的另外一个原文在计算上不可行

SHA – 安全Hash算法

SHA-1 SHA-224 SHA-256 SHA-384 SHA-512
消息摘要大小 (Hash值长度) 160 224 256 384 512
消息大小 (输入长度) <2^{64} <2^{64} <2^{64} <2^{128} <2^{128}
块大小 (分组大小) 512 512 512 1024 1024
字大小 (输入分组字大小) 32 32 32 64 64
步骤数 80 64 64 80 80

下面以 SHA-512 为例,SHA-512 输出512位的Hash值

image-20200617144224582

  • 其中L位是真实的消息长度。

  • 追加填充比特:填充消息使其长度模1024与896同余,填充由1和后续的0组成。如果刚好是余896的话,还是需要填充1024位。

  • 追加长度:在消息后附加一个128位的块,将其视为128位的无符号整数,用以表示填充前消息的长度(这就是前面要余数位896的原因,因为要保证总长度是1024倍数,896+128=1024)

  • 初始化缓冲区:Hash函数的中间结果和最终结果保存于512位的缓冲区中,缓冲区由8个64位的寄存器(a,b,c,d,e,f,g,h)表示,并将所有寄存器初始化为初始值。

    image-20200617150409299

  • 以1024位为单元处理分组消息:每一轮均以缓冲区作为输入,并更新缓冲区值。分组和上一个分组的结果 H_{i-1} 通过函数F,然后函数的输出再和 H_{i-1} 进行异或操作得到 H_{i} 。哈希值(消息摘要)是最后一个分组所产生的 H_N

MD5 – 消息摘要算法

消息摘要算法(Message-Digest Algorithm),MD5是第五版。输入消息,输出128位Hash值

image-20200617151041709

MD5的计算步骤和 SHA 差不多:

  • 位填充:填充消息使其长度n=448mod512,填充为为1和若干0组成。
  • 长度填充:追加64位用以表示原始消息长度。
  • 初始化缓冲区:4个32位的寄存器。
  • 以512位分组位单位处理消息,输出128位Hash值。

攻击

对Hash函数的攻击方法:穷举攻击、密码分析。

  • 穷举攻击不依赖任何算法细节,仅与相应的数据长度有关。
    • 原像攻击和第二原像攻击:找到满足对应哈希值的消息。方法是随机选择消息,并计算其Hash值直到碰撞出现。平均尝试次数是 2^{m-1}
    • 碰撞攻击:只需要找两个哈希值相同的消息。碰撞攻击的穷举规模明显小于原像攻击和第二原像攻击。平均尝试次数是 2^{m/2}(显然的是上一种攻击的子集)
    • 生日攻击:推荐看一看这篇文章
    • 生日悖论:n个人中至少有两个人生日相同的概率大于 0.5 的最小n值是多少。
    • 设无同一天生日的概率位P,则:P = \frac { 3 6 5 ! } { 3 6 5 ! ( 3 6 5 – n ) !},解出来大概只要23个人即可。
  • 密码分析依赖于具体算法的设计缺点。

消息认证码

MAC 消息验证码

消息认证码(MAC,Message Authentication Codes)也可用于消息认证,MAC利用密钥进行加密,然后选取数位生成一个固定长度的短数据块,并将该数据块附加在消息之后,用于消息认证。因收发双方共享密钥,所以MAC不能提供数字签名。

HMAC 基于Hash的MAC

HMAC是构造MAC的最常用方法,Hash函数软件执行速度相对DES较快。

公钥密码算法

公钥密码学的概念为解决传统密码中密钥分配与数字签名而提出。

  • 公钥密码算法基于数学函数,其他密码体制都是基于替换和置换方法。
  • 公钥密码学是非对称的,它使用两个独立的密钥加解密。

公钥密码组成部分:明文,密文,加密解密算法,公钥,密钥。

公钥加解密流程:发送者用接收者的公钥对消息进行加密,接收者用自己的私钥对消息进行解密。

公钥密码应用:

image-20200705105528423

RSA算法

推荐先观看:基于欧拉函数的RSA算法加密原理是什么?RSA算法详解,里面也很详细地讲了费马-欧拉定理。

流程

算法流程如下,下面的gcd的意思是最大公约数,证明过程看视频就好了:

image-20200705164913937

例子

生成公钥密钥过程如下:

image-20200705170337952

加密解密过程如下:

image-20200705170423994

Diffie-Hellman算法

Diffie-Hellman算法由Diffie和Hellman于1976年提出,该算法定义了公钥密码学。推荐可以看一个视频,虽然没怎么讲数学公式,但是也还是很不错的。

可以主要看看这个例子熟悉下DH算法,可以发现最后我们得到了一个公共密钥,而不是像RSA双方都有公钥和密钥,所以不能作为数字签名(一个公钥对应可能不止两个人,造假双方都可以造假),所以DH算法主要作用是交换得到对称加密算法的密钥:

image-20200705173019391

DH算法的中间人攻击

DH算法不能防止中间人攻击和重放攻击。中间的攻击者首先自己随便伪造两个私钥,然后接受到Alice的公钥后,把自己私钥得到的的两个公钥发给Alice和Bob,这样的话中间人和Alice有一个公共密钥,和Bob也有一个公共密钥。

image-20200705174452817

数字签名

发送方对消息使用私钥加密,接收者使用对应公钥解密,整个加密的消息就变成一个数字签名,从而证明消息来源的可靠性。通过对消息采用私钥加密不仅认证了消息源,还保证了数据的完整性。伪造数字签名在计算上是不可行的

数字签名更通用方案是,对消息的Hash值进行数字签名,同时实现数据完整性验证和身份验证。

密钥分配和用户认证

基于对称加密的密钥分配

密钥分发方案主要有下面四种,任何密码系统的强度取决于密钥分配技术:

  • A选定密钥并通过物理方法传递给B。
  • 第三方选定密钥并通过物理方法传递给A和B。
  • 如果A、B不久之前使用过一个密钥,一方通过旧密钥加密新密钥并传递。
  • 如果A、B分别有到达第三方C的加密链路,C在加密链路上分别传递AB间的密钥给A和B(广泛应用)。

密钥分发中心 KDC

密钥分发中心是基于密钥层次体系,最少需要两个密钥层。

  • 会话密钥:一次性会话密钥加密,会话或连接结束时,会话密钥被销毁。
  • 永久密钥:用于实体之间分发会话密钥。

KERBEROS

vector-illustration-angry-cerberus-heads-260nw-618444404

MIT开发的一种基于KDC原理的一种认证服务,不仅可以达到认证主机访问服务器的目的,确认主机和服务器的身份,也可以控制主机访问服务器的权限(通过讲主机权限分组)。用一个故事来讲KERBEROS

基于非对称加密的密钥分配

公钥分发主要采用集中公钥分配方法:公开发布,公开可访问目录,公钥授权和公钥证书。

公开发布

公开发布即公钥所有者将其公钥公开发布于网络当中,如将公钥附加在要发送的消息之后。公开发布方法简单,但任何人都可以伪造公钥并公开发布:

某个用户假冒用户A并将一个公钥发送给通信的另一方或广播该公钥,在用户A发现假冒公钥并通知其他用户之前,该假冒者可以读取本应发送给A的加密后的信息,并可使用伪造的密钥进行认证。

公开可访问目录

由可信的机构或组织负责维护一个动态可访问的公钥目录,可以使用户可以注册、查询自己的公钥。但不过一旦目录管理员的密钥被攻破,那么用户的所有通信都可以被窃取监听。

公钥授权

管理员负责维护通信各方公钥,每一通信方可靠的知道该目录管理员的公钥,且只有管理员知道相应的私钥。步骤如下:

image-20200706121429410

  1. A发送一条带有时间戳的消息给公钥管理员,以请求B的当前公钥。
  2. 管理员向A发送用其私钥Prauth加密的消息,A用管理员的公钥进行解密,该消息包含:
    1. B的公钥PU~b~。
    2. 原始请求,这样A可以将该请求与最初发送的请求对比,以确保管理员收到的请求未被修改。
    3. 原始时间戳,A可以确定它收到的不是来自管理员的旧消息。
  3. A存储B的公钥,并用B的公钥加密包含A的身份标识符ID~A~和临时交互号N~1~的消息发送给B。
  4. B用和A同样的方法获得A的公钥。此时,A、B的公钥均安全传递给A和B。
  5. B用A的公钥PU~a~加密包含A的临时交互号N~1~和B新产生的临时交互号N~2~的消息,并发送至A。因为只有B能解密A的消息,所以本消息中的N~1~可以使A确信该消息来自于B。
  6. A用B的公钥加密包含N~2~的消息给B,这样B可以知道该消息来自于A。

公钥证书

公钥证书主要包含三方面内容:公钥、公钥拥有者标识ID、可信的第三方对整个数据块的签名。公钥证书使用最广为接受的方案是X.509方案,X.509证书在大部分网络安全应用都有使用,如IP安全、传输层安全。

X.509证书

符合X.509格式的证书有多种,这里以SSL证书为例。

常见的场景会是下面这样:

  1. 客户端,比如浏览器会向服务端发送请求,服务端为了证明自己的身份,会发送证书给对方。
  2. 浏览器读取证书的数字签名部分,用自身根证书列表中对应的公钥证书对其进行解密。如果解密成功,并且证书哈希值与签名内的哈希值匹配一致,可证明站点提供的证书确实是该CA根证书签发的,否则给出风险提示。
  3. 验证通过之后,使用证书中的公钥对随机数和对称加密算法加密,发送给服务端,服务端用私钥进行解密,获得密钥和加密算法。
  4. 服务端与浏览器后续通信将会使用新的对称加密算法和随机密钥加密信息。

证书在整个流程起到了重要的作用,那么能不能通过窃取和伪造的方式来获取通信内容呢?

  • 窃取。首先证书当然是可以被窃取的,因为它是公开的,但是拿到了证书后也只能和服务端进行通信,不能用来窃取其它信息,至于证书的私钥存储在服务端,更加不可能随意被窃取了。
  • 伪造。如果有人伪造了一张网站证书,那么浏览器在向CA查询证书信息的时候就会验证失败。

网络访问控制和云安全

网络访问控制 NAC

网络访问控制(Network Access Control, NAC)是网络访问管理的总称。组成元素有以下:

  • 访问请求者(AR):试图访问网络的节点。如工作站、服务器、打印机…
  • 策略服务器:根据AR的信息和预先设定好的策略,策略服务决定相应访问权限。
  • 网络访问服务器(NAS):为用户连接内部网络提供访问控制的接入控制点,如网关、 远程访问服务器等,NAS包含一般包含认证服务(注意不要想成Network-attached Storage啦)。

可扩展认证协议 EAP

可扩展认证协议(Extensible Authentication Protocol, EAP)是一个网络访问和授权协议的框架,EAP提供了多种协议消息,提供在客户端与认证服务器之间交换认证信息。

image-20200706212646552

IEEE 802.1X

IEEE 802.1X基于端口的网络访问控制用于为局域网提供访问控制功能。

802.1X使用了受控端口与未受控端口的概念。未受控端口会忽略请求者的认证状态, 允许请求者与认证服务器之间进行数 据交换。受控端口只有在当前请求者被授权时, 才能与网络上其它系统间进行数据交换。

image-20200706215535027

802.1X主要定义了EAPOL协议(EAP over LAN)。EAPOL允许请求者与认证者之间相互通信,以及两者之间进行EAP包的交换。

云计算

image-20200706220143568

云计算服务模型:软件即服务(Saas),平台即服务(PaaS),基础设施即服务(IaaS)。通俗的解释如下:

  • IaaS:从蛋糕店中直接购买成品,回家后用微波炉进行烘焙之后就可以在自己的餐桌上吃,整个流程你仅需要一个蛋糕成品的供应商。(客户不用自己构建一个数据中心,而是通过租用的方式来使用基础设施服务,包括服务器、存储和网络等)
  • PaaS:打开某外卖App直接叫外卖将蛋糕送到家中,摆在餐桌上就可以吃了,整个流程你需要提供一个吃蛋糕的地方。(将一个完整的软件研发和部署平台,包括应用设计、应用开发、应用测试和应用托管,都作为一种服务提供给客户)
  • SaaS:直接在蛋糕店中吃蛋糕,随意挑选你喜欢的蛋糕类型,并且无需准备任何物料,包括蛋糕成品、微波炉、以及餐桌,蛋糕店全都会为你提供,整个流程仅需安心的坐下吃蛋糕即可。(将应用软件统一部署在厂商的服务器上,客户可以根据实际需求,任意选择所需的应用软件服务,通过互联网获得Saas平台供应商提供的服务)

传输层安全

Web安全需求

威胁

类型 威胁 后果 对策
完整性 用户数据修改
特洛伊木马浏览器
内存修改
更改传输中的消息
消息丢失
设备受损
易受其它威胁的攻击
密码校验和
机密性 网上窃听
窃取服务器消息
窃取客户端信息
窃取网络配置信息
窃取客户与服务器通话信息
信息丢失
秘密丢失
加密
Web代理
拒绝服务 破坏用户线程
用假消息使机器溢出
填满硬盘或内存
使用DNS攻击孤立机器
中断
干扰
阻止用户完成任务
难以防止
认证 假冒合法用户
伪造数据
用户错误
相信虚假信息
密码技术

方法

image-20200706142736525

SSL

SSL(Secure Sockets Layer) ,SSL由Netscape公司发明,使用TCP提供一种可靠的端对端的安全服务。后来,IETF在SSL基础上发展了TLS,并成为当前Internet传输层安全标准。

image-20200706150359853

SSL记录协议格式

image-20200706163349353

SSL连接和会话

  • SSL连接:连接用于安全传输应用程序数据,如加密传送消息。连接是单向的,CS之间相互通信需建立两个连接。
  • SSL会话:会话用于协商安全参数,如加密算法等。一个会话可能包含多个安全连接。

SSL记录协议

SSL记录协议为SSL连接提供机密性与消息完整性两种服务:

  • 机密性:握手协议定义一个可用于加密SSL载荷的传统加密共享密钥
  • 消息完整性:握手协议还定义一个用于产生消息认证码(MAC)的共享密钥

image-20200706151153142

SSL修改密码规格协议

SSL修改密码规格协议的设计目的是为了保障SSL传输过程的安全性,因为SSL协议要求客户端或服务器端每隔一段时间必须改变其加解密参数。当某一方要改变其加解密参数时,就发送一个简单的消息通知对方下一个要传送的数据将采用新的加解密参数,也就是要求对方改变原来的安全参数。

SSL警报协议

image-20200706152945549

SSL警报协议用于向对等实体传递SSL相关警告,有两种警告类型:警告,致命(会终止连接)。编码类型即每个警告对应的编码。

SSL握手协议

握手协议允许客户端和服务器相互认证,并协商加密和MAC算法,并保护数据使用的密钥通过SSL记录传送。握手协议分4个阶段:

image-20200706153917390

  • 第一阶段:握手协议第一阶段,发起逻辑连接并建立与之关联的安全功能。
    • 客户端发送client_hello消息:发起连接请求。内容有:
    • 版本(支持的SSL最高版本)
    • 随机数(32位时间戳与28字节随机数,防止重放)
    • 会话ID(非0更新现有连接参数,0是创建新连接)
    • 密码套件(优先级排列的密码算法列表,并定义每个算法相对应的的密钥交换算法和密码规格)
    • 压缩方法(客户端支持的压缩算法列表)
    • 服务器端发送server_hello消息:响应请求,内容有:
    • 版本(客户端支持较低版本,服务器支持最高版本)
    • 随机数,会话ID
    • 密码套件,压缩方法(从client_hello密码套件中选取的一组密码套件以及压缩方法)
  • 第二阶段:握手协议第二阶段,服务器认证和密钥交换:
    • 服务器端发送certificate消息(可选):certificate消息包含X.509证书或证书链。
    • 服务器端发送server_key_exchange消息(可选):发送算法证书中算法相关参数。该帧只存在于秘钥交换算法(Key Exchange)为 DH 或 ECDH 的帧中。如果秘钥交换算法为 RSA,那么此帧不存在(不需要双向交换)。
    • 服务器端发送certificate_request消息(可选):向客户端请求证书。
    • 服务器端发送server_done消息:服务器端发出该消息表明服务器发送结束,等待客户端响应中。
  • 第三阶段:客户端认证和密钥交换。
    • 客户端收到server_done消息后,如果需要,客户端验证服务器提供的证书是否有效,同时检查 server_hello参数是否是可接受的,若条件满足,则客户端向服务器回复消息。
    • 客户器端发送certificate消息(可选)
    • 客户器端发送client_key_exchange消息:参数内容由此前数据包内容决定,如RSA的预备主密钥、客户端DH公钥等。
    • 客户器端发送certificate_verify消息(可选)
  • 第四阶段:结束握手。
    • 客户器端发送change_cipher_spec消息:本消息使用修改密码规格协议发送,将挂起的密码规格复制到当前密码规格中。
    • 客户器端发送finished消息
    • 服务器端发送change_cipher_spec消息
    • 服务器发送finished消息

传输层安全(TLS)

TLS(Transport Layer Security),TLS与SSL格式完全相同,TLS与SSL部分区别如下:

  • 消息认证码:TLS使用HMAC
  • 伪随机函数:TLS使用PRF扩展密钥,提高了安全性
  • 警报码:TLS增加了警报码密码套件:支持算法部分调整
  • 客户端证书类型:TLS增加了新类型
  • 密码计算:TLS采用PRF计算主密钥及相关套件
  • 填充:TLS可填充更灵活,抗流量分析或长度攻击效果更好

心跳协议运行在TLS记录协议的上层,作用是发送端确认接收端状态,以及保持连接正常。

image-20200706163456327

HTTPS

HTTPS(HTTP over SSL),HTTP和SSL的结合来实现浏览器和Web服务器之间的安全通信。使用端口:443。

HTTPS执行过程:

  • 执行SSL/TLS握手协议,建立连接。
  • 客户端(浏览器)通过SSL/TLS记录层协议发送HTTP数据。
  • 传输完成,关闭连接。

客户对服务器的认证:

  1. 浏览器接收服务器的证书。
  2. 浏览器通过比较所访问的域名与服务器的证书中的主机名(SubjectName)是否一致。
  3. 浏览器通过证书中有可选名称(SubjectAltName)扩展字段支持上一步认证,SubjectAltName类型可以是DNS Name或IP Address,可与相应信息比对。
  4. 如果主机与证书不符,浏览器需提示用户或发送终止连接。

SSH

image-20200706211256868

主要流程如下:

  • 第一阶段:版本协商(明文传送)
  • 第二阶段:算法协商。如公钥算法列表、加密算法列表、消息验证码算法列表、压缩算法列表等,并确定最终使用的算法(此阶段明文传送)。
  • 第三阶段:密钥交换。
  • 第四阶段:服务请求。包括用户名密码认证和公钥认证(免密码登录)。

从原理上,SSH面临中间人攻击风险。客户端首次通过SSH连接时会下载服务器的公钥,并将相应信息存本地,以用于下一次连接验证,所以中间人可以替换服务器的公钥达到攻击的目的。

无线网络安全

无线安全

风险

无线网络安全威胁有以下:

  • 偶然连接:用户偶然接入
  • 恶意连接:伪装AP窃取用户数据
  • 自组网络(Ad hoc):可能会因为缺少中心点控制而造成安全威胁
  • 非传统网络:如个人蓝牙、手持机等,容易被窃听
  • 身份盗窃(MAC欺骗):伪装授权用户MAC
  • 中间人攻击:相比有线,无线网络更容易受中间人攻击
  • 拒绝服务(DoS):无线网络容易受DoS攻击
  • 网络注入:针对无过滤能力的网络

安全无线传输

无线传输的主要威胁是窃听、消息的修改、出入或破坏。常用对策有信息隐藏技术与加密。

  • 信息隐藏技术:SSID加密/隐藏、减小信号强度到最低水平、将无线接入点放置在建筑物内部,远离窗户和外墙、定向天线、屏蔽技术……
  • 加密:传输信息加密

安全无线接入点

无线接入点的主要安全威胁是对网络的未授权访问,应对此类威胁的主要方法是IEEE 802.1X 标准基于端口的网络接入控制,本标准为希望连接到局域网或无线网络的设备提供了认证机制。 802.1X的使用可以防止恶意接入点和其他未授权的设备成为不安全的后门。

安全无线网络

无线网络安全普遍采用以下技术:使用加密,使用防病毒软件和反间谍软件或防火墙,只允许特定的计算机接入无线网络,修改预设密码等等。

IEEE 802.11i

IEEE 802.11i,802.11下进行WLAN安全问题性能研究的工作组,制定无线网络安全标准。发展:WEP->WPA->WPA2。

image-20200706222754468

IEEE 802.11i只关心站点(STA)与相应访问接入点之间(AP)之间的通信安全,执行过程分为5个阶段。

image-20200706222858533

  • 第一阶段:发现阶段。此阶段功能是站点(STA)和网络接入点(AP)相互确认身份,协商一系列安全策略,并建立连接 。发现阶段分为三个交换组
    • 网络和安全通道的发现:STA发现AP及相应的安全策略
    • 主动发现:AP定时广播信号
    • 被动发现:AP响应探测帧
    • 开放系统认证:STA与AP间进行身份交换
    • 连接:协商需要用到的安全措施
  • 第二阶段:认证阶段。此阶段功能是站点(STA)与认证服务器(AS)间相互认证。IEEE 802.11i也使用IEEE 802.1X进行认证。分为三个阶段:
    • 连接到认证服务器:STA发送要连接AS的请求到与其连接的AP,AP收到请求并转发至AS。
    • EAP交换
    • 安全密钥传送:一旦认证建立,AS产生主会话密钥(MSK)并发送至站点与AP,站点与AP接收主密钥并产生后续通信所需的所有密钥。
  • 第三阶段:密钥管理阶段。此阶段产生一系列密钥并分配到站点(STA)中。
  • 第四阶段:保密数据传输阶段。此阶段目的是使用加密机制保护信息完整性与数据机密性。802.11i定义了两个方案保护802.11 MPDU中的数据传输:TKIP、CCMP。
  • 第五阶段:终止连接。

电子邮件安全

电子邮件威胁

  • 真实性威胁:可能导致电子邮件系统的非授权访问
  • 完整性威胁:可能导致电子邮件内容的非授权修改
  • 机密性威胁:可能导致敏感信息的泄露
  • 可用性威胁:可能阻碍终端用户正常收发电子邮件

电子邮件安全威胁和应对:

威胁 对合法发送者影响 对接收者影响 应对措施
由未授权MTA发送的邮件(如恶意僵尸网络) 名誉受损,合法发送者的合法邮件可能被拦截 垃圾邮件、恶意链接 基于域的认证技术;对邮件数字签名
使用欺诈或未注册的域发送邮件 名誉受损,合法发送者的合法邮件可能被拦截 垃圾邮件、恶意链接 基于域的认证技术;对邮件数字签名
使用伪造的地址发送邮件(如网络钓鱼) 名誉受损,合法发送者的合法邮件可能被拦截 垃圾邮件、恶意链接、敏感信息或用户隐私泄露 基于域的认证技术;对邮件数字签名
邮件传输途中被篡改 敏感信息、用户隐私信息泄露 恶意信息、敏感信息泄露 使用TLS传输邮件,或端到端邮件加密
由监测和捕获电子邮件流量导致敏感信息泄露 敏感信息、用户隐私信息泄露 恶意信息、敏感信息泄露 使用TLS传输邮件,或端到端邮件加密
垃圾邮件 垃圾邮件、恶意链接 反垃圾技术
对邮件服务器进行DoS/DDoS攻击 无法发送邮件 无法接受邮件 多个邮件服务器(分布式)、云端

S/MIME

MIME内容类型

image-20200706224826955

Base64

Base64是基于64个可打印字符来表示二进制的方法,字符包括A-Za-z0-9+/,共64个,对应十进制序号0-63,每6个bit用一个字符表示,不足的部分用=补全。这样就可以把各种数据转成文字,然后利用HTTP传输。

S/MIME的服务

  • 认证:通过数字签名方式实现,使用RSA私钥加密消息摘要。
    • 发送方生成消息,用SHA-256算法生成消息的256位消息摘要,用发送方的私钥采用RSA算法加密该消息摘要并将结果添加到消息中。
    • 接收方用发送方的公钥按RSA算法解密消息并恢复消息摘要,接收方对该消息用相同的算法生成新的消息摘要,并与收到的消息摘要比较。
  • 保密:消息加密。
    • 保密服务通过对消息加密实现,最常使用CBC模式的AES-128算法。在S/MIME中,每个对称密钥都只使用一次,即每个消息都会随机生成一个数字用于新密钥,且密钥与消息一起发送,并用接收者的公钥加密以保护该密钥。
    • 发送者生成消息和仅用于加密该消息的内容加密密钥,密钥为128位随机数,使用该密钥加密消息。采用RSA算法,用接收者的公钥加密密钥,并将其附于消息之后。
    • 接收者使用其私钥解密得到内容加密密钥,使用内容加密密钥解密消息。
  • 电子邮件兼容性:使用Base64转换。
  • 压缩:提高传输效率与节省存储空间。不建议压缩二进制编码加密数据,因为不会生成有意义的压缩结果,Base64数据则非常适合被压缩。

IP安全

概述

IP安全(IPSec)用于确保端到端IP层通信安全。通过实现IP层安全,可以保证传输层、应用层无安全机制时,网络也是安全的。IP通信可能遭受窃听、篡改、IP欺骗、重放等威胁。IP安全包含三个方面:认证、保密、密钥管理。IPSec在IPv4中可选,IPv6中必须支持。

image-20200706230912998

应用

IPSec能支持各种应用的关键在于它可以在IP层加密或认证所有流量,可以保护所有的分布式应用:

  • 公司或组织在WAN上建立安全的虚拟专用网络(VPN)
  • 终端用户获得对公司或组织网络的安全访问
  • 使用IPSec与其他组织进行安全通信,连入自己的内网
  • 加强电子商务安全性
  • 远程登录、Email、文件传输、Web访问等

image-20200706231231111

传输模式与隧道模式

截屏2020-07-06 下午11.16.44

传输模式主要为上层协议提供保护:

  • 增强对IP包数据的保护,不包含IP报头。
  • 一般用于两台主机间的安全通信

隧道模式对整个IP包提供保护:

  • 整个数据包加安全域被当成一个新的IP包,并拥有一个新的IP报头。
  • 由于原来的包被封装,新的数据包可拥有完全不同的源地址和目的地址,以增强安全性IP报头。
  • 一般通信双方至少其中一方是网络边界设备(防火墙或路由器)

IP安全策略

image-20200706233920277

安全关联 SA

安全关联(SA)是发送端和接收端之间为数据流提供安全服务的一个单向逻辑连接,如果需要进行双向安全交换,则需要两个安全关联。安全服务由AH或ESP实现。

安全关联包含三个参数:

  • 安全参数索引(SPI):仅在本地有意义的比特串。
  • IP目的地址:SA的目的地址。
  • 安全协议标识:标识关联是AH关联还是ESP关联。

在任何IP包中,安全关联由IPv4或IPv6报头中的目的地址唯一标识,而SPI则封装于AH或ESP扩展头中。

  • 传输模式SA:SA仅保护IP层以上协议数据的安全,对IP头不保证安全。SA参数中的IP目的地址不变。
  • 隧道模式SA:SA保护整个IP包。SA参数中的IP地址改变。

SA通过英特网密钥交换(IKE)等协议在通信双方协商建立。SA建立后,每个SA相关参数由安全关联数据库(SAD)集中管理。

安全关联数据库 SAD
  • 安全参数索引(SPI):32位的比特串,唯一标识SA
  • 序列号计数器:32位,用于生成AH和ESP包头中的序列号域
  • 序列计数器溢出:标识序列号是否溢出,溢出时阻止传输
  • 防止重放窗口:判定数据包是否为重放
  • AH信息,ESP信息
  • 安全关联生存期:时间间隔或计数器,超过阈值后SA必须终止
  • IPSec协议模式:传输模式、隧道模式
  • 最大传输单元(path MTU):最大包长度等
安全策略数据库 SPD

安全策略数据库(SPD)用于描述IP流量与特定的SA相关联的方法,即策略。

IP包输出处理流程:

  • 包中相应域的值与SPD比较,找到匹配的SPD入口,入口指向对应的一个或多个SA
  • 若SA存在,则选定SA和其相关联的SPI
  • 执行IPSec处理(AH或ESP处理)

SPD入口由以下选择决定:远程IP地址、本地IP地址、协议、名称(来自操作系统的用户标识)、本地和远程端口。例子如下:

image-20200706235634351

通信过程

出栈报文,如果策略是保护,则查询SAD,如果没有发现匹配的SA,则唤醒IKE生成SA。

截屏2020-07-06 下午11.57.47

入栈报文:

image-20200706235913400

封装安全载荷 ESp

ESP(Encapsulating Security Payload),ESP通过对原始IP包的处理,实现机密性、数据源认证、完整性、抗重放攻击、有限的流量机密性等功能。ESP所提供服务依赖于建立SA时的选择和在网络拓扑中的位置

格式

截屏2020-07-07 上午12.22.10

  • 安全参数索引(SPI):32位,标识一个SA。
  • 序列号:32位,防止重放
  • 初始值(IV):可选,算法需要的初始值或随机数
  • 载荷数据:可变长度
  • 流量机密性(TFC)填充:可变、可选。隧道模式要求
  • 填充域:0-255字节。扩展明文数据包到加密算法需要长度,如分组加密。增加实际长度,提供部分流量保密功能。
  • 填充长度:8比特,表明填充域的长度
  • 邻接报头:8比特,通过标识载荷中第一个报头来标识包含在载荷数据域中的数据类型
  • 完整性校验(ICV):可变长度,可选。数据包先加密后计算ICV值。

防止重放服务

image-20200707003327189

IPSec通过滑动窗口实现防重放服务,IPSec对收到的包处理过程如下:

  • 若接收包在窗口中且是新包,则验证消息认证码(MAC),验证通过则标记窗口中相应位置
  • 若接收包超过窗口右边界且是新包,则验证MAC,通过则滑动窗口使该序列号成为窗口右边界,并标记窗口中相应位置
  • 若接收包超过窗口左边界或未通过MAC验证,则丢弃包

ESP 传输模式与隧道模式

image-20200707003654825

互联网密钥交换 IKE

  • IPSec收发双方共需要2个密钥,分别用于认证与加密
  • IPSec要求支持手动与自动两种密钥管理类型
    • 手动:系统管理员手动配置密钥和相关参数,本方式可应用于小规模、相对静止的环境
    • 自动:为SA自动创建密钥,此方式可应用于大型分布式系统中

IPSec自动密钥管理协议统称为英特网密钥交换(IKE,Internet Key Exchange),是Diffie-Hellman密钥交换算法的细化。

Diffie-Hellman算法优缺点

  • Diffie-Hellman算法优点:
    • 仅在需要时生成密钥,不需要长时间存储密钥,增强了安全性
    • 交换仅需全局参数达成一致,不需要其他预先存在的基础设施,减少开销
  • Diffie-Hellman算法弱点
    • 不提供任何各方身份信息
    • 易受中间人攻击

IKE算法

IKE密钥确定保持了Diffie-Hellman优点,并弥补了不足。IKE密钥确定具有5个重要特性:

  1. 利用Cookie机制防止拥塞攻击。攻击者伪装成合法用户的源地址,并不断发送Diffie-Hellman公钥给受害者, 受害者持续计算Diffie-Hellman密钥导致系统阻塞。Cookie交换要求各方在初始消息中发送一个伪随机数Cookie,此消息需 得到对方确认,此确认必须在Diffie-Hellman密钥交换的第一条消息中重复,如果源地址被伪造,则攻击者不会受到应答。

  2. 双方可协商得到一个组,性质同Diffie-Hellman密钥交换的全局参数

  3. 使用随机数防止重放攻击。
  4. 允许交换Diffie-Hellman公钥值
  5. 对Diffie-Hellman交换进行认证,防止中间人攻击

系统安全

恶意软件

名称 描述
病毒 与感染代码同步执行
蠕虫 可独立执行,并可在网络中传播副本
逻辑炸弹 植入的程序,触发条件后执行
特洛伊木马 在正常程序中隐藏恶意功能
后门/陷入 可绕过安全检查机制
可移动代码 可移动到不同平台
漏洞利用 针对单一漏洞或一组漏洞的代码
下载器 在被攻击主机上安装其他程序
自动路由程序 用于远程入侵的工具
病毒生成器 自动生成新病毒的工具集
垃圾邮件程序 用于发送大量垃圾邮件
洪泛 DOS攻击
键盘记录器 记录键盘敲击记录
Rootkit 获得管理员权限后的攻击工具
僵尸 肉鸡
间谍软件 在计算机上搜集信息并发送到其它系统
广告软件 植入到软件中的广告程序,如弹窗广告

防护措施

恶意软件防护4元素:政策、觉悟、漏洞缓解、威胁缓解。

常见防护设备:防火墙、入侵检测系统(IDS)

DDoS

分布式拒绝服务攻击(DDoS)试图消耗目标设备的资源,使其不能提供服务。

DoS与DDoS的区别:

  • 拒绝服务(DoS)从单一主机发起试图阻止某种合法用户使用的攻击。
  • 分布式拒绝服务攻击(DDoS)从大量主机发起试图阻止合法用户使用的攻击。

常见攻击方式:

  • 发送ICMP包
  • 利用TCP三次握手原理发送SYN包

直接DDoS攻击与反射DDoS攻击:

  • 僵尸主机直接攻击针对目标主机。
  • 僵尸主机向正常主机发送要求回应的封包,封包的IP头包含攻击目标主机的IP,未感染主机收到封包后向攻击目标主机发送回包。

image-20200707011436992

防护措施:

  • 攻击预防与先占(攻击前):使受害主机承受住攻击,并接受合法用户的请求。技术包含对资源的消耗采取强制策略并提供后备资源。此外,可通过完善系统和网络协议来降低遭受DDoS攻击的可能性。
  • 攻击监测和过滤(攻击中):试图通过攻击检测使得在攻击开始时就检测到,并立即做出响应,最大限度减小攻击对目标产生的影响。检测包括寻找可疑行为方式,过滤掉可能的攻击包。
  • 攻击源回溯和鉴定(攻击进行中或攻击后):尝试识别攻击源

入侵检测

入侵

入侵的目标是获得系统的访问权限或提升访问权限。大多数的初始攻击都利用了系统或软件中存在的漏洞,允许入侵者在系统上执行代码并留下后门。大多数情况下,如果知道其他用户的口令,入侵者就可以登录系统,使用合法用户的所有权限。

入侵技术

常见密码获取方法:尝试默认密码,穷举弱密码,密码字典爆破,搜集用户信息(目标及其家人姓名、生日、电话、地址等)并尝试,使用木马绕过访问限制,网络窃听。

检测方法

  • 审计记录
  • 统计异常检测:统计异常检测主要可分为阈值检测与基于行为曲线的检测。
    • 阈值检测:在一定时间间隔内超出阈值则判定为入侵行为。
    • 基于行为曲线的检测:建立单个用户或相关用户群的行为模型(利用机器学习、深度学习、强化学习)。
  • 基于规则的入侵检测:基于规则的入侵检测系统通过观察系统中的事件,运用规则集来判断一个给定的行为模式是否可疑。
    • 基于规则的异常检测:分析历史审计记录,识别使用模式,并自动产生描述该模式的规则。
    • 基于规则的渗透检测:系统的关键特征在于使用规则鉴别已知的渗透或利用已知漏洞的渗透。
  • 基于比率的错误
  • 分布式入侵检测:网络不同位置部署数据收集和分析宿主机,探针技术,结合大数据进行处理。
  • 蜜罐:蜜罐是把潜在攻击者从重要系统引诱开的诱骗系统,一般放置看起来有价值的虚假信息。主要作用:
    • 迷惑入侵者,保护信息安全。
    • 抵御入侵,为管理员争取响应时间。

口令攻击防护

攻击方式 含义 防护措施
离线字典攻击 获取口令文件并比较散列值 强访问控制权限保护口令文件,利用入侵检测对口令文件鉴别
专用账号攻击 以指定账号为攻击目标并猜测口令 账号锁定机制(超过指定登录失败次数锁定账号)
常用口令攻击 使用弱口令攻击 禁止使用弱密码,扫描认证请求者IP和cookie等
针对单用户的口令猜测 利用用户个人信息猜测口令 禁止使用个人特征密码,定期更换
工作站劫持 工作站无人看管时获取使用权限 登录超时机制
利用用户错误 利用社会工程学获得口令 用户培训,多种认证机制结合
利用多个口令的使用 系统对不同用户分配相同密码 禁止使用相同或类似的密码
窃听 窃听远程登录口令 口令加密传输

口令加盐

一种广泛使用的口令安全技术是使用散列后的口令和加盐。盐值是随机数,口令和盐值作为散列函数的输入,并产生固定长度散列码,散列算法被设计成慢速执行以便阻止攻击(别忘了,口令文件存的是哈希值,而非原来的明文密码)。目的如下:

  • 防止口令文件中的口令副本可见。即使两个用户选取了相同的口令,但经salt扩展后散列值不同。
  • 极大增加了离线字典攻击的难度。
  • 找出一个用户是否在两个或多个系统上使用了同一口令变得不可能。

image-20200707013933026

Share

发表评论

电子邮件地址不会被公开。 必填项已用*标注