计算机应用   2016, Vol. 36 Issue (9): 2459-2464  DOI: 10.11772/j.issn.1001-9081.2016.09.2459
0

引用本文 

刘明烨, 韩益亮, 杨晓元. 基于低密度生成矩阵码的签密方案[J]. 计算机应用, 2016, 36(9): 2459-2464.DOI: 10.11772/j.issn.1001-9081.2016.09.2459.
LIU Mingye, HAN Yiliang, YANG Xiaoyuan. Signcryption scheme based on low-density generator-matrix code[J]. Journal of Computer Applications, 2016, 36(9): 2459-2464. DOI: 10.11772/j.issn.1001-9081.2016.09.2459.

基金项目

国家自然科学基金资助项目(61572521,61272492)

通信作者

刘明烨(1991-), 男, 广东博罗人, 硕士研究生, 主要研究方向:公钥密码学, liumingyehh@163.com

作者简介

韩益亮(1977-), 男, 甘肃会宁人, 副教授, 博士生导师, 博士, CCF会员, 主要研究方向:密码学;
杨晓元(1959-), 男, 湖南湘潭人, 教授, 硕士, 主要研究方向:密码学、可信计算

文章历史

收稿日期:2016-03-14
修回日期:2016-04-27
基于低密度生成矩阵码的签密方案
刘明烨1,2, 韩益亮1,2, 杨晓元1,2    
1. 武警工程大学 电子技术系, 西安 710086 ;
2. 武警部队网络与信息安全保密重点实验室 西安 710086
摘要: 基于编码的密码系统具备抵抗量子计算的天然优势。针对传统的基于Goppa码构造的密码方案存在密文扩展率大和密钥量大的问题,利用低密度生成矩阵(LDGM)码和哈希函数构造了一个可证明安全的签密方案。LDGM码的生成矩阵是稀疏的,能有效减小数据量,哈希函数计算效率很高。方案满足随机预言机下的适应性选择密文攻击下的不可区分性(IND-CCA2)和选择消息攻击下存在性不可伪造(EUF-CMA)安全。在保证数据机密性和完整性的同时,与传统的先签名后加密的方法相比,输出密文总量减少了25%;与“一石二鸟”和SCS签密方案相比,计算效率有较大提高。
关键词: 签密    后量子密码    基于编码的密码系统    低密度奇偶检验码    可证明安全    
Signcryption scheme based on low-density generator-matrix code
LIU Mingye1,2, HAN Yiliang1,2, YANG Xiaoyuan1,2     
1. Department of Electronic Technology, Engineering University of Chinese People's Armed Police Force, Xi'an Shaanxi 710086, China ;
2. Key laboratory of Network and Information Security, Chinese People's Armed Police Force, Xi'an Shaanxi 710086, China
Background: This work is partially supported by the National Natural Science Foundation of China (61572521, 61272492).
LIU Mingye, born in 1991. M. S. candidate. His research interests include public key cryptography.
HAN Yiliang, born in 1977. Ph. D., associate professor. His research interests include cryptography.
YANG Xiaoyuan, born in 1959. M. S., professor. His research interests include cryptography, trusted computing.
Abstract: Code-based cryptography has natural advantage to resist the attack from quantum computers. Considering the long ciphertext length and the large key size of the traditional Goppa-codes-based cryptography, Low-Density Generator-Matrix (LDGM) code and hash function were used to construct a provably secure signcryption scheme. The generator matrix of LDGM code is sparse, so it can effectively reduce the amount of data, and the hash function is of high computation efficiency. It satisfies IND-CCA2 (INDistinguishability under Adaptive Chosen Ciphertext Attacks) and EUF-CMA (Existential UnForgeability under Chosen Message Attacks) security under random oracle model. As it guarantees data confidentiality and integrality, the ciphertext is reduced by 25% compared with the traditional case of "sign then encrypt"; compared with the "two birds one stone" and the SCS signcryptions, its computational efficiency gets significant improvement.
Key words: signcryption    post quantum cryptography    code-based cryptography    Low-Density Generator-Matrix(LDGM) code    provably secure    
0 引言

现在广泛使用的密码方案,如RSA(Rivest-Shamir-Adleman)、Elgamal、椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm, ECDSA),容易受到量子计算机的攻击威胁,使用其他密码系统代替现有的公钥密码系统已经非常迫切。在众多的抗量子密码体制中,基于编码的公钥密码体制被认为是最有希望的方案之一。

McEliece公钥密码[1]是第一个基于编码的公钥密码体制,其安全性依赖于编码学当中的一般译码问题,这是一个NPC(Nondeterministic Polynomial Completeness)问题。与RSA方案相比,该密码体制能抵抗量子计算机攻击而且加解密速度快;但该方案也有很明显的弱点,一是它的公钥量太大,二是其信息率较低,大约只有50%[2]

针对原始McEliece体制的弱点,为了推动基于编码密码体制的应用,密码学家在减少McEliece密码的公钥量方面作了很多尝试。一个可行的办法是使用其他的编码代替原始方案中的Goppa码,其中低密度奇偶检验(Low-Density Parity-Check,LDPC)码受到了较多的关注[3-5]

随着量子计算机的快速发展,广泛使用的数字签名算法(Digital Signature Algorithm, DSA)签名和RSA签名也变得不安全,目前替代方案较少,例如基于哈希函数的签名。基于编码的签名是另一个能代替DSA签名和RSA签名的抗量子签名方案,目前高效的基于编码的签名方案较少,所以具有较大的研究空间。

2013年,Baldi提出了一个基于LDGM码的签名方案[6],在这之前,基于编码的签名方案主要是CFS签名[7]及其相应的延伸方案。该方案具有易于实现和公钥量低的优点,克服了CFS签名方案的两个弱点:一是难于实现,即对于任意一个哈希值,把它作为一个伴随式不一定能译出相应的错误向量作为数字签名;二是签名的公钥量太大。

然而,Baldi提出的这个签名方案并不是可证明安全的。本文对基于LDGM码签名方案的密钥进行改造,并结合签密理论,提出了一个可证明安全的基于LDGM码的签密方案。安全性分析表明,方案满足随机预言模型下的适应性选择密文攻击下的不可区分性(INDistinguishability under Adaptive Chosen Ciphertext Attacks, IND-CCA2)安全和选择消息攻击下存在性不可伪造(Existential UnForgeability under Chosen Message Attacks, EUF-CMA)安全,并且密文量和公钥量比传统的“先加密后签名”有较大的下降。

1 预备知识

随着量子计算机的快速发展,基于大整数分解的密码体制如RSA和基于离散对数的密码体制如Elgamal的安全性受到了巨大的挑战。而基于编码的密码体制所基于的困难问题是NPC问题,具有抗量子攻击的天然优势。

1.1 困难性假设

线性码的一般译码问题(Genenral Decoding):

输入:正整数n, k, t;一个二元[n, k]线性码CF2n,由其生成矩阵GF2k×n定义;一个向量cF2n

问题:是否存在一个向量mF2k,满足c=mG+e,且w(e)≤t

伴随式译码问题(Syndrome Decoding):输入:正整数n, k, t;一个二元[n, k]线性码C⊆F2n,由其校验矩阵HF2r×n定义,其中r=n-k;一个向量sF2r

问题:是否存在一个向量eF2n,满足HeT=sT, 并且w(e)≤t

这是编码问题中两个著名的NPC问题[8],基于编码密码体制的安全性可以归约到这两个困难问题上。

1.2 基于LDGM码的签名方案 1.2.1 LDGM码

LDGM码是一类特殊的编码,它和LDPC码有着紧密的联系,它们之间的区别在于LDGM码要求由稀疏的生成矩阵来定义,而对校验矩阵则没有稀疏的要求,LDPC码则刚好相反。LDGM码被应用于通信传输由来已久[9],当用于级联码方案时,可以实现很好的纠错能力[10-11]

码长为n,维度为k的LDGM码,其生成矩阵的形式为:

$ \boldsymbol{G} = \left[ {{\boldsymbol{I}_k}|\boldsymbol{D}} \right] $

其中:Ikk×k阶单位矩阵,D是一个稀疏的k×r阶矩阵。按照这种方式定义的LDGM码是系统码,其校验矩阵为:

$ \boldsymbol{H} = \left[ {{\boldsymbol{D}^T}|{\boldsymbol{I}_r}} \right] $

也具备系统码的形式,其中T表示对矩阵的转置,Ir是一个r×r阶的单位矩阵,r=n-k

LDGM码的生成矩阵G的行重与列重相等,行与列当中元素“1”的个数很小(稀疏性要求),并且任意两行或列之间对应位相同的“1”的个数不超过1(行列约束条件)。其生成矩阵G的行是k个长度为n,Hamming重量wg < < n的线性无关的向量。

1.2.2 基于LDGM码的签名方案

Baldi等[6]提出了第一个基于LDGM码的数字签名方案。该数字签名方案基于一个事实,即对于任意一个r维向量s,在一个系统码中,把它作为一个伴随式,总能找到一个错误向量与之相对应。这是因为系统码的校验矩阵总能写成系统的形式,即H=[P|I]。其中P是一个r×k阶矩阵,I是一个r维单位矩阵,所以任意的伴随式s可以利用H与错误向量es相乘得到,即HesT=s,其中es=[0k|sT],0k是一个k维零向量。

基于这个结论,文献[6]中的签名方案如下:

1) 选择一个公开的哈希函数,h:{0, 1}*F2r,将任意长度的消息m转化为一个r维向量s

2) 签名者选择一个秘密的LDGM码C(n, k),通过其稀疏矩阵Gk×n来定义,并计算出其相应的校验矩阵H

3)  签名者选择两个可逆矩阵QS,其阶分别为r×rn×nHQS均为私钥,其公钥为H′=Q-1HS-1

4) 计算出s′=Qs,由于H是系统形式的,因此签名者很容易找到其相应的错误向量,设为e,满足HeT=s′。

5) 签名者随机选择码字cC,最终,得到签名:e′=(e+c)ST

6) 验证者计算HeT=Q-1HS-1·S·(eT+cT)=Q-1H·(eT+cT)=Q-1HeT=Q-1s′=s,将HeTh(m)作对比,若相等,则接受此消息,否则拒绝此消息。

该签名算法能克服CFS签名算法实现困难、公钥量大的缺点,同时又保留了基于编码密码系统的安全性,是抗量子密码系统的一个重大突破。

1.3 基于LDGM码签密的定义与安全模型

定义1  对于指定的安全参数1k,一个签密算法包含以下3个步骤:

密钥生成(Kg): (pk, sk)←Kg(1k),使用安全参数k生成相应的公私钥对(pk, sk)。

签密(SC):σSC(1k, m, skS, pkR),一个概率多项式时间(Probabilistic Polynomial Time, PPT)算法,输入安全参数k.,消息mM,发送者私钥skS,接收者公钥pkR,输出签密文。

解签密(DeSC): ((m, s), Accept)/Reject←DeSC(1k, σ, skR, pkS),包含以下两个阶段。

阶段1  输入k、签密文σskR,进行解签密,得到被签名的消息m,可验证的签名s(从σ中提取出来)。

阶段2  输入阶段1中得到的mσ,用发送方公钥pkS进行验证,输出Accept或者Reject。

基于LDGM码的签密方案的安全模型由机密性攻击游戏和不可伪造性攻击游戏组成。

定义2  机密性。如果不存在能以不可忽略的优势赢得以下游戏的PPT敌手$\mathscr{A}$,则一个签密方案在适应性选择密文攻击下具有不可区分性(IND-CCA2): 1) 挑战者运行Kg生成一对密钥(skUpkU),skU作为私钥,而将pkU作为公钥发送给敌手$\mathscr{A}$,对于其他的用户U′,挑战者运行Kg算法生成相应的公私钥对(skU, pkU),并将它发送给敌手。

2) $\mathscr{A}$对以下的预言机进行多项式次数的访问:

签密预言机:$\mathscr{A}$选择一个消息mM和一个用户的公钥pkR,访问签密预言机(由挑战者充当)以求得SC(m, skU, pkR)。如果pkRpkUpkR是有效的,则返回相应的结果,否则输出错误符号“⊥”。

解签密预言机:$\mathscr{A}$产生一个签密文σ,并且访问预言机以求得DeSC(σ, skU, pkS)的结果。如果解签密成功,并且签名和发送者的公钥是相对应的,则返回相应消息,否则输出错误符号“⊥”。

3) $\mathscr{A}$产生两个相同长度的明文(m0, m1)∈M,以及一个有效的私钥skS。挑战者选择一个随机数$b\xleftarrow{R}\left\{ {0,1} \right\}$并且计算签密文σ*=SC(mb, skS, pkU),将其发送给挑战者作为一个挑战密文。

4) $\mathscr{A}$对解签密预言机进行访问,但是不能询问σ*的信息。

5) 最后,$\mathscr{A}$输出一比特b′,如果b′=b则敌手赢得游戏。$\mathscr{A}$的优势定义为$Ad{v^{ind - cca}}\left( A \right) = \Pr \left[ {b = b'} \right] - \frac{1}{2}$b′=b的概率就是$\mathscr{A}$赢得游戏的概率。

定义3   不可伪造性。如果不存在PPT算法$\mathscr{F}$能以不可忽略的概率赢得以下挑战游戏,则称该签密方案在选择消息攻击下满足存在性不可伪造性(EUF-CMA)。

1) 前两步与机密性游戏类似。

2) 伪造算法$\mathscr{F}$产生一个签密文σ和一个有效的公私钥对(skR, pkR),如果满足以下条件,则赢得游戏:

DeSC(σ, skR, pkU)返回一个元组(m, s),在用验证密钥pkU对该元组进行验证时,它可以通过验证;

σ不是签密预言机的输出。

2 基于LDGM码的签密方案

借鉴“一石二鸟”方案[12]的设计思想,使用共用随机数的方法,提出本文的基于LDGM码的签密方案。

2.1 参数选择

安全参数设为($\mathscr{K}$),使用以下的参数:

1) 选取一个[n, k, 2t+1]的二元LDGM码,其中n, k由安全参数$\mathscr{K}$决定,$t = \frac{{n - k}}{{1bn}}$

2) 定义n′=n-k+1。

3) 抗碰撞的哈希函数$\mathscr{H}$:F2n′×n×F2n×F2n→{0, 1}l$\mathscr{G}$:F2n×{0, 1}n×F2n′×n×F2n′×nF2n

2.2 密钥生成

对于用户U,密钥生成包含以下步骤:

1) 选取二元(n, k, t)LDGM码生成矩阵Gk×n,并计算出相应的校验矩阵H(n-kn

2) 随机选取一个n×n阶置换矩阵PU

3) 选取bUR F2n

4) 随机选取HUF2(n-knQUF2n′×(n-k), QU是满秩的,然后计算QU=HUQU

5) 选取一个向量aU,使得HUaUT=0。

6) 计算公钥${\boldsymbol{\tilde H}_u}$=QUHUPU+aUTbU${\boldsymbol{\tilde H}_u}$是一个n′×n阶矩阵。

私钥:HU, PU, QU, HU;公钥:${\boldsymbol{\tilde H}_u}$

2.3 签密和解签密

SC(m, HS, PS, QS, HS, ${\boldsymbol{\tilde H}_R}$):

对一个消息m∈{0, 1}n进行签密,发送方记为S,接收方记为R

$\boldsymbol{r}\xleftarrow{R}F_2^n$w(r)≤t

m1$\mathscr{G}$(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$);

m1HSm1T

s1PSTDecodeHS(QS-1m1T);

由于HS是一个具有系统形式的LDGM码,因此,对于任意的Qs-1m1,总能译码相应的错误向量,不需要进行重复的尝试,且有m1=HSs1T

U${\boldsymbol{\tilde H}_R}$rT

Vm$\mathscr{H}$(${\boldsymbol{\tilde H}_R}$, U, r);

发送签密文σ=(U, V, s1)。

DeSC(σ, HR, PR, QR, HR, ${\boldsymbol{\tilde H}_S}$):

收到签密文之后,接收方R进行如下的操作:

U′←HRUT

r′←PRTDecodeHR(QR-1UT);

如果U${\boldsymbol{\tilde H}_R}$rTw(s1)>t,返回Reject;否则,m′←V⊕$\mathscr{H}$(${\boldsymbol{\tilde H}_R}$, U, r′)。

如果${\boldsymbol{\tilde H}_S}$s1T$\mathscr{G}$(r′, m′, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$),返回Reject,否则,返回明文m′。

2.4 正确性验证

签密方案的验证思路是先用接收方的私钥解密出明文,再用发送方的公钥进行数据完整性认证。

1) 先验证m1=${\boldsymbol{\tilde H}_S}$s1T

首先由s1TPSTDecodeHS(Qs-1m1T),可得QSHSPSs1T=HSm1T; 对于m1=${\boldsymbol{\tilde H}_S}$s1T,两边同时左乘HS, 可得HS(QSHS PSaTb)s1T=HSm1T,这就是要验证的等式:

HS(QSHSPSaTb)s1T=(HSQSHSPSaTb)s1T=QSHSPSs1THSaTb s1T=QSHSPSs1T(HSaT=0)=HSm1T    证毕。

2) 收到签密文后,先解密出随机向量r′,而后验证如果r′=r,则有UT=′${\boldsymbol{\tilde H}_R}$rT。由U′←HRUTr′←PRT DecodeHR(QR-1UT),可得HRPRrT=QR-1HRUT。如果UT=${\boldsymbol{\tilde H}_R}$rT,则等价于QR-1HRUT=QR-1H${\boldsymbol{\tilde H}_R}$RrT, 而:

QR-1HR${\boldsymbol{\tilde H}_R}$rT=QR-1HR(QRHRPRaTb)rT=QR-1(QRHRPRHRaTb)rT=(EHRPRQR-10b)rT=HRPRrT

即如果UT=${\boldsymbol{\tilde H}_R}$rT,则等价于HRPRrT=QR-1HRUT成立,而上面已经证明这等式是成立的。    证毕。

3) 在解密出随机向量r′之后,就要可以利用公开的哈希函数进行简单的异或运算解密出明文m′,再验证${\boldsymbol{\tilde H}_S}$s1T=$\mathscr{G}$(r′, m′, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)。而根据签密过程可知$\mathscr{G}$(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)=m1,由1)可知m1=${\boldsymbol{\tilde H}_S}$s1T,如果m′=mr=r′,则$\mathscr{G}$(r′, m′, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)=$\mathscr{G}$(r′, m′, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)=${\boldsymbol{\tilde H}_S}$s1T    证毕。

3 安全性证明

本方案的安全性证明以定义2和定义3所给出的安全模型为基础,并在随机预言机下进行证明。

定理1  机密性。如果伴随式译码(Syndrome Decoding, SD)是困难的,则在随机预言机模型下,本方案在适应性选择密文攻击下具有不可区分性,即能够满足IND-CCA2安全。

证明  通过一系列的挑战游戏Game0, Game1, …, 构造一个挑战者$\mathscr{C}$,以此进行证明。

${q_{\mathscr{H}}}$, ${q_{\mathscr{G}}}$, ${q_{\mathscr{s}}}$, ${q_{\mathscr{u}}}$分别表示敌手$\mathscr{A}$访问$\mathscr{H}$预言机,$\mathscr{G}$预言机,签密预言机和解签密预言机的最大次数。需要证明敌手$\mathscr{A}$赢得游戏的优势,受到在随机预言机模型之下解决SD问题的优势的限制。

为了应对敌手对四个预言机的访问,建立四张表${\mathscr{G}^{{\text{list}}}}$, ${\mathscr{H}^{{\text{list}}}}$, σlistΛ。如果表中没有数值,则输出“⊥”。

1) ${\mathscr{G}^{{\text{list}}}}$包含一个元组((x, s), a),由(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)索引得到。

2) ${\mathscr{H}^{{\text{list}}}}$由0, 1字符串ρ∈{0, 1}l组成,由(${\boldsymbol{\tilde H}_R}$, U, r)索引得到,其中${\boldsymbol{\tilde H}_R}$${\boldsymbol{\tilde H}_S}$是(n-kn阶的LDGM码的校验矩阵,UF2n-krF2n,且w(r)≤t

3) σlist包含形如(m, σ=(U, V, s))的条目。

4) 表Λ包含的是特定随机向量r的目录,这些随机向量与(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)一一对应,相应的r记为r=Λ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$),应满足$\mathscr{G}$(m, Λ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$), ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)是可译码的伴随式。

Game0  这是标准的IND-CCA2挑战游戏。通过运行方案中的密钥生成算法,生成私钥(QU, HU, PU, HU), 其中HU←LDGM(n, t),公钥为${\boldsymbol{\tilde H}_U}$=QUHUPUaUbUT。将${\boldsymbol{\tilde H}_U}$发送给敌手$\mathscr{A}$$\mathscr{A}$能够访问$\mathscr{H}$预言机和$\mathscr{G}$预言机。签密预言机和解签密预言机的功能如方案所述。以X0表示$\mathscr{A}$赢得Game0的事件。可见在提出的方案中,Game0能够完美地运行IND-CCA2挑战游戏,$\Pr \left[ {{X_0}} \right] - 1/2 = Adv_{\mathscr{A}}^{ind - cca}\left( {n,k} \right)$

Game1  在这个游戏中,对哈希预言机$\mathscr{G}$$\mathscr{H}$进行模拟。两个预言机的模拟如下。

对于$\mathscr{G}$预言机形如(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)的访问,分为两种情况,取决于r=Λ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)是否成立。对预言机的模拟如下所示:

输入:一个元组(m, r, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)。

输出:一个伴随式x

if rΛ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)then

    if s1≠⊥then

        ${\boldsymbol{s}_1}\xleftarrow{R}F_2^n$

        x${\boldsymbol{\tilde H}_S}$s1T

        ${\mathscr{G}^{{\text{list}}}}$(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)←((x, ⊥), s1)

    end

    return $\mathscr{G}$(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)=x

else

    if x=⊥then

        ${s_1}\xleftarrow{R}F_2^n$, w(s1)=t

        x${\boldsymbol{\tilde H}_S}$s1T

        ${\mathscr{G}^{{\text{list}}}}$(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)←((x, s1), s1)

    end

    return $\mathscr{G}$(r, m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_S}$)=x

end

对于预言机$\mathscr{H}$形如(${\boldsymbol{\tilde H}_R}$, U, r)的访问,挑战者在Hlist当中搜寻(${\boldsymbol{\tilde H}_R}$, U, r)的值。如果找到,则从列表中返回相应的值;否则返回一个随机字符串$\rho \xleftarrow{R}{\left\{ {0,1} \right\}^l}$,并且在${\mathscr{H}^{{\text{list}}}}$当中记录元组((${\boldsymbol{\tilde H}_R}$, U, r), ρ)。用X1代表事件$\mathscr{A}$赢得Game1。当在Game1中模拟这两个预言机时,预言机的输出分布和Game0保持不变(即保持随机性)。因此Pr[X1]=Pr[X0]。

Game2  模拟签密预言机,过程如下:

输入:元组(m, ${\boldsymbol{\tilde H}_R}$, HU)。

输出:一个签密文σ=(U, V, s1)。

if Λ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_U}$)=⊥then

    $r\xleftarrow{R}F_2^n$, w(t)≤tΛ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_U}$)←⊥

end

((x, s1), s1)←$\mathscr{G}$(Λ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_U}$), m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_U}$)

if (s1=⊥) then abort

else

    rΛ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_U}$),Λ(m, ${\boldsymbol{\tilde H}_R}$, ${\boldsymbol{\tilde H}_U}$)←⊥,U=${\boldsymbol{\tilde H}_R}$rT

    V=m$\mathscr{H}$(${\boldsymbol{\tilde H}_R}$, U, r)

end

Return σ=(U, V, s1)。

s1其实是在公钥${\boldsymbol{\tilde H}_U}$之下对消息m的签名,因此,可得$\left| {\Pr \left[ {{X_1}} \right] - \Pr \left\{ {{X_2}} \right\}} \right| \leqslant \frac{{{q_s}}}{{\left( {\begin{array}{*{20}{c}} n \\ t \end{array}} \right)}}$,其中X2表示A赢得本游戏。

Game3  模拟解签密预言机。对(s1, U, V, ${\boldsymbol{\tilde H}_U}$, ${\boldsymbol{\tilde H}_S}$)进行询问,过程如下:

1) 挑战者在表${\mathscr{H}^{{\text{list}}}}$中搜寻使得${\boldsymbol{\tilde H}_U}$λT=U成立的元组(${\boldsymbol{\tilde H}_U}$, U, λ)。如果找到,则输出相应的向量X。如果不存在,则令λ=⊥, 并从哈希预言机中给出相应的输出作为X

2) m′←VX

3) 挑战者在表${\mathscr{G}^{{\text{list}}}}$中搜寻使得${\boldsymbol{\tilde H}_U}$λT=Uλ=⊥成立的元组。如果这样的元组没有找到,则将其添加到列表中。

4) 挑战者验证${\boldsymbol{\tilde H}_U}$s1T$\underline{\underline ?} $$\mathscr{G}$(λ1, m′, ${\boldsymbol{\tilde H}_U}$, ${\boldsymbol{\tilde H}_S}$)。如果成立且${\boldsymbol{\tilde H}_U}$λT=U,则挑战者返回m′。如果成立但λ=⊥,则引用失败,挑战者终止提供服务。如果所有条件都不成立,则挑战者返回“⊥”作为拒绝无效签密文的信号。

在上述的游戏中,如果挑战者终止服务,则表明敌手伪造了一个签密文并且没有对哈希预言机进行询问。因此,挑战者终止服务的概率为qd/2l。这个情况不会在Game2中出现。因此,对于事件X3,可以得到:

$ \left| {\Pr \left[ {{X_3}} \right] - \Pr \left\{ {{X_2}} \right\}} \right| \leqslant {q_d}/{2^l} $

Game4  挑战密钥生成算法。敌手可以获得除了U之外所有用户的私钥。因此,对于其他的用户,密钥生成如方案所示,并将其传送给敌手。对于用户U$\mathscr{C}$选择私钥HU=R。公钥为${\boldsymbol{\tilde H}_U}$=R′,其中RT=[RT|zT]。把验证密钥${\boldsymbol{\tilde H}_U}$发送给敌手$\mathscr{A}$。可以得到:

$ \left| {\Pr \left[ {{X_3}} \right] - \Pr \left\{ {{X_4}} \right\}} \right| \leqslant negl\left( n \right) $

其中X4表示$\mathscr{A}$赢得Game4。

Game5  挑战密文。挑战者选取消息mb,按照如下操作进行挑战,这有助于敌手破解SD问题的实例。挑战者希望找到rF2n,且w(r)≤t,使得RrT=RsT。挑战者生成挑战密文:

1) $\mathscr{C}$选择U*=s′,其中sT=[sT|sc],sc是随机生成的一个比特。

2) 敌手询问$\mathscr{H}$$\mathscr{C}$选择一个特殊的符号Δ,随机生成一个向量y并将其记录在${\mathscr{H}^{{\text{list}}}}$之中。对于敌手询问$\mathscr{G}$$\mathscr{C}$再次使用Δ,同时给出一个可译码的伴随式,并记录在${\mathscr{G}^{{\text{list}}}}$当中。

3) 挑战者$\mathscr{C}$V=mby

同样地,挑战者需要通过以下的方式来改变对哈希函数询问的应答:

1) 对$\mathscr{H}$预言机,询问(${\boldsymbol{\tilde H}_U}$, ${\boldsymbol{\tilde H}_U}$sT, r),当${\boldsymbol{\tilde H}_U}$rT${\boldsymbol{\tilde H}_U}$sT时,返回一个随机值。如果${\boldsymbol{\tilde H}_U}$rT=U*,且w(r)≤t,则返回y的值,并用r代替元组当中的Δ。

2) 对$\mathscr{G}$预言机,询问(m, r, ${\boldsymbol{\tilde H}_U}$, ${\boldsymbol{\tilde H}_S}$),当${\boldsymbol{\tilde H}_U}$rT=U*m=mb时输出x,否则输出随机的伴随式。

如果用X5表示敌手$\mathscr{A}$赢得Game5,可得对于R,一个PPT敌手解决一个伴随式译码问题(SD)实例的优势AdvCSD(n, k)满足|Pr[X4]-Pr[X5]|≤AdvCSD(n, k)。

Game6  挑战密文。在这个游戏中,挑战者$\mathscr{C}$再次改变生成密文的方法。对于密文,生成Us的过程与以前的游戏是一样的,但是更改生成V的方法。挑战者$\mathscr{C}$V=z,其中$z\xleftarrow{R}{\left\{ {0,1} \right\}^l}$。至此,挑战密文的生成都是完全随机的。但是,在Game5中,密文生成是随机的,因为我们使用一个随机向量对消息进行盲化处理。因此,密文空间的分布并没有发生改变,即Pr[X5]=Pr[X6],X6表示敌手赢得Game6这个事件。因此,敌手猜测出比特b取值的概率是Pr[X6]=1/2。

综上所述,$Ad{v^{ind - cca2}}\left( {\mathscr{A}} \right) \leqslant \frac{{{q_s}}}{{\left( {\begin{array}{*{20}{c}} n \\ t \end{array}} \right)}} + \frac{{{q_d}}}{{{2_t}}} + \frac{{Adv_c^{SD}}}{2}$,也就是说敌手破解机密性的优势受到了伴随式译码问题的限制,方案满足IND-CCA2安全。

定理2  不可伪造性。如果伴随式译码问题是NPC问题,则在随机预言机模型下,基于LDGM码的签密方案可归约到SD问题,在适应性选择消息攻击下满足不可伪造性(即满足EUF-CMA安全)。

证明  同样通过构造攻击游戏来证明不可伪造性。用${q_{\mathscr{G}}}$qs分别表敌手访问$\mathscr{G}$预言机和签密预言机的最大次数。我们将要证明敌手伪造签密文的优势相当于给定一个随机线性码,解决伴随式译码问题。

为了记录哈希询问和签名询问,建立列表${\mathscr{G}^{{\text{list}}}}$σlisttΛ。如果列表中没有相应的值,则输出“⊥”。

1) ${\mathscr{G}^{{\text{list}}}}$包含元组((x, s), a),由(r, m)索引得到。

2) 签名列表σlist包含形如(m, σ=(s, r))的记录。

3) 表Λ包含的是特定随机向量r的目录,这些随机向量与(m, r)一一对应,相应的r记为r=Λ(m),应满足$\mathscr{G}$(m, Λ(m))是可译码的伴随式。

Game0  挑战者根据EUF-CMA游戏来运行实际的方案。公私钥对通过运行密钥生成算法取得,私钥(QS, HS, PS, HS),其中H←LDGM(n, k),公钥${\boldsymbol{\tilde H}_S}$=QSHSPSaTb,将公钥S发送给敌手$\mathscr{F}$$\mathscr{F}$可以访问哈希预言机$\mathscr{G}$。签密预言机如机密性证明描述所示。记Pr=[X0]Succeuf-cms($\mathscr{F}$)。

Game1  模拟哈希预言机。在这个游戏中,模拟预言机$\mathscr{G}$

$\mathscr{G}$询问元组(m, r),有两种情况,取决于rΛ(m)是否成立:

输入:一个元组(m, r)。

输出:一个伴随式x

if rΛ(m) then

    if s=⊥ then

        ${\boldsymbol{s}_1}\xleftarrow{R}F_2^n$

        x${\boldsymbol{\tilde H}_S}$s1T

        s←⊥ ${\mathscr{G}^{{\text{list}}}}$(m, r)←((x, s), s1)

    end

    return $\mathscr{G}$(m, r)=x

else

    if x=⊥then

        $\boldsymbol{s}\xleftarrow{R}F_2^n$, w(t)=t

        x${\boldsymbol{\tilde H}_S}$s1T

        ss1${\mathscr{G}^{{\text{list}}}}$(m, r)←((x, s), s1)

    end

    return $\mathscr{G}$(m, r)=x

end

当在Game1中模拟预言机时,预言机输出的分布和Game1中的输出分布相同。因此Pr[X1]=Pr[X0]。

Game2  模拟签名预言机。签密预言机的模拟如下:

输入:长为l的消息m

输出:一个签名σ=(s1, r)。

if Λ(m)=⊥ then

    $r\xleftarrow{R}F_2^n$

    Λ(m)←r

end

((x, s1), s1)←$\mathscr{G}$(m, Λ(m))

if (s1=⊥) then abort

else

rΛ(m)

Λ(m)←⊥

return σ=(s1, r)

根据验证算法,由签名预言机生成的签名是有效的,因此满足${\boldsymbol{\tilde H}_S}$s1T=$\mathscr{G}$(m, r), w(s1)≤t

在游戏2中,当访问到某些r被赋值为Λ(m)的元组(m, r)时,会发生碰撞,这种事件发生的概率为qS/2n。用X2表示敌手$\mathscr{F}$赢得该游戏,则Pr[X1]-Pr[X2]≤qS/2n

Game3  改变密钥生成算法。将伴随式译码问题需要求解的校验矩阵R,作为私钥即H=R。公钥是${\boldsymbol{\tilde H}}$=R′,其中RT=[RT|zT],zR F2n。将验证密钥发送给敌手$\mathscr{F}$,挑战者$\mathscr{C}$保持其余的私钥不变。

Game4  在这个游戏中,挑战者改变赢得游戏的条件。挑战者首先选择$c\xleftarrow{R}\left\{ {1,2, \cdots ,qs + {q_{\mathscr{G}}} + 1} \right\}$。除了满足上述条件之外(前面游戏给出的条件),如果在对预言机$\mathscr{G}$进行第c次询问时,成功进行了伪造,则$\mathscr{F}$赢得了游戏。这种情况发生的概率为1/(qS+${q_{\mathscr{G}}}$+1)。用X4表示$\mathscr{F}$赢得Game4,则:

$ \Pr \left[ {{X_4}} \right] = \frac{{\Pr \left[ {{X_3}} \right]}}{{{q_s} + {q_{\mathscr{G}}} + 1}}. $

Game5  在这个游戏中,挑战者更改随机预言机,为了在第c次询问时获得一个随机伴随式c′=RsT(w(s)≥t)。用X5表示敌手$\mathscr{F}$赢得本游戏,由于哈希预言机的输出分布和游戏4中的输出分布一样,因此,Pr[X5]=Pr[X4]。用s*表示伪造者输出的签名。可见s*是对应于RsT的伴随式,有Pr[X5]≤AdvCSD(n, k)。

综合以上5个攻击游戏,可得:

$ Suc{c^{{\text{euf}} - {\text{cma}}}}\left( {\mathscr{F}} \right) \leqslant {q_s}/{2^n} + \left( {qs + {q_{\mathscr{G}}} + 1} \right)Adv_C^{SD}\left( {n,k} \right). $

因此,敌手伪造签名的概率受到挑战者求解伴随式译码问题的限制,这意味着只要相应的伴随式译码问题是难以求解的,签名是不可伪造的,即满足EUF-CMA安全。

4 效率分析

本方案使用低密度生成矩阵码(LDGM)进行签名,能同时保证消息的机密性和完整性,比传统的先签名后加密的方法效率更高。签密方案的设计主要在于其中的签名部分,本方案的签名部分使用的是LDGM码,与使用Goppa码的CFS签名相比,可以直接译码,不需要多次尝试即可译出相应的错误向量作为签名;而且密钥量得到了很大的降低,签密在保证机密性和可认证性方面使用的是相同的一个密钥对,可以减少先签名后加密带来的密钥量增加。

1) 签名计算复杂度。

签名的基本思路是将明文的哈希值当作一个伴随式(校验子),对其进行译码,找出相对应的错误向量,将其作为签名。由于CFS签名方案使用的是Goppa码,因此平均需要进行t!次译码尝试,才能找到可译码的伴随式,而本签名方案使用基于LDGM码的签名算法,对任意的伴随式都可以直接译出相对应的错误向量,因此,仅需进行1次译码操作。

2) 数据量。

在CFS签名方案中,为了使伪造攻击的计算复杂度达到O(280),需要使用的Goppa码码长为n=221,校验位r=21×10=210,于是每位用户的公钥量为1 152 KB[6];而在本方案中,为了达到相同的安全级别,每位用户所需要的公钥的公钥量为117 KB[6]。因此,本方案的数据量大大减少。

目前在基于编码的密码体系中,为了同时保证消息机密性和完整性,所使用的是先签名后加密的方法,即先使用CFS签名再使用McEliece加密。表 1是就数据量进行比较的结果。

表 1 几种方案数据量比较

就签密和解签密运算量,与“一石二鸟”方案[12]和SCS方案[13]进行对比,其中,E为模指数运算,H为哈希函数运算,S为对称加(解)密运算,M为矩阵乘运算,D为快速译码算法运算,r为“一石二鸟”方案选取的参数,方案的比较结果如表 2所示。

表 2 签密方案运算量比较

上述方案中,哈希运算的计算量很小,运算量主要集中在模指数运算、对称加解密和矩阵乘法运算上。在计算机上,矩阵运算速度要远远高于模幂运算。若选取(524,1 024)的矩阵,幂为16、模为1 024 b的模指数,矩阵乘法运算量约为模指数的1/47。因此,本方案比“一石二鸟”和SCS方案[13]计算效率更高。

5 结语

基于编码的公钥密钥具有抗量子攻击的特性,量子计算机的快速发展使它备受关注。本文的基于LDGM码的签密方案是在随机预言机模型下构造的,计算机复杂度和数据量有大幅度的降低。但是,设计出标准模型下可证明安全的方案是运用方案的必要条件。并且,基于编码的密码体制将信道编码和加密紧密结合在一起,与通信技术有本质的联系,如何在标准模型下设计可证明安全的签密方案,并应用到移动智能设备上是值得研究的课题。

参考文献
[1] MCELIECE R J. A public-key cryptosystem based on algebraic coding theory [EB/OL]. [2015-10-24]. https://www.cs.colorado.edu/~jrblack/class/csci7000/f03/papers/mceliece.pdf. (0)
[2] BALDI M. QC-LDPC code-based cryptosystems [M]// BALDI M. QC-LDPC Code-based Cryptography. Berlin: Springer, 2014: 91-117. (0)
[3] GEORGIEVA M, DE PORTZAMPARC F. Toward secure imple-mentation of McEliece decryption [C]// MANGARD S, POSCHMANN A Y. Constructive Side-Channel Analysis and Secure Design, LNCS 9064. Berlin: Springer, 2015: 141-156. (0)
[4] ZHANGY, YUED W. Public key cryptography based on algebraic geometric codes[J]. Journal on Communications, 2008, 29 (6) : 75-81. (0)
[5] BALDI M, BIANCHI M, MATURO N, et al. Improving the efficiency of the LDPC code-based McEliece cryptosystem through irregular codes [C]// Proceedings of the 2013 IEEE Symposium on Computers and Communications. Washington, DC: IEEE Computer Society, 2013: 197-202. (0)
[6] BALDI M, BIANCHI M, CHIARALUCE F, et al. Using LDGM codes and sparse syndromes to achieve digital signatures [C]// GABORIT P. Post-Quantum Cryptography, LNCS 7932. Berlin: Springer, 2013: 1-15. (0)
[7] COURTOIS N T, FINIASZ M, SENDRIER N. How to achieve a McEliece-based digital signature scheme [C]// BOYD C. Advances in Cryptology—ASIACRYPT 2001, LNCS 2248. Berlin: Springer, 2001: 157-174. (0)
[8] BERLEKAMP E R, MCELIECE R J, VAN TILBORG H C A. On the inherent intractability of certain coding problems[J]. IEEE Transactions on Information Theory, 1978, 24 (3) : 384-386. doi: 10.1109/TIT.1978.1055873 (0)
[9] CHENG J F, MCELIECE R J. Some high-rate near capacity codecs for the Gaussian channel [EB/OL]. [2015-11-14]. http://xueshu.baidu.com/s?wd=paperuri%3A%282738fdc6421751d8f7b9827de8cdfe23%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Bjsessionid%3DECAFAC735A595F2AB5705FB3150963F3%3Fdoi%3D10.1.1.57.6071%26rep%3Drep1%26type%3Dpdf&ie=utf-8&sc_us=13201804057768292757. (0)
[10] GARCIA-FRIAS J, ZHONG W. Approaching Shannon performance by iterative decoding of linear codes with low-density generator matrix[J]. IEEE Communications Letters, 2003, 7 (6) : 266-268. doi: 10.1109/LCOMM.2003.813816 (0)
[11] GONZÁLEZ-LÓPEZ M, VAZQUEZ-ARAUJO F J, CASTEDO L, et al. Serially-Concatenated Low-Density Generator Matrix (SCLDGM) codes for transmission over AWGN and Rayleigh fading channels[J]. IEEE Transactions on Wireless Communications, 2007, 6 (8) : 2753-2758. doi: 10.1109/TWC.2007.05283 (0)
[12] MALONELEE J, MAO W. Two birds one stone: signcryption using RSA [C]// Topics in Cryptology — CT-RSA 2003. Berlin: Springer, 2003: 211-226. (0)
[13] ZHENG Y. Digital signcryption or how to achieve cost (signature & encryption) < < cost (signature)+ cost (encryption) [C]// Advances in Cryptology—Crypto'97, LNCS 1294. Berlin: Springer, 1997: 165-179. (0)