swulling
2023-03-16 23:10:55 +08:00
这个分为两个安全问题:
1. AES 密钥放到板子上行不行?
答:不建议,AES 没有 Public Key ,是对称加密。安全角度上,将对称密钥放到板子上风险较大,意味着一旦你一个板子被人读到了密钥,那么所有的通讯的加密都无效了
优化方案 为每个板子生成单独的 Key ,如果不便于烧录,可以采用首次连接通过固定 bootstrap key 签发单独的 key 的方案,这样哪怕 bootstrap key 泄漏,获得 key 也不能用于之前的设备。
这个方案进化后就是签客户端证书,不过都证书了,那用 https mtls 是最简单的。
2. 传输层手搓 HTTP + AES ,行不行?
答:一般安全需求下(防脚本小子),可行。高安全需求(涉及到金钱、个人关键隐私信息等等),不可行。
成本可以接受的高安全需求环境下,建议使用 ATECC608 之类的安全芯片,可以自带客户端证书或者私钥,无法通过技术手段读取。而且加解密都是通过安全芯片进行的,也减轻了 MCU 的计算负担。