我正在开展一个小型项目,旨在设计两个或更多设备A和B之间的安全通信,但有以下限制:
我知道使用证书更容易管理和使用。但是,由于我对两个实体使用预定义RSA密钥的限制,然后设备可以使用AES协商新的共享密钥。
我的问题是关于这种技术的有效性,它会比使用SSL / TLS证书具有更好的性能;在步骤数和资源使用方面。此外,如果有人使用原始密钥生成(如上面的示例)与使用SSL / TLS证书进行数值分析,那将非常有用。
答案 0 :(得分:1)
我的问题是这种技术的有效性,并且它会比使用SSL / TLS证书具有更好的性能
解析证书很棘手,因为它有很多ifs / elses,但即使是嵌入式CPU也能够做到这一点。如果您完全想要解析证书,您还可以查看“卡可验证证书”,这些证书是为智能卡上的验证而创建的相对简单的证书(具有类似的有限资源,例如8-10 KiB RAM或更低)。
除此之外,验证是(相对有效的)RSA验证操作。但是,您可以通过简单地固定来自B的证书来避免这种情况。例如,您可以通过执行之前存储的加密哈希计算证书指纹来简单地测试证书。
对于密钥生成:RSA密钥对生成本身并不重要。对于主秘密协议(以及会话密钥推导),TLS具有多个选项,例如使用主密钥的密钥协商+ RSA认证或主秘密的RSA加密。它与您的方案相比如何取决于专有协议。
当然还有可用于TLS的对称选项,例如PSK(预共享密钥)和SRP。这也将创建会话密钥,但两个设备只保留一个共享密钥(或其他令牌)。
TLS有很多选项,并且不会必然引入太多开销。问题是如果你尝试创建自己的协议,你一定会失败。凭借您目前的知识,几乎可以肯定失败。因此,在探索其他任何内容之前,我会考虑(变体)TLS。如果您愿意,可以考虑Chacha20 + Poly1305等高性能套件,甚至可以配合Curve25519自签名证书。