專(zhuān)利名稱(chēng):一種用于編碼和譯碼數(shù)字消息的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息的編碼和譯碼領(lǐng)域,特別是涉及一種對(duì)數(shù)據(jù)消息加密、解密以及簽名、驗(yàn)證的公用密鑰密碼體制。
背景技術(shù):
密碼技術(shù)是研究加密和解密變換的一門(mén)科學(xué)技術(shù)。通常情況下,人們將可懂的文本稱(chēng)為明文;將明文變換成的不可懂的文本稱(chēng)為密文。把明文變換成密文的過(guò)程叫加密;其逆過(guò)程,即把密文變換成明文的過(guò)程叫解密。這種加密或解密變換是由密鑰來(lái)控制的。
與本發(fā)明最接近的技術(shù)方案,是本發(fā)明人在2007年申請(qǐng)的專(zhuān)利《一種用于編碼和譯碼數(shù)字消息的方法和系統(tǒng)》(PCT/CN2007/070264),其基本思想是先用單向函數(shù)鏈H(w)把明文w擴(kuò)張為中間變量x,再用公鑰的非線性映射函數(shù)E(x)把x壓縮為密文y,可簡(jiǎn)單理解為“單向函數(shù)鏈擴(kuò)展+非線性壓縮”。
上述方案雖然可以大大提高安全性,但是卻需要付出降低計(jì)算效率的代價(jià)。上述的“單向函數(shù)鏈擴(kuò)展+非線性壓縮”方案,計(jì)算成本主要包括兩方面,具體分析如下 首先是單向函數(shù)的運(yùn)算代價(jià)單向函數(shù)屬于成熟技術(shù),便于硬件實(shí)現(xiàn),計(jì)算效率很高。例如,現(xiàn)有的Hash函數(shù)國(guó)際標(biāo)準(zhǔn)MD5、SHA-1等,計(jì)算效率很高;如果需要的話,還可以設(shè)計(jì)專(zhuān)用Hash函數(shù),進(jìn)一步提高計(jì)算效率。
其次是公鑰、私鑰的非線性函數(shù)組的求值計(jì)算由于需要做大量的有限域上的加法和乘法,計(jì)算效率較低。具體的 ■如果采用較大的基本域,域的乘法用軟件實(shí)現(xiàn)很慢,用硬件實(shí)現(xiàn)成本較高; ■而如果采用較小的基本域,為達(dá)到足夠的安全性,同樣的分組長(zhǎng)度就需要更多的變量數(shù)目,使得公鑰函數(shù)的規(guī)模迅速增加,例如一個(gè)F2上的256個(gè)變?cè)亩味囗?xiàng)式的項(xiàng)的數(shù)量為1+256+(256·255)/2=32897; ■如果采用稀疏多項(xiàng)式,其安全性還沒(méi)有得到密碼界的充分認(rèn)同;即可能導(dǎo)致安全性的降低。
因此,該方案的缺點(diǎn)為整體方案的計(jì)算效率較低,其運(yùn)算速度、耗電量、電路成本、對(duì)計(jì)算平臺(tái)的適應(yīng)性等有關(guān)技術(shù)指標(biāo)均受到影響。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種用于編碼和譯碼數(shù)字消息的方法和系統(tǒng),以克服上述方案的缺陷,在保證安全性的前提下,提高運(yùn)算速度、耗電量、電路成本、對(duì)計(jì)算平臺(tái)的適應(yīng)性等有關(guān)技術(shù)指標(biāo)。
為解決上述問(wèn)題,依據(jù)本發(fā)明實(shí)施例,公開(kāi)了一種用于編碼和譯碼數(shù)字消息的方法,包括選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n;生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));生成一與所述公鑰相對(duì)應(yīng)的私鑰;設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組;通過(guò)單向函數(shù)鏈H(w)將消息w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行編碼,得到編碼結(jié)果(y1,...,ys’);和/或,采用所述私鑰將編碼結(jié)果(y1,...,ys’)變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為譯碼消息w。
優(yōu)選的,可以通過(guò)以下步驟得到公鑰和私鑰設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出;依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到從x到y(tǒng)的線性映射函數(shù)組(y1,...,ys)=E(x)=(E1(x1,...,xm),...,Es(x1,...,xm));選取其中的s’個(gè)函數(shù)作為E’(x),得到公鑰;依據(jù)接口函數(shù)R(x)的逆函數(shù)R-1(z)和可逆線性變換T的逆函數(shù)T-1,生成私鑰。
優(yōu)選的,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
優(yōu)選的,前述的加解密方法還可以應(yīng)用在密鑰協(xié)商過(guò)程中;其中,通過(guò)以下方式在一用戶(hù)群中建立對(duì)稱(chēng)密碼體制使用的密鑰λ 第一用戶(hù)隨機(jī)構(gòu)造公鑰E’(x)以及對(duì)應(yīng)的私鑰,并把其中的公鑰傳遞至第二用戶(hù);第二用戶(hù)隨機(jī)選擇密鑰λ,并把該λ用該公鑰進(jìn)行加密后傳遞至第一用戶(hù);第一用戶(hù)運(yùn)用私鑰解密,得到λ; 或者,第一用戶(hù)隨機(jī)構(gòu)造公鑰E’(x)以及對(duì)應(yīng)的私鑰,然后把該公鑰的特征變量μ傳遞至第二用戶(hù);第二用戶(hù)根據(jù)所述特征變量μ計(jì)算出該公鑰,然后隨機(jī)選擇密鑰λ,并把該λ用該公鑰進(jìn)行加密后傳遞至第一用戶(hù);第一用戶(hù)運(yùn)用私鑰解密,得到λ。
優(yōu)選的,第二用戶(hù)可通過(guò)以下步驟根據(jù)所述特征變量μ計(jì)算出公鑰E’(x) 以特征變量μ為種子映射得到針對(duì)固定公鑰的一系列初等變換;所述固定公鑰為第一用戶(hù)和第二用戶(hù)事先共享的;對(duì)所述固定公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到公鑰E’(x); 優(yōu)選的,第一用戶(hù)可以通過(guò)以下步驟建立與E’(x)對(duì)應(yīng)的私鑰 以特征變量μ為種子映射得到針對(duì)接口函數(shù)R(x)和可逆線性變換T的一系列初等變換;所述用于建立私鑰的初等變換序列和用于建立公鑰E’(x)的初等變換序列是相對(duì)應(yīng)的;對(duì)R(x)和T按照順序執(zhí)行上述的一系列初等變換;依據(jù)所述變換后的R(x)的逆函數(shù)R-1(z)和所述變換后的T的逆函數(shù)T-1,生成與所述E’(x)相對(duì)應(yīng)的用戶(hù)私鑰。
依據(jù)本發(fā)明的另一實(shí)施例,公開(kāi)了一種用于數(shù)字簽名的方法,包括選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n;生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));生成一與所述公鑰相對(duì)應(yīng)的私鑰;設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組;采用所述私鑰先把待簽名的消息y”變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為數(shù)字簽名w;和; 通過(guò)單向函數(shù)鏈H(w)將數(shù)字簽名w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行譯碼,得到譯碼結(jié)果(y1,...,ys’);比較譯碼結(jié)果(y1,...,ys’)和待驗(yàn)證的消息y’,根據(jù)比較結(jié)果確定數(shù)字簽名w是否正確。
優(yōu)選的,可以通過(guò)以下步驟得到公鑰和私鑰設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出;依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到從x到y(tǒng)的線性映射函數(shù)組(y1,...,ys)=E(x)=(E1(x1,...,xm),...,Es(x1,...,xm));選取其中的s’個(gè)函數(shù)作為E’(x),得到公鑰;依據(jù)接口函數(shù)R(x)的逆函數(shù)R-1(z)和可逆線性變換T的逆函數(shù)T-1,生成私鑰。
優(yōu)選的,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
依據(jù)本發(fā)明的另一實(shí)施例,還公開(kāi)了一種用于編碼和譯碼數(shù)字消息的方法,包括選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n;生成一包含有E’[x]的種子公鑰,E’[x]是E[x]的子集,其中,E[x]為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E[x]中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),依據(jù)所述包含有E’[x]的種子公鑰和預(yù)置的用戶(hù)公鑰生成規(guī)則,生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)公鑰E’(x);該公鑰為域F上的線性映射函數(shù)組;針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)私鑰;該私鑰為域F上的線性映射函數(shù)組;設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組;針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)消息M進(jìn)行編碼,得到編碼消息N;采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z)對(duì)該編碼消息N進(jìn)行譯碼,得到譯碼消息L;或者,針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z),對(duì)消息M’進(jìn)行編碼,得到編碼消息N’;采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)該編碼消息N’進(jìn)行譯碼,得到譯碼消息L’。
優(yōu)選的,可以通過(guò)以下步驟建立種子公鑰設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出;依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到E[x];選取其中的s’個(gè)函數(shù)作為E’[x],得到種子公鑰。
優(yōu)選的,可以通過(guò)以下步驟建立用戶(hù)公鑰以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)E’[x]的一系列初等變換;對(duì)包含有E’[x]的種子公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到針對(duì)IDk的用戶(hù)公鑰。
優(yōu)選的,可以通過(guò)以下步驟建立用戶(hù)私鑰針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)接口函數(shù)R(x)和可逆線性變換T的一系列初等變換;所述用于建立用戶(hù)私鑰的初等變換序列和用于建立用戶(hù)公鑰的初等變換序列是相對(duì)應(yīng)的;對(duì)接口函數(shù)R(x)和可逆線性變換T按照順序執(zhí)行上述的一系列初等變換;依據(jù)所述變換后的接口函數(shù)R(x)的逆函數(shù)R-1(z)和所述變換后的可逆線性變換T的逆函數(shù)T-1,生成用戶(hù)私鑰。
優(yōu)選的,在對(duì)消息M進(jìn)行編碼得到編碼消息N的過(guò)程中,或者在對(duì)消息N’進(jìn)行譯碼得到譯碼消息L’的過(guò)程中,還包括運(yùn)用單向函數(shù)鏈H(w)擴(kuò)張得到中間結(jié)果x,中間結(jié)果x中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
依據(jù)本發(fā)明的另一實(shí)施例,還公開(kāi)了一種用于編碼和譯碼數(shù)字消息的系統(tǒng),包括公鑰生成單元,用于生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’;私鑰生成單元,用于生成一與所述公鑰相對(duì)應(yīng)的私鑰;加密單元,用于通過(guò)單向函數(shù)鏈H(w)將消息w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行編碼,得到編碼結(jié)果(y1,...,ys’);和/或 解密單元,用于采用所述私鑰將編碼結(jié)果(y1,...,ys’)變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為譯碼消息w;其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
優(yōu)選的,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
優(yōu)選的,還可以包括密鑰協(xié)商單元;所述密鑰協(xié)商單元包括以下子模塊 第一協(xié)商子模塊,用于將第一用戶(hù)隨機(jī)構(gòu)造的公鑰傳遞至第二用戶(hù);以及調(diào)用解密單元運(yùn)用相應(yīng)的私鑰對(duì)第二用戶(hù)傳回的信息進(jìn)行解密,得到λ;第二協(xié)商子模塊,用于調(diào)用加密單元采用該公鑰對(duì)第二用戶(hù)隨機(jī)選擇的密鑰λ進(jìn)行加密后傳遞至第一用戶(hù); 或者,第三協(xié)商子模塊,用于將第一用戶(hù)隨機(jī)構(gòu)造的公鑰的特征變量μ傳遞至第二用戶(hù);以及調(diào)用解密單元運(yùn)用相應(yīng)的私鑰對(duì)第二用戶(hù)傳回的信息進(jìn)行解密,得到λ;第四協(xié)商子模塊,用于依據(jù)所述特征變量μ計(jì)算出該公鑰,然后調(diào)用加密單元采用該公鑰對(duì)第二用戶(hù)隨機(jī)選擇的密鑰λ進(jìn)行加密后傳遞至第一用戶(hù)。
依據(jù)本發(fā)明的另一實(shí)施例,還公開(kāi)了一種用于數(shù)字簽名的系統(tǒng),包括公鑰生成單元,用于生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’; 私鑰生成單元,用于生成一與所述公鑰相對(duì)應(yīng)的私鑰;簽名單元,用于采用所述私鑰先把待簽名的消息y”變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為數(shù)字簽名w;和 驗(yàn)證單元,用于通過(guò)單向函數(shù)鏈H(w)將數(shù)字簽名w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行譯碼,得到譯碼結(jié)果(y1,...,ys’);以及比較譯碼結(jié)果(y1,...,ys’)和待驗(yàn)證的消息y’,根據(jù)比較結(jié)果確定數(shù)字簽名w是否正確;其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
優(yōu)選的,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
依據(jù)本發(fā)明的另一實(shí)施例,還公開(kāi)了一種用于編碼和譯碼數(shù)字消息的系統(tǒng),包括種子公鑰生成單元,用于生成一包含有E’[x]的種子公鑰,E’[x]是E[x]的子集,其中,E[x]為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E[x]中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’;用戶(hù)公鑰生成單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),依據(jù)所述包含有E’[x]的種子公鑰和預(yù)置的用戶(hù)公鑰生成規(guī)則,生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)公鑰E’(x);該公鑰為域F上的線性映射函數(shù)組;用戶(hù)私鑰生成單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)私鑰;該私鑰為域F上的線性映射函數(shù)組;加解密單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)消息M進(jìn)行編碼,得到編碼消息N;采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z)對(duì)該編碼消息N進(jìn)行譯碼,得到譯碼消息L;或者,簽名驗(yàn)證單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z),對(duì)消息M’進(jìn)行編碼,得到編碼消息N’;采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)該編碼消息N’進(jìn)行譯碼,得到譯碼消息L’;其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
優(yōu)選的,所述用戶(hù)公鑰生成單元可以包括以下子單元種子映射子單元,用于以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)E’[x]的一系列初等變換;變換子單元,用于對(duì)包含有E’[x]的種子公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到針對(duì)IDk的用戶(hù)公鑰。優(yōu)選的,在加解密單元對(duì)消息M進(jìn)行編碼得到編碼消息N的過(guò)程中,或者在簽名驗(yàn)證單元對(duì)消息N’進(jìn)行譯碼得到譯碼消息L’的過(guò)程中,還包括運(yùn)用單向函數(shù)鏈H(w)擴(kuò)張得到中間結(jié)果x,中間結(jié)果x中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
相對(duì)于與本發(fā)明最接近的技術(shù)方案,本發(fā)明具有比較突出的優(yōu)點(diǎn),具體分析如下 (1)本發(fā)明將安全性歸結(jié)為基于兩個(gè)數(shù)學(xué)難題的并聯(lián)。
●一是嵌入了單向函數(shù)變換的置換方程組的難解性; ●二是按照單向函數(shù)鏈的特定要求分解線性函數(shù)組的困難性。
顯然,無(wú)論是從密碼算法空間看,還是從計(jì)算數(shù)學(xué)的研究進(jìn)展看,第一個(gè)問(wèn)題的難度遠(yuǎn)遠(yuǎn)大于第二個(gè)問(wèn)題的難度。下面分別對(duì)上面的兩個(gè)數(shù)學(xué)難題進(jìn)行分析 ●一是嵌入了單向函數(shù)變換的置換方程組的難解性 把運(yùn)用公鑰進(jìn)行加密變換(或驗(yàn)證簽名的變換)的過(guò)程,看作為關(guān)于w的置換方程組E’(H(w))=(y1,...,ys’)。這個(gè)方程組中的一部分方程中嵌入了若干個(gè)單向函數(shù),把這些單向函數(shù)轉(zhuǎn)化為多項(xiàng)式的表示,需要占用巨大的存儲(chǔ)空間。根據(jù)當(dāng)代計(jì)算數(shù)學(xué)的進(jìn)展,求解這種高度非線性的、展開(kāi)后規(guī)模巨大的方程組是困難的。
要找到關(guān)于中間結(jié)果x的線性不定方程組“E’(x)=(y1,...,ys’)”的一個(gè)解是容易的,但是要在該方程組的關(guān)于x的巨大解集中,找到同時(shí)也滿足單向函數(shù)鏈H(w)的那個(gè)特定的x,是困難的。
●二是按照單向函數(shù)鏈的特定要求分解線性函數(shù)組的困難性 相對(duì)于上述直接解方程遇到的巨大困難,這個(gè)問(wèn)題看起來(lái)似乎容易得多,但仍然是計(jì)算不可行的。
矩陣是線性變換,但矩陣分解是多變?cè)味囗?xiàng)式不定方程組問(wèn)題。與通常的二次多項(xiàng)式公鑰密碼體制(例如SPLASH,歐洲密碼標(biāo)準(zhǔn)NESSIE推薦的簽名算法)相比,本發(fā)明采用線性運(yùn)算實(shí)現(xiàn)加解密,可以使用更多的變?cè)獢?shù)量,從而達(dá)到更強(qiáng)的安全性。例如,對(duì)圖7的實(shí)施例進(jìn)行矩陣分解,等價(jià)于一組變?cè)獢?shù)量為131584、方程數(shù)量為87780、二次項(xiàng)的數(shù)量約為16853760的規(guī)模巨大的非線性不定方程組,解方程是困難的。
上述對(duì)線性函數(shù)組的分解與大整數(shù)因子分解的區(qū)別在于大整數(shù)因子分解只有一個(gè)結(jié)果;而線性函數(shù)組的分解有許多結(jié)果,是一個(gè)巨大的、可枚舉的分解方案的集合。在這個(gè)集合中,如何判定一種分解方案同時(shí)也滿足單向函數(shù)鏈的性質(zhì),目前的判定準(zhǔn)則是錯(cuò)誤的分解方案將推導(dǎo)出錯(cuò)誤的私鑰,而錯(cuò)誤的私鑰將無(wú)法通過(guò)加密與解密(或簽名與驗(yàn)證)的反復(fù)試驗(yàn)。顯然,用這種判定準(zhǔn)則來(lái)尋找正確的矩陣分解方案,代價(jià)是巨大的。
那么,能不能不分解公鑰的線性函數(shù)組而直接破譯?這種技術(shù)路線又回到了上述第一個(gè)問(wèn)題嵌入了單向函數(shù)變換的置換方程組的難解性,顯然比矩陣分解問(wèn)題更困難。
總之,通過(guò)上面的分析可以看出,雖然本發(fā)明采用的是數(shù)學(xué)難題并聯(lián)的方式,這兩個(gè)難題中的任何一個(gè)被攻破,就會(huì)導(dǎo)致整個(gè)密碼系統(tǒng)被攻破。但是本發(fā)明仍然可以保證足夠的安全性、抗破譯能力。
(2)本發(fā)明顯著提高了公鑰密碼的可用性。
具體地說(shuō),由于本發(fā)明充分利用了線性變換的算法簡(jiǎn)潔、便于并行處理、便于硬件實(shí)現(xiàn)等優(yōu)點(diǎn),因此,使公鑰密碼的技術(shù)指標(biāo)獲得明顯提高 ●運(yùn)算速度快。通過(guò)并行處理,用幾個(gè)時(shí)鐘脈沖、而不是用幾千條軟件指令,來(lái)驅(qū)動(dòng)加解密、簽名與驗(yàn)證的運(yùn)算; ●耗電量小。用時(shí)鐘驅(qū)動(dòng)的方式完成運(yùn)算,既不需要做大整數(shù)乘法,也不需要做繁瑣的查表運(yùn)算,不需要復(fù)雜的軟件指令系統(tǒng),電路功耗?。? ●硬件成本低。相對(duì)于“CPU+軟件程序+協(xié)處理器”的實(shí)現(xiàn)方式,電路規(guī)模相對(duì)較小,成本較低; ●計(jì)算平臺(tái)的適應(yīng)性好。適用于專(zhuān)用電路模塊、IC卡、RFID等各種計(jì)算平臺(tái)。
需要說(shuō)明的是,本發(fā)明在基本域?yàn)镕2時(shí)可獲得最佳效果,因?yàn)橛眠壿嬰娐穪?lái)實(shí)現(xiàn)布爾函數(shù)陣列,其運(yùn)算速度最快、耗電量最小、電路成本最低。而在基本域的階為大于2的整數(shù)時(shí),由于大量使用模運(yùn)算,本發(fā)明達(dá)到高技術(shù)指標(biāo)的效果會(huì)有所降低。
(3)本發(fā)明能方便地實(shí)現(xiàn)基于身份的密鑰管理。運(yùn)用F2上矩陣的初等變換實(shí)現(xiàn)ID映射,具有簡(jiǎn)潔、有效、具有很強(qiáng)抗合謀攻擊能力的優(yōu)點(diǎn)。
圖1是一種用于編碼和譯碼數(shù)字消息的方法實(shí)施例1的步驟流程圖; 圖2是一種用于數(shù)字簽名的方法實(shí)施例2的步驟流程圖; 圖3是本發(fā)明實(shí)施例的數(shù)據(jù)流向示意圖; 圖4a是本發(fā)明實(shí)施例中一種生成公鑰和私鑰的步驟示意圖; 圖4b是H(x)、R(x)與H-1(z)的關(guān)系示意圖; 圖5是本發(fā)明一種小數(shù)據(jù)實(shí)施例3的加密或驗(yàn)證簽名過(guò)程的數(shù)據(jù)流向圖; 圖6是本發(fā)明一種小數(shù)據(jù)實(shí)施例3的解密或產(chǎn)生簽名過(guò)程的數(shù)據(jù)流向圖; 圖7是一種簽名應(yīng)用的優(yōu)選實(shí)施例4中運(yùn)用公鑰驗(yàn)證簽名的數(shù)據(jù)流向圖; 圖8是一種簽名應(yīng)用的優(yōu)選實(shí)施例4中運(yùn)用私鑰產(chǎn)生簽名的數(shù)據(jù)流向圖; 圖9是一種加解密應(yīng)用的優(yōu)選實(shí)施例5的運(yùn)用公鑰加密的數(shù)據(jù)流向圖; 圖10是一種加解密應(yīng)用的優(yōu)選實(shí)施例5的運(yùn)用私鑰解密的數(shù)據(jù)流向圖; 圖11是一種加解密應(yīng)用的優(yōu)選實(shí)施例6的運(yùn)用公鑰加密的數(shù)據(jù)流向圖; 圖12是一種加解密應(yīng)用的優(yōu)選實(shí)施例6的運(yùn)用私鑰解密的數(shù)據(jù)流向圖; 圖13是采用4個(gè)接口函數(shù)的迭代來(lái)建立公鑰、并運(yùn)用該公鑰來(lái)驗(yàn)證簽名的數(shù)據(jù)流向圖; 圖14是與圖13相應(yīng),運(yùn)用相應(yīng)私鑰來(lái)產(chǎn)生簽名的數(shù)據(jù)流向圖; 圖15是一種用于編碼和譯碼數(shù)字消息的方法實(shí)施例7的步驟流程圖; 圖16是一種生成公私鑰的優(yōu)選示例的安全性原理示意圖。
具體實(shí)施例方式 為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
本發(fā)明屬于信息安全產(chǎn)品的范疇,主要應(yīng)用于網(wǎng)絡(luò)信任系統(tǒng),例如證件、銀行、手機(jī)、互聯(lián)網(wǎng)、電子商務(wù)、電子政務(wù)、物流、網(wǎng)絡(luò)監(jiān)控、權(quán)力控制、資金轉(zhuǎn)移、交易、數(shù)據(jù)加密等環(huán)節(jié)。
應(yīng)用本發(fā)明所需的硬件環(huán)境屬于本領(lǐng)域技術(shù)人員所熟知的知識(shí)。其中公鑰生成、私鑰生成、單向函數(shù)鏈確定等實(shí)現(xiàn)過(guò)程,涉及到復(fù)雜數(shù)學(xué)公式的自動(dòng)化推導(dǎo),一般應(yīng)采用高端的計(jì)算機(jī)系統(tǒng);加解密、簽名驗(yàn)證等過(guò)程,只涉及到對(duì)給定的數(shù)學(xué)式的求值計(jì)算,可采用各種檔次的硬件平臺(tái),例如單片機(jī)、專(zhuān)用數(shù)字信號(hào)處理芯片、智能卡、RFID等。
下面對(duì)本發(fā)明可能涉及的一些術(shù)語(yǔ)進(jìn)行簡(jiǎn)單解釋 有限域(finite field)是一種具體而又形象的數(shù)學(xué)結(jié)構(gòu),可以通俗地理解為能進(jìn)行加減乘除四則運(yùn)算的有限個(gè)元素的集合。(通常記做F,當(dāng)有限域的元素?cái)?shù)量為素?cái)?shù)p時(shí),記做Fp。) 有限域上的多項(xiàng)式(polynomial)通俗地理解當(dāng)只有一個(gè)變?cè)獣r(shí) f(x)=asxs+as-1xs-1+...+a0x0(mod p) 其中xi叫作變?cè)?,ai叫作系數(shù),aixi叫作項(xiàng),它們?cè)?,...,p-1之間取值。
當(dāng)有多個(gè)變?cè)獣r(shí) 如果多項(xiàng)式中的項(xiàng)的數(shù)量相對(duì)很少,叫做稀疏多項(xiàng)式;反之叫做稠密多項(xiàng)式。稠密多項(xiàng)式不僅有很高的次數(shù),而且項(xiàng)的數(shù)量非常多,把它展開(kāi)來(lái)表示需要占用很大的空間位置。
有限域上的不定方程組(indeterminate equation system)設(shè)有限域上的方程組為 其中g(shù)i(x1,...,xm)為多項(xiàng)式,如果未知元數(shù)量m多于方程數(shù)量n,上式稱(chēng)為Fp的m元n階不定方程組,通常也稱(chēng)為丟番圖方程。
有限域上的超定方程組(overdetermined equations)設(shè)有限域上的方程組為 其中g(shù)i(x1,...,xm)為多項(xiàng)式,如果未知元數(shù)量m少于方程數(shù)量n,上式稱(chēng)為有限域上的m元n階超定方程組。當(dāng)該方程組有解時(shí),通常只需要其中的m個(gè)方程就能確定它的一個(gè)解。
單向函數(shù)設(shè)函數(shù)為y=Hash(x),已知x計(jì)算y是容易的,反之由y計(jì)算x是困難的,這種函數(shù)稱(chēng)為單向函數(shù),也叫做雜湊函數(shù)、散列函數(shù)、Hash函數(shù)等,已被廣泛應(yīng)用于數(shù)據(jù)完整性檢驗(yàn)和信息認(rèn)證。它可以把任意長(zhǎng)度的數(shù)據(jù)x,經(jīng)過(guò)復(fù)雜的運(yùn)算轉(zhuǎn)換成一個(gè)固定長(zhǎng)度或固定數(shù)域的數(shù)值或信息串y。
構(gòu)造單向函數(shù)的方法屬于公知技術(shù)??梢詤⒄债?dāng)前比較流行的單向函數(shù)算法MD5和SHA-1(美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)FIPS 180-1);更強(qiáng)的單向函數(shù)算法還有SHA-256、SHA-384和SHA-512等(美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)FIPS180-2)。
本發(fā)明中規(guī)定的域F,可采用元素?cái)?shù)量為素?cái)?shù)p的有限域Fp,但不局限于這種Fp,而是可以推廣到各種域。
本發(fā)明中所述的編碼消息可以由一地點(diǎn)的用戶(hù)產(chǎn)生,并傳送至另一地點(diǎn),然后由該另一地點(diǎn)的用戶(hù)譯碼,即編碼譯碼可以不在同一地點(diǎn)。當(dāng)然,在同一地點(diǎn)進(jìn)行編碼和譯碼是一種更簡(jiǎn)單的情況。
本發(fā)明的核心思想在于將數(shù)學(xué)難題歸結(jié)為“單向函數(shù)鏈擴(kuò)展+線性壓縮”,以便充分利用線性變換的算法簡(jiǎn)潔、便于并行處理、便于硬件實(shí)現(xiàn)等優(yōu)點(diǎn),使運(yùn)算速度、耗電量、電路成本、對(duì)計(jì)算平臺(tái)的適應(yīng)性等技術(shù)指標(biāo),獲得明顯提高。
參照?qǐng)D1,示出了本發(fā)明一種用于編碼和譯碼數(shù)字消息的方法實(shí)施例1的步驟流程圖,具體可以包括以下步驟 步驟101、選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n; 步驟102、生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm)); 步驟103、生成一與所述公鑰相對(duì)應(yīng)的私鑰; 步驟104、設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z),H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組; 步驟105、通過(guò)單向函數(shù)鏈H(w)將消息w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行編碼,得到編碼結(jié)果(y1,...,ys’);和/或 步驟106、采用所述私鑰將編碼結(jié)果(y1,...,ys’)變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為譯碼消息w。
對(duì)于本實(shí)施例而言,可以應(yīng)用于各種加解密的場(chǎng)合,例如,步驟105主要應(yīng)用于加密的情況,而步驟106主要應(yīng)用于解密的情況。當(dāng)然,對(duì)于不同的應(yīng)用場(chǎng)合,參數(shù)不同,其編譯碼的性能也有優(yōu)劣之分,本說(shuō)明書(shū)后面會(huì)提出更為優(yōu)選的實(shí)施例加以說(shuō)明。
參照?qǐng)D2,示出了一種用于數(shù)字簽名的方法實(shí)施例2,具體可以包括 步驟201、選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n; 步驟202、生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm)); 步驟203、生成一與所述公鑰相對(duì)應(yīng)的私鑰; 步驟204、設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組; 步驟205、采用所述私鑰先把待簽名的消息y”變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為數(shù)字簽名w;和 步驟206、通過(guò)單向函數(shù)鏈H(w)將數(shù)字簽名w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行譯碼,得到譯碼結(jié)果(y1,...,ys’); 步驟207、比較譯碼結(jié)果(y1,...,ys’)和待驗(yàn)證的消息y’,根據(jù)比較結(jié)果確定數(shù)字簽名w是否正確。
對(duì)于本實(shí)施例而言,可以應(yīng)用于各種數(shù)字簽名的場(chǎng)合,例如,步驟205主要應(yīng)用于對(duì)消息進(jìn)行簽名的情況,而步驟206和207則主要應(yīng)用于對(duì)簽名進(jìn)行驗(yàn)證的情況。在簽名應(yīng)用中,待簽名的消息是授權(quán)用戶(hù)運(yùn)用私鑰把這個(gè)消息變換成簽名;待驗(yàn)證的消息是任何人運(yùn)用公鑰來(lái)驗(yàn)證對(duì)于給定的簽名是不是由這個(gè)消息產(chǎn)生的。在正確場(chǎng)合下,待簽名的消息、待驗(yàn)證的消息和譯碼結(jié)果應(yīng)該是一致的;否則,說(shuō)明簽名有誤。
參照?qǐng)D3,所示的是本發(fā)明實(shí)施例的數(shù)據(jù)流向示意圖,包括加解密和數(shù)字簽名等數(shù)據(jù)處理流程。
對(duì)于s>s’的簽名體制,是用譯碼消息與原始消息y=(y1,…,ys)中的一部分(y1,…,ys’)進(jìn)行比較,即可判斷出是否屬于正確的簽名。優(yōu)選的,待簽名的原始消息中沒(méi)有參與同譯碼消息相比較的那部分變量(ys’+1,…,ys),可以設(shè)置為隨機(jī)數(shù),以便使得對(duì)于相同的(y1,…,ys’),每次簽名都可以得到一個(gè)不同的簽名。
對(duì)于s=s’的簽名體制,譯碼消息和原始消息的全部數(shù)據(jù)進(jìn)行比較,即可判斷出是否屬于正確的簽名,但這種體制的安全性較差,工程應(yīng)用價(jià)值不大,可以用于理解簽名的原理。
對(duì)于s>s’的加解密體制,由于(y1,…,ys’)只是(y1,…,ys)中的一部分,缺少(ys’+1,…,ys)的信息,解密方需要運(yùn)用私鑰對(duì)(ys’+1,…,ys)的狀態(tài)進(jìn)行逐個(gè)試驗(yàn),才能完成解密。
對(duì)于s=s’的加解密體制,可以不對(duì)(ys’+1,…,ys)的狀態(tài)進(jìn)行試驗(yàn)而直接完成解密變換,但這種體制安全性較差,工程應(yīng)用價(jià)值不大,可以用于理解加解密的原理。
需要說(shuō)明的是,本發(fā)明中的公鑰可以直接采用E’(x),也可以采用包括E’(x)的其他任何形式,其重要的核心在于E’(x)的構(gòu)成。為了簡(jiǎn)便說(shuō)明,在本發(fā)明的具體實(shí)施例中,均采用直接將公鑰定為E’(x)進(jìn)行描述。
圖1和圖2所示的實(shí)施例引入的單向函數(shù)鏈,記做H(w),是由若干個(gè)單向函數(shù)來(lái)實(shí)現(xiàn)的數(shù)據(jù)變換裝置。其功能是把輸入的n個(gè)變量的原始消息w=(w1,...,wn),擴(kuò)展為m個(gè)變量的中間結(jié)果x=(x1,...,xm),并滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。即“單向函數(shù)鏈”應(yīng)具備三個(gè)性質(zhì) 一是非線性其數(shù)學(xué)性質(zhì)應(yīng)理解為稠密的、高度非線性的多項(xiàng)式函數(shù)組 xj=fj(w1,...,wn), xj,wi∈F,1≤j≤m,1≤i≤n, 顯然,把上式代入到公鑰中,作為把明文w變換成密文y的置換方程組 (y1,...,ys’)=E(x1,...,xm)=E(H(w1,...,wn))中的一部分,將會(huì)遇到難以把多項(xiàng)式展開(kāi)的巨大困難; 二是可逆性由輸出的x,求輸入的w是容易的; 三是超定方程組由x求w時(shí),根據(jù)算法的設(shè)置,只需要用(x1,...,xm)中的指定的n個(gè)變?cè)湍芑謴?fù)出w;而另外的m-n個(gè)變?cè)獙?duì)于恢復(fù)w不起作用。
例如在圖5、圖6所示的實(shí)施例3中,H(w)為 x1=(w1+H1(w2)) x2=(w2+H2(x1))=(w2+H2(w1+H1(w2))) x3=H3(x2)=H3(w2+H2(w1+H1(w2))) 首先,若把上式展開(kāi)成多項(xiàng)式函數(shù),x是關(guān)于w的高度非線性函數(shù)組;其次,依次計(jì)算w2=x2-H2(x1),w1=x1-H1(w2),就能恢復(fù)w;最后,根據(jù)算法的設(shè)置,x中的x1,x2對(duì)于恢復(fù)w起作用,而x3對(duì)于恢復(fù)w不起作用,“x3=H3(x2)”中的H3是無(wú)法求逆的單向函數(shù)。
在上述算法中,x3雖然對(duì)于恢復(fù)w不起作用,卻控制著接口函數(shù)R(x)的求逆,即R(x)的求逆運(yùn)算依賴(lài)于x3。
實(shí)現(xiàn)上述性質(zhì)的基本方法是對(duì)于i=1,2,...(其順序可任意規(guī)定),不斷把wj(j≠i),經(jīng)過(guò)單向函數(shù)的變換后,加到wi上。以圖5為例把w2經(jīng)過(guò)H1的變換后加到w1,得到x1,再把x1經(jīng)過(guò)H2的變換后加到w2,得到x2,依此類(lèi)推,實(shí)現(xiàn)多層單向函數(shù)嵌套的、可逆的單向函數(shù)鏈;而只運(yùn)用單向函數(shù)的變換、不運(yùn)用加法,可以產(chǎn)生出x中的對(duì)于單向函數(shù)鏈求逆不起作用的那些變?cè)?,例如x3=H3(x2)。
當(dāng)然,建立單向函數(shù)鏈的方法不局限于以下的方法,而是可以推廣到滿足單向函數(shù)鏈功能的各種方法。本發(fā)明僅僅舉出一優(yōu)選實(shí)施例進(jìn)行說(shuō)明而已。
本發(fā)明的單向函數(shù)鏈通??梢圆捎媚?的有限域,單向函數(shù)的輸入、輸出通常是F2的向量;當(dāng)然也可以是模p的整數(shù)。下面簡(jiǎn)單介紹單項(xiàng)函數(shù)鏈的一種生成方法 第一步,建立單向函數(shù)鏈。設(shè)置L個(gè)單向函數(shù)β=Hi(α1,α2,...),i=1,...,L,L≥(m-n),其輸入、輸出均為F上的向量。用L個(gè)單向函數(shù)設(shè)置一個(gè)單向函數(shù)鏈 x=(x1,...,xm)=H(w)=H(w1,...,wn), 使得從w到x的映射雖然是復(fù)雜的稠密多項(xiàng)式函數(shù),將其展開(kāi)、化簡(jiǎn)非常困難,但對(duì)它求逆,即由x求w卻是容易的。本實(shí)施例的具體做法為 (1)設(shè)置函數(shù)(x1,...,xn)=K1(w1,...,wn) 首先,令L2=m-n,L1=L-L2,(x1,...,xn)=(w1,...,wn),設(shè)置指針θ(1),...,θ(L1),1≤θ(i)≤n; 然后,對(duì)于i=1,...,L1,依次替換 xθ(i)←(xθ(i)+Hi(x1,...,xθ(i)-1,xθ(i)+1,...,xn))mod p。
在本實(shí)施例中,我們把θ(i)設(shè)置為從1到n的循環(huán)。
(2)設(shè)置函數(shù)(xn+1,...,xm)=K2(x1,...,xn)運(yùn)用單向函數(shù)Hj,j=L1+1,...,L,由x1,...,xn計(jì)算出xn+1,...,xm。
在本實(shí)施例中的函數(shù)K2為對(duì)于i=1,...,L2,依次計(jì)算
(3)把上述的K1、K2合成為H(w) x=(x1,...,xn,xn+1,...,xm)=(K1(w1,...,wn),K2(K1(w1,...,wn)))。
也就是把K1、K2的計(jì)算結(jié)果鏈接起來(lái),作為H(w)的計(jì)算結(jié)果。
第二步,設(shè)置接口函數(shù)R(x),即把x轉(zhuǎn)換成s個(gè)關(guān)于x的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm)),滿足已知R(x)、
...、HL,求(x1,...,xn)容易; 第三步,推導(dǎo)出單向函數(shù)鏈的逆w=(w1,...,wn)=H-1(z)=H-1(z1,...,zn),滿足 w=H-1(R(H(w))) 第四步,把H(w)、H-1(z)作為密碼算法公開(kāi)發(fā)布。
下面對(duì)圖1和圖2所示實(shí)施例中的公私鑰生成過(guò)程進(jìn)行簡(jiǎn)單介紹。
在本發(fā)明的設(shè)計(jì)中,當(dāng)參數(shù)設(shè)置為s=s’的特殊狀態(tài)時(shí)其安全性是不夠的。因此,通常應(yīng)設(shè)置為s>s’,讓E’(x)是E(x)的一部分,以達(dá)到增強(qiáng)安全性、減少公鑰長(zhǎng)度、提高運(yùn)算速度的效果。
一個(gè)公鑰在數(shù)學(xué)性質(zhì)上、即在給定的輸入輸出消息的變換規(guī)則上,只對(duì)應(yīng)一個(gè)私鑰;當(dāng)然這個(gè)私鑰可以采用不同的表現(xiàn)形式。
建立公鑰與私鑰的具體方法很多,這屬于數(shù)學(xué)設(shè)計(jì)方面的內(nèi)容,在公鑰體制的應(yīng)用的這么多年中,本領(lǐng)域技術(shù)人員也具有了較多的針對(duì)該方面的技術(shù)沉淀,在此不詳述了。但本發(fā)明可以給出一個(gè)較為優(yōu)選的基本思路隨機(jī)產(chǎn)生若干個(gè)簡(jiǎn)單的線性變換,運(yùn)用迭代、相乘、相加等方法組裝成一個(gè)整體,再展開(kāi)、化簡(jiǎn)、整理而得到一個(gè)公鑰;運(yùn)用公鑰函數(shù)的逆過(guò)程建立對(duì)應(yīng)的私鑰。
實(shí)際上,采用任何符合本發(fā)明公鑰屬性要求的公鑰生成方法完全是可行的,但是優(yōu)選的,本發(fā)明可以通過(guò)圖4a所示的生成步驟得到公鑰和私鑰(在理解H(x)、R(x)與H-1(z)的關(guān)系時(shí),請(qǐng)參照?qǐng)D4b),如下 步驟401、設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出; 步驟402、依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到從x到y(tǒng)的線性映射函數(shù)組(y1,...,ys)=E(x)=(E1(x1,...,xm),...,Es(x1,...,xm)); 合成接口函數(shù)R(x)和T的目的,在于將接口函數(shù)R(x)和T,合成為一個(gè)線性變換的黑盒子E(x),其總的輸入與輸出之間的信息變換規(guī)則保持不變,但怎樣實(shí)現(xiàn)這個(gè)線性變換的內(nèi)部結(jié)構(gòu)信息卻永遠(yuǎn)地消失了把R(x)和T合成為E(x)只有一個(gè)結(jié)果,而把E(x)分解為R(x)和T卻有許多不同的分解方案;要從大量分解方案中找到唯一正確的分解方案非常困難。
步驟403、選取其中的s’個(gè)函數(shù)作為E’(x),得到公鑰; 步驟404、依據(jù)接口函數(shù)R(x)的逆函數(shù)R-1(z)和可逆線性變換T的逆函數(shù)T-1,生成私鑰。
下面簡(jiǎn)單介紹接口函數(shù)R(x) 接口函數(shù)R(x)用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù),一般表示為R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));“R(x)=z”是關(guān)于x的線性不定方程組。
在本發(fā)明中,接口函數(shù)R(x)的功能可以理解為把計(jì)算單向函數(shù)鏈的結(jié)果x=(x1,...,xm),轉(zhuǎn)換為s個(gè)關(guān)于(x1,...,xm)的函數(shù),從而把經(jīng)過(guò)單向函數(shù)鏈擴(kuò)張后的中間結(jié)果再縮小回來(lái)。接口函數(shù)R(x)可以是一組線性函數(shù)。例如圖5中,對(duì)于m=3,n=2,把x1,x2,x3三個(gè)變量,轉(zhuǎn)換為兩個(gè)多項(xiàng)式R1=x1+e3x3,R2=x2。這里的關(guān)于R(x)的信息,包括R1、R2的函數(shù)形式和系數(shù)e3的數(shù)值,均屬于非授權(quán)用戶(hù)不應(yīng)知道的秘密信息。當(dāng)然,本領(lǐng)域技術(shù)人員可以依據(jù)R(x)的特性,設(shè)計(jì)出很多種模式,在此無(wú)法一一詳述。
R(x)本身并不具有可逆性,但結(jié)合H(w)的知識(shí)它就可逆了。例如圖6中,雖然不能僅從R1、R2的值z(mì)1、z2來(lái)直接恢復(fù)出x1、x2 x3,但是借助于H(w)的知識(shí)“x3=H3(x2)”,以及隱藏在E(x)中的R(x)的秘密參數(shù)e3,可計(jì)算出x1=z1-e3x3=z1-e3H3(z2),x2=z2。
下面給出一些設(shè)計(jì)R(x)和H(w)的訣竅性知識(shí),以提高性能 ●以R(x)本身容易求逆的那些輸入變量,例如x2=z2,作為計(jì)算的起點(diǎn); ●運(yùn)用H(w)的知識(shí),求出R(x)本身不可逆的其它輸入變量,例如運(yùn)用“x3=H3(x2)”求出x3; ●把對(duì)于H(w)本身的求逆不起作用的那些xi,例如“x3=H3(x2)”,設(shè)置成為對(duì)R(x)求逆的已知條件。
這也可以理解為,對(duì)于R(x)和H(w)的求逆,需要兩者的交互作用。僅由z求x,由于“R(x)=z”的不定方程組的性質(zhì),是不可逆的;而x中對(duì)于單向函數(shù)鏈H(w)的求逆不起作用的那些變?cè)?,恰好控制著接口函?shù)R(x)的求逆。
下面介紹一種生成公私鑰的優(yōu)選示例1,其中,采用了兩個(gè)相互獨(dú)立的接口函數(shù)R1、R2和T合并得到公鑰,每個(gè)接口函數(shù)都可以為一組線性函數(shù)。當(dāng)然,在本發(fā)明可采用的其他優(yōu)選方案中,也可以采用兩個(gè)以上的相互獨(dú)立的接口函數(shù)和T合并得到公鑰,以進(jìn)一步增加矩陣分解的難度。
具體的,參見(jiàn)圖16,是該實(shí)施例的安全性原理示意圖。R1是128×129階矩陣,R2是128×385階矩陣,T是256×257階矩陣,把R1、R2和T合成為一個(gè)256×385階矩陣E(x),去掉(y229,...,y256)所在的行,便得到228×385階公鑰矩陣E’(x)。其中,可以理解為,m=384,s=256,s’=228。
圖16中信號(hào)線之間的接合點(diǎn)表示兩條信號(hào)線之間有相關(guān)的關(guān)系;每條信號(hào)線上的信號(hào)等于與它接合的所有輸入信號(hào)的代數(shù)和。例如,z1的信號(hào)為(x1,...,x384)以及常數(shù)cr上的有關(guān)信號(hào)的代數(shù)和,y1的信號(hào)為(z1,...,z256)以及常數(shù)ct上的有關(guān)信號(hào)的代數(shù)和。
在這個(gè)優(yōu)選實(shí)施例中,我們把三個(gè)線性變換的黑盒子R1、R2、T,合成為一個(gè)線性變換的黑盒子E(x),其輸入與輸出之間的信息變換規(guī)則保持不變,但怎樣實(shí)現(xiàn)這個(gè)線性變換的內(nèi)部結(jié)構(gòu)信息卻永遠(yuǎn)地消失了把R1、R2、T合成為E(x)只有一個(gè)結(jié)果,而把E(x)分解為R1、R2、T卻有許多不同的分解方案;更何況破譯者的已知條件E’(x)只具備了E(x)的一部分知識(shí),使分解更加困難。因此,這種矩陣分解問(wèn)題,與大整數(shù)因子分解問(wèn)題相比,其本質(zhì)差別在于后者是計(jì)算能力問(wèn)題,而前者則是缺少信息的問(wèn)題;攻擊者只有借助于另外的信息(例如單向函數(shù)鏈)才能完成分解。
根據(jù)圖16的具體設(shè)置,已知E’(x)求{R1,R2,T}的不定方程組,其2次方程的數(shù)量為E’(x)中的所有系數(shù)的數(shù)量228×385=87780,其變?cè)獢?shù)量為{R1,R2,T}中的所有系數(shù)的數(shù)量128×129+128×385+256×257=131584,則等價(jià)的分解方案大約有2131584-87780=243804種。以E’(x)中的每個(gè)方程平均有192個(gè)項(xiàng)計(jì)算,該方程組共有192×87780=16853760個(gè)二次項(xiàng),按照當(dāng)代計(jì)算數(shù)學(xué)的進(jìn)展,求解如此規(guī)模的二次方程組是困難的。
那么,能不能不分解E’(x)而直接破譯?這種技術(shù)路線涉及到單向函數(shù)的分析問(wèn)題,顯然比矩陣分解更困難。
以接口函數(shù)R2為例,下面給出一些構(gòu)造R2、R2-1的訣竅性知識(shí) 設(shè)h>t>1,αj,βj∈F,j=1,2,...,h,設(shè)R為F上線性函數(shù)組,其輸入為向量(α1,...,αt,αt+1,...,αh)、輸出為向量(β1,...,βt),R-1的輸入為向量(β1,...,βt,αt+1,...,αh)、輸出為向量(α1,...,αt),即R可理解在(αt+1,...,αh)控制下的一一映射。
隨機(jī)生成t階可逆方陣A、h-t階可逆方陣B、t階向量C1、h-t階向量C2;用A、B組成h階對(duì)角方陣G,在不破壞A、B的條件下對(duì)G進(jìn)行隨機(jī)的初等變換,使得G中除了A、B以外的其余部分D1、D2為隨機(jī)數(shù);把G分解為t×h階矩陣G1、(h-t)×h階矩陣G2 建立以下方程 則R為(β1,...,βt)=G1(α1,...,αt,αt+1,...,αh)+C1。
把(βt+1,...,βh)=G2(α1,...,αt,αt+1,...,αh)+C2,代入到(2)中 然后以(α1,...,αt)為未知元、以(β1,...,βt)和(αt+1,...,αh)為已知條件,解上述方程,便得到R-1(α1,...,αt)=R-1(β1,...,βt,αt+1,...,αh)。
下面介紹一種生成公私鑰的優(yōu)選示例2,該示例的特點(diǎn)在于運(yùn)用多個(gè)接口函數(shù)R1,R2,...,Rk的迭代來(lái)建立公鑰,其中R1,R2,...,Rk為線性變換函數(shù)。在生成公私鑰的優(yōu)選示例1中,R1、R2為互相獨(dú)立的并聯(lián)關(guān)系;而在優(yōu)選示例2中,是用某個(gè)接口函數(shù)Ri的輸出作為另一個(gè)接口函數(shù)Rj的輸入,i≠j,從而利用線性函數(shù)無(wú)論怎么迭代都不會(huì)擴(kuò)張的特殊性質(zhì),進(jìn)一步增加矩陣分解的困難性。
需要說(shuō)明的是,在本發(fā)明可采用的其他生成公私鑰的方案中,也可以將上述的優(yōu)選示例1和示例2的思路結(jié)合,例如,在建立公鑰中的多個(gè)接口函數(shù)中,既有相互獨(dú)立的并聯(lián)關(guān)系,同時(shí),也存在至少一個(gè)接口函數(shù)是另外多個(gè)接口函數(shù)R1,R2,...,Rk的迭代結(jié)果,R1,R2,...,Rk為線性變換函數(shù)。
為更清楚地表述本發(fā)明的具體實(shí)施方式
,下面描述一個(gè)小數(shù)據(jù)的例子,作為本發(fā)明的實(shí)施例3。如圖5、圖6所示,其中,虛框501表示采用單向函數(shù)鏈H(w)進(jìn)行處理的過(guò)程,虛框502表示采用公鑰E’(x)進(jìn)行處理的過(guò)程;虛框601表示采用私鑰D(y)進(jìn)行處理的過(guò)程,虛框602表示采用單向函數(shù)鏈的逆函數(shù)H-1(z)及私鑰中的秘密參數(shù)e3進(jìn)行處理的過(guò)程。
設(shè)F為Fp,p=37,n=s=s’=2,m=3,接口函數(shù)R(x)為 z1=x1+e3x3,z2=x2,e3=7, 設(shè)H1、H2、H3為3個(gè)單向函數(shù),為便于驗(yàn)證,我們假定其算法為 H1(α)=H2(α)=H3(α)=α3 mod p, 則單向函數(shù)鏈H(w)的算法為 x1=(w1+H1(w2))modp=(w1+w23)modp, x2=(w2+H2(x1))modp=(w2+x13)modp=(w2+(w1+w23)3)modp, x3=H3(x2)=x23modp=(w2+x13)3modp=(w2+(w1+w23)3)3modp; 設(shè)線性變換T用方陣A、向量B表示為 B1=(b11,b12)=(5,6), 運(yùn)用上述參數(shù)中的R(x)和T,推導(dǎo)出公鑰E’(x)=E(x)為 z1=(x1+e3x3)modp z2=x2 y1=(a111z1+a112z2+b11)modp=(5+x1+2x2+7x3)mod 37 y2=(a121z1+a122z2+b12)modp=(6+3x1+4x2+21x3)mod 37然后,推導(dǎo)出對(duì)應(yīng)的私鑰D(y) z1=(c111(v11-b11)+c112(v12-b12))modp=(4+35y1+y2)mod 37 z2=(c121(v11-b11)+c122(v12-b12))modp=(14+20y1+18y2)mod 37 計(jì)算單向函數(shù)鏈的逆H-1(z),需要使用私鑰中的秘密參數(shù)的e3 x1=(z1-e3H3(z2))modp, w2=z2-H2(x1)=(z2-H2(z1-e3H3(z2)))mod p, w1=x1-H1(w2)=((z1-e3H3(z2))-H1(z2-H2(z1-e3H3(z2))))modp, 雖然真實(shí)的單向函數(shù)是不可展開(kāi)的,但按照本實(shí)施例的特殊規(guī)定 w2=(z2-(z1-2z23)3)modp, w1=(z1-2z23-(z2-(z1-2z23)3)3)modp; 例如設(shè)明文w=(7,8),用單向函數(shù)鏈擴(kuò)展成中間結(jié)果x=H(w)=(1,9,26),用公鑰加密后得到密文y=E’(x)=(21,36);用私鑰解密得到中間結(jié)果z=D(y)=(35,9),再運(yùn)用單向函數(shù)鏈的逆函數(shù)得到明文w=H-1(z)=(7,8),這說(shuō)明上述加解密算法是正確的。
同理,在產(chǎn)生簽名時(shí),設(shè)待簽名的原始消息為y”=(21,36),先用私鑰計(jì)算出中間結(jié)果z=D(y)=(35,9),再用單向函數(shù)鏈的逆函數(shù)計(jì)算出簽名w=H-1(z)=(7,8);在驗(yàn)證簽名時(shí),先用單向函數(shù)鏈把w擴(kuò)展成中間結(jié)果x=H(w)=(1,9,26),再用公鑰計(jì)算出譯碼結(jié)果y=E’(x)=(21,36),最后比較譯碼結(jié)果y和待驗(yàn)證的消息y’,可證明簽名的正確性。
為了增強(qiáng)安全性,可以采用s>s’=1的簽名體制,則公鑰僅為 E’(x)=E1(x1,x2,x3)=(5+x1+2x2+7x3)mod 37 而E2(x1,x2,x3)不公開(kāi)。按照這種設(shè)置在產(chǎn)生簽名時(shí),可以把原始數(shù)據(jù)(y1,y2)中的y1規(guī)定為待簽名的消息,把y2規(guī)定為隨機(jī)數(shù)或指定的消息;運(yùn)用公鑰對(duì)簽名進(jìn)行驗(yàn)證時(shí)只能出恢復(fù)出y1,由于缺少公鑰E2(x1,x2,x3)而無(wú)法恢復(fù)出y2。隨著譯碼結(jié)果y和待驗(yàn)證的消息y’的長(zhǎng)度減少,從公鑰中泄露出來(lái)的關(guān)于私鑰的信息也在減少,增加了破譯私鑰的困難性。
然而,上述s>s’=1的設(shè)置不能直接應(yīng)用于加解密,因?yàn)闊o(wú)法判斷所猜測(cè)的密文變量y2是否正確。
下面給出一個(gè)更為優(yōu)選的本發(fā)明應(yīng)用于簽名的實(shí)施例,作為本發(fā)明的實(shí)施例4,采用了兩個(gè)相互獨(dú)立的接口函數(shù)構(gòu)建公鑰;并且,進(jìn)一步的改進(jìn)之處在于,增加了把待簽名消息數(shù)據(jù)進(jìn)行Hash函數(shù)變換的環(huán)節(jié),以進(jìn)一步增加安全性。具體方案如下(請(qǐng)參見(jiàn)圖7和圖8) 設(shè)域F為F2,m=384,n=s=256,s’=228,w=(w1,...,w256),x=(x1,...,x384),y=(y1,...,y256),z=(z1,...,z256),H1、H2為輸入與輸出均為F2上的向量的單向函數(shù),H(w)為 (x1,...,x128)=(w1,...,w128)+H1(w129,...,w256), (x129,...,x256)=(w129,...,w256), (x257,...,x384)=H2(x1,...,x128); 隨機(jī)產(chǎn)生128比特的可逆線性變換R1、384比特的可逆線性變換R2(本說(shuō)明書(shū)提供了構(gòu)造R2、R2-1的訣竅性知識(shí))、256比特的可逆線性變換T,把R1、R2、T合成為E(x),它由256個(gè)F2上的線性多項(xiàng)式組成 (y1,...,y256)=E(x)=T(z1,...,z128,z129,...,z256)=T(R1(x1,...,x128),R2(x1,...,x128,x129,...,x256,x257,...,x384))=(E1(x1,...,x384),...,E256(x1,...,x384)); 公鑰E’(x)為 (y1,...,y228)=E’(x)=(E1(x1,...,x384),...,E228(x1,...,x384))∈E(x); 私鑰D(y)由兩組線性函數(shù)Da、Db組成 (x1,...,x128)=R1-1(z1,...,z128)=R1-1(T-1a(y1,...,y256))=Da(y1,...,y256)=(D1(y1,...,y256),...,D128(y1,...,y256)), (x129,...,x256)=R2-1(x1,...,x128,z129,...,z256,x257,...,x384)=R2-1(R1-1(Ta-1(y1,...,y256)),Tb-1(y1,...,y256),x257,...,x384)=Db(y1,...,y256,x257,...,x384)=(D129(y1,...,y256,x257,...,x384),...,D256(y1,...,y256,x257,...,x384)); 其中,T的逆變換T-1由兩部分組成 Ta-1(y1,...,y256)=(T1-1(y1,...,y256),...,T128-1(y1,...,y256)), Tb-1(y1,...,y256)=(T129-1(y1,...,y256),...,T256-1(y1,...,y256))。
上述的公鑰只能采用迭代、展開(kāi)、化簡(jiǎn)后的形式E’(x)。但私鑰既可以采用分解為若干個(gè)函數(shù)的形式{R1-1、R2-1、T-1},也可以采用把它們迭代、展開(kāi)、化簡(jiǎn)后的形式{Da、Db}。其區(qū)別在于,由{R1-1、R2-1、T-1}推導(dǎo)出{Da、Db}很容易,但由{Da、Db}推導(dǎo)出{R1-1、R2-1、T-1}很困難。
設(shè)(y1,...,y228)為經(jīng)過(guò)Hash函數(shù)變換后的待簽名的消息,(y229,...,y256)為隨機(jī)數(shù),建立簽名的算法如下 步驟801(x1,...,x128)=Da(y1,...,y256)=R1-1(Ta-1(y1,...,y256)); 步驟802(x257,...,x384)=H2(x1,...,x128); 步驟803(w129,...,w256)=(x129,...,x256)=Db(y1,...,y256,x257,...,x384)=R2-1(R1-1(Ta-1(y1,...,y256)),Tb-1(y1,...,y256),x257,...,x384); 步驟804(w1,...,w128)=(x1,...,x128)-H1(w129,...,w256)。
驗(yàn)證簽名的算法為計(jì)算 步驟701(x1,...,x128)=(w1,...,w128)+H1(w129,...,w256), (x129,...,x256)=(w129,...,w256), (x257,...,x384)=H2(x1,...,x128); 步驟702(y1,...,y228)=E’(x)=(E1(x1,...,x384),...,E228(x1,...,x384)); 然后,比較譯碼結(jié)果(y1,...,y228)和待驗(yàn)證的消息y’,根據(jù)比較結(jié)果確定簽名w是否正確。
該實(shí)施例沒(méi)有采用“完全的單向函數(shù)擴(kuò)張”,雖然其(x129,...,x256)是單向函數(shù)H1的輸入,但H1的輸出不是直接作為中間結(jié)果x的一部分。其簽名w的狀態(tài)數(shù)量2n與信息y的狀態(tài)數(shù)量2s相等,即y的每一種狀態(tài)都存在對(duì)應(yīng)的w的狀態(tài),因此產(chǎn)生簽名不需要用窮舉法試驗(yàn),明顯提高了計(jì)算速度。
在上述簽名的應(yīng)用中,公鑰中不包括線性多項(xiàng)式E229( ),...,E256( )的信息,譯碼結(jié)果中也不包括E229( ),...,E256( )的值(y229,...,y256),因此運(yùn)用公鑰來(lái)直接求解簽名w是困難的;運(yùn)用公鑰來(lái)開(kāi)展線性化攻擊,推導(dǎo)出E228( ),...,E256( )中系數(shù)也是困難的。
在上述簽名的應(yīng)用中,對(duì)于給定的數(shù)據(jù)(y1,...,y228),以及給定的(x1,...,x128)和與它對(duì)應(yīng)的(x257,...,x384)若(x129,...,x256)有解,則求這個(gè)解非常容易;若(x129,...,x256)無(wú)解,則只能選用另外的(x1,...,x128)重新試驗(yàn)。由于平均每2228種x的狀態(tài)中才有一個(gè)解,因此(x129,...,x256)有解的概率只有2128-228=2-100,從而通過(guò)隨機(jī)設(shè)置(x1,...,x128)來(lái)產(chǎn)生一個(gè)假冒的簽名是困難的。也就是說(shuō),即使采用窮舉法破譯,其難度也是非常大的。
在上述簽名的應(yīng)用中,把待驗(yàn)證或待簽名的信息,經(jīng)過(guò)Hash函數(shù)變換后,才得到(y1,...,y228)。這種設(shè)計(jì)可以有效地抵抗選擇密文攻擊。但需要說(shuō)明的是,這個(gè)Hash函數(shù)的功能與單向函數(shù)鏈的功能是不同的。
前述實(shí)施例存在的問(wèn)題是當(dāng)s’較小時(shí),對(duì)于隨機(jī)給定的(x1,...,x128)以及對(duì)應(yīng)的(x257,...,x384),可能存在(x129,...,x256)的解。例如,當(dāng)s’=64,信息為(y1,...,x64),平均每264種x的狀態(tài)中有一個(gè)解,從而在(x129,...,x256)中有解,假冒簽名是容易的。因此s’必須足夠大,使得(x129,...,x256)有解的概率非常小。
為了改進(jìn)上述問(wèn)題,參見(jiàn)圖9和圖10,示出了本發(fā)明應(yīng)用于加解密時(shí)的另一優(yōu)選實(shí)施例,作為本發(fā)明的實(shí)施例5,其改進(jìn)之處是采用“完全的單向函數(shù)擴(kuò)張”即把中間結(jié)果x設(shè)置為讓x的一部分,恰好成為由x的其余部分所產(chǎn)生的單向函數(shù)。
也就是說(shuō),中間結(jié)果x的一部分元素為一單向函數(shù)的輸入,另一部分元素為該單向函數(shù)的輸出,二者加起來(lái)恰好構(gòu)成整個(gè)中間結(jié)果x。當(dāng)然,中間結(jié)果x也可以劃分為多個(gè)部分,例如,第一部分和第二部分為一單向函數(shù)的輸入和輸出,第三部分和第四部分為另一單向函數(shù)的輸入和輸出。
如圖9、圖10所示,設(shè)域F為F2,m=384,n=192,s=256,s’=250,w=(w1,...,w192),x=(x1,...,x384),y=(y1,...,y256),z=(z1,...,z256),H1、H2為輸入與輸出均為F2上的向量的單向函數(shù),H(w)為 (x’1,...,x’64,x’65,...,x’128)=H1(w65,...,w192), (x1,...,x64)=(w1,...,w64)+(x’1,...,x’64), (x65,...,x128)=(x’65,...,x’128), (x129,...,x256)=(w65,...,w192), (x257,...,x384)=H2(x1,...,x64)。
即(x257,...,x384)恰好是(x1,...,x64)的單向函數(shù),(x65,...,x128)恰好是(x129,...,x256)的單向函數(shù)。
本實(shí)施例的公鑰與私鑰如下 (y1,...,y250)=E’(x)=(E1(x1,...,x384),...,E250(x1,...,x384))∈E(x); (x1,...,x128)=Da(y1,...,y256), (x129,...,x256)=Db(y1,...,y256,x257,...,x384)。
設(shè)明文為w=(w1,...,w192),密文為y的一部分(y1,...,y250),運(yùn)用公鑰進(jìn)行加密的方法是計(jì)算 步驟901執(zhí)行單向函數(shù)鏈(x1,...,x384)=H(w1,...,w192); 步驟902計(jì)算(y1,...,y250)=E’(x)=(E1(x1,...,x384),...,E250(x1,...,x384))。
運(yùn)用私鑰進(jìn)行解密的方法為 步驟1001隨機(jī)或指定(y251,...,y256)的一種狀態(tài),然后計(jì)算 (x1,...,x128)=Da(y1,...,y250,y251,...,y256); 步驟1002計(jì)算(x257,...,x384)=H2(x1,...,x64); 步驟1003計(jì)算 (w65...,w192)=(x129,...,x256)=Db(y1,...,y256,x257,...,x384); 步驟1004計(jì)算 (x’1,...,x’64,x’65,...,x’128)=H1(w129,...,w256), (w1,...,w64)=(x1,...,x64)-(x’1,...,x’64); 最后,運(yùn)用公鑰對(duì)恢復(fù)的明文w進(jìn)行加密,如果加密的結(jié)果與給定的密文相同,則w是正確的;否則轉(zhuǎn)到步驟1001。
在以上加密的應(yīng)用中,公鑰中不包括E(x)中的多項(xiàng)式E251( ),...,E256( )的知識(shí),在密文中也不包括E251( ),...,E256( )的值,因此運(yùn)用公鑰來(lái)直接求解明文w是困難的;運(yùn)用公鑰來(lái)開(kāi)展線性化攻擊,推導(dǎo)出E251( ),...,E256( )中系數(shù)(共計(jì)6×385=2310比特)也是困難的。
然而在解密過(guò)程中,正確的(y251,...,y256)的狀態(tài),只能通過(guò)試驗(yàn)而獲得。其最大的試驗(yàn)次數(shù)為2s-s’=2256-250=64次。合法用戶(hù)可以通過(guò)試驗(yàn)找到正確的(y251,...,y256)的狀態(tài);攻擊者不知道私鑰,無(wú)法判定(y251,...,y256)的狀態(tài)是否正確。通過(guò)了上述驗(yàn)證、但仍然不能正確地恢復(fù)出明文的概率,只有2-64,可以忽略不計(jì)。
因此,s和s’的設(shè)置應(yīng)權(quán)衡安全性和可用性,增加s-s’,增強(qiáng)了安全性,但需要注意的是,其解密速度將成指數(shù)規(guī)律降低。
為什么采用“完全的單向函數(shù)擴(kuò)張”能增強(qiáng)安全性?可簡(jiǎn)單理解為即使是合法用戶(hù),也需要通過(guò)試驗(yàn)才能進(jìn)行解密;而非法用戶(hù)連進(jìn)行這種試驗(yàn)的能力都沒(méi)有。例如本實(shí)施例中合法用戶(hù)完成解密的最大試驗(yàn)次數(shù)為2s-n次,而非法用戶(hù)用公鑰來(lái)完成解密是計(jì)算不可行的。
另外,本實(shí)施例用于簽名的工程效果較差,因?yàn)楫a(chǎn)生簽名時(shí)要試驗(yàn)(ys’+1,...,ys)的狀態(tài),產(chǎn)生簽名的效率太低,命中率只有2-(s-n)=2-64。
參見(jiàn)圖11、圖12,示出了本發(fā)明另一優(yōu)選實(shí)施例6。這是一個(gè)非常簡(jiǎn)潔的密碼方案,只用了一個(gè)單向函數(shù),采用“完全的單向函數(shù)擴(kuò)張”,其公鑰的內(nèi)部結(jié)構(gòu)較簡(jiǎn)單。對(duì)實(shí)施例6簡(jiǎn)單說(shuō)明如下 其明文w、中間結(jié)果x1、x2、z1、z2,均為F2上的向量。
在本實(shí)施例中,把R1、R2、T合成為E(x1,x2),取其中的一部分E’(x1,x2)作為公鑰,把R1-1、T-1合成為私鑰D(y),而R2-1在私鑰中沒(méi)有起作用。
加密時(shí),令x1=w,計(jì)算x2=H1(x1),密文(y1,...,ys’)=E’(x1,x2); 解密時(shí),隨機(jī)設(shè)置(ys’+1,...,ys),計(jì)算w=D(y1,...,ys’,ys’+1,...,ys),如果運(yùn)用公鑰把w再加密一次可以恢復(fù)出(y1,...,ys’),則解密成功,否則繼續(xù)試驗(yàn)(ys’+1,...,ys)的其它狀態(tài)。
從以上的各個(gè)實(shí)施例,本發(fā)明的參數(shù)設(shè)置的一些工程訣竅性知識(shí),可以總結(jié)為 (1)若采用“完全的單向函數(shù)擴(kuò)張”,則s>n ●應(yīng)用于加解密解密時(shí)要搜索(ys’+1,...,ys)的狀態(tài),成功率為2s-s’,其窮舉計(jì)算量與n無(wú)關(guān); ●應(yīng)用于簽名驗(yàn)證產(chǎn)生簽名時(shí)要試驗(yàn)(ys’+1,...,ys)的狀態(tài),成功率為2s-n,窮舉計(jì)算量與n有關(guān);其可以增加簽名安全性的原因在于,它使得破譯者無(wú)法區(qū)分究竟是由于所假設(shè)的私鑰不正確,還是由于所設(shè)置的(y1,...,ys)根本就不存在對(duì)應(yīng)的簽名。
(2)若不采用“完全的單向函數(shù)擴(kuò)張”,則s=n ●對(duì)于圖5、圖6所示的小數(shù)據(jù)實(shí)施例,令n=s>s’=1,就屬于這種情況,因?yàn)槠浣饷軙r(shí)試驗(yàn)(ys’+1,...,ys)的狀態(tài),將沒(méi)有校驗(yàn)機(jī)制對(duì)于(ys’+1,...,ys)的所有狀態(tài),都可以求出對(duì)應(yīng)的w的解,但不知道哪種(ys’+1,...,ys)的狀態(tài)是正確的。當(dāng)設(shè)置n=s=s’,取全部的y作為密文,這樣解密也不用窮舉法了;但這種參數(shù)設(shè)置的安全性較低。
●應(yīng)用于簽名產(chǎn)生簽名時(shí)不需要試驗(yàn)(ys’+1,...,ys)的狀態(tài),計(jì)算效率高;但需要分析對(duì)于給定的s’,中間結(jié)果x中的那些既不屬于單向函數(shù)輸入、也不屬于單向函數(shù)輸出、其所有狀態(tài)都有可能出現(xiàn)的變量,例如圖7中的(x128,...,x256),其有解的概率是不是足夠?。勘仨氂卸康慕Y(jié)論。
(3)n和m-n必須足夠大,才能有足夠的安全性。
(4)公鑰的內(nèi)部結(jié)構(gòu)越復(fù)雜,矩陣分解的難度越大,但在解密或產(chǎn)生簽名時(shí),線性運(yùn)算與單向函數(shù)運(yùn)算的交替次數(shù)越多,計(jì)算效率越低。
總之,加解密只能采用窮舉法的方式來(lái)解密;而簽名驗(yàn)證卻可以選擇。對(duì)于加解密而言,從信息論的角度,必須是s>n,才有可能建立校驗(yàn)機(jī)制。也就是說(shuō),在本發(fā)明應(yīng)用于加解密的優(yōu)選實(shí)施例中,只需要采用各種實(shí)現(xiàn)手段以保證s>n即可達(dá)到較好的效果。上面給出的一個(gè)優(yōu)選的實(shí)現(xiàn)手段就是“完全的單向函數(shù)擴(kuò)張”。
參見(jiàn)圖13、圖14,示出了本發(fā)明一個(gè)安全性較高、矩陣分解難度較大的復(fù)雜實(shí)施例。以進(jìn)一步清晰描述本發(fā)明,具體說(shuō)明如下 如圖13是采用4個(gè)接口函數(shù)的迭代來(lái)建立公鑰、并運(yùn)用該公鑰來(lái)驗(yàn)證簽名的數(shù)據(jù)流向圖,圖14是對(duì)應(yīng)的建立私鑰、并用該私鑰來(lái)產(chǎn)生簽名過(guò)程的數(shù)據(jù)流向圖。簽名w1,w2,w3,中間結(jié)果x1,x2,x3,x4,x5,x6,z1,z2,z3,z4,均為F2上的向量。其單向函數(shù)鏈的作用是把簽名(w1,w2,w3),擴(kuò)展為中間結(jié)果(x1,x2,x3,x4,x5,x6)。設(shè)m>s>n>s’,(w1,w2,w3)的總長(zhǎng)度為n比特,(x1,x2,x3,x4,x5,x6)的總長(zhǎng)度為m比特,(z1,z2,z3)的總長(zhǎng)度為n比特,z4的長(zhǎng)度為s-n比特。
T為s入s出的可逆線性變換,其輸出y=(y1,...,ys)由兩部分組成經(jīng)過(guò)Hash函數(shù)變換后的待簽名的信息(y1,...,ys’),實(shí)際信息長(zhǎng)度為s’<n,以及剩余的(ys’+1,...,ys)。
接口函數(shù)R1、R2、R3為受控的可逆線性變換,例如R1為在z2,z3,z4的控制下從x1到z1的線性變換,其逆函數(shù)R1-1為在z2,z3,z4的控制下從z1還原為x1的線性變換。R4為不可逆線性變換,它的輸入信號(hào)很多,輸出信號(hào)只有s-n比特。
該實(shí)施例的一個(gè)重要特征是“完全的單向函數(shù)擴(kuò)張”,即把x劃分為兩部分,其中一部分是指定的若干個(gè)單向函數(shù)的輸入,其余部分恰好是這些單向函數(shù)的輸出,例如x1,x3,x5是單向函數(shù)H1,H2,H3的輸入,x2,x4,x6恰好是這些單向函數(shù)的輸出。
該性質(zhì)使安全性增強(qiáng),但產(chǎn)生簽名的計(jì)算效率有所降低。具體的,在這種設(shè)置下,簽名(w1,w2,w3)有2n種狀態(tài),信息y有2s種狀態(tài),由于2s>2n,y中有大量的狀態(tài)不存在對(duì)應(yīng)的簽名,因此在建立簽名時(shí),需要通過(guò)試驗(yàn)來(lái)驗(yàn)證目前y的狀態(tài)能不能產(chǎn)生出對(duì)應(yīng)的簽名。
建立公鑰的過(guò)程為 (1)把R1、R2、R3、R4和T合成為E(x) (y1,...,ys)=E(x1,x2,x3,x4,x5,x6)=T(z1,z2,z3,z4)=T(R1(x1,z2,z3,z4),R2(x1,x2,x3,z3,z4),R3(x1,x2,x3,x4,x5,z4),R4(x1,x2,x3,x4,x5,x6)), 然后,把R4的輸出代入到R3的輸入,把R4、R3的輸出代入到R2的輸入,把R4、R3、R2的輸出代入到R1的輸入,展開(kāi)化簡(jiǎn)后,得到E(x); (2)取E(x)中的s’個(gè)函數(shù)作為公鑰E’(x),則公鑰為F2上的m比特輸入、s’比特輸出的線性映射函數(shù) (y1,...,ys’)=E’(x1,x2,x3,x4,x5,x6)。
建立私鑰的過(guò)程為運(yùn)用函數(shù)的合成,把私鑰設(shè)置為3組線性函數(shù) x1=Da(y)=R1-1(z1,z2,z3,z4)=R1-1(T-1(y)), x3=Db(x2,y)=R2-1(x1,x2,z2,z3,z4)=R2-1(R1-1(z1,z2,z3,z4),x2,z2,z3,z4), x5=Dc(x2,x4,y)=R3-1(x1,x2,x3,x4,z3,z4)=R3-1(R1-1(z1,z2,z3,z4),x2,R2-1(R1-1(z1,z2,z3,z4),x2,z2,z3,z4),x4,z3,z4), 把上式展開(kāi)化簡(jiǎn),便得到私鑰{Da,Db,Dc}。R4在建立私鑰中不起作用。
產(chǎn)生簽名過(guò)程如下 (1)把待簽名的信息經(jīng)過(guò)單向函數(shù)Hash0轉(zhuǎn)換為(y1,...,ys’),隨機(jī)或指定設(shè)置(ys’+1,...,ys)的狀態(tài),依次計(jì)算x1=Da(y);x2=H1(x1);x3=Da(x2,y);x4=H2(x3);x5=Da(x2,x4,y);x6=H3(x5); (2)計(jì)算
若與(y1,...,ys’)相等,則簽名(w1,w2,w3)=(x1,x3,x5),否則轉(zhuǎn)入(1)。由于產(chǎn)生簽名的命中率為2-(s-n),因此參數(shù)s-n不能太大。
驗(yàn)證簽名過(guò)程如下 (1)令(x1,x3,x5)=(w1,w2,w3),計(jì)算x2=H1(x1);x4=H2(x3);x6=H3(x5); (2)計(jì)算(y1,...,ys’)=E’(x1,x2,x3,x4,x5,x6); (3)若(y1,...,ys’)與待驗(yàn)證的信息相等,則該簽名是正確的。
本領(lǐng)域的技術(shù)人員,通過(guò)對(duì)上述方案的理解和啟迪,一定能設(shè)計(jì)出許多種看起來(lái)原理更復(fù)雜,編碼技巧卻十分相似的新的簽名與加解密方案。例如,設(shè)置更復(fù)雜的單向函數(shù)鏈,讓單向函數(shù)鏈與公鑰算法之間產(chǎn)生更多回合的交互作用,以達(dá)到更強(qiáng)的安全性。然而,這些修改的方案都將遵循共同的本發(fā)明的必要技術(shù)特征運(yùn)用“單向函數(shù)鏈擴(kuò)展+線性壓縮”的方法,實(shí)現(xiàn)公鑰密碼體制。下面介紹一些更為優(yōu)選的本發(fā)明實(shí)施例。
運(yùn)用上述的加解密方案可以實(shí)現(xiàn)密鑰協(xié)商,達(dá)到在公開(kāi)信道上,建立各方共享的密鑰。一般情況下,密鑰協(xié)商的目的就是建立對(duì)稱(chēng)密碼使用的密鑰。密鑰協(xié)商成功之后,就可以進(jìn)行對(duì)稱(chēng)加密了。通常的原因是公鑰加密速度太慢,一般先用公鑰建立對(duì)稱(chēng)密碼使用的密鑰,再用對(duì)稱(chēng)密碼以較快的速度完成加解密。這種方式的使用目的還包括無(wú)密鑰保密通信,即每次通信都要臨時(shí)進(jìn)行密鑰協(xié)商的保密通信,特點(diǎn)是不怕密鑰被事先泄露,使得內(nèi)部人員出賣(mài)密鑰變的沒(méi)有意義,因?yàn)槭虑敖⒐潭ǖ墓借€的方式畢竟還有一個(gè)私鑰被事先泄露的問(wèn)題。
密鑰協(xié)商完成后,通信雙方將共同約定一個(gè)相同的密鑰,例如,雙方共同約定的一個(gè)口令,只有他們兩人知道,外人不知道,而且這個(gè)口令是相同的。運(yùn)用這個(gè)相同的東西為密鑰,雙方進(jìn)行加解密,叫做對(duì)稱(chēng)密碼體制。即,無(wú)論加密還是解密,其密鑰都相同。例如美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)AES算法,密鑰為256比特,明文為128比特,密文為128比特。建立了共享的密鑰之后,應(yīng)該說(shuō)密鑰協(xié)商的任務(wù)就完成了,后面的加解密可以采用任何分組密碼或序列密碼、自己編寫(xiě)的密碼算法或國(guó)際標(biāo)準(zhǔn)的加密標(biāo)準(zhǔn)算法。只不過(guò),在密鑰協(xié)商中,把密鑰當(dāng)作信息進(jìn)行了加解密(其加解密過(guò)程與前述實(shí)施例對(duì)消息w的加解密是相同的),從而完成了雙方建立共同的秘密信息(也就是密鑰)的任務(wù)。
所述的用戶(hù)群可以包括兩個(gè)或者兩個(gè)以上的用戶(hù),當(dāng)然,需要該用戶(hù)群內(nèi)的各個(gè)用戶(hù)都互相交換信息,才能夠建立整個(gè)群上共享的密鑰。由于兩個(gè)用戶(hù)之間互相交換信息是多個(gè)用戶(hù)互相交換的基礎(chǔ),并且多個(gè)用戶(hù)之間的信息交換過(guò)程可以看作是用戶(hù)兩兩之間交換的重復(fù)過(guò)程,所以下面都以?xún)蓚€(gè)用戶(hù)為例進(jìn)行說(shuō)明。
優(yōu)選的,當(dāng)該用戶(hù)群僅包括兩個(gè)用戶(hù)時(shí),建立共享的對(duì)稱(chēng)密碼的密鑰λ的步驟為第一用戶(hù)隨機(jī)構(gòu)造公鑰E’(x)以及對(duì)應(yīng)的私鑰,并把其中的公鑰傳遞至第二用戶(hù);第二用戶(hù)隨機(jī)選擇密鑰λ,并把該λ用該公鑰進(jìn)行加密后傳遞至第一用戶(hù);第一用戶(hù)運(yùn)用私鑰解密,得到λ。
上述的密鑰協(xié)商方法簡(jiǎn)單易行,但第一用戶(hù)向第二用戶(hù)傳遞公鑰,需要占用較多的通信帶寬。一種減少密鑰協(xié)商通信量的改進(jìn)方案為 第一用戶(hù)隨機(jī)構(gòu)造公鑰E’(x)以及對(duì)應(yīng)的私鑰,然后把該公鑰的特征變量μ傳遞至第二用戶(hù);第二用戶(hù)根據(jù)μ計(jì)算出該公鑰,然后隨機(jī)選擇密鑰λ,并把該λ用該公鑰進(jìn)行加密后傳遞至第一用戶(hù);第一用戶(hù)運(yùn)用私鑰解密,得到λ。其中 第二用戶(hù)運(yùn)用μ以及第一用戶(hù)的固定公鑰(第二用戶(hù)事先知道第一用戶(hù)的這個(gè)固定公鑰),建立E’(x)的步驟為 (1)以μ為種子映射得到針對(duì)固定公鑰的一系列初等變換; (2)對(duì)固定公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到E’(x); 第一用戶(hù)運(yùn)用μ以及與固定公鑰對(duì)應(yīng)的固定私鑰,建立與E’(x)對(duì)應(yīng)的私鑰的步驟為 (1)以μ為種子映射得到針對(duì)接口函數(shù)R(x)和可逆線性變換T的一系列初等變換;所述用于建立私鑰的初等變換序列和用于建立公鑰E’(x)的初等變換序列是相對(duì)應(yīng)的; (2)對(duì)R(x)和T按照順序執(zhí)行上述的一系列初等變換; (3)依據(jù)所述變換后的R(x)的逆函數(shù)R-1(z)和所述變換后的T的逆函數(shù)T-1,生成與所述E’(x)相對(duì)應(yīng)的用戶(hù)私鑰。
以實(shí)施例4為例,圖7、圖8、圖16給出了一個(gè)由第一用戶(hù)的固定公鑰E’[x]和對(duì)應(yīng)的固定私鑰{R1,R2,T},隨機(jī)構(gòu)造出E’(x)以及對(duì)應(yīng)私鑰的詳細(xì)過(guò)程 第二用戶(hù)運(yùn)用μ以及E’[x],建立E’(x)的步驟為 按照映射函數(shù)
中約定的規(guī)則,把μ轉(zhuǎn)換成一系列對(duì)于E’[x]的初等變換,包括四種類(lèi)型 ■在(x1,...,x128)的范圍內(nèi),對(duì)E’[x]進(jìn)行列的初等變換; ■在(x129,...,x256)的范圍內(nèi),對(duì)E’[x]進(jìn)行列的初等變換; ■在(x257,...,x384)的范圍內(nèi),對(duì)E’[x]進(jìn)行列的初等變換; ■在(y1,...,y128)的范圍內(nèi)對(duì),對(duì)E’[x]進(jìn)行行的初等變換; 則經(jīng)過(guò)上述初等變換后的E’[x],就是E’(x)。
第一用戶(hù)運(yùn)用μ以及{R1,R2,T},建立與E’(x)對(duì)應(yīng)的私鑰的步驟為 按照映射函數(shù)
中約定的規(guī)則,把μ轉(zhuǎn)換成一系列對(duì)于R1、R2和T的初等變換,包括四種類(lèi)型 ■在(x1,...,x128)的范圍內(nèi),對(duì)R1、R2進(jìn)行相同的列的初等變換; ■在(x129,...,x256)的范圍內(nèi),對(duì)R2進(jìn)行列的初等變換; ■在(x257,...,x384)的范圍內(nèi),對(duì)R2進(jìn)行列的初等變換; ■在(y1,...,y228)的范圍內(nèi),對(duì)T進(jìn)行行的初等變換; 則經(jīng)過(guò)上述初等變換后的{R1,R2,T},就是與E’(x)對(duì)應(yīng)的私鑰。
在本發(fā)明的優(yōu)選實(shí)施例中,需要說(shuō)明的是 ●μ可采用各種數(shù)據(jù)格式,例如F2上的向量,或大整數(shù)等; ●固定公鑰E’[x]與臨時(shí)產(chǎn)生的公鑰E’(x),其公鑰的參數(shù)m、n、s、s’以及內(nèi)部結(jié)構(gòu)均可以相同,主要是其線性多項(xiàng)式的系數(shù)不同; ●傳遞整個(gè)E’(x)的密鑰協(xié)商方案,通信量大,但可以抵抗內(nèi)部人員事先出賣(mài)密鑰的攻擊;僅傳遞特征變量μ的方案,通信量小,但不能抵抗內(nèi)部人員事先主動(dòng)出賣(mài)固定密鑰的攻擊。
PKI(Public Key Infrastructure)是基于公鑰密碼而建立起來(lái)的網(wǎng)絡(luò)信任技術(shù)體制。近年來(lái),PKI建設(shè)面臨重大挑戰(zhàn),突出表現(xiàn)在管理成本急劇增加。其主要原因之一是目前的公鑰密碼體制難以適應(yīng)超大規(guī)模網(wǎng)絡(luò)的復(fù)雜使用環(huán)境。本發(fā)明應(yīng)對(duì)這種挑戰(zhàn)的基本對(duì)策為采用基于身份的公鑰密碼編碼體制。
所謂“基于身份”,就是讓公鑰的內(nèi)容就是用戶(hù)的身份標(biāo)志ID——諸如姓名、電話、Email等信息的某種組合,用這些信息本身,就能直接確定出這個(gè)公鑰是屬于誰(shuí)的;而不再需要像PKI那樣用一個(gè)公鑰證書(shū)把用戶(hù)的ID與這個(gè)用戶(hù)的公鑰綁定在一起。這種技術(shù)點(diǎn)的實(shí)質(zhì)是“全網(wǎng)所有用戶(hù)共用一個(gè)公鑰”?!盎谏矸荨钡膶?shí)現(xiàn)為網(wǎng)絡(luò)環(huán)境下的公鑰管理帶來(lái)的好處一是經(jīng)濟(jì)效益顯著;二是用戶(hù)容量巨大;三是實(shí)現(xiàn)了公鑰數(shù)據(jù)與用戶(hù)標(biāo)識(shí)的一體化管理。
參照?qǐng)D15,示出了一種用于編碼和譯碼數(shù)字消息的方法實(shí)施例7。該實(shí)施例采用了基于身份的技術(shù)點(diǎn),具體可以包括 步驟701、選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n; 步驟702、生成一包含有E’[x]的種子公鑰,E’[x]是E[x]的子集,其中,E[x]為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E[x]中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm)); 所述種子公鑰可以由密鑰分配中心產(chǎn)生,并公開(kāi)發(fā)布,所有用戶(hù)都可以使用其來(lái)產(chǎn)生自己的用戶(hù)公鑰。
在另一優(yōu)選實(shí)施例中,可以通過(guò)以下步驟建立種子公鑰 設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出; 依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到E[x]; 選取其中的s’個(gè)函數(shù)作為E’[x],得到種子公鑰。
步驟703、針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),依據(jù)所述包含有E’[x]的種子公鑰和預(yù)置的用戶(hù)公鑰生成規(guī)則,生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)公鑰E’(x);該公鑰為域F上的線性映射函數(shù)組; 所述預(yù)置的用戶(hù)公鑰生成規(guī)則可以采用函數(shù)形式的表示
其用于確定怎樣由種子公鑰E’[x]、以及用戶(hù)的ID,產(chǎn)生出用戶(hù)公鑰E’(x)的一套規(guī)則;其輸入是通用的種子公鑰E’[x]、以及ID,輸出是用戶(hù)的個(gè)性化的E’(x)。
優(yōu)選的是,依據(jù)預(yù)置的用戶(hù)公鑰生成規(guī)則和公開(kāi)通用的種子公鑰,任何用戶(hù)都可以在需要(例如,加密或驗(yàn)證簽名)時(shí),臨時(shí)產(chǎn)生得到該用戶(hù)的個(gè)性化的公鑰。
步驟704、針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)私鑰;該私鑰為域F上的線性映射函數(shù)組; 步驟705、設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組; 步驟706、加解密或簽名驗(yàn)證步驟。具體的, 針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)消息M進(jìn)行編碼,得到編碼消息N;采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z)對(duì)該編碼消息N進(jìn)行譯碼,得到譯碼消息L; 或者,針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z),對(duì)消息M’進(jìn)行編碼,得到編碼消息N’;采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)該編碼消息N’進(jìn)行譯碼,譯碼消息L’。
優(yōu)選的是,在對(duì)消息M進(jìn)行編碼得到編碼消息N的過(guò)程中,或者在對(duì)消息N’進(jìn)行譯碼得到譯碼消息L’的過(guò)程中,還包括運(yùn)用單向函數(shù)鏈H(w)擴(kuò)張得到中間結(jié)果x,該中間結(jié)果x中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余部分是這些單向函數(shù)的輸出。
需要說(shuō)明的是 ●ID可采用各種數(shù)據(jù)格式,例如F2上的向量,或大整數(shù)等; ●種子公鑰E’[x]與用戶(hù)公鑰E’(x),其公鑰的參數(shù)m、n、s、s’以及內(nèi)部結(jié)構(gòu)均可以相同,主要是其線性多項(xiàng)式的系數(shù)不同; ●用戶(hù)公鑰生成函數(shù)
應(yīng)是復(fù)雜的非線性變換,它把種子公鑰E’[x]的系數(shù)的值,變換為用戶(hù)公鑰E’(x)的系數(shù)的值; ●用戶(hù)私鑰的生成和用戶(hù)公鑰的生成是相應(yīng)的,對(duì)其具體規(guī)則就不詳細(xì)描述了。但是一般的,用戶(hù)私鑰由密鑰分配中心產(chǎn)生,分發(fā)給授權(quán)用戶(hù)秘密保存;只有授權(quán)用戶(hù)才有權(quán)使用它。
與不采用與用戶(hù)ID相關(guān)的方案相比,本實(shí)施例所有用戶(hù)的公鑰都可以由一個(gè)種子公鑰產(chǎn)生,其維護(hù)成本很低;而對(duì)于不采用用戶(hù)ID的方案,則需要為每個(gè)用戶(hù)獨(dú)立地產(chǎn)生一個(gè)公鑰,并且各個(gè)公鑰完全不相關(guān)。
與不采用與用戶(hù)ID相關(guān)的方案相比,本實(shí)施例由密鑰管理中心預(yù)先生成用戶(hù)私鑰,發(fā)給用戶(hù)秘密保存;而對(duì)于不采用用戶(hù)ID的方案,則可由用戶(hù)自己產(chǎn)生自己的私鑰。
在本發(fā)明的一個(gè)實(shí)施例中,依據(jù)身份標(biāo)識(shí)為IDk得到用戶(hù)公鑰的規(guī)則可以設(shè)置為用戶(hù)公鑰中的線性多項(xiàng)式中的至少一部分系數(shù)的集合為關(guān)于ID的映射函數(shù)。例如,把E’(x)中的多項(xiàng)式的系數(shù)的集合{a1,a2,...},規(guī)定為關(guān)于ID的映射函數(shù){a1,a2,...}=S(ID),從而實(shí)現(xiàn)針對(duì)單個(gè)用戶(hù)的專(zhuān)用公鑰。
在本發(fā)明的另一個(gè)優(yōu)選實(shí)施例中,也可以把依據(jù)身份標(biāo)識(shí)為IDk得到用戶(hù)公鑰的規(guī)則設(shè)置為把ID映射為對(duì)公鑰矩陣進(jìn)行一系列初等變換。其好處在于只要對(duì)公鑰矩陣進(jìn)行非常簡(jiǎn)單的計(jì)算,就可以方便地實(shí)現(xiàn)基于身份的密鑰管理。具體的,可以通過(guò)以下步驟建立用戶(hù)公鑰首先,以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)E’[x]的一系列初等變換;然后,對(duì)包含有E’[x]的種子公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到針對(duì)IDk的用戶(hù)公鑰。上述步驟執(zhí)行后的結(jié)果仍然可以保證是線性變換。
需要說(shuō)明的是,雖然用戶(hù)ID的長(zhǎng)度有限,但是本實(shí)施例可以采用偽隨機(jī)序列產(chǎn)生算法生成一系列初等變換,因此,變化空間非常大,所以可以輕易的避免不同的用戶(hù)ID可能對(duì)應(yīng)相同的初等變換的序列。例如對(duì)于n行的矩陣,可以進(jìn)行10n次初等變換,使原來(lái)的數(shù)據(jù)狀態(tài)被徹底覆蓋。
所謂初等變換,對(duì)于F2來(lái)說(shuō),包括調(diào)換兩行(列)的元素,或把一行(列)加到另一行(列)。一般的,初等變換滿足結(jié)合律,不滿足交換律。
以實(shí)施例4為例設(shè)m=384,n=s=256,s’=228。圖16的原理圖展示了一種奇妙的現(xiàn)象(通過(guò)矩陣的乘法規(guī)則,可以理解對(duì)公鑰E’(x)和私鑰R1、R2、T這兩種初等變換的等價(jià)性)對(duì)E’(x)進(jìn)行行的初等變換,等價(jià)于對(duì)T進(jìn)行對(duì)應(yīng)的行的初等變換;對(duì)E’(x)進(jìn)行列的初等變換,等價(jià)于對(duì)R1、R2進(jìn)行對(duì)應(yīng)的列的初等變換;而對(duì)E(x)中不屬于E’(x)的部分進(jìn)行任意的行的初等變換,E’(x)的內(nèi)容不變。
基于上述規(guī)律,在一個(gè)優(yōu)選實(shí)施例中,可以通過(guò)以下步驟建立用戶(hù)私鑰 步驟a、針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)接口函數(shù)R(x)和可逆線性變換T的一系列初等變換;所述用于建立用戶(hù)私鑰的初等變換序列和用于建立用戶(hù)公鑰的初等變換序列是相對(duì)應(yīng)的; 步驟b、對(duì)接口函數(shù)R(x)和可逆線性變換T按照順序執(zhí)行上述的一系列初等變換; 步驟c、依據(jù)所述變換后的接口函數(shù)R(x)的逆函數(shù)R-1(z)和所述變換后的可逆線性變換T的逆函數(shù)T-1,生成用戶(hù)私鑰。
下面結(jié)合圖7、圖8、圖16給出一個(gè)詳細(xì)的用戶(hù)公鑰和私鑰的生成過(guò)程 首先,密鑰分配中心為用戶(hù)分發(fā)私鑰的方法是 第一步,建立種子私鑰{R1,R2,T},把它們合成為全網(wǎng)所有用戶(hù)共享的種子公鑰E’[x];把種子公鑰公開(kāi)發(fā)布,把種子私鑰由密鑰分配中心秘密保存;由于全網(wǎng)所有用戶(hù)共用一個(gè)種子公鑰,為網(wǎng)絡(luò)環(huán)境下的公鑰管理帶來(lái)了極大的方便; 第二步,根據(jù)用戶(hù)的ID,向用戶(hù)發(fā)放私鑰 (1)按照用戶(hù)公鑰生成函數(shù)
中約定的規(guī)則,把每個(gè)用戶(hù)的ID轉(zhuǎn)換成一系列對(duì)于R1、R2和T的初等變換,包括四種類(lèi)型 ■在(x1,...,x128)的范圍內(nèi),對(duì)R1、R2進(jìn)行相同的列的初等變換; ■在(x129,...,x256)的范圍內(nèi),對(duì)R2進(jìn)行列的初等變換; ■在(x257,...,x384)的范圍內(nèi),對(duì)R2進(jìn)行列的初等變換; ■在(y1,...,y228)的范圍內(nèi),對(duì)T進(jìn)行行的初等變換; (2)在(y229,...,y256)的范圍內(nèi),對(duì)T進(jìn)行若干次隨機(jī)的、與ID無(wú)關(guān)的行的初等變換;這種初等變換,在不改變用戶(hù)公鑰的條件下,使不同用戶(hù)的私鑰相互獨(dú)立,達(dá)到抗合謀攻擊的效果; (3)運(yùn)用經(jīng)過(guò)上述初等變換后的R1、R2和T,計(jì)算出用戶(hù)私鑰Da、Db; (4)把私鑰分發(fā)給用戶(hù),秘密保存。
其次,任何人,運(yùn)用某用戶(hù)的ID,計(jì)算該ID的用戶(hù)公鑰的方法是按照用戶(hù)公鑰生成函數(shù)
中約定的規(guī)則,把ID轉(zhuǎn)換成一系列對(duì)于種子公鑰E’[x]的初等變換,包括四種類(lèi)型 ■在(x1,...,x128)的范圍內(nèi),對(duì)E’[x]進(jìn)行列的初等變換; ■在(x129,...,x256)的范圍內(nèi),對(duì)E’[x]進(jìn)行列的初等變換; ■在(x257,...,x384)的范圍內(nèi),對(duì)E’[x]進(jìn)行列的初等變換; ■在(y1,...,y128)的范圍內(nèi)對(duì),對(duì)E’[x]進(jìn)行行的初等變換;則經(jīng)過(guò)上述初等變換后的E’[x],就是該ID的用戶(hù)公鑰。
與其他基于身份的公鑰密碼體制相比,本發(fā)明具有很強(qiáng)的抗合謀攻擊能力,即多個(gè)合法用戶(hù)聯(lián)合起來(lái),利用他們共同掌握足夠多的公鑰-私鑰對(duì),計(jì)算私鑰生成函數(shù)的困難性 ●一是矩陣求逆變換的高度非線性和復(fù)雜性 對(duì)于k階方陣A來(lái)說(shuō),A-1的元素是關(guān)于A的元素的k2元非線性有理分式函數(shù),其分子為k-1次函數(shù)、分母為k次函數(shù),其函數(shù)規(guī)模將隨k的增加而發(fā)生爆炸。
●二是各個(gè)用戶(hù)的私鑰之間在數(shù)學(xué)上的不相關(guān)性 在(ys’+1,...,ys)的范圍內(nèi),對(duì)T進(jìn)行隨機(jī)的、與ID無(wú)關(guān)的初等變換,使得僅僅列出求解種子私鑰的方程組,也是困難的。
●三是私鑰中不具備用戶(hù)私鑰生成函數(shù)的完整信息 例如,對(duì)于圖8的方案,在用戶(hù)私鑰{Da,Db}中缺少關(guān)于種子私鑰{R1,R2,T}的完整信息,即攻擊者無(wú)法由用戶(hù)私鑰來(lái)破譯種子私鑰,是由于缺少信息、而不是由于缺少計(jì)算能力,與計(jì)算數(shù)學(xué)的發(fā)展水平無(wú)關(guān)。
上述各個(gè)方法實(shí)施例的步驟中并不一定具有必然的先后順序,數(shù)字序號(hào)僅僅是為了說(shuō)明的方便,各步驟的順序可以實(shí)際情況進(jìn)行調(diào)整。
相應(yīng)的,針對(duì)上述實(shí)施例,本發(fā)明還提供了下面的幾個(gè)裝置實(shí)施例 在本發(fā)明的一種用于編碼和譯碼數(shù)字消息的系統(tǒng)實(shí)施例中,可以包括 公鑰生成單元,用于生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’; 私鑰生成單元,用于生成一與所述公鑰相對(duì)應(yīng)的私鑰; 加密單元,用于通過(guò)單向函數(shù)鏈H(w)將消息w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行編碼,得到編碼結(jié)果(y1,...,ys’);和/或 解密單元,用于采用所述私鑰將編碼結(jié)果(y1,...,ys’)變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為譯碼消息w; 其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
優(yōu)選的是,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
在本發(fā)明的另一優(yōu)選實(shí)施例中,上述用于編碼和譯碼數(shù)字消息的系統(tǒng)還可以包括密鑰協(xié)商單元;所述密鑰協(xié)商單元包括以下子模塊 第一協(xié)商子模塊,用于將第一用戶(hù)隨機(jī)構(gòu)造的公鑰傳遞至第二用戶(hù);以及調(diào)用解密單元運(yùn)用相應(yīng)的私鑰對(duì)第二用戶(hù)傳回的信息進(jìn)行解密,得到λ; 第二協(xié)商子模塊,用于調(diào)用加密單元采用該公鑰對(duì)第二用戶(hù)隨機(jī)選擇的密鑰λ進(jìn)行加密后傳遞至第一用戶(hù)。
在本發(fā)明的另一優(yōu)選實(shí)施例中,所述密鑰協(xié)商單元也可以采用更為優(yōu)選的實(shí)施方式,包括以下子模塊 第三協(xié)商子模塊,用于將第一用戶(hù)隨機(jī)構(gòu)造的公鑰的特征變量μ傳遞至第二用戶(hù);以及調(diào)用解密單元運(yùn)用相應(yīng)的私鑰對(duì)第二用戶(hù)傳回的信息進(jìn)行解密,得到λ; 第四協(xié)商子模塊,用于依據(jù)所述特征變量μ計(jì)算出該公鑰,然后調(diào)用加密單元采用該公鑰對(duì)第二用戶(hù)隨機(jī)選擇的密鑰λ進(jìn)行加密后傳遞至第一用戶(hù)。
在本發(fā)明的一種用于數(shù)字簽名的系統(tǒng)實(shí)施例中,可以包括 公鑰生成單元,用于生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’; 私鑰生成單元,用于生成一與所述公鑰相對(duì)應(yīng)的私鑰; 簽名單元,用于采用所述私鑰先把待簽名的消息y”變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為數(shù)字簽名w;和 驗(yàn)證單元,用于通過(guò)單向函數(shù)鏈H(w)將數(shù)字簽名w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行譯碼,得到譯碼結(jié)果(y1,...,ys’);以及比較譯碼結(jié)果(y1,...,ys’)和待驗(yàn)證的消息y’,根據(jù)比較結(jié)果確定數(shù)字簽名w是否正確; 其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足 “H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
優(yōu)選的是,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
在本發(fā)明的另一種用于編碼和譯碼數(shù)字消息的系統(tǒng)實(shí)施例中,可以包括 種子公鑰生成單元,用于生成一包含有E’[x]的種子公鑰,E’[x]是E[x]的子集,其中,E[x]為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E[x]中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’; 用戶(hù)公鑰生成單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),依據(jù)所述包含有E’[x]的種子公鑰和預(yù)置的用戶(hù)公鑰生成規(guī)則,生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)公鑰E’(x);該公鑰為域F上的線性映射函數(shù)組; 用戶(hù)私鑰生成單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)私鑰;該私鑰為域F上的線性映射函數(shù)組; 加解密單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)消息M進(jìn)行編碼,得到編碼消息N;采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z)對(duì)該編碼消息N進(jìn)行譯碼,得到譯碼消息L; 或者,簽名驗(yàn)證單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z),對(duì)消息M’進(jìn)行編碼,得到編碼消息N’;采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)該編碼消息N’進(jìn)行譯碼,得到譯碼消息L’; 其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足 “H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
在本發(fā)明的另一優(yōu)選實(shí)施例中,所述用戶(hù)公鑰生成單元可以包括以下子單元種子映射子單元,用于以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到一系列初等變換;變換子單元,用于對(duì)包含有E’[x]的種子公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到針對(duì)IDk的用戶(hù)公鑰。
優(yōu)選的是,在加解密單元對(duì)消息M進(jìn)行編碼得到編碼消息N的過(guò)程中,或者在簽名驗(yàn)證單元對(duì)消息N’進(jìn)行譯碼得到譯碼消息L’的過(guò)程中,還可以進(jìn)一步包括運(yùn)用單向函數(shù)鏈H(w)擴(kuò)張得到中間結(jié)果x,該中間結(jié)果x中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余部分是這些單向函數(shù)的輸出。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均基于同一技術(shù)構(gòu)思,所以在描述時(shí)重點(diǎn)說(shuō)明的都是該實(shí)施例的獨(dú)特之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。并且,對(duì)于裝置實(shí)施例而言,由于其基本相應(yīng)于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
由于與本發(fā)明最接近的技術(shù)方案,是本發(fā)明人在2007年申請(qǐng)的名稱(chēng)為“一種用于編碼和譯碼數(shù)字消息的方法和系統(tǒng)”,申請(qǐng)?zhí)枮镻CT/CN2007/070264的PCT專(zhuān)利。即本發(fā)明是在上述技術(shù)方案的基礎(chǔ)上作出的進(jìn)一步改進(jìn),在單向函數(shù)鏈的設(shè)計(jì)等技術(shù)點(diǎn)上存在較多的相似和相通之處,由于篇幅限制,在此無(wú)法一一詳述,請(qǐng)參見(jiàn)該專(zhuān)利文件中的相關(guān)之處即可,即本發(fā)明在此引用了其相關(guān)內(nèi)容。
另外,需要說(shuō)明的是,雖然本發(fā)明的背景技術(shù)描述的是本發(fā)明人在2007年申請(qǐng)的名稱(chēng)為“一種用于編碼和譯碼數(shù)字消息的方法和系統(tǒng)”,申請(qǐng)?zhí)枮镻CT/CN2007/070264的PCT專(zhuān)利。但是,該P(yáng)CT專(zhuān)利在本專(zhuān)利申請(qǐng)時(shí)并沒(méi)有公開(kāi),不屬于專(zhuān)利法上合格的現(xiàn)有技術(shù),因此,本發(fā)明和該P(yáng)CT專(zhuān)利相同或相似的技術(shù)特征仍然具有足夠的創(chuàng)造性,即使在本文中沒(méi)有詳細(xì)描述,參見(jiàn)該專(zhuān)利文件中的相關(guān)之處即可,即本發(fā)明在此引用了其相關(guān)描述內(nèi)容。
下面針對(duì)本發(fā)明相對(duì)于背景技術(shù)描述的PCT專(zhuān)利的創(chuàng)新點(diǎn)作進(jìn)一步的描述 首先,為了獲得密碼的可用性,其代價(jià)就是適當(dāng)降低密碼的安全性。因此,如何改進(jìn),既仍然能達(dá)到足夠的抗破譯能力,又可以提高可用性,是本發(fā)明在前期探索過(guò)程中所遇到的最大的技術(shù)難點(diǎn)。
在發(fā)明人的深入研究下,首次提出“用線性映射函數(shù)作為公鑰”的思想和方法。而在所有公開(kāi)的現(xiàn)有技術(shù)中,還沒(méi)有一種公鑰密碼方案是用線性映射函數(shù)來(lái)作為公鑰的。
當(dāng)前密碼學(xué)術(shù)界普遍認(rèn)為,公鑰函數(shù)必須是非線性函數(shù)(在背景技術(shù)描述的PCT專(zhuān)利,本申請(qǐng)的發(fā)明人也一直是這樣認(rèn)為的)。因?yàn)?,假如用線性函數(shù)作為公鑰,求公鑰不定方程組的一個(gè)特解x,或者求關(guān)于x的通解,乃至求廣義逆函數(shù),確實(shí)都非常容易。也就是說(shuō),提出“用線性映射函數(shù)作為公鑰”的新思想,需要克服傳統(tǒng)的技術(shù)偏見(jiàn)。把公鑰函數(shù)由非線性變換、降為線性變換,是公鑰密碼構(gòu)造理論與算法的一次起關(guān)鍵作用的突破。
接下來(lái)的問(wèn)題就是,把公鑰函數(shù)由非線性變換、降為線性變換確實(shí)可以提高工程技術(shù)指標(biāo),但是如何保證安全性? 單向函數(shù)是一種極端的非線性運(yùn)算,它的多項(xiàng)式展開(kāi)表示,需要占用指數(shù)級(jí)的存儲(chǔ)空間;而線性映射函數(shù)則走向另一個(gè)極端,是最簡(jiǎn)單的1次函數(shù)。如何充分發(fā)揮這兩個(gè)極端的各自的優(yōu)勢(shì),在單向函數(shù)鏈擴(kuò)展與線性壓縮之間建立互相纏繞、不可分離的有機(jī)聯(lián)系,使得破譯者不可能分而治之? 發(fā)明人通過(guò)反復(fù)思考、艱苦求證,注意到以下事實(shí) ●要在一個(gè)線性映射函數(shù)的分解方案的巨大集合中,找到唯一的同時(shí)也滿足單向函數(shù)鏈的那個(gè)特定的分解方案,是計(jì)算不可行的; ●或者,要在一個(gè)線性不定方程組的解的巨大集合中,找到唯一的同時(shí)也滿足單向函數(shù)鏈的那個(gè)特定的解,是計(jì)算不可行的。
把若干個(gè)單向函數(shù)的組合,代入到線性映射函數(shù)中,其合成的結(jié)果仍然是高度稠密的非線性函數(shù)。此外,矩陣是線性函數(shù),矩陣分解卻是2次非線性不定方程組問(wèn)題??傊?,本發(fā)明的設(shè)計(jì)思想是把線性空間里的難題——“線性不定方程組的難分解性”(其算法空間為2k數(shù)量級(jí)),與代數(shù)閉包里的難題——“單向函數(shù)的難分解性”(其算法空間為
數(shù)量級(jí)),纏繞成一個(gè)整體,產(chǎn)生意想不到的加密效果。也就是說(shuō),本發(fā)明的安全性基于嵌入了單向函數(shù)變換的置換方程組的難解性,以及按照單向函數(shù)鏈的特定要求來(lái)分解線性函數(shù)組的困難性。
進(jìn)一步的問(wèn)題是如何巧妙地利用上述兩個(gè)在性質(zhì)上有很大區(qū)別的數(shù)學(xué)難題,設(shè)計(jì)出實(shí)際可用的公鑰密碼算法?其中有幾個(gè)關(guān)鍵性的設(shè)計(jì) 1、讓公鑰是線性壓縮函數(shù),其輸入變量多、輸出變量少,從輸出求輸入,將存在許多種可能性。找到其中的一個(gè)解非常容易,但要求出其中的同時(shí)也滿足單向函數(shù)鏈的那個(gè)特定的解,其窮舉量大約為2m-s’。
2、讓公鑰中關(guān)于私鑰的知識(shí)不完全。即設(shè)置s>s’,讓E’(x)成為E(x)的真子集,從而使線性化攻擊失效攻擊者既不知道Es’+1( ),...,Es( )的函數(shù)形式,也不知道Es’+1( ),...,Es( )的函數(shù)的值,因此無(wú)法建立正確的方程。
當(dāng)然,在此基礎(chǔ)上,發(fā)明人更是提出了其他的一些改進(jìn)點(diǎn),以進(jìn)一步提高性能,例如,“運(yùn)用單向函數(shù)鏈,對(duì)明文進(jìn)行非線性擴(kuò)張”;“通過(guò)并聯(lián)、迭代變換,提高矩陣分解的困難性”;“運(yùn)用矩陣的初等變換來(lái)建立ID映射”等等。
以上對(duì)本發(fā)明所提供的一種用于編碼和譯碼數(shù)字消息的方法和系統(tǒng),以及一種用于數(shù)字簽名的方法和系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種用于編碼和譯碼數(shù)字消息的方法,其特征在于,包括
選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n;
生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));
生成一與所述公鑰相對(duì)應(yīng)的私鑰;
設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組;
通過(guò)單向函數(shù)鏈H(w)將消息w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行編碼,得到編碼結(jié)果(y1,...,ys’);和/或
采用所述私鑰將編碼結(jié)果(y1,...,ys’)變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為譯碼消息w。
2.如權(quán)利要求1所述的方法,其特征在于,通過(guò)以下步驟得到公鑰和私鑰
設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出;
依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到從x到y(tǒng)的線性映射函數(shù)組(y1,...,ys)=E(x)=(E1(x1,...,xm),...,Es(x1,...,xm));
選取其中的s’個(gè)函數(shù)作為E’(x),得到公鑰;
依據(jù)接口函數(shù)R(x)的逆函數(shù)R-1(z)和可逆線性變換T的逆函數(shù)T-1,生成私鑰。
3.如權(quán)利要求2所述的方法,其特征在于
合成多個(gè)接口函數(shù)R(x)和T,得到E(x);所述各個(gè)接口函數(shù)互相獨(dú)立;
或者,合成接口函數(shù)R(x)和T,得到E(x);其中,R(x)為多個(gè)接口函數(shù)R1,R2,...,Rk的迭代結(jié)果,R1,R2,...,Rk為線性變換函數(shù);
或者,合成多個(gè)接口函數(shù)R(x)和T,得到E(x);其中,至少一個(gè)R(x)為另外的多個(gè)接口函數(shù)R1,R2,...,Rk的迭代結(jié)果,R1,R2,...,Rk為線性變換函數(shù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x
其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
5.如權(quán)利要求2所述的方法,其特征在于,前述加解密的方法應(yīng)用在密鑰協(xié)商過(guò)程中;其中,通過(guò)以下方式在一用戶(hù)群中建立對(duì)稱(chēng)密碼體制使用的密鑰λ
第一用戶(hù)隨機(jī)構(gòu)造公鑰E’(x)以及對(duì)應(yīng)的私鑰,并把其中的公鑰傳遞至第二用戶(hù);第二用戶(hù)隨機(jī)選擇密鑰λ,并把該λ用該公鑰進(jìn)行加密后傳遞至第一用戶(hù);第一用戶(hù)運(yùn)用私鑰解密,得到λ;
或者,第一用戶(hù)隨機(jī)構(gòu)造公鑰E’(x)以及對(duì)應(yīng)的私鑰,然后把該公鑰的特征變量μ傳遞至第二用戶(hù);第二用戶(hù)根據(jù)所述特征變量μ計(jì)算出該公鑰,然后隨機(jī)選擇密鑰λ,并把該λ用該公鑰進(jìn)行加密后傳遞至第一用戶(hù);第一用戶(hù)運(yùn)用私鑰解密,得到λ。
6.如權(quán)利要求5所述的方法,其特征在于
第二用戶(hù)通過(guò)以下步驟根據(jù)所述特征變量μ計(jì)算出公鑰E’(x)
以特征變量μ為種子映射得到針對(duì)固定公鑰的一系列初等變換;所述固定公鑰為第一用戶(hù)和第二用戶(hù)事先共享的;對(duì)所述固定公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到公鑰E’(x);
第一用戶(hù)通過(guò)以下步驟建立與E’(x)對(duì)應(yīng)的私鑰
以特征變量μ為種子映射得到針對(duì)接口函數(shù)R(x)和可逆線性變換T的一系列初等變換;所述用于建立私鑰的初等變換序列和用于建立公鑰E’(x)的初等變換序列是相對(duì)應(yīng)的;對(duì)R(x)和T按照順序執(zhí)行上述的一系列初等變換;依據(jù)所述變換后的R(x)的逆函數(shù)R-1(z)和所述變換后的T的逆函數(shù)T-1,生成與所述E’(x)相對(duì)應(yīng)的用戶(hù)私鑰。
7.一種用于數(shù)字簽名的方法,其特征在于,包括
選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n;
生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));
生成一與所述公鑰相對(duì)應(yīng)的私鑰;
設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組;
采用所述私鑰先把待簽名的消息y”變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為數(shù)字簽名w;和
通過(guò)單向函數(shù)鏈H(w)將數(shù)字簽名w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行譯碼,得到譯碼結(jié)果(y1,...,ys’);
比較譯碼結(jié)果(y1,...,ys’)和待驗(yàn)證的消息y’,根據(jù)比較結(jié)果確定數(shù)字簽名w是否正確。
8.如權(quán)利要求7所述的方法,其特征在于,通過(guò)以下步驟得到公鑰和私鑰
設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出;
依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到從x到y(tǒng)的線性映射函數(shù)組(y1,...,ys)=E(x)=(E1(x1,...,xm),...,Es(x1,...,xm));
選取其中的s’個(gè)函數(shù)作為E’(x),得到公鑰;
依據(jù)接口函數(shù)R(x)的逆函數(shù)R-1(z)和可逆線性變換T的逆函數(shù)T-1,生成私鑰。
9.如權(quán)利要求8所述的方法,其特征在于
合成多個(gè)接口函數(shù)R(x)和T,得到E(x);所述各個(gè)接口函數(shù)互相獨(dú)立;
或者,合成接口函數(shù)R(x)和T,得到E(x);其中,R(x)為多個(gè)接口函數(shù)R1,R2,...,Rk的迭代結(jié)果,R1,R2,...,Rk為線性變換函數(shù);
或者,合成多個(gè)接口函數(shù)R(x)和T,得到E(x);其中,至少一個(gè)R(x)為另外的多個(gè)接口函數(shù)R1,R2,...,Rk的迭代結(jié)果,R1,R2,...,Rk為線性變換函數(shù)。
10.如權(quán)利要求7所述的方法,其特征在于,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x
其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
11.一種用于編碼和譯碼數(shù)字消息的方法,其特征在于,包括
選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n;
生成一包含有E’[x]的種子公鑰,E’[x]是E[x]的子集,其中,E[x]為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E[x]中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));
針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),依據(jù)所述包含有E’[x]的種子公鑰和預(yù)置的用戶(hù)公鑰生成規(guī)則,生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)公鑰E’(x);該公鑰為域F上的線性映射函數(shù)組;
針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)私鑰;該私鑰為域F上的線性映射函數(shù)組;
設(shè)置單向函數(shù)鏈H(w),以及單向函數(shù)鏈的逆函數(shù)H-1(z);該H(w)用于將n個(gè)輸入變換為m個(gè)輸出;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組;
針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)消息M進(jìn)行編碼,得到編碼消息N;采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z)對(duì)該編碼消息N進(jìn)行譯碼,得到譯碼消息L;
或者,針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z),對(duì)消息M’進(jìn)行編碼,得到編碼消息N’;采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)該編碼消息N’進(jìn)行譯碼,得到譯碼消息L’。
12.如權(quán)利要求11所述的方法,其特征在于,通過(guò)以下步驟建立種子公鑰
設(shè)置可逆線性變換T,所述可逆線性變換T依據(jù)s個(gè)輸入得到s個(gè)輸出;
依據(jù)預(yù)置規(guī)則,合成接口函數(shù)R(x)和T,得到E[x];
選取其中的s’個(gè)函數(shù)作為E’[x],得到種子公鑰。
13.如權(quán)利要求11所述的方法,其特征在于,通過(guò)以下步驟建立用戶(hù)公鑰
以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)E’[x]的一系列初等變換;
對(duì)包含有E’[x]的種子公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到針對(duì)IDk的用戶(hù)公鑰。
14.如權(quán)利要求13所述的方法,其特征在于,通過(guò)以下步驟建立用戶(hù)私鑰
針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)接口函數(shù)R(x)和可逆線性變換T的一系列初等變換;所述用于建立用戶(hù)私鑰的初等變換序列和用于建立用戶(hù)公鑰的初等變換序列是相對(duì)應(yīng)的;
對(duì)接口函數(shù)R(x)和可逆線性變換T按照順序執(zhí)行上述的一系列初等變換;
依據(jù)所述變換后的接口函數(shù)R(x)的逆函數(shù)R-1(z)和所述變換后的可逆線性變換T的逆函數(shù)T-1,生成用戶(hù)私鑰。
15.如權(quán)利要求11所述的方法,其特征在于,在對(duì)消息M進(jìn)行編碼得到編碼消息N的過(guò)程中,或者在對(duì)消息N’進(jìn)行譯碼得到譯碼消息L’的過(guò)程中,還包括
運(yùn)用單向函數(shù)鏈H(w)擴(kuò)張得到中間結(jié)果x,中間結(jié)果x中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
16.一種用于編碼和譯碼數(shù)字消息的系統(tǒng),其特征在于,包括
公鑰生成單元,用于生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’;
私鑰生成單元,用于生成一與所述公鑰相對(duì)應(yīng)的私鑰;
加密單元,用于通過(guò)單向函數(shù)鏈H(w)將消息w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行編碼,得到編碼結(jié)果(y1,...,ys’);和/或
解密單元,用于采用所述私鑰將編碼結(jié)果(y1,...,ys’)變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為譯碼消息w;
其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
18.如權(quán)利要求16所述的系統(tǒng),其特征在于,還包括密鑰協(xié)商單元;所述密鑰協(xié)商單元包括以下子模塊
第一協(xié)商子模塊,用于將第一用戶(hù)隨機(jī)構(gòu)造的公鑰傳遞至第二用戶(hù);以及調(diào)用解密單元運(yùn)用相應(yīng)的私鑰對(duì)第二用戶(hù)傳回的信息進(jìn)行解密,得到λ;
第二協(xié)商子模塊,用于調(diào)用加密單元采用該公鑰對(duì)第二用戶(hù)隨機(jī)選擇的密鑰λ進(jìn)行加密后傳遞至第一用戶(hù);
或者,
第三協(xié)商子模塊,用于將第一用戶(hù)隨機(jī)構(gòu)造的公鑰的特征變量μ傳遞至第二用戶(hù);以及調(diào)用解密單元運(yùn)用相應(yīng)的私鑰對(duì)第二用戶(hù)傳回的信息進(jìn)行解密,得到λ;
第四協(xié)商子模塊,用于依據(jù)所述特征變量μ計(jì)算出該公鑰,然后調(diào)用加密單元采用該公鑰對(duì)第二用戶(hù)隨機(jī)選擇的密鑰λ進(jìn)行加密后傳遞至第一用戶(hù)。
19.一種用于數(shù)字簽名的系統(tǒng),其特征在于,包括
公鑰生成單元,用于生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’;
私鑰生成單元,用于生成一與所述公鑰相對(duì)應(yīng)的私鑰;
簽名單元,用于采用所述私鑰先把待簽名的消息y”變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為數(shù)字簽名w;和
驗(yàn)證單元,用于通過(guò)單向函數(shù)鏈H(w)將數(shù)字簽名w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行譯碼,得到譯碼結(jié)果(y1,...,ys’);以及比較譯碼結(jié)果(y1,...,ys’)和待驗(yàn)證的消息y’,根據(jù)比較結(jié)果確定數(shù)字簽名w是否正確;
其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述由單向函數(shù)鏈H(w)對(duì)消息w擴(kuò)張得到的中間結(jié)果x其中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
21.一種用于編碼和譯碼數(shù)字消息的系統(tǒng),其特征在于,包括
種子公鑰生成單元,用于生成一包含有E’[x]的種子公鑰,E’[x]是E[x]的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E[x]中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù)R(x)=(R1(x1,...,xm),...,Rs(x1,...,xm));其中,m,s,s’為正整數(shù),m>s>s’;
用戶(hù)公鑰生成單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),依據(jù)所述包含有E’[x]的種子公鑰和預(yù)置的用戶(hù)公鑰生成規(guī)則,生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)公鑰E’(x);該公鑰為域F上的線性映射函數(shù)組;
用戶(hù)私鑰生成單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),生成一與該身份標(biāo)識(shí)相對(duì)應(yīng)的用戶(hù)私鑰;該私鑰為域F上的線性映射函數(shù)組;
加解密單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)消息M進(jìn)行編碼,得到編碼消息N;采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z)對(duì)該編碼消息N進(jìn)行譯碼,得到譯碼消息L;
或者,簽名驗(yàn)證單元,用于針對(duì)身份標(biāo)識(shí)為IDk的授權(quán)用戶(hù),采用相應(yīng)的用戶(hù)私鑰和單向函數(shù)鏈的逆函數(shù)H-1(z),對(duì)消息M’進(jìn)行編碼,得到編碼消息N’;采用相應(yīng)的用戶(hù)公鑰和單向函數(shù)鏈H(w),對(duì)該編碼消息N’進(jìn)行譯碼,得到譯碼消息L’;
其中,H(w)用于將n個(gè)輸入變換為m個(gè)輸出,m>n;該H(w)滿足“H(w)=x”是關(guān)于w的可逆的、非線性的超定方程組。
22.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述用戶(hù)公鑰生成單元包括以下子單元
種子映射子單元,用于以用戶(hù)的身份標(biāo)識(shí)為IDk為種子映射得到針對(duì)E’[x]的一系列初等變換;
變換子單元,用于對(duì)包含有E’[x]的種子公鑰按照順序依次執(zhí)行上述的一系列初等變換,得到針對(duì)IDk的用戶(hù)公鑰。
23.如權(quán)利要求21所述的系統(tǒng),其特征在于,在加解密單元對(duì)消息M進(jìn)行編碼得到編碼消息N的過(guò)程中,或者在簽名驗(yàn)證單元對(duì)消息N’進(jìn)行譯碼得到譯碼消息L’的過(guò)程中,還包括
運(yùn)用單向函數(shù)鏈H(w)擴(kuò)張得到中間結(jié)果x,中間結(jié)果x中的一部分元素是若干個(gè)單向函數(shù)的輸入,其余元素是這些單向函數(shù)的輸出。
全文摘要
本發(fā)明提供了一種用于編碼和譯碼數(shù)字消息的方法,包括選擇正整數(shù)m,n,s,s’,其中,m>s>s’,m>n;生成一包含有E’(x)的公鑰,E’(x)是E(x)的子集,其中,E(x)為在域F上的從(x1,...,xm)到(y1,...,ys)的線性映射函數(shù)組;并且,所述E(x)中隱含有接口函數(shù)R(x),其用于根據(jù)(x1,...,xm)得到s個(gè)關(guān)于(x1,...,xm)的函數(shù);生成一與所述公鑰相對(duì)應(yīng)的私鑰;通過(guò)單向函數(shù)鏈H(w)將消息w轉(zhuǎn)換為中間結(jié)果x,然后采用所述公鑰對(duì)所述中間結(jié)果x進(jìn)行編碼,得到編碼結(jié)果(y1,...,ys’);和/或,采用所述私鑰將編碼結(jié)果(y1,...,ys’)變換為中間結(jié)果z,然后運(yùn)用單向函數(shù)鏈的逆函數(shù)H-1(z)以及私鑰將中間結(jié)果z轉(zhuǎn)換為譯碼消息w。本發(fā)明可在保證安全性的前提下,提高多種技術(shù)指標(biāo)。
文檔編號(hào)H04L9/30GK101741550SQ20081022704
公開(kāi)日2010年6月16日 申請(qǐng)日期2008年11月20日 優(yōu)先權(quán)日2008年11月20日
發(fā)明者管海明 申請(qǐng)人:管海明, 管海鷹