首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用相同的非对称密钥签名不同类型的消息

用相同的非对称密钥签名不同类型的消息
EN

Cryptography用户
提问于 2018-05-31 11:08:36
回答 1查看 63关注 0票数 2

我希望能够用相同的非对称密钥签署不同类型的消息。(为了完整起见,我使用Ed25519作为签名)。

我为什么要这么做?

相同的密钥用于对不同类型的消息进行签名。如果我不使用某种方法来区分消息类型,攻击者可能会要求我对一种类型的消息签名,然后将其用作另一种类型的消息。

示例粗解

对于一个快速原型,我使用了以下粗糙的方法。

若要签署第1类型的消息:

$\operatorname{符号}文本{key}$

若要签署第2类型的消息:

$\operatorname{符号}文本{key}$

我有一种感觉,这不是在消息类型之间实现良好分离的最佳方法。如果一个类型字符串是另一个类型字符串的子字符串,则尤其如此。例如,我记得HMAC和hkdf使用更复杂的机制(它们不只是连接)。

我不想在这里重新发明轮子。是否有共同的做法来解决这个问题?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2018-05-31 16:01:42

只要前缀type1type2等。都是不同的,大小相同,在所有签名之前都会插入,所提议的是非常好的,也是普遍的做法。

前缀是不同的,大小相等是实现必要和充分要求的简单和简单的方法(因此很好):任何前缀都不能作为另一个前缀的开头。

如果由于某种原因,前缀必须大小不同,则确保满足这一要求的可能约定包括:

  • 前缀的字节大小在前缀之前,在1字节上(Pascal字符串约定)。
  • 一个特殊的终止字节位于所有前缀的末尾,而不是在前缀的其他地方使用。常见的选择包括字节0x00 (C字符串约定)或分隔符(如: )。
  • 使用评论中提出的不同字符串前缀的散列(SHA-512/256)。因为这是恒定大小的,所以需求归结为使用不发生冲突的字符串前缀,我们甚至不知道如何进行其他操作。

在复杂性谱的高端:每一个签名都可以是每个适当的ASN.1语法。注意复杂性退化为互操作性问题,甚至是可利用的缺陷。

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

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

复制
相关文章

相似问题

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