【发布时间】:2015-01-12 22:03:03
【问题描述】:
假设我有一个由一方创建的 64 字节签名(来自 ed25519)。该方必须进一步压缩签名,使其在 base 2048 中为 4-8 位。然后,第二方必须能够从数据中重新创建签名。
以下是十进制签名的示例:
5670805304946899675614751184947294808143702505785021095830828785725573127924144977212837580418240432902375737987653828318622222068237988634991262293689098
如何将此签名压缩到以 2048 为基数的 4 位左右?这可以使用Sudoku compression吗?
【问题讨论】:
-
一些简单的问题...您对人类可读性的标准是什么?另外,您是要压缩原始的 64 字节值,还是该 64 字节值的十进制表示?是否应该涉及任何安全性(例如,随机数是否应该以某种方式增加安全性?)“压缩”是否包括用于秘密共享随机数的字节?那个随机数每次都不一样吗?
-
你怎么知道签名是可压缩的(有熵)?
-
@templatetypedef 人类可读性不是什么大问题,我已经更新了我的问题以反映这一点。这取决于哪个最容易压缩,如果压缩原始 64 字节值有效,我完全赞成。共享随机数不是秘密,安全性不是这里的一个因素;我们正在尝试重新创建签名。共享的随机数实际上是时间戳除以 30,所以每 30 秒不同。
-
所以您想将 512 位压缩到 88 位?有人建议这项任务可能是不可能的吗?
-
我认为简单的算术运算不会减少所需的位数,只是将它们移动一点。您也许可以通过共享数字中的位数找到一种方法来减少问题,但除此之外,我坚持我最初的反应是这是不可能的。
标签: algorithm math computer-science ed25519