5.6.3 批量签名

5.6.3 批量签名

批量签名是指能够一次完成对若干个消息的签名,并且可以对每一条消息的签名进行验证。该算法的突出特点是可以批量对文件进行签署从而提高签名的效率。因此在电子政务、电子商务等领域有着重要的应用价值。较早的批量签名概念是Amos Fiat在1990年提出的Batch RSA方案。随后有人提出了基于DSA批量签名以及二叉树批量签名等方案。这里主要介绍基于RSA的Batch RSA方案。

在Batch RSA方案中,签名者拥有若干个两两互素的私有密钥指数,根据这些密钥指数生成RSA签名结果。签名分为三个阶段进行。

阶段1:通过求解每个需要签名消息的低指数幂的乘积,将所有文件合并成一个待签消息。

阶段2:对合并后的消息进行签名。

阶段3:在总的签名上划分出每一条消息的签名。

具体来讲,若两个消息分别为m1、m2,相应的公钥指数分别为e1、e2,则批量签名是这样进行的:

(1)计算公钥E=e1×e2,然后合并这两个消息

(2)对合并后的消息进行签名

(3)划分出每一条消息各自的签名。先求出中间量X,满足X=0 mod e1,X=1 mod e2,则m2的签名为

m1的签名为

例5-10 假如两个消息分别为m1、m2,相应的公钥指数为3和5,则根据上面的步骤:

(1)有

(2)计算S=M1/15 mod n;

(3)计算得X=6,则m2的签名为的签名为