加密基础:对称加密与非对称加密,密钥管理的重要性,哈希与数字签名

加密这件事,说白了就是给数据上把锁。但锁的种类不同,用法也天差地别。我刚开始接触对象存储加密时,总觉得密钥嘛,藏好就行——后来被坑过一次,才明白这里面的门道有多深。

对称加密:又快又简单,但密钥怎么给?

对称加密,就是加密和解密用同一把钥匙。你想想看,就像你家大门钥匙,自己用它能锁门,别人拿它也能开门。

常见的算法有 AES、DES、3DES。现在业界基本只用 AES-256。我个人习惯用 AES-GCM 模式,因为自带认证,省去额外校验。

个人经验: 我在项目中遇到过客户用 AES-ECB 模式加密文件,结果加密后的图片还能看出轮廓。ECB 模式不推荐,坚决别用。

对称加密的优势是速度快,适合大文件。缺点呢?密钥分发和管理麻烦。你和对方都需要同一把钥匙,怎么安全地传过去?如果密钥在传输中被截获,加密就等于白做了。

避坑指南: 我曾经把 AES 密钥硬编码在配置文件里,结果代码泄露后所有备份数据都暴露了。密钥不能跟着源码走!

非对称加密:公钥随便给,私钥自己藏

非对称加密,用一对钥匙:公钥和私钥。公钥可以公开,私钥必须保密。你拿公钥加密,只有对应的私钥才能解密。反之,私钥签名,公钥验证。

主流算法有 RSA(2048位以上)、ECC(椭圆曲线,更高效)。非对称加密速度慢,不适合加密大文件,但非常适合密钥交换和数字签名。

举个实际场景:在 SSE-KMS 中,我们通常用非对称加密来保护对称密钥。客户端用 KMS 的公钥加密一个临时对称密钥,然后上传到服务端。只有 KMS 的私钥能解开,安全又高效。

关键点: 非对称加密不直接加密数据,而是加密对称密钥。这叫“混合加密”,兼顾安全与性能。

哈希与数字签名:不是加密,但比加密更常用

哈希不是加密,它没有密钥,也不可逆。你把一段数据丢进去,得到一个固定长度的摘要。哪怕改一个字节,摘要就完全不同。

常用哈希算法:SHA-256、SHA-3。MD5和SHA-1已经不安全了,别再用了。我在项目中用 SHA-256 校验上传文件完整性,确保传输过程中没被篡改。

数字签名是哈希 + 非对称加密的结合。先对内容算哈希,然后用私钥加密哈希值,得到签名。接收方用公钥解密签名,比对哈希值。如果一致,说明内容没被改过,且确实来自私钥持有者。

注意: 数字签名不等于加密。签名只保证完整性和身份,不保证机密性。消息本身仍然是明文。

密钥管理:整个加密体系最薄弱的一环

算法再强,密钥泄露一切归零。我见过太多公司花大价钱买加密方案,最后密钥存储却用个共享文件夹。嗯,这里要敲黑板了。

密钥管理包括:

  • 生成: 必须用安全的随机数生成器,比如 /dev/urandom 或硬件安全模块(HSM)。
  • 存储: 密钥不能明文存磁盘。要用 HSM 或 KMS 托管。SSE-KMS 就是 AWS 帮你管密钥。
  • 轮换: 定期更换密钥。万一某个密钥泄露,影响面能控制。
  • 销毁: 彻底删除旧密钥,防止恢复。云服务商通常有“等待期”机制。

我的习惯: 密钥生命周期里,我最重视轮换。之前有个项目用同一个密钥加密了三年数据,后来怀疑密钥泄露,所有数据都得重新加密,成本极高。现在我都设自动轮换,90 天一次。

四种技术的对比

技术是否可逆是否有密钥典型用途性能
对称加密是单一密钥数据加密快
非对称加密是公钥/私钥密钥交换、签名慢
哈希否无完整性校验快
数字签名否(签名无解密)私钥签名/公钥验证身份认证、防篡改中等

加密体系核心逻辑

下图展示了这几种技术之间的关系。你看,对称加密和非对称加密互补使用,哈希为数字签名提供基础,密钥管理则是所有操作的安全根基。

加密体系核心结构 密钥管理 生成 / 存储 / 轮换 / 销毁 对称加密 (AES) 密钥相同,速度快 非对称加密 (RSA/ECC) 公钥加密,私钥解密 哈希 (SHA-256) 不可逆,校验完整性 数字签名 哈希 + 非对称加密 说明:对称加密与非对称加密通常组合使用(混合加密),哈希与数字签名负责完整性验证。密钥管理是所有加密操作的基石。

小技巧: 实际项目中,对象存储的 SSE-KMS 底层用的就是对称加密 AES-256 来加密数据,而 KMS 的密钥本身由非对称加密保护。哈希用于校验上传文件的完整性,数字签名则用在认证环节。这套体系环环相扣,缺一不可。