@
raw0xff 我记得 WSS 就是 WebSocket over TLS 啊,还是我记错了……
AD 是输入法打字被吃了,指的是 AEAD
其实我们讲这么多,都是密码学方案和算法的问题。大家都离题万里,其实楼主要的也是一个可以实行的方案,这里楼主出一个吧:
X.509 ECC (secp256r1) 证书 + TLS 1.3 双向认证,密钥直接保存在文件里
下面是对方案的解释:
1. 楼主想要用 ECC Keypair ,那么就选 secp256r1 吧。从代码可维护和减少编码工作量的角度考虑,建议复用现有格式,也就是 X.509 证书。自己用 openssl (或者其他你喜欢的加密库)自建一个离线 CA ,然后给客户端/节点发证书就行。
2. 通信协议方面,个人建议 TLS 1.3 。楼主喜欢 WSS 的话也可以用 WSS ,和 TLS 安全性差不多。TLS 1.3 目前所有的 cipher 都是安全的,只要禁用 TLS 1.1-1.2 即可。如果有必要可以开双向认证。用现有协议而不是。WSS 相比 TLS 1.3 的好处是可以走 CDN 。此外,如果楼主还没有决定序列化方案的话,gRPC 也是很不错的选择。
3. 鉴于你的成本,KMS 就别想啦。用云服务器的话是不可能「安全存储密钥」的——只要云服务商想看就能看。阿里云有卖带 TPM 的云服务器,但是也是贵的离谱。真要做什么的话,你可以在创建服务器的时候勾选「加密磁盘」,至少如果放你云服务器的物理机磁盘被偷了不会导致你的私钥泄露。不过轻量云好像不支持加密磁盘的功能。私钥安全性也不会有什么磨损,不泄漏就行。
@
GeekGao 其实楼主的问题只是问个可以实操到加密通信方案,结果被我们话题歪到密码学原理去了。或许这就是论坛有意思的地方吧,让我看到思维碰撞的火花(
此外某小飞机的算法算不上高明,比起 Reality 来说设计的失误还是挺多的,Reality 可以说是「源于 TLS 1.3 ,高于 TLS 1.3 」了