你每天用的学密码学 HTTPS,背后就是学密码学密码学在撑着。没有它,学密码学你输入的学密码学密码、刷的学密码学卡号,在网络上跟裸奔没区别。学密码学
很多人觉得密码学就是学密码学搞加密解密,写一堆看不懂的学密码学数学公式。这个印象不算错,学密码学但太窄了。学密码学密码学真正解决的学密码学问题比"把消息藏起来"要深得多——它要解决的是:在一个根本不安全的信道里,两个人怎么建立信任。学密码学
举个具体场景。学密码学你在咖啡店连了个陌生 Wi-Fi,学密码学想登录网银。学密码学中间可能蹲着一个人,所有数据包他都能截获。按理说你没有任何办法安全地跟银行通信,因为你发出去的每一个字节他都能看到、甚至篡改。但 TLS 协议做到了。它靠的不是"把信道变安全",而是让双方在不安全信道上协商出一个只有他俩知道的密钥。这就是 Diffie-Hellman 密钥交换干的事。
我第一次看懂 DH 交换的时候有点惊讶。它的原理其实不复杂:双方各自选一个私密数字,公开算出一个值发给对方,然后各自用自己的私密数字和对方的公开值算出同一个共享密钥。旁观者能看到两个公开值,但推不出共享密钥——因为离散对数问题很难解。就这么一个巧妙的构造,解决了密钥分发这个密码学里最古老的难题。
但密码学不只是加密。它至少覆盖四件事:机密性(别人看不到)、完整性(别人改不了)、认证(确认对方是谁)、不可否认性(你签了就不能赖)。这四件事各有各的工具。AES 管加密,SHA-256 管哈希,RSA 和椭圆曲线管签名和密钥交换。它们组合起来,才有你每天无感使用的那些安全协议。
学密码学有个好处:你会开始用攻击者的视角看系统。比如你知道 MD5 早就被碰撞攻击打穿了,看到某个网站在用 MD5 存密码,你会立刻知道这地方不安全。你知道 ECB 模式对相同明文块产生相同密文块,看到一张加密后的图片还能看出轮廓,你就明白为什么不能用 ECB。这些判断不需要你成为数学家,但需要你理解每种工具的能力边界。
入门密码学不需要一上来就啃《应用密码学手册》那种砖头。先从理解几个核心原语开始:对称加密、非对称加密、哈希函数、消息认证码、数字签名。搞清它们各自解决什么问题、有什么前提假设、常见的误用方式。然后动手写点代码——用 Python 的 cryptography 库做一次 AES-GCM 加密,用 openssl 生成一对 RSA 密钥签个名。跑一遍比看十遍印象深。
数学部分确实绕不开。群、环、有限域、模运算,这些概念你得混个脸熟。但别被吓住,入门阶段理解"为什么离散对数难解"比会证明它更重要。真正做协议设计才需要深挖数论,大多数人学密码学是为了用好它,不是为了发明新算法。
有件事值得提前说:千万别自己发明加密算法。这不是保守,是血的教训。历史上无数自创算法被轻松攻破,包括一些出自专业工程师之手的。密码学的安全性需要经受公开的、持续的、全球范围的攻击检验。你用 AES 和 RSA,不是因为它们绝对安全,而是因为全世界最聪明的一批人攻了几十年没攻破。这个信任是打出来的,不是吹出来的。
学密码学的过程有点像学开车。你不需要懂发动机原理才能上路,但你得知道刹车在哪、什么时候该减速、什么路况危险。密码学就是数字世界的那套交通规则——不懂它,你迟早要出事。