发明内容
运行发明方法的发送方Alice得到σ1∈Zq和公共参数params,将σ1∈Zq和params作为输入运行Con(σ1,params)得到k1∈Zk和v∈Zt,保密存储k1,并公开传输v给运行发明方法的接收方Bob。Bob得到σ2∈Zq,v∈Zt和公共参数params,其中σ2与σ1满足|σ2-σ1|q≤d,将σ2,v和params作为输入运行Rec(σ2,v,params),得到k2∈Zk。若σ2与σ1的距离d满足一定的限制条件,则正确性成立,即k2=k1,双方纠错成功,生成共同的密钥k2=k1。该技术在网络保密通讯领域具有重要应用。
本发明给出一种高效的多比特纠错编码解码方法;其中,{…}表示一个信息或者数值的集合;这里公共参数params={q,k,g,aux},其中q,k,g均为整数;aux包含运行发明方法的可为空的其它辅助公共参数的集合;对于两个整数i,j,其中i≤j,[i,j]表示整数集{i,i+1,…,j};对于任意正整数a,定义Za为Z/aZ,Za表示为Za=[0,a-1]或者其中,对于任意实数b,表示小于或者等于b的最大整数;
运行发明方法的发送方运行一个编码算法Con(·),算法输入包含σ1∈Zq和公共参数params,算法对σ1∈Zq基于params进行编码操作,输出包含(k1,v),其中k1∈Zk,v∈Zt,k和t为整数且其中之一大于2或小于-2;这意味着,k1和v其中之一必为多比特(即:无法用一个0-1比特来表示)。在实际的实现中,可以对σ1∈Zq做任何可求逆的变换,比如对其平移一定的量(即:加或减去一个数等),此时Rec对σ2∈Zq做相应的逆变换。
运行发明方法的发送方运行Con(σ1,params)得到k1∈Zk和v∈Zt后,可另外使用一层纠错码加密算法Encode加密f(k1)得到Encode(f(k1)),其中,f是关于k1的函数,然后计算v'=f′(Encode(f(k1)),k1),其中,f′是关于f(k1),k1的函数,并公开传输v,v'给运行发明方法的接收方Bob。
运行发明方法的接受者有一个保密输入σ2∈Zq,收到发送方发送过来的v∈Zt,检查v∈Zt,若v∈Zt则运行一个解码算法,算法输入包含σ2∈Zq,v∈Zt和公共参数params,其中|σ2-σ1|q≤d,对于任意整数a,|a|q定义为min{a mod q,q-a mod q},其中,对于任意整数a和正整数b,a mod b表示在欧几里得除法中a除以b的唯一的落在[0,…,b-1]中的余数,min{·}定义为取最小值;d=fd(q,k,g),fd是关于q,k,g的函数;算法对σ2∈Zq,v∈Zt基于params进行解码,输出包含k2,其中k2∈Zk,满足k2=k1。
运行发明方法的接收方Bob运行Rec(σ2,v,params),得到k2∈Zk。若σ2与σ1的距离d满足一定的限制条件,则正确性成立,即k2=k1,双方纠错成功,生成k2=k1。即便σ2与σ1的距离超出d或传输过程引入的噪音缘故,接收方仍可使用纠错码解密算法Decode解密f″(k2,v')得到Decode(f″(k2,v'))=f(k1),其中,f″是关于k2,v'的函数,双方纠错成功,生成共同的密钥f(k1)。
具体实施方式
本发明给出一种高效的纠错编码解码方法;其中,{…}表示一个信息或者数值的集合;这里公共参数params={q,k,g,aux},其中q,k,g均为整数;辅助参数aux是包含{q′,α,β}的集合的可为空的子集合,其中q′=f1(q,k,g),α=f2(q,k,g),β=f3(q,k,g),f1,f2,f3是关于q,k,g的函数;假定公共参数params是固定的并被运行发明方法的用户事先获知;或者,在发明方法运行之前交换和协商这些参数并达成一致。在基于LWE的密钥协商协议当中,这些参数主要是由LWE问题来决定。对于两个整数i,j,其中i≤j,[i,j]表示整数集{i,i+1,…,j};对于任意正整数a,定义Za为Z/aZ,在本发明所在的技术领域,Za表示为Za=[0,a-1]或者其中,对于任意实数b,表示小于或者等于b的最大整数,「b」表示与b最接近的整数,且
运行发明方法的发送方运行一个编码算法Con(·),算法输入包含σ1∈Zq和公共参数params,输出包含(k1,v),其中k1∈Zk,v∈Zt,t=f(β,g),f是关于β,g的函数;算法运行如下:
⑴计算σA∈Zq′;
⑵计算k1∈Zk以及
⑶计算v∈Zt;
运行发明方法的发送方运行Con(σ1,params)得到k1∈Zk和v∈Zt后,可另外使用一层纠错码加密算法Encode加密f(k1)得到Encode(f(k1)),其中,f是关于k1的函数,然后计算v'=f′(Encode(f(k1)),k1),其中,f′是关于f(k1),k1的函数,并公开传输v,v'给运行发明方法的接收方Bob。
运行发明方法的接受者有一个保密输入σ2∈Zq,收到发送方发送过来的v∈Zt,检查v∈Zt,若v∈Zt则运行一个解码算法,算法输入包含σ2∈Zq,v∈Zt和公共参数params,其中|σ2-σ1|q≤d,对于任意整数a,|a|q定义为min{a mod q,q-a mod q},其中,对于任意整数a和正整数b,a mod b表示在欧几里得除法中a除以b的唯一的落在[0,…,b-1]中的余数,min{·}定义为取最小值;d=fd(q,k,g),fd是关于q,k,g的函数;输出包含k2,其中k2∈Zk,满足k2=k1。
运行发明方法的接收方Bob运行Rec(σ2,v,params),得到k2∈Zk。若σ2与σ1的距离d满足一定的限制条件,则正确性成立,即k2=k1,双方纠错成功,生成k2=k1。即便σ2与σ1的距离超出d或传输过程引入的噪音缘故,接收方仍可使用纠错码解密算法Decode解密f″(k2,v')得到Decode(f″(k2,v'))=f(k1),其中,f″是关于k2,v'的函数,双方纠错成功,生成共同的密钥f(k1)。
如上所述的方法,其中,q,k,g为正整数,和/或,q′=lcm(q,k)是q和k的最小公倍数,和/或,α=q′/q,和/或,β=q′/k,和/或,β≥g均为正整数。当然,在发明方法的实际应用中,q’、α、β、t还可以是q、k、g的其它函数和变换,比如:q’是lcm(q,k)的一个函数或变换,α是q’/q的一个函数或变换,β是q’/k的一个函数或变换。
如上所述的方法,其中,σA是Zq′上的随机分布或均匀分布,或者σA可以有效地转换为Zq′上的均匀分布。
如上所述的方法,其中,σA的计算方法包括:从集合[0,α-1]或集合中均匀随机地选取元素e;计算σA=ασ1+e∈Zq′。
如上所述的方法,其中,σA=ασ1+e∈Zq′的计算方法包括:
⑴σA=ασ1+e mod q′,或
⑵σA=ασ1+e mod±q′,其中,对于任意整数a和正整数b,a mod±b表示在欧几里得除法中a除以b的唯一的落在中的余数。
如上所述的方法,其中,k1=h1(σA,α,β,k),h1,h2是关于σA,α,β,k的函数。一般而言,h1输出的是σA关于公共参数的高位信息,而h2输出的是σA关于公共参数的低位信息,或者二者的输出相反。
如上所述的方法,其中,k1∈Zk计算方法包括:或者k1=「σA/β」mod±k;和/或,的计算方法包括:或者
如上所述的方法,其中,k1∈Zk=[0,k-1]的计算方法包括:
⑴若σA∈Zq′=[0,q′-1],则令
⑵若σA∈Zq′=[0,q′-1],则当σA-σAmod±β=kβ时,令k1=0;否则,令k1=「σA/β」;
⑶若则当σA<0时,令否则,令
⑷若则当σA≥-β/2时,令k1=「σA/β」;否则,令k1=「σA/β」+k。
如上所述的方法,其中,h是关于g,β的函数。一般而言,v是σA关于公共参数的低位信息。
如上所述的方法,其中,v∈Zt的计算方法包括:
⑴或
⑵
如上所述的方法,其中,v∈Zt中t的取值包含:t=g或t=g+1。一般而言,t是g的一个函数(比如,对g做平移操作)。
如上所述的方法,其中,解码算法Rec(σ2,v,params)=hR(σ2,v,q,k,g),hR是关于σ2,v,q,k,g的可有效计算的函数。
如上所述的方法,其中,Rec(σ2,v,params)的计算方法包括:
⑴k2=「ασ2/β-v/g」mod k,或
⑵k2=「ασ2/β-(v+1/2)/g」mod k,或
⑶k2=「ασ2/β-(v+r)/g」mod k,其中r是一个实数。
如上所述的方法,其中,d满足的关系式包含:
⑴(2d+1)k<q(1-1/g),或
⑵(2d+2)k<q(1-1/g),或
⑶(2d+1)k<q(1-2γ/g),其中γ定义为max{|r|,|1-r|},对于任意实数a,|a|表示取a的绝对值,max{·}定义为取最大值。
⑷(d+1)k<q(1/2-γ/g)。
如上所述的方法,其中,实数r∈[0,1]。
如上所述的方法,其中,k,g的取值包含:或其中κ1,κ2是正整数;q的取值包含:q是素数,或其中κ3是正整数,或q=kg。
在发明方法的实际应用中,示例的Con和Rec具体实施方式如下:示例实施方式一:
Con(σ1,params):
1.从集合中均匀随机地选取元素e;
2.计算σA=ασ1+e mod q′;
3.当σA-σAmod±β=kβ时,令k1=0;否则,令k1=「σA/β」;
4.计算
5.计算
6.保密存储k1,公开传输v;
Rec(σ1,v,params):
1.k2=「ασ2/β-v/g」mod k;
2.保密存储k2。
其中,示例的参数取值包括:
⑴β,g取偶数且g≤β≤2g。
⑵β,g取奇数。
示例实施方式二:
Con(σ1,params):
1.从集合中均匀随机地选取元素e;
2.计算σA=ασ1+e mod q′;
3.当σA-σAmod±β=kβ时,令k1=0;否则,令k1=「σA/β」;
4.计算
5.计算
6.保密存储k1,公开传输v;
Rec(σ1,v,params):
1.k2=「ασ2/β-(v+1/2)/g」mod k;
2.保密存储k2。
其中,示例的参数取值包括:
⑴β取偶数,g取奇数,且g≤β≤2g。
⑵β取奇数,g取偶数。当β是素数时,这是较佳的实施方式。