首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部分公钥预共享和部分公钥交换相对于单边公钥共享是否提高了安全性?

部分公钥预共享和部分公钥交换相对于单边公钥共享是否提高了安全性?
EN

Cryptography用户
提问于 2023-02-14 08:28:55
回答 2查看 117关注 0票数 2

我有一只小臂M0 SoC和一部智能手机作为演员。使用的加密密钥是椭圆曲线。

我目前的安全性是这样实现的:

  1. SoC有128位的电话公钥散列(vs512位-由于存储空间的限制)
  2. 电话里有SoC的公钥
  3. 电话在谈判中发送自己的公钥。
  4. 第三步为双方建立ECDH的基础。从这里开始,加密的通信可以跟随

我们希望具有128位散列的SoC应该足够安全,可以尝试强行猜测公钥/私钥对。我们假设手机很容易被破坏,攻击者将获得手机的完整密钥和SoC的公钥。

所以现在我想出了一个我希望更好的解决方案,但不确定它是否真的是:

有什么变化:

  1. 公钥散列现在可以从部分数据恢复公钥。
  2. 电话只发送部分公钥。
  3. 在SoC上的散列和发送的公钥部分之间有一个“重叠”区域。
  4. 两个设备都不包含另一个设备的完整公钥
  5. 这两种设备都必须组装完整的公钥,作为协商过程的一部分。

因此,基本上,在其最简单的形式,SoC现在有最左边的128位的512位电话的公开密钥。手机发送最右边的416位,为重叠区域留下32位,如下所示:

  • H= SoC,B=两者,T=电话,每个字符=公钥的8位
  • 保证了系统中重叠部分的唯一性。

这个系统在任何方面是否比我们之前设计的系统更安全?不那么安全?

EN

回答 2

Cryptography用户

发布于 2023-02-14 10:44:24

我不清楚您的确切安全模型,但我认为在这两种方案中,敌手断绝参与事务都是可行的。

假设在256位素数域(如secp256k1 )上使用标准椭圆曲线,所以点是256位值的对,然后存储为512位序列,其中前半部分是x-coordinate,下半部分是y-coordinate。在第一种方案中,服务器存储这512位的128位散列(例如,使用使用128位块大小的Davies结构)。通过生成大致的2^{64},候选公钥和对手可以使用生日攻击生成具有相同哈希值的对。这是一个痛苦的计算量,但并不超出目前的能力范围。然后,对手可以注册其中一个公钥,然后与另一个公钥建立连接。如果面对使用非注册密钥的通信记录,他们可以通过说与他们的注册密钥不匹配来否认。

同样的攻击也适用于第二种情况,但我们也应该注意到,如果最右边的256位对应于椭圆曲线点的y-value,那么仅这些信息就足以恢复其余的公钥。这是因为x-coordinate满足椭圆曲线方程,这可能类似于

x^3-ax+b=y^\pmod p

其中abyp都是已知的。我们预计只有少数可能的解决方案。类似的想法允许从y-coordinate的256位x-coordinate和压缩位中恢复。

票数 1
EN

Cryptography用户

发布于 2023-02-14 13:37:24

你说的是公钥,所以我假设这些是公开的。

我认为这不能用于身份验证。攻击者只需找到具有32 (BBBB)匹配位的密钥才能参与该协议,如果他发现一个具有128匹配位的密钥(HHHHHHHHHHHHBBBB),则该密钥已完全失效。

乍一看(我并不是这方面的专家),这看起来是不可行的,但我肯定会建议坚持第一种方法。该方法验证整个公钥,并且是相当标准的。

顺便说一句,我们不鼓励在这里张贴关于土生土长的密码的帖子。这并不总是容易弄虚作假,这通常是个坏主意。;)

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/104215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档