第2章 密码学基础:对称加密、非对称加密与哈希函数

搞联邦学习,绕不开密码学。你想想,多方数据要协作,又不愿意把原始数据亮出来,那加密就是核心工具。我自己做联邦项目时,最开始就踩过不少密码学的坑——比如选了不合适的加密算法,导致计算性能崩了。所以这一章,咱们把最基础的三种密码学工具讲清楚:对称加密、非对称加密、哈希函数。

2.1 对称加密

对称加密,说白了就是一把钥匙开一把锁。加密和解密用同一个密钥。我习惯把它想象成「你往我保险箱里放文件,咱们共用同一把钥匙」。效率高,适合大量数据的加密。

典型算法

  • DES(Data Encryption Standard):曾经的主流,但密钥太短(56位),现在已经被认为不安全。我在老项目中见过有人还想用DES,直接被我劝住了。
  • 3DES:对DES做三次操作,安全性强了些,但慢。
  • AES(Advanced Encryption Standard):当下的事实标准。密钥长度128/192/256位,软件和硬件都优化得很好。我建议项目里优先选AES-256。
关键点:对称加密的关键挑战是密钥分发——怎么安全地把密钥交给对方?联邦学习中通常配合非对称加密或密钥协商协议解决。

我经历过一个跨机构联合训练的项目,最开始用RSA加密模型参数,结果一个批次要算几秒钟,根本跑不动。后来换成AES-GCM模式(带认证的对称加密),性能直接提升了两个数量级。嗯,选对算法真的很重要。

常见工作模式

模式特点典型场景
ECB简单并行,但相同明文块会得到相同密文块,有模式暴露风险不推荐,除非数据随机性很强
CBC每个密文块依赖前一个块,需要IV文件加密,需要保证IV唯一性
GCM结合计数器模式和认证标签,支持并行网络传输加密,联邦学习梯度加密首选
我曾经犯过的错:在联邦学习中用ECB模式加密梯度,结果发现不同客户端的梯度模式直接暴露。改了GCM才解决。

2.2 非对称加密

非对称加密有一对密钥:公钥和私钥。公钥公开,私钥自己藏着。别人用你的公钥加密数据,只有你能用私钥解密。缺点是速度极慢,不适合加密大批量数据。一般在联邦学习中,我们用非对称加密来交换对称密钥,或者做数字签名。

典型算法

  • RSA:基于大整数因数分解难题。密钥长度建议2048位以上。我见过有人用1024位RSA,觉得安全了,但几年前已经被破解证明不安全了。
  • ECC(椭圆曲线加密):同样安全强度下,密钥短很多(256位ECC ≈ 3072位RSA)。性能也更好,支持密钥交换(ECDH)和签名(ECDSA)。联邦学习里我几乎只用ECC做密钥协商。

你可能会问:为什么非对称加密这么慢?因为它涉及大数运算。RSA解密需要做模幂运算,而AES只是简单的字节替换和移位。我曾经在树莓派上测试,RSA-2048一次解密花了几十毫秒,而AES-256加密1MB数据才花几毫秒。所以实际系统里,非对称加密只用来混合加密——先用非对称加密传递一个临时对称密钥,后续全用对称加密。

典型应用:数字签名

联邦学习里,客户端和服务器之间要验证身份。比如服务端发来的聚合参数,客户端怎么确认是官方的?签名。客户端用自己的私钥对模型更新签名,服务端用公钥验签。保证数据没被篡改,也确实来自声称的客户端。

个人习惯:我在联邦学习框架里,通常用ECDSA(椭圆曲线数字签名)做身份认证,密钥短、签名快。注意签名不是加密,它不保护内容隐私,只保护完整性和来源。

2.3 哈希函数

哈希函数把任意长度的输入,变成固定长度的输出(摘要)。它不可逆、抗碰撞。联邦学习里主要用在完整性校验、伪随机数生成、密码学承诺等地方。

典型算法

  • MD5:128位摘要,但已经被彻底攻破,不推荐任何安全场景使用。
  • SHA-1:160位,也有了已知碰撞攻击,建议停用。
  • SHA-2(SHA-256/512):当前标准。SHA-256输出256位,足够安全。联邦学习里的哈希地址、HMAC等都基于它。
  • SHA-3:新一代标准,但实际部署较少。

我记得有一次做联邦学习聚合的防作弊机制——客户端提交的梯度,服务端先哈希一下,缓存摘要,防止重复提交。当时用SHA-256,速度很快,没有影响整体流程。

哈希在联邦学习中的两个关键作用

  1. 数据完整性:客户端和服务端之间传输的加密包,可以附带哈希值。接收方重新算一遍哈希,看是否一致,就知有没有被篡改。
  2. 承诺(Commitment):在多方密钥协商中,各方先公布自己密钥的哈希值,再公布密钥本身。这样可以防止某方根据别人密钥调整自己密钥(绑定保证)。
注意:哈希函数不是加密。你不能用哈希隐藏数据内容,因为它是确定性函数,而且可以暴力枚举。隐私保护需要加密或乱码电路等。

2.4 三类密码学工具的关系

我把它们的协作关系总结成一张图。你看着就能明白,联邦学习的安全底座是怎么搭建的:

联邦学习密码学基础三件套 对称加密 AES-256, GCM模式 加密实际数据 非对称加密 RSA/ECC, ECDH 密钥交换、数字签名 哈希函数 SHA-256, HMAC 完整性、承诺 混合加密 密钥派生 联邦学习安全聚合 隐私保护 · 完整性 · 身份认证 实际系统中:非对称加密协商AES密钥 → AES加密梯度 → 哈希校验完整性 → 签名验证身份

从图上可以看出,三种密码学工具各司其职:非对称加密负责安全地协商密钥,对称加密负责高效的批量数据加密,哈希函数负责数据完整性校验和承诺绑定。三者结合,才构成联邦学习安全通信的完整拼图。

2.5 小结

这一章我们梳理了对称加密、非对称加密和哈希函数的核心概念和典型算法。我还分享了几个实际踩坑的例子。你记住三个关键点:

  • 不要用ECB模式加密联邦学习梯度。
  • 不要用短密钥(RSA < 2048,ECC < 256)。
  • 哈希只能验完整性,不能保隐私。
小练习:假设你有一个联邦学习框架,客户端模型更新大小是400KB。请估算用AES-256-CBC加密一次要多久(参考AES吞吐量约500MB/s)?用RSA-2048加密同样数据呢?答案显然选AES。