一种代理重指定验证者签名方法转让专利

申请号 : CN201610024927.8

文献号 : CN105471918B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田海博马宇峰吴迪

申请人 : 中山大学

摘要 :

本发明涉及一种代理重指定验证者签名方法,步骤包括:服务提供方运行设置算法,生成各方公用的系统参数;内容提供方和消费方运行密钥生成算法生成自身的密钥对;内容提供方使用其私钥对内容进行第一级别的数字签名,并把第一级别的数字签名值和内容上传到服务提供方;内容消费方同内容提供方交互,由内容提供方生成重签名密钥并把该密钥信息上传给服务提供方;内容消费方向服务提供方请求指定的内容,服务提供方生成第二级别的数字签名,并把指定内容和第二级别的数字签名提供给内容消费方;内容消费方使用内容提供方的公钥验证第二级别的数字签名;内容消费方可以使用其私钥单独生成关于所获取内容的可验证的第二级别的数字签名。

权利要求 :

1.一种代理重指定验证者签名方法,该方法涉及内容提供方、内容消费方、服务提供方三个主体,其特征在于包括以下步骤:

1)服务提供方运行设置算法,生成各方公用的系统参数;

2)内容提供方运行密钥生成算法生成自身的密钥对;

3)内容消费方运行密钥生成算法生成自身的密钥对;

4)内容提供方使用其私钥对内容进行第一级别的数字签名,并把第一级别的数字签名值和内容上传到服务提供方;

5)内容消费方同内容提供方交互,由内容提供方生成重签名密钥并把密钥信息上传给服务提供方;

6)内容消费方向服务提供方请求指定的内容,服务提供方确认拥有该内容消费方关于指定内容的重签名密钥,就把指定内容进行代理重签名,生成第二级别的数字签名,并把指定内容和第二级别的数字签名提供给内容消费方;

7)内容消费方使用内容提供方的公钥验证第二级别的数字签名;

8)内容消费方使用其私钥单独生成关于所获取内容的可验证的第二级别的数字签名。

2.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的服务提供方运行设置算法,生成各方公用的系统参数的步骤包括:

1)选择有效的双线性对映射e把阶数为素数q生成元为g的乘法群 中的两个元素映射到乘法群

2)选择加密算法E和解密算法E-1,确保其明文空间和密文空间都在群 中,密钥空间为即正整数集合{1,2,3,,,q-1};

3)选择三个哈希函数 其

中{0,1}*是任意长0、1比特串的输入。

3.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的内容提供方运行密钥生成算法生成自身的密钥对的步骤包括:

1)内容提供方从 中选择一个随机元素 作为自身的私钥;

2)内容提供方计算 并将yS作为自身的公钥。

4.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的内容消费方运行密钥生成算法生成自身的密钥对的步骤包括:

1)内容消费方从 中选择一个随机元素 作为自身的私钥;

2)内容消费方计算 并将yV作为自身的公钥。

5.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的内容提供方使用其私钥对内容进行第一级别的数字签名,并把第一级别的数字签名值和内容上传到服务提供方的步骤包括:

1)内容提供方从 中选择两个随机元素

2)内容提供方计算t1=gr,t2=e(g,g)t,t3=H2(m,yS,t2),k=H3(m,t3),其中m是内容;

3)内容提供方计算 δ2=t1H1(t2),

4)内容提供方把第一级别的数字签名设置为δI=(δ1,δ2,δ3,δ4),并把内容m和内容提供方的公钥yS信息,签名值δI,通过任意连接方式,上传到服务提供方。

6.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的内容消费方同内容提供方交互,由内容提供方生成重签名密钥并把密钥信息上传给服务提供方的步骤包括:

1)内容消费方获得内容提供方的公开密钥yS;

2)内容消费方计算自身私钥的逆元 确保

3)内容消费方计算 并把 发送给内容提供方;

4)内容提供方验证等式 是否成立,如果不成立就停止执行协议,否则计算 其中 是内容提供方自身私钥的逆元,满足

5)内容提供方设置重签名密钥为 并上传内容消费方公钥yV的信息、内容提供方公钥yS的信息、和重签名密钥 给服务提供方。

7.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的内容消费方向服务提供方请求指定的内容,服务提供方确认拥有该内容消费方关于指定内容的重签名密钥,就把指定内容进行代理重签名,生成第二级别的数字签名,并把指定内容和第二级别的数字签名提供给内容消费方的步骤包括:

1)内容消费方向服务提供方指定需要获取的内容m和自身公钥yV的信息;

2)服务提供方用公钥yV的信息检索内容提供方公钥yS的信息和重签名密钥 使用内容提供方公钥yS的信息检索内容m,如果两者都能检索到,则确认拥有该内容消费方关于指定内容的重签名密钥,算法继续执行,否则终止操作;

3)服务提供方从 中选择一个随机元素

4)服务提供方找到内容m的第一级别的签名δI,解析为(δ1,δ2,δ3,δ4),计算δ′1=e(yR,δ1),

5)服务提供方生成第二级别的数字签名δII=(δ′1,δ2,δ31,δ32,δ33,δ4);

6)服务提供方把内容m和第二级别的数字签名δII提供给内容消费方。

8.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的内容消费方使用内容提供方的公钥验证第二级别的数字签名的步骤包括:

1)内容消费方收到内容m和第二级别的数字签名δII,把δII解析为(δ′1,δ2,δ31,δ32,δ33,δ4);

2)内容消费方使用自身私钥的逆元 计算 t3=H2(m,yS,t2),k=H3(m,t3),t1=δ′2(H1(t2))-1;

3)内容消费方验证三个等式,e(g,δ′4)=e(yS,t3(Ek(t1))-1)、e(δ′31,g)=e(δ′32,t1)和e(δ′32,g)=e(yV,δ′33),如果三个等式都成立,则验证第二级别数字签名通过,内容消费方认为内容m来自于内容提供方,否则第二级别数字签名验证失败,内容消费方认为内容m不完整或者不是来自于自己希望的内容提供方。

9.根据权利要求1所述的一种代理重指定验证者签名方法,其特征在于,所述的内容消费方使用其私钥单独生成关于所获取内容的可验证的第二级别的数字签名的步骤包括:

1)内容消费方从 中选择三个随机元素

2)内容消费方计算t2=e(g,g)t,t3=H2(m,yS,t2),k=H3(m,t3), 其中m是内容消费方所获取的内容;

3)内容消费方计算 δ2=t1H1(t2), δ33=gt′;

4)内容消费方设置第二级别的数字签名为δ′II=(δ1,δ2,δ31,δ32,δ33,δ4),该数字签名值按照权利要求8所述的步骤通过数字签名的验证。

说明书 :

一种代理重指定验证者签名方法

技术领域

[0001] 本发明涉及信息安全领域,特别是涉及一种代理重指定验证者签名方法。

背景技术

[0002] Jakobsson在1996年提出了指定验证者签名的概念。指定验证者签名除了一般的签名算法和验证算法之外,还包括有一个模拟算法。指定的验证者通过模拟算法可以模拟一个数字签名,这个模拟的数字签名也可以通过验证算法的验证。这意味着除了指定的验证者之外,其它任何实体即使能够通过验证算法验证一个数字签名,也无法确认这个数字签名是由签名者生成的,还是由指定验证者生成的。
[0003] 在版权保护领域,软件的发行商可以为每一个软件购买者签署指定验证者签名,使得购买者既可以验证所购买软件是否是正品,又可以防止购买者进一步通过刻录等方式进行二次售卖。注意购买者可以自行生成一个合规的数字签名,所以二次售卖的时候无法向普通消费者证明某个软件产品是完整可信的正版产品。
[0004] 指定验证者签名,在提出之后受到了很大的关注,并发展出了强指定验证者签名,多指定验证者签名等概念,满足不同的应用环境。然而,随着云计算技术的发展,软件的发行商可以利用云存储服务,把软件放在云服务器上。购买者只需要获得授权,就可以获取软件发行商存储在云服务器中的软件。在这种情况下,软件发行商如果希望使用指定验证者签名技术,就需要为每一个购买软件的购买者计算一次指定验证者签名,然后上传到云服务器,每一个购买者下载软件和对应的指定验证者签名。然而这种方法显然效率比较低,没有利用到云计算的优势。理想的情况应该是一份软件只有一个签名,在需要时由云服务器生成指定验证者签名,提供给购买者。但是目前并没有这样的方法。
[0005] 由此我们得出结论,虽然指定验证者签名是一个比较早的概念,并且受到了很多关注,但是适应于云环境的指定验证者签名尚不存在。

发明内容

[0006] 本发明的目的在于提供一种代理重指定验证者签名方法,解决背景技术中不存在适用于云环境的指定验证者签名的问题。
[0007] 为实现上述目的,本发明给出一种代理重指定验证者签名方法,该方法涉及内容提供方、内容消费方、服务提供方三个主体,包括以下步骤:
[0008] 1)服务提供方运行设置算法,生成各方公用的系统参数;
[0009] 2)内容提供方运行密钥生成算法生成自身的密钥对;
[0010] 3)内容消费方运行密钥生成算法生成自身的密钥对;
[0011] 4)内容提供方使用其私钥对内容进行第一级别的数字签名,并把第一级别的数字签名值和内容上传到服务提供方;
[0012] 5)内容消费方同内容提供方交互,由内容提供方生成重签名密钥并把密钥信息上传给服务提供方;
[0013] 6)内容消费方向服务提供方请求指定的内容,服务提供方确认拥有该内容消费方关于指定内容的重签名密钥,就把指定内容进行代理重签名,生成第二级别的数字签名,并把指定内容和第二级别的数字签名提供给内容消费方;
[0014] 7)内容消费方使用内容提供方的公钥验证第二级别的数字签名;
[0015] 8)内容消费方可以使用其私钥单独生成关于所获取内容的可验证的第二级别的数字签名。
[0016] 所述服务提供方运行设置算法,生成各方公用的系统参数的步骤包括:
[0017] 1)选择有效的双线性对映射e把阶数为素数q生成元为g的乘法群 中的两个元素映射到乘法群
[0018] 2)选择加密算法E和解密算法E-1,确保其明文空间和密文空间都在群 中,密钥空间为 即正整数集合{1,2,3,,,q-1};
[0019] 3)选择三个哈希函数其中{0,1}*是任意长0、1比特串的输入, 是指哈希函数H1是把乘法群 中的一
个元素映射到乘法群 中的一个元素, 是指哈希函数H2是把任意长
0、1比特串的输入、乘法群 中的一个元素和乘法群 中的一个元素映射为乘法群 中的一个元素, 是指哈希函数H3是把任意长0、1比特串的输入和乘法群 中
的一个元素映射为 中的一个元素。
[0020] 所述内容提供方运行密钥生成算法生成自身的密钥对的步骤包括:
[0021] 1)内容提供方从 中选择一个随机元素 作为自身的私钥;
[0022] 2)内容提供方计算 并将yS作为自身的公钥。
[0023] 所述内容消费方运行密钥生成算法生成自身的密钥对的步骤包括:
[0024] 1)内容消费方从 中选择一个随机元素 作为自身的私钥;
[0025] 2)内容消费方计算 并将yV作为自身的公钥。
[0026] 所述内容提供方使用其私钥对内容进行第一级别的数字签名,并把第一级别的数字签名值和内容上传到服务提供方的步骤包括:
[0027] 1)内容提供方从 中选择两个随机元素
[0028] 2)内容提供方计算t1=gr,t2=e(g,g)t,t3=H2(m,yS,t2),k=H3(m,t3),其中m是内容;
[0029] 3)内容提供方计算 δ2=t1H1(t2),
[0030] 4)内容提供方把第一级别的数字签名设置为δI=(δ1,δ2,δ3,δ4),并把内容m和内容提供方的公钥yS信息,签名值δI,通过任意连接方式,上传到服务提供方。
[0031] 所述内容消费方同内容提供方交互,由内容提供方生成重签名密钥并把密钥信息上传给服务提供方的步骤包括:
[0032] 1)内容消费方获得内容提供方的公开密钥yS;
[0033] 2)内容消费方计算自身私钥的逆元 确保
[0034] 3)内容消费方计算 并把 发送给内容提供方;
[0035] 4)内容提供方验证等式 是否成立,如果不成立就停止执行协议,否则计算 其中 是内容提供方自身私钥的逆元,满足
[0036] 5)内容提供方设置重签名密钥为 并上传内容消费方公钥yV的信息,内容提供方公钥yS的信息,和重签名密钥 给服务提供方。
[0037] 所述内容消费方向服务提供方请求指定的内容,服务提供方确认拥有该内容消费方关于指定内容的重签名密钥,就把指定内容进行代理重签名,生成第二级别的数字签名,并把指定内容和第二级别的数字签名提供给内容消费方的步骤包括:
[0038] 1)内容消费方向服务提供方指定需要获取的内容m和自身公钥yV的信息;
[0039] 2)服务提供方用公钥yV的信息检索内容提供方公钥yS的信息和重签名密钥使用内容提供方公钥yS的信息检索内容m,如果两者都能检索到,则确认拥有该内容消费方关于指定内容的重签名密钥,算法继续执行,否则终止操作;
[0040] 3)服务提供方从 中选择一个随机元素
[0041] 4)服务提供方找到内容m的第一级别的签名δI,解析为(δ1,δ2,δ3,δ4),计算δ′1=e(yR,δ1),
[0042] 5)服务提供方生成第二级别的数字签名δII=(δ′1,δ2,δ31,δ32,δ33,δ4);
[0043] 6)服务提供方把内容m和第二级别的数字签名δII提供给内容消费方。
[0044] 所述内容消费方使用内容提供方的公钥验证第二级别的数字签名的步骤包括:
[0045] 1)内容消费方收到内容m和第二级别的数字签名δII,把δII解析为(δ′1,δ2,δ31,δ32,δ33,δ4);
[0046] 2)内容消费方使用自身私钥的逆元 计算 t3=H2(m,yS,t2),k=H3(m,t3),t1=δ′2(H1(t2))-1;
[0047] 3)内容消费方验证三个等式,e(g,δ′4)=e(yS,t3(Ek(t1))-1)、e(δ′31,g)=e(δ′32,t1)和e(δ′32,g)=e(yV,δ′33),如果三个等式都成立,则验证第二级别数字签名通过,内容消费方认为内容m来自于内容提供方,否则第二级别数字签名验证失败,内容消费方认为内容m不完整或者不是来自于自己希望的内容提供方。
[0048] 所述内容消费方可以使用其私钥单独生成关于所获取内容的可验证的第二级别的数字签名的步骤包括:
[0049] 1)内容消费方从 中选择三个随机元素
[0050] 2)内容消费方计算t2=e(g,g)t,t3=H2(m,yS,t2),k=H3(m,t3), 其中m是内容消费方所获取的内容;
[0051] 3)内容消费方计算 δ2=t1H1(t2), δ33=gt′;
[0052] 4)内容消费方设置第二级别的数字签名为δ′II=(δ1,δ2,δ31,δ32,δ33,δ4),该数字签名值可以按照权利上述“内容消费方使用内容提供方的公钥验证第二级别的数字签名的步骤”通过数字签名的验证。
[0053] 本发明具有以下优点:
[0054] 首先,内容提供方只需要向服务提供方提交一份内容和一个第一级别的数字签名,不同的内容消费者却可以获得不同的第二级别的数字签名;其次,不同的内容消费者都可以模拟一个有效的第二级别的数组签名,因而该数字签名确实是指定验证者签名,得到了适合云计算技术的指定验证者签名方法;再次,内容消费方需要先向内容提供方申请,才可能获得有第二级数字签名的内容,对内容提供方而言增加了一次验证内容消费者的机会,可以根据不同的内容消费者采取不同的措施;最后,服务提供方确认内容消费者具有有效的重签名密钥时,采用了公钥信息和内容的双重检索,增加了细粒度控制的机会。总的来看,本发明提供了一种有效灵活的代理重指定验证者签名方法。
[0055] 本发明所提供的代理重指定验证者签名方法,可以用于基于云中心的内容分享或者内容分发场景,保护分发人的签名隐私,同时保证内容的完整性和对特定分享或分发对象的可验证性。

附图说明

[0056] 下面结合附图和具体实施方式来对本发明进行详细的阐述。
[0057] 图1一种代理重指定验证者签名方法框架;

具体实施方式

[0058] 该方法包括内容提供方、服务提供方和内容消费方三个部分。具体实施时首先服务提供方生成公开参数。内容提供方和消费方向服务提供方注册时获得该服务的公开参数,分别生成自己的公私钥对,公钥公开,私钥妥善保存。之后内容提供方为特定内容生成第一级别的数字签名,并随内容上传到服务提供方;当内容消费方向对某个内容感兴趣时,会通过电子邮件或者即时通讯等方式向内容提供方发起请求;内容提供方验证内容消费方,生成重签名密钥,把重签名密钥上传到服务提供方,并返回响应消息给内容消费方。内容消费方向服务提供方请求内容,服务提供方检查授权情况,允许的话就生成第二级别的数字签名,并返回给内容消费者。最后内容消费者可以验证第二级别的数字签名。下面以云存储平台作为服务提供方,Alice作为内容提供方,Bob作为内容消费方,来说明具体实施过程。
[0059] 实施例1
[0060] 1、云存储平台运行设置算法,生成各方公用的系统参数的步骤包括:
[0061] 1)选择PBC软件库附带提供的A类型参数,其中素数阶q的取值为87807107996633125224377819847540498158068831994142082110286533992664756308802
22957078625179422662221423155858769582317459277713367317481324925129998224791,生成元g是群G中的随机元素,对运算由PBC库所提供的“pairing”运算提供。
[0062] 2)选择Tian等人在ACISP 2012年论文“A short non-delegatable strong designated verifier signature”中附录部分所披露的方法设置明文空间和密文空间都在群中的对称加密运算和解密运算;
[0063] 3)选择SHA-256算法做哈希函数,设置H1函数的初始消息为“function one”,H2函数的初始消息为“function two”,H3函数的初始消息为“function three”,所有涉及到的群元素统一按照其二进制表示作为0、1字符串输入哈希函数中。
[0064] 2、Alice向云存储平台注册,获得云存储平台的系统参数,之后Alice运行密钥生成算法生成自身的密钥对的步骤包括:
[0065] 1)Alice从 中选择一个随机元素 作为自身的私钥;
[0066] 2)Alice计算 并将yS作为自身的公钥。Alice可以把公钥发布到某个证书中心的数据库中,或者通过PGP的方式发布到某个公开服务器中,或者直接发布到该云存储平台关于该用户的个人信息表中。
[0067] 3、Bob向云存储平台注册,获得云存储平台的系统参数,之后Bob运行密钥生成算法生成自身的密钥对的步骤包括:
[0068] 1)Bob从 中选择一个随机元素 作为自身的私钥;
[0069] 2)Bob计算 并将yV作为自身的公钥。Bob可以把公钥发布到某个证书中心的数据库中,或者通过PGP的方式发布到某个公开服务器中,或者直接发布到该云存储平台关于该用户的个人信息表中。
[0070] 4、Alice使用其私钥对内容进行第一级别的数字签名,并把第一级别的数字签名值和内容上传到云存储平台的步骤包括:
[0071] 1)Alice从 中选择两个随机元素
[0072] 2)Alice计算t1=gr,t2=e(g,g)t,t3=H2(m,yS,t2),k=H3(m,t3),其中m是内容;
[0073] 3)Alice计算 δ2=t1H1(t2),
[0074] 4)Alice把第一级别的数字签名设置为δI=(δ1,δ2,δ3,δ4),并把内容m和内容提供方的公钥yS信息,签名值δI,通过互联网,上传到云存储平台。
[0075] 5、Bob同Alice交互,由Alice生成重签名密钥并把该密钥信息上传给云存储平台的步骤包括:
[0076] 1)Bob获得Alice真实的公开密钥yS,这可以通过CA中心获得,也可以通过云存储平台关于个人公开信息字段中的公钥字段获得,也可以通过某个公开的pgp服务器获得,例如MIT PGP密钥服务器。
[0077] 2)Bob计算自身私钥的逆元 确保
[0078] 3)Bob计算 并把 发送给Alice;
[0079] 4)Alice验证等式 是否成立,如果不成立就停止执行协议,否则计算 其中 是Alice自身私钥的逆元,满足
[0080] 5)Alice设置重签名密钥为 并计算Bob公钥yV的SHA256杂凑值作为该公钥的信息,计算Alice公钥yS的SHA256杂凑值作为该公钥的信息,这两个杂凑值和重签名密钥给云存储平台。之后Alice向Bob发送确认消息。
[0081] 6、Bob向云存储平台请求指定的内容,云存储平台确认拥有Bob关于指定内容的重签名密钥,就把指定内容进行代理重签名,生成第二级别的数字签名,并把指定内容和第二级别的数字签名提供给Bob的步骤包括:
[0082] 1)Bob向云存储平台指定需要获取的内容m和自身公钥yV的SHA256杂凑值;
[0083] 2)云存储平台用杂凑值检索内容提供方公钥的杂凑值和重签名密钥 之后使用内容提供方公钥的杂凑值检索内容m,如果两者都能检索到,则确认拥有Bob关于指定内容m的重签名密钥,算法继续执行,否则终止操作;
[0084] 3)云存储平台从 中选择一个随机元素
[0085] 4)云存储平台找到内容m的第一级别的签名δI,解析为(δ1,δ2,δ3,δ4),计算δ′1=e(yR,δ1),
[0086] 5)云存储平台生成第二级别的数字签名δII=(δ′1,δ2,δ31,δ32,δ33,δ4);
[0087] 6)云存储平台把内容m和第二级别的数字签名δII提供给Bob。
[0088] 7、Bob使用Alice的公钥验证第二级别的数字签名的步骤包括:
[0089] 1)Bob收到内容m和第二级别的数字签名δII,把δII解析为(δ′1,δ2,δ31,δ32,δ33,δ4);
[0090] 2)Bob使用自身私钥的逆元 计算 t3=H2(m,yS,t2),k=H3(m,t3),t1=δ′2(H1(t2))-1;
[0091] 3)Bob验证三个等式,e(g,δ′4)=e(yS,t3(Ek(t1))-1)、e(δ′31,g)=e(δ′32,t1)和e(δ′32,g)=e(yV,δ′33),如果三个等式都成立,则验证第二级别数字签名通过,Bob认为内容m来自于Alice,否则第二级别数字签名验证失败,Bob认为内容m不完整或者不是来自于Alice;
[0092] 8、Bob可以使用其私钥单独生成关于所获取内容的可验证的第二级别的数字签名的步骤包括:
[0093] 1)Bob从 中选择三个随机元素
[0094] 2)Bob计算t2=e(g,g)t,t3=H2(m,yS,t2),k=H3(m,t3), 其中m是内容消费方所获取的内容;
[0095] 3)Bob计算 δ2=t1H1(t2), δ33=gt′;
[0096] 4)Bob设置第二级别的数字签名为δ′II=(δ1,δ2,δ31,δ32,δ33,δ4)[0097] 实施例2
[0098] 实施例2与实施例1相同,除了系统参数采取了其它有效的双线性对映射,例如PBC库中其它类型的参数。
[0099] 实施例3
[0100] 实施例3与实施例1相同,除了系统参数采取了其它有效的哈希函数,例如SHA384等。