生成原始密钥(RSA, AES) vs SSL/TLS性能



我正在进行一个小项目,旨在设计两个或多个设备a和B之间的安全通信,具有以下限制:

  • 设备A的资源非常有限(例如智能卡)。
  • 所使用的通信应该执行最少数量的加密/解密操作以建立安全连接。
  • 需要双向认证,其中A应该100%确定B的身份,反之亦然。
  • 使用的技术应该使用公钥加密(例如RSA),然后使用对称算法(例如AES)建立共享密钥

我知道使用证书更容易管理和使用。然而,由于我认为为两个实体使用预定义的RSA密钥存在局限性,之后设备可以使用AES协商新的共享密钥。

我的问题是关于这种技术的有效性,它会比使用SSL/TLS证书有更好的性能;在步骤数量和资源使用方面。此外,如果有人对使用原始密钥生成(如我上面的例子)和使用SSL/TLS证书进行数值分析,那将非常有帮助。

我的问题是关于这种技术的有效性,它是否会比使用SSL/TLS证书有更好的性能

解析证书很棘手,因为它有很多if/else,但即使是嵌入式CPU也能做到这一点。如果您完全想要解析证书,您还可以查看"卡可验证证书",这是为智能卡(具有类似的有限资源,例如8-10 KiB RAM或更少)创建的相对简单的证书。

除此之外,验证是一个(相对有效的)RSA验证操作。但是,您可以通过简单地从b中固定证书来避免这种情况。例如,您可以通过执行之前存储的加密散列来计算证书指纹,从而简单地测试证书。

对于密钥的生成:对于RSA密钥对的生成本身来说,这当然无关紧要。对于主秘密协议(然后是会话密钥派生),TLS有多种选择,例如使用主秘密的密钥协议+ RSA身份验证或主秘密的RSA加密。它与你的方案相比如何取决于专有协议。

当然,TLS也有对称选项,如PSK(预共享密钥)和SRP。这也将创建会话密钥,但是两个设备只能保存一个共享密钥(或其他令牌)。

TLS有很多选项,而且不一定会带来太多的开销。问题是,如果你试图创建自己的协议,你一定会失败。以你目前的知识,失败几乎是肯定的。因此,在探索其他任何东西之前,我会考虑TLS的(变体)。如果你愿意,你可以考虑高性能套件,如Chacha20+Poly1305,甚至可能与Curve25519自签名证书配对。

最新更新