我想有一个例子最能说明我的问题。假设我想发送一个JSON消息。
{“有效载荷”:{ "b":5,"a":1 },“签名”:“...9oZRsvygw1pTFuRcfXXpFKMRBmkrzdTn6lzS.”}
替代X是将有效负载放入一个字符串(可能是base64编码的)中,并对该字符串进行签名。
替代Y将是对有效载荷的语义内容进行规范表示并对其进行签名。例如,我可以创建以下字符串并对其签名
{"a":1,"b":5}
注意,在语义表示中,键是根据名称而不是初始顺序排序的。
对语义表示进行签名是更不安全还是更安全?
发布于 2017-10-06 12:50:57
据我所知,两者都应该是安全的。
在理论上,对密钥排序(假设远程读取器不关心初始示例中的排序)使其稍微安全一些,因为它限制了攻击者在试图创建冲突时的选项--但是如果您使用的是加密安全签名,那么您不应该关心这两种方式。你不应只从“安全”和“不安全”的角度来考虑“更多/更不安全”,因为在现有的公众知识和技术下,在合理的时间框架内不知道安全是可以打破的。
https://security.stackexchange.com/questions/170770
复制相似问题