Algorithm 压缩签名

Algorithm 压缩签名,algorithm,math,computer-science,ed25519,Algorithm,Math,Computer Science,Ed25519,假设我有一个由一方创建的64字节签名(来自ed25519)。该方必须进一步压缩签名,使其在基2048中为4-8位。然后,第二方必须能够根据数据重新创建签名 以下是十进制签名的示例: 567080530494689967561475118494729480814370250578502105830828772557312792414497721283758041824043290237573798765382831862222068237988634991262293689098 如何将此签名压缩

假设我有一个由一方创建的64字节签名(来自ed25519)。该方必须进一步压缩签名,使其在基2048中为4-8位。然后,第二方必须能够根据数据重新创建签名

以下是十进制签名的示例:
567080530494689967561475118494729480814370250578502105830828772557312792414497721283758041824043290237573798765382831862222068237988634991262293689098


如何将此签名压缩到以2048为基数的大约4位数字?这是否可能使用?

签名是64字节,因此有256^64或2^512个可能的签名。仅当在2^512个可能的签名中使用最多2048^8=2^88个时,才可能进行此压缩量。Ed25519的情况似乎极不可能如此


编辑:这个问题被修改和澄清,询问这里是否可以进行数独压缩。有667090375202102072936960=2^72.49。。。填写数独网格的方法,比9^81=2^256.7小得多。。。标记每个细胞的方法。但签名算法的情况不应如此,因此,从理论上讲,这种信息压缩是不可能的。

我认为这是不可能的。至少在您说“第二方必须能够从数据中重新创建签名”的部分

这背后的简单原因是熵,即每个签名中包含的信息量。首先,让我们看看在您描述的每种“格式”中,最多可以存储多少信息

  • ed25519签名:64字节,即512位(因此可能为2^512,约为1.34e154)
  • 以2048为基数的4位数字,即2048^4个可能性,log2((2^11)^4)=44
  • 8位(因为你说的是4-8),同样的推理,88位
因此,以2048为基础的数字中的信息(最大可能)已经少得多了。为了使函数存在,这意味着在2^512种可能性中,有足够的冗余信息(即,如果您知道位a和b,您很有可能知道位c,或者某些值的配置完全不可能,等等),您可以用44(或88)来描述所有可能的输出点点滴滴

让我们看看:

N i.i.d.每个熵为H(X)的随机变量可以压缩为N个以上 信息丢失风险可忽略的H(X)位,如N→ ∞; 相反,如果它们被压缩成小于N H(X)位几乎可以肯定信息会丢失

这里的随机变量是ed25519签名。你在问两件事

  • 如果H()可以是44或88
  • 如果N=1而不是N可以达到该限值→∞, 因为您希望每个签名用44或88位编码,而不是N个签名的平均位数低于44或88。这是一个更严格的要求
  • ed25519签名中的熵肯定比44位或88位中存储的熵还要多。从网站:

    高安全级别。此系统有2^128个安全目标;破解它的难度与破解NIST P-256、使用约3000位密钥的RSA、强大的128位分组密码等类似。已知的最佳攻击实际上平均花费超过2^140位操作,并且随着位操作数的减少,成功概率呈二次下降

    但是如果你的函数存在,它可能会容易得多,因为每次应用“reverse”函数,你只要有2^44(或2^88)次尝试,就可以彻底地找到所有冲突。当然,我们不知道假设的反向函数需要多少位操作,但至少它给了你一个想法。另外,如果您使用进行这种暴力攻击,您只需要尝试次数的平方根(因此为2^22或2^44)

    相反,如果您阅读了一篇论文,该论文使用平均2^140个操作进行攻击,每个操作2^i次迭代2^o次(因此i+o=140),则您可能希望找到一种格式,可以合理地枚举所有可能的64字节签名(2*i位)。但是,这只适用于您的第一个问题,因为攻击可能会利用某些属性,例如某些签名值比其他签名值发生得更频繁。然后,通过对一些经常发生的值进行编码,使用比经常发生的值更少的比特数,您的最佳存储长度2*i只能平均达到,而不是对每个值都达到

    除此之外,我们还看到:

    小签名。签名可容纳64个字节。这些签名实际上是较长签名的压缩版本;压缩和解压缩的时间包含在上面报告的循环计数中

    这意味着,即使在较大的密钥中存在一些冗余,它们也已经进行了额外的压缩,我们可以合理地假设,在较小的密钥中,如果没有更高的信息密度,也应该存在相同的情况。也就是说,发现裁员的机会更小


    因此,这意味着,如果您应用从签名到44-88位的转换,您将丢失信息,几乎占用您的64字节。正如无法从校验和中重新创建下载的文件一样,这也使得无法从计算的哈希中重新创建ed25519签名。

    一些快速问题。。。你对人类可读性的标准是什么?另外,您是要压缩原始的64字节值,还是该64字节值的十进制表示形式?是否涉及任何安全性(“压缩”是否包括用于秘密共享随机数的字节?那个随机数每次都不同吗?你怎么知道签名是可压缩的(有熵)?@templatetypedef人类可读性不是b