我正在开发一个基于Disco库的实现,它本身就是基于噪声和选通框架的。其目标是实现具有完全前向保密的双边实体认证密钥协议。Disco已经实现了Noise_NNpsk2,但不提供Noise_NKpsk2。一开始我考虑使用Noise_NKpsk2,虽然我越想越觉得Noise_NNpsk2可以工作!
考虑两个实体A,B,其中B有一个键打印在一个点上,我们可以保证它只对A可见。实体B在计算上要弱得多,不能接受任何预消息。具体来说,A是一个本地服务器,B是一些IoT设备,没有任何用户输入的可能。
假设A想与B发起握手。如果我们考虑到两种方案( Noise_NNpsk0,Noise_NKpsk2 )之间的差异,唯一的安全相关差异是Noise_NKpsk2 A中有B的静态公钥的额外身份验证措施。因为我们假设B上打印的PSK只能被A看到,我认为B的静态公钥的额外保证不会增加任何东西!
因此,我的问题是:
考虑到只有A才能看到“隐藏”PSK的假设,Noise_NKpsk2在Noise_NNpsk0上的动机是什么?
发布于 2021-11-23 18:34:34
如果我正确理解您的设置,则您有一个设备,其所有者可以授权其他各方(例如服务器)通过先前建立的通道(所有者和另一方之间)与该另一方共享一些信息来连接到该设备。
当您使用Noise_NNpsk2时,所有者将共享设备已知并打印在其上的秘密密码。你得到:
您希望将其与Noise_NKpsk2进行比较,但让我们将其与Noise_NK进行比较。在这种情况下,用户将读取并共享其静态公钥,而不是读取和共享设备上打印的密码。你得到了什么:
当然,有点.非常规地根据某人对你的公钥的知识授权,因为我们通常假设公钥是每个人都知道的,但理论上是这样;但实际上,如果你考虑一下,在设备上打印的公钥与设备上打印的密码没有多大区别吗?只是不要发布为您制造的设备生成的公钥列表(就像您不会发布打印在它们上的密码列表一样)。
总之,我们得到了什么?服务器现在对设备进行了不同的身份验证。也就是说,以前,任何知道密码的人(在工厂、商店、参观你的地方时都会给它拍照)。不仅可以连接到您的设备,还可以模拟您的设备到服务器。有了公钥,就不再是这样了。奖励:如果需要,您可以通过在工厂为服务器连接的设备颁发相应的静态公钥证书来确定设备的真实性。
如果您对基于公钥的知识授权访问设备的想法感到不确定,或者如果您担心公钥密码()的长期安全性,则只需向混合密码中添加一个对称密码,即Noise_NKpsk2。
https://crypto.stackexchange.com/questions/89187
复制相似问题