19

安全与加密

保护信息

阅读量:1 · 预计 17 分钟读完

加密数字签名防火墙
阅读进度5%

第十九章 安全与加密 — 保护信息

导读

当你在网上购物,输入信用卡号时,你怎么知道这些信息不会被中间的黑客截获?当你发送一条加密的微信消息,你怎么知道只有接收者能够阅读?当你登录银行账户,你怎么知道与你通信的确实是银行的服务器,而不是一个假冒的网站?

这些问题的答案都指向同一个领域——信息安全与密码学(Information Security and Cryptography)。在数字时代,信息的安全关乎个人隐私、商业利益、国家安全。密码学——这门起源于古代的"秘密书写"艺术——已经成为保护数字世界的核心技术。

本章将全面介绍信息安全与密码学的基本原理。我们将从安全的基本目标开始,了解机密性、完整性、可用性;然后深入探讨对称加密、非对称加密、哈希函数、数字签名等密码学工具;接着了解TLS/SSL、身份认证、网络安全等实际应用;最后探讨量子计算对密码学的挑战和后量子密码学的发展。

核心概念详解

19.1 信息安全的基本目标

信息安全的核心目标通常用CIA三元组来概括:

机密性(Confidentiality):确保信息只被授权的人访问。未授权的人无法获取信息的内容。

完整性(Integrity):确保信息在传输和存储过程中不被篡改。任何修改都能被检测到。

可用性(Availability):确保授权用户在需要时可以访问信息和资源。

除了CIA三元组,还有其他重要的安全目标:

  • 认证(Authentication):验证用户或系统的身份
  • 不可否认性(Non-repudiation):确保行为的发起者不能否认其行为
  • 授权(Authorization):控制用户对资源的访问权限

19.2 密码学简史

密码学的历史可以追溯到几千年前。

古典密码

凯撒密码(Caesar Cipher):古罗马时期,凯撒大帝使用字母移位来加密军事通信。例如,将每个字母向后移3位:A→D, B→E, ..., Z→C。

替换密码(Substitution Cipher):将每个字母替换为另一个字母。密钥是一个字母表的排列。虽然密钥空间很大(26! ≈ 4×10²⁶),但可以通过频率分析来破解。

维吉尼亚密码(Vigenère Cipher):使用多个替换表,密钥是一个关键词。曾被认为是"不可破解的",直到19世纪被破解。

机械密码

恩尼格玛机(Enigma):二战期间德国使用的转子密码机。通过多个转子的旋转实现复杂的多表替换。盟军破译恩尼格玛的故事是密码学历史上最著名的篇章之一,阿兰·图灵(Alan Turing)在其中发挥了关键作用。

现代密码学

1970年代是现代密码学的分水岭:

  • 1976年:Whitfield Diffie和Martin Hellman发表了《密码学新方向》,提出了公钥密码学的概念
  • 1977年:RSA算法(Rivest-Shamir-Adleman)被提出——第一个实用的公钥加密和数字签名算法
  • 1977年:DES(Data Encryption Standard)被采纳为联邦标准——第一个广泛使用的对称加密标准
  • 2001年:AES(Advanced Encryption Standard)被采纳——取代DES成为新的标准

19.3 对称加密

对称加密(Symmetric Encryption)使用同一个密钥进行加密和解密。

明文 → [加密, 密钥K] → 密文 → [解密, 密钥K] → 明文

优点:速度快,适合加密大量数据

缺点:密钥分发问题——如何安全地将密钥传递给通信对方?

经典对称加密算法

DES(Data Encryption Standard)

  • 56位密钥,64位数据块
  • 16轮Feistel网络结构
  • 1977年标准化,2000年代被破解

3DES(Triple DES)

  • 使用三个密钥对数据进行三次DES加密
  • 有效密钥长度168位(实际安全性约112位)
  • 速度慢,正在被淘汰

AES(Advanced Encryption Standard)

  • 128位数据块,密钥长度128/192/256位
  • 替代AES竞赛的获胜者(Rijndael算法)
  • 使用替代-置换网络(SPN)结构
  • 目前被认为是非常安全的,没有已知的实用攻击

工作模式

对称加密算法通常只能加密固定大小的数据块。为了加密任意长度的数据,需要使用工作模式(Mode of Operation)

  • ECB(Electronic Codebook):每个块独立加密。相同明文块产生相同密文块,不安全。
  • CBC(Cipher Block Chaining):每个明文块与前一个密文块异或后再加密。需要初始化向量(IV)。
  • CTR(Counter):将块密码转换为流密码。可以并行加密,支持随机访问。
  • GCM(Galois/Counter Mode):CTR模式加上认证标签,同时提供加密和完整性保护。

19.4 非对称加密(公钥密码学)

非对称加密(Asymmetric Encryption)使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开,私钥必须保密。

明文 → [加密, 公钥] → 密文 → [解密, 私钥] → 明文

公钥加密的数据只有对应的私钥可以解密。反过来,用私钥签名的数据,任何人都可以用对应的公钥验证。

优点:解决了密钥分发问题

缺点:速度比对称加密慢几个数量级

RSA算法

RSA是最著名的公钥加密算法,基于大整数分解的困难性。

密钥生成

选择两个大素数p和q(各1024位以上)

计算n = p × q

计算φ(n) = (p-1)(q-1)

选择e,使得1 < e < φ(n)且gcd(e, φ(n)) = 1

计算d,使得d × e ≡ 1 (mod φ(n))

公钥 = (n, e),私钥 = (n, d)

加密:密文 = 明文^e mod n

解密:明文 = 密文^d mod n

RSA的安全性基于:已知n,分解出p和q是计算上困难的(对于足够大的n)。

椭圆曲线密码学(ECC)

ECC(Elliptic Curve Cryptography)基于椭圆曲线上的离散对数问题。

与RSA相比,ECC在相同安全强度下使用更短的密钥:

  • 256位ECC ≈ 3072位RSA
  • 更短的密钥意味着更快的运算和更小的存储

ECC被广泛应用于移动设备、IoT设备和TLS中。

密钥交换

Diffie-Hellman密钥交换允许双方在不安全的信道上协商出一个共享密钥,而不需要预先共享任何秘密。

Alice                    Bob
  │                        │
  │── g^a mod p ─────────→│  (a是Alice的私钥)
  │                        │
  │←── g^b mod p ─────────│  (b是Bob的私钥)
  │                        │
  │  共享密钥 = g^(ab) mod p │

即使攻击者截获了g^a和g^b,也无法计算出g^ab(离散对数问题)。

19.5 哈希函数

哈希函数(Hash Function)将任意长度的输入映射为固定长度的输出(哈希值/摘要)。

性质

  • 确定性:相同输入总是产生相同输出
  • 快速计算:可以快速计算任意输入的哈希值
  • 单向性:从哈希值无法推导出原始输入(抗原像)
  • 抗碰撞:很难找到两个不同的输入产生相同的哈希值
  • 雪崩效应:输入的微小变化导致输出的巨大变化

常见哈希算法

MD5:128位输出。已被破解,不应用于安全目的。

SHA-1:160位输出。已被破解,Google在2017年展示了SHA-1碰撞攻击。

SHA-2:包括SHA-256(256位)和SHA-512(512位)。目前安全,广泛使用。

SHA-3:基于Keccak算法,与SHA-2结构不同。提供额外的安全边际。

哈希的应用

  • 密码存储:存储密码的哈希值而不是明文
  • 数据完整性:计算文件的哈希值来验证是否被篡改
  • 数字签名:对消息的哈希值签名,而不是对整个消息签名
  • 区块链:工作量证明(PoW)基于哈希计算
  • 消息认证码(MAC):HMAC使用密钥和哈希函数提供消息认证

19.6 数字签名

数字签名(Digital Signature)用于验证消息的真实性和完整性,同时提供不可否认性。

签名过程

计算消息的哈希值

用发送者的私钥加密哈希值,得到签名

将消息和签名一起发送

验证过程

接收者计算消息的哈希值

用发送者的公钥解密签名,得到原始哈希值

比较两个哈希值是否相同

数字签名提供了:

  • 认证:只有持有私钥的人才能产生有效的签名
  • 完整性:消息被篡改后哈希值会改变
  • 不可否认性:签名者不能否认自己签过名

19.7 数字证书与PKI

数字证书(Digital Certificate)是一个电子文档,将一个实体(个人、组织、服务器)的身份与其公钥绑定在一起。证书由证书颁发机构(CA, Certificate Authority)签名。

X.509证书包含:

  • 版本号
  • 序列号
  • 签名算法标识
  • 颁发者(CA)
  • 有效期
  • 主体(证书持有者)
  • 主体的公钥
  • CA的数字签名

PKI(Public Key Infrastructure)是管理公钥和证书的整个体系,包括:

  • CA:颁发和管理证书
  • RA(Registration Authority):验证实体身份
  • 证书库:存储和分发证书
  • CRL/OCSP:证书吊销列表/在线证书状态协议

19.8 TLS/SSL

TLS(Transport Layer Security)及其前身SSL(Secure Sockets Layer)是在不可靠的网络上提供安全通信的协议。HTTPS就是HTTP over TLS。

TLS握手过程(TLS 1.3简化版)

客户端                              服务器
  │                                    │
  │── ClientHello ────────────────────→│  支持的密码套件、随机数
  │                                    │
  │←── ServerHello ───────────────────│  选择的密码套件、随机数
  │    Certificate ───────────────────│  服务器证书
  │    ServerKeyShare ────────────────│  密钥交换参数
  │                                    │
  │── ClientKeyShare ─────────────────→│  密钥交换参数
  │    [Change cipher spec] ──────────→│  
  │    Finished ──────────────────────→│  
  │                                    │
  │←── [Change cipher spec] ──────────│  
  │    Finished ──────────────────────│  
  │                                    │
  │◄════ 加密的应用数据 ═════════════►│

TLS 1.3相比之前版本的主要改进:

  • 握手只需1-RTT(甚至0-RTT恢复)
  • 移除了不安全的算法(RSA密钥传输、RC4、DES等)
  • 强制使用前向保密(Forward Secrecy)

19.9 身份认证

身份认证是验证用户或系统身份的过程。

认证因素

  • 你知道什么(Knowledge):密码、PIN码
  • 你拥有什么(Possession):手机、硬件令牌、智能卡
  • 你是谁(Inherence):指纹、面部、虹膜、声纹

多因素认证(MFA)结合两种或多种因素,大幅提高安全性。

密码安全

密码是最常见的认证方式,但也最容易被攻击:

  • 暴力破解:尝试所有可能的密码组合
  • 字典攻击:使用常见密码列表
  • 彩虹表:预计算的哈希值查找表
  • 钓鱼攻击:假冒网站骗取密码

密码安全实践

  • 使用长且复杂的密码
  • 不同网站使用不同密码
  • 使用密码管理器
  • 启用多因素认证
  • 密码存储使用bcrypt、scrypt或Argon2等慢哈希函数

生物识别

  • 指纹识别:最广泛使用,但可能被伪造
  • 面部识别:方便但受光照、角度影响
  • 虹膜识别:准确性高但设备昂贵
  • 声纹识别:可用于电话认证

19.10 网络安全

防火墙

防火墙(Firewall)是网络安全的第一道防线,根据预定义的规则过滤网络流量。

  • 包过滤防火墙:基于IP地址、端口号、协议过滤
  • 状态检测防火墙:跟踪连接状态,做出更智能的过滤决策
  • 应用层防火墙:深入检查应用层协议的内容

入侵检测与防御

IDS(Intrusion Detection System):监控网络或系统活动,检测可疑行为。

IPS(Intrusion Prevention System):在IDS的基础上,可以主动阻止攻击。

DDoS攻击

DDoS(Distributed Denial of Service)攻击通过大量僵尸网络向目标发送请求,耗尽其资源,使合法用户无法访问。

防御措施:流量清洗、CDN分散、速率限制、Anycast路由。

中间人攻击

中间人攻击(Man-in-the-Middle, MitM)中,攻击者拦截并可能篡改两方之间的通信。

防御:使用TLS加密、验证证书、使用证书固定(Certificate Pinning)。

19.11 隐私保护

差分隐私

差分隐私(Differential Privacy)在数据集中添加精心计算的噪声,使得单个记录的加入或移除不会显著影响查询结果。这样可以在发布统计信息的同时保护个人隐私。

零知识证明

零知识证明(Zero-Knowledge Proof)允许证明者向验证者证明某个陈述为真,而不泄露除"该陈述为真"之外的任何信息。

应用:隐私加密货币(Zcash)、身份认证(证明年龄超过18岁而不泄露具体年龄)。

端到端加密

端到端加密(End-to-End Encryption, E2EE)确保消息只有发送者和接收者可以阅读,即使是服务提供商也无法解密。

Signal协议是目前最广泛使用的E2EE协议,被WhatsApp、Signal、Skype等采用。

19.12 量子计算与后量子密码学

量子计算的威胁

量子计算机使用量子比特(qubit),可以同时处于0和1的叠加态。某些量子算法可以对密码学构成严重威胁:

Shor算法:可以在多项式时间内分解大整数和求解离散对数。这意味着RSA、DSA、ECC等公钥密码在足够大的量子计算机面前将不再安全。

Grover算法:可以将对称加密的搜索空间减半。AES-128的安全性降至64位,但AES-256仍然安全(128位安全性)。

后量子密码学

后量子密码学(Post-Quantum Cryptography, PQC)研究能够抵抗量子计算机攻击的密码算法。

NIST在2022年公布了首批后量子密码标准:

  • CRYSTALS-Kyber:密钥封装/密钥交换(基于格)
  • CRYSTALS-Dilithium:数字签名(基于格)
  • FALCON:数字签名(基于格)
  • SPHINCS+:数字签名(基于哈希)

量子密钥分发

QKD(Quantum Key Distribution)利用量子力学原理(如海森堡不确定性原理)来安全地分发密钥。任何窃听行为都会改变量子态,从而被检测到。

19.13 安全开发生命周期

安全不仅仅是密码学的问题,还需要在整个软件开发过程中考虑安全:

威胁建模:在系统设计阶段识别潜在的安全威胁。

安全编码:避免常见的安全漏洞(SQL注入、XSS、缓冲区溢出等)。

代码审计:定期审查代码,查找安全问题。

渗透测试:模拟攻击者的行为,测试系统的安全性。

安全更新:及时修补已知的安全漏洞。

重要知识点

知识点一:CIA三元组是安全的基本目标

机密性、完整性、可用性——信息安全的三个核心目标。

知识点二:对称加密和非对称加密各有用途

对称加密速度快但密钥分发困难,非对称加密解决了密钥分发但速度慢。实际中通常结合使用。

知识点三:哈希函数提供了数据完整性验证

单向、抗碰撞的哈希函数是密码学的基石之一。

知识点四:数字签名提供认证和不可否认性

用私钥签名、公钥验证,确保消息来源可信且未被篡改。

知识点五:TLS保护了互联网通信安全

TLS通过握手协商密钥,然后加密应用数据,是HTTPS的基础。

知识点六:量子计算威胁当前公钥密码

Shor算法可以破解RSA和ECC,后量子密码学正在开发抗量子的替代方案。

常见误区

误区一:"加密了就是安全的"

加密只是安全的一个方面。密钥管理、身份认证、访问控制、物理安全等同样重要。一个加密系统如果密钥管理不当,可能比不加密更不安全。

误区二:"自己设计的加密算法更安全"

密码学算法的安全性需要经过广泛的公开审查和分析。自创的算法几乎总是存在未知的弱点。应该使用经过验证的标准算法。

误区三:"HTTPS意味着网站是可信的"

HTTPS只保证通信是加密的,服务器身份经过了验证。但它不能保证网站本身是合法的——钓鱼网站也可以使用HTTPS。

误区四:"密码足够复杂就安全了"

密码安全不仅取决于复杂度,还取决于是否重复使用、是否被泄露、存储方式是否安全等。多因素认证比单纯依赖复杂密码更有效。

实践应用

应用一:检查网站的TLS配置

使用浏览器查看网站的证书信息,或使用在线工具(如SSL Labs)测试网站的TLS配置。

应用二:计算哈希值

使用命令行工具计算文件的哈希值:

bash
sha256sum filename
md5sum filename

应用三:生成密钥对

使用OpenSSL生成RSA密钥对:

bash
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem

应用四:密码强度测试

分析不同密码的熵值(信息量),评估其抵抗暴力破解的能力。

本章小结

本章全面介绍了信息安全与密码学的基本原理:

安全目标:CIA三元组——机密性、完整性、可用性。

密码学历史:从凯撒密码到恩尼格玛,从DES到AES,从RSA到ECC。

对称加密:DES、3DES、AES,以及ECB、CBC、CTR、GCM等工作模式。

非对称加密:RSA、ECC、Diffie-Hellman密钥交换。

哈希函数:MD5、SHA-1、SHA-2、SHA-3,以及应用。

数字签名:认证、完整性、不可否认性。

数字证书与PKI:X.509证书、CA、证书链。

TLS/SSL:安全通信协议,握手过程,TLS 1.3的改进。

身份认证:密码、生物识别、多因素认证。

网络安全:防火墙、IDS/IPS、DDoS防御、MitM防御。

隐私保护:差分隐私、零知识证明、端到端加密。

后量子密码学:量子计算的威胁和抗量子算法。

安全是一个持续的斗争——攻击者在不断寻找新的漏洞,防御者在不断完善保护措施。在下一章——也是最后一章中,我们将展望未来——计算技术将走向何方?