开场 密码学(Cryptography)先回答的不是某个具体算法,而是“系统到底想保护什么”。如果从网络安全的角度看,它主要围绕保密性(Confidentiality)、完整性(Integrity)和可用性(Availability)展开。真实性(Authenticity)也需要单独看待,因为很多场景里,攻击者不只是偷看,还会伪造、篡改,甚至冒充通信一方。
在这一讲里,最核心的模型仍然是 Alice、Bob 和 Eve。Alice 想把消息发给 Bob,Eve 可以拦截、修改、伪造消息。这个模型和 COMP3357 里的私钥密码学导论是一致的,这里不再赘述,读者可以参考 COMP3357 第 1 讲:私钥密码学导论。
密码学要保护什么 理解密码学的保护对象,可以先从资产(assets)开始。硬件和软件当然要保护,但真正不可替换的是数据。硬盘坏了可以换,系统坏了可以重装,文档、邮件、照片、交易记录一旦泄露或被篡改,往往就很难恢复原样。
所以 crypto 的目标不是单纯把内容藏起来,而是围绕三类风险建立机制。
保密性(Confidentiality)是别人看不懂 完整性(Integrity)是别人改不了,或者改了能被发现 认证和真实性(Authentication)是别人不能冒充 明文、密文、加密和解密 以下是密码学里最基本的几个概念:
明文(Plaintext) 是原始的、可读的消息 密文(Ciphertext) 是加密后的、不可直接读的消息 加密(Encrypt) 是把明文变成密文 解密(Decrypt) 是把密文恢复成明文 密钥(Key) 是决定算法输出的那段信息 他们的关系可以被定义为:
$$ C = E(P, K), \qquad P = D(C, K) $$这里 $E$ 是加密算法,$D$ 是解密算法,$P$ 是明文,$C$ 是密文,$K$ 是密钥。
也就是说,加密算法 $E$ 把明文 $P$ 和密钥 $K$ 变成密文 $C$,解密算法 $D$ 则把密文 $C$ 和同一个密钥 $K$ 变回明文 $P$。我们可以发现,密钥是整个加密系统的核心。只要密钥被泄露,整个系统就不再安全。
经典密码只是起点 最经典的加密算法是大家熟知的 Caesar cipher。它的规则很简单,明文字母整体平移固定步数 $K$,比如移 3 位。数学上可以写成
...