absract:我们提出了一个基于晶格问题硬度的群签名方案,其输出比目前文献中最有效的方案小一个数量级以上。
由于基于格的方案通常也不容易有效地实现,因此我们还提供了基于格的群签名的第一个实验实现,证明我们的构造确实是实用的-所有操作在标准笔记本电脑上花费不到半秒的时间。
我们构建的一个关键组件是一个新的零知识证明系统,用于证明承诺值属于特定的小尺寸集合。我们的证明所适用的集合恰恰是那些包含在格协议的基础环切数域的伽罗瓦自同构下保持稳定的元素的集合。我们相信这些证明也会在其他环境中得到应用。
在我们的构造中,新的零知识证明的动机是允许有效地使用Agrawal等人的选择性安全签名方案(即攻击者在看到公钥之前声明伪造消息的签名方案)
(Eurocrypt 2010)基于格的群签名和其他隐私协议的构造。为了有意地将选择性安全方案转换为标准签名方案,消息空间的大小不能太大,这一点至关重要。利用我们的零知识证明,我们可以有策略地选择小集合,为其提供有效的零知识证明
结论:
用C语言实现了群签名方案。对于密钥生成期间的预图像采样,我们使用适合于切环的随机最近平面算法[24]的快速傅立叶版本[21]。这在之前的Falcon签名方案[40]中已经完成。我们也使用[21]的fft算法来计算活板门基的紧凑LDL *分解。与Falcon相反,在我们的例子中,双浮点精度是不够的。对于所需的多精度复杂算法,我们使用了基于MPFR[23]和GMP[26]的MPC[22]库。我们以256位的精度计算所有东西。在复FFT中,我们使用Cooley-Tukey蝴蝶进行正变换,使用GentlemanSande蝴蝶进行逆变换,并且不进行重排序。该签名算法不需要多精度浮点运算,适用于小型设备。它主要需要多精度整数多项式算法,我们使用GMP整数多精度库实现了该算法。优化这部分代码是可能的。例如,在承诺方案的零知识证明中,我们只需要挑战的差异对第二素数q2的模是可逆的。因此,可以选择第一个素数q1为完全分裂,并使用基于ntt的算法计算多项式乘法。我们从SHAKE-256可扩展输出函数[9]中获得所有随机性。
表1列出了该实现的运行时间。密钥生成时间包含组公钥和一个成员秘密密钥的生成时间。为了进一步的改进,表示紧凑LDL *分解的L矩阵的树可以预先计算,这将显著减少每个单独成员的密钥生成时间。