我希望能够用相同的非对称密钥签署不同类型的消息。(为了完整起见,我使用Ed25519作为签名)。
相同的密钥用于对不同类型的消息进行签名。如果我不使用某种方法来区分消息类型,攻击者可能会要求我对一种类型的消息签名,然后将其用作另一种类型的消息。
对于一个快速原型,我使用了以下粗糙的方法。
若要签署第1类型的消息:
$\operatorname{符号}文本{key}$
若要签署第2类型的消息:
$\operatorname{符号}文本{key}$
我有一种感觉,这不是在消息类型之间实现良好分离的最佳方法。如果一个类型字符串是另一个类型字符串的子字符串,则尤其如此。例如,我记得HMAC和hkdf使用更复杂的机制(它们不只是连接)。
我不想在这里重新发明轮子。是否有共同的做法来解决这个问题?
发布于 2018-05-31 16:01:42
只要前缀type1,type2等。都是不同的,大小相同,在所有签名之前都会插入,所提议的是非常好的,也是普遍的做法。
前缀是不同的,大小相等是实现必要和充分要求的简单和简单的方法(因此很好):任何前缀都不能作为另一个前缀的开头。
如果由于某种原因,前缀必须大小不同,则确保满足这一要求的可能约定包括:
: )。在复杂性谱的高端:每一个签名都可以是每个适当的ASN.1语法。注意复杂性退化为互操作性问题,甚至是可利用的缺陷。
https://crypto.stackexchange.com/questions/59690
复制相似问题