引入:网络安全

本章节是密码学与网络安全的简要介绍。

网络安全

美国国家标准与技术研究院(NIST)对计算机安全的定义是:对自动化信息系统的保护,以实现保护信息系统资源(包括硬件、软件、固件、信息 / 数据和电信)的可用性、完整性和保密性的适用目标。其中,可用性、完整性和保密性被称为CIA三元组:

  • Confidentiality(保密性)
    • Data confidentiality:私有或机密信息不被未授权个体获取或披露。
    • Privacy:确保个人能够控制或影响与其相关的信息的收集、存储以及披露的对象和方式。
  • Integrity(完整性)
    • Data integrity:确保信息和程序仅以特定且授权的方式被修改。
    • System integrity:确保系统以预期的方式运行,不受故意或无意的操纵。
  • Availability(可用性):确保系统及时、充分地为授权用户提供服务,不被拒绝。

除了CIA三元组之外,网络安全需求还可以包括:

  • Authenticity(真实性):具有真实性,能够被验证和信任的属性。
  • Accountability(可问责性):要求实体的行为可被唯一追溯到该实体的安全目标,系统必须保留活动记录,以便进行法医分析以追踪安全漏洞或解决交易纠纷。

网络安全主要包含:

  • Prevention:预防,使攻击失败。
  • Detection:检测,在攻击发生前、发生中或发生后识别攻击。
  • Recovery:恢复,阻止攻击并评估和修复攻击造成的任何损害。

被动攻击与主动攻击

被动攻击:试图从系统中获取信息但不影响系统资源的攻击。例如窃听(Eavesdropping),监控传输或流量分析(这类分析就算通信内容被加密保护,仍然可以进行)。通常被动攻击难以检测,因为它们不涉及任何数据篡改。

主动攻击:涉及修改数据或创建虚假数据流的攻击。例如盗取你的微信,给你爸妈发假消息这样的攻击。

老师在这里讲了个落榜艺术生小故事:以前为了对抗落榜艺术生,雇了一堆妇女来监听电报。但是由于电报是加密的,她们并不知道其中的内容,然而她们能通过发报者细微的发报习惯差异(长短音和力度)区分出发报者。并根据经验积累,把发报者和其对应的军团关联起来。这样,无需进行解密,单纯观察不同军团间的通信频次,就可以获得一部分战略动向。这就是被动攻击中的流量分析。

密码学与加密

所谓加密,是使用密钥和算法将明文转成密文,能提供保密性、真实性,也可保障完整性。这些加密方案构成的研究领域就是密码学。

常见术语

  • 原始文本 (Plaintext / Cleartext):原始的可读消息
  • 加密文本 (Ciphertext / Cyphertext):经过转换/编码后的不可读消息
  • 加密算法 (Cipher / Code):用于将原始文本转换为加密文本并可逆的算法
  • 密钥 (Key):用于加密算法的信息,仅发送者和接收者知道
  • 私钥 (Private Key):仅接收者(有时包括发送者)知道的密钥输入
  • 公钥 (Public Key):所有人都知道的密钥输入
  • 密码学 (Cryptography):研究加密技术的艺术或科学
  • 密码分析 / 破解 (Cryptanalysis / Codebreaking):在不知道密钥的情况下研究解密方法的学科

古典密码技术(Classical Encryption)

在古典密码学中,主要有三种加密方式:

  • 替换加密(Monoalphabetic Ciphers):明文中的字母被按照一定规律替换成其他字母、数字或符号。可以有单字母置换(如凯撒密码 Caesar Cipher);也可以多字母置换(如维吉尼亚密码 Vigenere cipher)
  • 置换(排列)加密(Transposition (Permutation) Techniques):对明文字符进行重新排列。常见的算法是
    • 铁栅栏密码 (Rail Fence Technique)将明文按斜线方式写入多行,再按行读取形成密文
    • 块状置换密码 (Block / Columnar Transposition Technique):将明文分成固定大小的块,按列顺序重新排列
  • 组合使用替换+置换

单表替换加密(Monoalphabetic Substitution):凯撒密码(Caesar Cipher)

单表替换加密是古典替换加密的一种,其加密算法是将明文字符按照密钥映射替换为密文字符;解密算法则是将密文字符替换回对应的明文字符。在单表替换中,明文字符和密文字符的对应关系是一对一的,即一个明文字符始终被替换为同一个密文字符,这一特性是单表替换的核心规则。

凯撒密码是单表替换加密的典型案例,它通过固定位移来实现字符替换。

  • 加密过程:明文(A - Z)按照设定的密钥(例如 key = 3)向下移位,比如 A 移位 3 次后变成 D,B 变成 E,以此类推,最终得到密文(DEFGHIJKLM…ABC)。
  • 解密过程:密文按照相同的密钥(key = 3)向上移位,比如 D 移位 3 次后变回 A,E 变回 B,从而还原出明文。

这种加密方式的核心是位移量(密钥),只要知道位移的数值,就能实现加解密,是最基础的单表替换加密算法之一。

而通常英文单词具有某些统计学特征,例如某些单词常见于开头,通过长密文进行统计学推演,即可轻易破解这种密码。同时,暴力地移位破解也可以轻易破解这种密码。

多表替换加密(Polyalphabetic substitution):维吉尼亚替换(Vigenère substitution)

多表替换加密采用一组相关的单表替换规则,由密钥决定在特定变换中选用哪条规则。例如下面这个例子,明文字符(顶行 A - Z)对应 26 组不同的密文字符替换表(行 0 到行 25),每个行代表一套单表替换规则,密钥会指定在加密不同位置字符时使用哪一行的规则,以此突破单表替换 “一对一” 的固定对应关系,提升加密复杂度。

image-20251118214448078

维吉尼亚密码是多表替换的经典代表。它由 G. Bellaso 于 1553 年提出,后被 Blaise de Vigenère 在 1586 年重新发明,曾在 3 个世纪内被视为高度安全的加密方式。

下图是维吉尼亚密码的密码本,最左侧的列表示明文字母,每行对应一个明文字母;最上方的行表示密钥字母,每列对应一个密钥字母。某行(明文字母)与某列(密钥字母)的交叉单元格,就是该明文在该密钥下的密文字母

image-20251118215135612

例如,明文为ATTACK,秘钥为EMILYE:

  • 第 1 组:明文A(行 A) + 密钥E(列 E)→ 交叉点为E
  • 第 2 组:明文T(行 T) + 密钥M(列 M)→ 交叉点为F
  • 第 3 组:明文T(行 T) + 密钥I(列 I)→ 交叉点为B
  • 第 4 组:明文A(行 A) + 密钥L(列 L)→ 交叉点为L
  • 第 5 组:明文C(行 C) + 密钥Y(列 Y)→ 交叉点为A
  • 第 6 组:明文K(行 K) + 密钥E(列 E)→ 交叉点为O

最终密文就是EFBLAO

维吉尼亚替换可通过双字母组合(digram)或三字母组合(trigram)的频率分析攻击;密钥越长,维吉尼亚密码的安全级别越高。若密钥完全随机、长度与明文相同且仅使用一次(即,不会出现明文是32个字母,秘钥是4个字母,秘钥重复使用8次),它就成为一次一密(one-time pad),具备绝对安全性。

置换技术(Transposition Techniques)

最简单的置换密码是栅栏技术(Rail Fence technique):明文按对角线序列写下,再按行读取形成密文。

以消息 “meet me after the toga party” 为例,按对角线排列为:

1
2
M E M A T R H T G P R Y
E T E F E T E O A A T

最后就得到密文: mematrhtgpryetefeteoaat

置换技术允许对密文进行多次置换,例如对mematrhtgpryetefeteoaat再次应用栅栏技术,就可以得到:

1
2
m m t h g r e e e e a t
e a r t p v t f t o a

二次加密密文为mmthgreeeeateartpvtftoa

更复杂的方案可设计为分块置换(block transposition),即对明文分块并按列重新排列。

隐写术:另一种加密思路(简要介绍)

隐写术是指在某一消息内藏着关键信息,严格来说,隐写术不是加密。密码学是将消息变得不可理解,而隐写术是隐藏消息的存在本身。

例如下图是一张包含隐写图像的树的图片,通过移除每个颜色分量的除两个最低有效位外的所有位,然后进行归一化,可得到隐藏的猫。

image-20251118220551145

现代密码技术(Morden Encryption)

现代密码主要有以下几种:

  • 对称加密:发送方和接收方使用同一密钥,大多数古典加密方案本质上属于对称密钥方案。现代密码中典型算法有 DES、三重 DES、AES,这些算法也又替换和置换(排列)这两个基本操作构成。
  • 非对称加密:使用两个密钥(公钥和私钥)分别进行加密和解密。非对称密码的本质是使用正向计算简单,而逆向计算难得特性。代表算法有 Diffie - Hellman、ElGamal、RSA、ECC。
  • 哈希函数:单向加密。只能加密不能解密

根据加密的操作单位,又可以分为:

  • 流密码(Stream cipher):逐位或逐字节地加密数字数据流,例如维吉尼亚替换密码就属于流密码的一种。
  • 分组密码(Block cipher):将一块明文作为一个整体处理,生成等长的密文块,典型例子有 DES、AES 等。

对称加密

对称加密中,加解密使用同一秘钥。通信方和接收方在通信前必须先约定一个会话密钥。发送方用该共享秘密密钥将明文加密为密文,经网络传输后,接收方用同一密钥将密文解密为明文。该密钥是共享的,且在双向通信中使用。

对称加密不仅能加密,还能身份认证:由于通信双方共享同一个秘密密钥,当接收方能够用该密钥成功解密接收到的密文时,就可以确认发送方是合法的。

然而,对称加密的主要挑战是让发送方和接收方在不被他人发现的情况下约定秘密密钥,尤其是考虑到密钥可能需要不时更改。这需要一种方法,使双方能在不担心被窃听的情况下通信。

对称加密可以被:

  • 被动攻击(窃听):获取和 / 或猜测密钥,并用其解密消息;捕获传输中的文本,尝试仅密文攻击以获取明文。
  • 主动攻击:破坏通信信道(拒绝服务);获取和 / 或猜测密钥和密码系统,并用其发送虚假消息。

优势:

  • 对称密钥加密可设计为具有高数据吞吐量。一些硬件实现的加密速率可达每秒数百兆位,而软件实现的吞吐量速率可能在每秒数兆字节范围内。
  • 对称密钥密码的密钥相对较短,例如 128 位密钥被认为非常安全。

劣势:

  • 在双方通信中,密钥必须在两端都保持机密。
  • 在大型网络中,需要管理大量密钥对。
  • 在实体 A 和 B 之间的双方通信中,良好的加密实践要求频繁更改密钥,可能每次通信会话都要更改。(涉及密钥机密性、密钥分发、密钥管理问题)

对称加密:DES算法

DES如今已不再安全。NIST建议使用AES或3DES。

DES (Data Encryption Standard)是由美国国家标准与技术研究院(NIST)于 1977 年 1 月发布的对称密钥分组密码。

DES将数据以 64 位块为单位,用 56 位密钥进行加密。该算法通过一系列步骤将 64 位输入转换为 64 位输出,且使用相同的步骤和密钥可逆转加密过程(即解密)。

DES 算法的加密流程分为三步:

  1. 初始置换(initial permutation IP):64 位明文(P)经过初始置换(IP)得到 (P_0 = IP(P))。
  2. 16 轮 Feistel 函数运算:每一轮包含替换、置换(查表)、密钥混合等操作(每一轮的子秘钥都会变换),通过复杂的逻辑变换增强加密安全性。
  3. 逆初始置换(inverse permutation):对经过 16 轮运算后的数据应用初始置换的逆置换,最终得到 64 位密文。

image-20251118224325930

这种密码暴力破解只需要$2^{56}$次尝试,因此不再安全。

非对称加密

1976 年,Diffie 和 Hellman 提出了一种与以往密码学方法截然不同的突破性方案,非对称密钥加密的发展是密码学史上唯一的真正革命。非对称密钥算法基于数学函数而非替换和置换操作。

在非对称加密中,每个用户拥有两个密钥:私钥和公钥。

  • 公钥(public-key):任何人都可知晓,通常用于加密消息或验证签名。
  • 私钥(private-key):仅密钥所有者知晓,用于解密消息和创建签名。

这两个密钥相互关联,但从公钥推导出私钥在计算上是不可行的。

以 Alice 给 Bob 发送消息为例:

  • Alice 使用Bob 的公钥对明文进行加密,生成密文。
  • 密文传输到 Bob 后,Bob 使用自己的私钥对密文进行解密,还原出明文。
  • 核心逻辑是:加密使用接收方的公钥,解密使用接收方的私钥,从而实现只有私钥持有者(Bob)才能解密消息,保障了通信的保密性。

非对称加密:RSA算法

RSA算法基于大数质因数分解的困难性。

1.秘钥计算

RSA算法的秘钥是$(E,N)$或$(D,N)$这样的一个数字对,其中E是公钥,D是私钥。

  • 首先选择两个大素数 p、q(保密)
  • 质数相乘得到N,N就是秘钥数字对中的N:(N = p \times q)
  • 计算欧拉函数$\phi(N)$:(\phi(N) = (p-1)(q-1)=N-(p+q-1))
  • 选择公钥:公钥$E$需要满足$1< E<\phi(N)$,且E 与 (\phi(N)) 互质。
  • 选择私钥:私钥$D$需要满足$(E\times D)\mod\phi(N)=1$($\mod\phi(N)$表示对欧拉函数取余)

举个例子,为简化计算,这里取两个小质数:$p=3,q=11$

$N=p\times q=33$, $\phi(N) = (p-1)(q-1)=20$。

满足$1< E<20$,且不是$20$的因子的因子的数可以是3,因此公钥为$(3,33)$

满足$(3\times D)\mod20=1$的D可以是7,$3\times7=21$,对20取余是1。因此私钥为$(7,33)$

2.加密过程

RSA使用对方发给自己的公钥进行加密,即$(E,N)$。加密过程为:

  • 求幂:将明文$M$进行$E$次幂
  • 使用求幂的结果对$N$进行取余,得到密文$C$。即:$C = M^E \mod N$

接着上面的例子,对3,1,15这三个数字进行加密。所使用的公钥为$(3,33)$。因此密文是27,1,9:

解密过程

RSA 解密使用自己的私钥 ((D, N)) 对密文 C 进行处理,解密步骤与加密一致:$M = C^D \mod N$

例如收到27,1,9的密文,进行解密:

这样就获得了原文3,1,15。如果使用私钥加密,公钥解密,也可能获得正确答案。

难以破解的原因

要破解RSA算法,就必须要算出私钥的D。由于私钥是根据$(E\times D)\mod\phi(N)=1$这个规则选择的,要算出私钥就必须知道$\phi(N)$(E在公钥中已知)。要算出$\phi(N)$,就需要$p,q$两个质数。而由于$p,q,N$都非常大,因此就算公开N,也很难找到构成N的两个质数。因此RSA算法难以被破解。

混合加密系统

对称密码的速度明显快于非对称密码,但密钥交换的要求使其使用难度增加。在非对称系统中,每个人有两个密钥:公钥是共享的,因此分发相较于对称密码更简单。

非对称加密是对对称密钥加密的补充而非替代。它也并不比对称加密更安全,安全性取决于密钥长度。

如果我们已经完成了身份验证,则可以混合使用对称加密与非对称加密,来汲取二者优点:

  • 首先使用非对称加密,交换对称加密的秘钥$C_M$
  • 随后,使用该密钥对实际消息进行加密通信。即,非对称加密传递对称加密秘钥,对称加密通信。

Diffie-Hellman 算法

Diffie-Hellman 算法是一种用于交换对称加密秘钥的算法,它基于离散对数问题的计算困难性

算法步骤如下:

  • 选择两个公开的数 p和 g,$p$是大素数,$g$是小于 $p$的数
  • 私钥生成:通信双方分别选择 512 位的随机数 (S_A) 和 (S_B),这两个数是各自的私钥。
  • 双方各自计算自己的公钥:(T_A = g^{S_A} \mod p),(T_B = g^{S_B} \mod p)
  • 以明文形式交换 (T_A) 和 (T_B)。
  • 双方各自计算共享秘钥:
    • (S=(T_B)^{S_A} \mod p = (g^{S_B})^{S_A} \mod p = g^{S_A S_B} \mod p)
    • (S=(T_A)^{S_B} \mod p = (g^{S_A})^{S_B} \mod p = g^{S_A S_B} \mod p)
  • 可以看到,双方最终获得了相同的共享秘钥$S=g^{S_A S_B} \mod p$,使用$S$进行对称加密通信。

这种算法的弱点是中间人攻击:无法确定收到的 (T_B)或$T_A$ 确实来自对方,可能被中间人伪造。

假设 Eve 可以拦截并修改数据包,她会向 Alice 发送伪造的公钥 (g^C),向 Bob 也发送伪造的公钥 (g^C)。此时 Alice 用 (g^C) 计算共享密钥 (g^{S_A C} \mod p),Bob 用 (g^C) 计算共享密钥 (g^{S_B C} \mod p),而 Eve 同时掌握 (g^{S_A C}) 和 (g^{S_B C}),可以解密或篡改双方通信。

哈希函数(简要介绍)

希函数H将变长消息M映射为定长的哈希值h(也称为消息摘要),公式为(h = H(M))

“好” 哈希函数的特性:

  • 对大量输入应用函数后,输出会均匀分布且看似随机。
  • 高敏感性:消息M中任何一位的改变,极大概率会导致哈希值的改变。

若哈希值能以安全方式传输,那么任何内容的篡改几乎必然会改变哈希值,从而触发警报。哈希函数用于消息认证和数字签名领域,保障数据的完整性与不可否认性。

数字消息认证与数字签名(authentication)

消息认证的目的是验证消息的完整性,确保接收的数据与发送时完全一致(无修改、插入或重放),且发送方身份有效。

对称秘钥下的数字识别

在对称加密下,使用哈希函数计算秘钥的哈希值,这个哈希值被称为message authentication code (MAC)。

接收方收到这个哈希值,并把自己手中持有的秘钥使用同样的哈希函数进行计算,对比哈希值是否一致。

非对称秘钥下的数字识别(数字签名)

在非对称加密下,将未加密的信息注入哈希函数,算出信息的哈希值摘要。然后使用发送方的私钥对信息摘要进行加密。

接收方首先使用自己的公钥对信息进行解密,拿到未加密信息,然后也对其计算哈希值。再使用发送方的公钥对收到的哈希值进行解密,对比二者是否一致。

这样的非对称下的数字识别被称为数字签名,该流程同时保障了消息完整性(哈希值对比)、发送方身份认证(只有 Bob 的私钥能生成对应签名)和保密性。

MAC 的生成和验证使用同一秘密密钥,这要求消息收发双方在通信前约定好密钥(类似对称加密场景);而数字签名基于非对称密钥,逻辑上更具灵活性

另外一些网络安全的科普

网络策略服务器(Network Policy Server NPS):允许创建和执行组织范围的网络访问策略,用于连接请求的认证和授权。NPS 对无线、认证交换机、远程访问拨号和虚拟专用网络(VPN)连接执行集中式的认证、授权和计费。

应用安全:涉及 S/MIME(电子邮件安全)、PGP(良好隐私)等技术。

  • S/MIME:是用于 MIME 数据公钥加密和签名的标准,其功能内建于大多数现代电子邮件软件中,且软件之间可互操作。
  • PGP:是一种加密程序,为数据通信提供密码学隐私和认证,用于签名、加密和解密文本、电子邮件、文件、目录甚至整个磁盘分区,以增强电子邮件通信的安全性。PGP 加密采用哈希、数据压缩、对称密钥密码学和公钥密码学的串行组合,每一步使用多种支持算法中的一种。
  • 还有其他诸多安全技术,例如传输层安全(TLS)、IPsec 等。

无线网络安全:无线网络往往比有线网络有更高的安全风险,导致高风险的关键因素包括:

  • 信道:易受被动和主动攻击,例如窃听和干扰。
  • 移动性:使一些安全功能更难实现。
  • 资源:许多情况下计算资源有限。
  • 物理可访问性。

无线网络需要更谨慎的安全保护,例如认证、访问控制、隐私保护等。典型协议有 WEP、IEEE 802.11i。