参数是什么?我在XMSS中读到它是集合{4,16}的成员,但它到底意味着什么?我还看到,w参数越大,签名越短,但keygen
、sign
和vrfy
的签名速度却变慢了。如何选择最优的w参数?这是梅克尔树的高度吗?
发布于 2021-01-22 19:57:08
本论文最简洁地回答了您的问题:
Winternitz签名的大小大致是mn/w位,签名大约需要2^wm/w哈希操作,其中m是要签名的哈希值的位长,n是该方案中使用的哈希函数的输出长度,而w是决定签名大小和签名生成时间之间的权衡的Winternitz参数。
参考论文这里详细介绍了参数w在各种算法中的使用情况。根据文件:
可以从集合{4,16}中选择参数w。w的值越大,签名时间越短,但总体签名操作越慢;它对安全性的影响很小。w的选择仅限于值4和16,因为这些值会产生最佳的权衡和容易实现的结果。
使用的参数的一个例子是算法5: WOTS_sign -从私钥和消息生成签名。
本论文的第2.2节进一步详细介绍了时间-记忆权衡。
此外,第4节进一步深入,通过对不同参数的性能比较。
发布于 2021-07-09 01:20:43
merkle树的高度是一个独立的参数。Winternitz参数w之所以出现是因为要对WOTS+签名进行签名或验证,第一步是将消息编码为从0到w - 1 (包括在内)的整数列表。例如,字符串"hello"
用ascii编码为01101000 01100101 01101100 01101100 01101111
。如果w是16,那么每个整数都对应于消息的4位。如下所示:
0110 1000 0110 0101 0110 1100 0110 1100 0110 1111
6 8 6 5 6 12 6 12 6 15
如果w是4,那么每个整数都对应于2位,序列如下:
01 10 10 00 01 10 01 01 01 10 11 00 01 10 11 00 01 10 11 11
1 2 2 0 1 2 1 1 1 2 3 0 1 2 3 0 1 2 3 3
因此,4和16只是使转换变得简单和有效的值。一个大的w就会产生一个小的大数字序列,一个小的w就会产生一个小的数字序列。较大的序列往往会产生更大的签名。更大的数字增加了你需要计算的哈希数。
如果您的散列有n字节,并且您正在用m字节签名消息,那么签名的长度将是
字节。因此,您可以尝试插入一些w值,看看哪些值给您提供了一个合理的大小。
https://crypto.stackexchange.com/questions/87716
复制相似问题