代数分区:实现完全紧凑且近乎紧密安全的密码学
1. 引言
在密码学领域,安全归约是证明密码方案安全性的常用方法,而分区论证是安全归约中一种流行的手段。简单来说,分区论证就是将一个大系统的各个部分划分为受模拟控制的部分和可嵌入计算挑战的部分。
以签名方案为例,分区论证可以将消息集合划分为“可签名消息”和“不可签名消息”。可签名消息是指在安全归约过程中可以生成签名的消息,而不可签名消息则是指任何针对它的签名都能解决一个底层计算问题的消息。在安全归约过程中,我们期望攻击者只请求可签名消息的签名,然后尝试伪造不可签名消息的签名。
传统的分区策略大多基于消息或身份的比特表示进行分区。例如,某些签名方案中,消息是否可签名取决于其是否以特定的比特前缀开头。这种非代数的方法需要在方案本身进行一定的准备,会导致公共参数或密钥比较大。因为方案中需要根据消息的比特表示建立各种潜在的区分,这使得所有可能的区分都预先存在于方案中。
2. 我们的贡献
本文提出了一种全新的分区方法——代数分区。我们不再基于消息的比特表示进行分区,而是根据一个简单的代数谓词进行分区。具体来说,我们将消息 $M$ 视为 $Z_p$ 中的元素,并考虑不同仿射函数 $f_j$ 对应的勒让德符号 $L_j = \left(\frac{f_j(M)}{p}\right)$。足够多的 $L_j$ 可以唯一确定 $M$,并且每个 $L_j$ 的计算可以编码为一系列的 $Z_p$ 操作。
这种代数性质使得我们可以将 $L_j$ 的计算“内化”并隐藏起来,例如将 $f_j$ 隐藏在同态承诺中。因此,在方案本身只需要进行一次“通用”的分区(根据单个 $L_j$),而在分析过程中,可以
超级会员免费看
订阅专栏 解锁全文
4695

被折叠的 条评论
为什么被折叠?



