本篇笔记在AI的辅助下完成,可能有部分内容错误,注意查证
保密性(Confidentiality):确保信息内容只有被授权的对象才能访问,未经授权者无法获知信息内容。
完整性(Integrity):确保信息在传输或存储过程中未被篡改、破坏或伪造。即,接收方拿到的内容必须与发送方发送的内容一致。
真实性(Authenticity):确保信息的来源是可信的、身份是经过验证的,防止冒充或伪造身份。
| 属性 | 对象关注点 | 主要手段 | 典型攻击威胁 |
|---|---|---|---|
| 保密性 | 数据内容是否泄露 | 加密(AES、TLS等) | 窃听、数据泄露 |
| 完整性 | 数据是否被改动 | 哈希、MAC、签名 | 篡改、伪造 |
| 真实性 | 数据/人的身份真假 | 签名、身份认证、证书 | 冒充攻击(伪装身份) |
加密和解密使用不同密钥,不需要提前共享密钥,但速度慢,常用于密钥分发和数字签名。
加密和解密使用同一个密钥,速度快,但需要事先共享密钥。
常用的对称加密方式:
ストリーム暗号,传统方法不太实用,现代的方法可以实用
基于伪随机数生成器,将明文与伪随机密钥流(KeyStream)逐位XOR。
流加密的常见算法:
ブロック暗号,可以实用,更常用一些
将明文分割为固定长度的块,每块独立加密。
分块加密的常见算法:
MAC(消息认证码)和认证加密(Authenticated Encryption,简称AE)都是现代密码学中用于保障数据完整性和真实性的重要手段
用密钥和明文生成一个“指纹”,用来校验数据的完整性和认证发送方身份。(JWT就是这样?)
| 比较维度 | MAC(消息认证码) | AE(认证加密) |
|---|---|---|
| 功能目标 | 提供完整性和真实性校验 | 同时提供机密性(加密)和完整性/真实性 |
| 是否加密数据 | 不加密数据,仅用于校验 | 加密数据 + 校验 |
| 使用场景 | 加密后/未加密的消息完整性校验(如TLS中) | 同时需要机密性和认证的场景(如TLS、LINE、Zoom等) |
| 使用方式 | 先加密再计算MAC,通常是`Encrypt-then-MAC` | 一体化结构,如`AES-GCM`、`ChaCha20-Poly1305`等 |
| 实现结构 | 加密算法(如AES)+ MAC算法(如HMAC)手动组合 | 一种复合加密算法,同时实现加密与认证 |
| 举例算法 | HMAC-SHA256、CMAC-AES | AES-GCM、AES-CCM、ChaCha20-Poly1305 |
加密和哈希不是同一个概念,哈希会丢失信息,哈希也不需要密钥
哈希的安全要求:
目前的哈希算法:
Public Key Infrastructure,公开密钥基础设施
为互联网等开放网络中的“身份认证”与“密钥分发”提供信任基础。
为互联网通信(尤其是Web)提供机密性、完整性和认证。
版本:SSL 3.0/TLS 1.0/1.1/1.2/1.3,最新推荐TLS 1.3。
End-to-End Encryption(端到端加密,E2EE)
E2EE是指:只有通信双方能解密消息,连服务提供者也无法解密和篡改。
对比传统加密(如SSL/TLS),E2EE的安全边界不信任服务商,有效防范“中间人攻击”和大规模监控。