🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 11. **客户端-服务器结构的应用程序的安全**: 应该使用TLS 适用场景:如果你以为自己理解了前面关于公钥加密的介绍。。。 通常,在你设计了自己的RSA协议之后的1至18个月,你肯定会发现,你犯了某个错误,使你的协议没有任何安全性。 比如Salt Stack,Salt Stack的协议使用了 e=1 的RSA 公钥。。。 听起来,TLS有下面这些黑历史: * The Logjam DH negotiation attack * The FREAK export cipher attack * The POODLE CBC oracle attack * The RC4 fiasco * The CRIME compression attack * The Lucky13 CBC padding oracle timing attack * The BEAST CBC chained IV attack * Heartbleed * Renegotiation * Triple Handshakes * Compromised CAs 但是,你仍然应该使用TLS做传输协议,因为: * 这些漏洞中的大部分,仅仅是针对浏览器的,因为他们依赖受害者执行攻击者控制的JavaScript脚本,这些JavaScript脚本生成重复的明文,或特定的明文。 * 这些漏洞中的大部分,其影响都可以被减轻,只需要你在代码和配置里面写死 TLS v1.2, ECDHE,和 AES-GCM就行。这听起来很棘手,但是这远远没有你自己设计使用ECDHE和AES-GCM的传输协议棘手。 * 在一个自定义的传输协议的场景中,你并不需要依赖CA,你可以用一个自签名证书,嵌入到你的客户端里面。 * 不要自己设计加密传输协议,这是**极其困难而易错的工程难题** * 使用TLS,但是不要使用默认配置