專利名稱:一種基于混沌算法的n重rsa加密算法的數(shù)字版權(quán)保護方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息安全技術(shù),涉及一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法。
背景技術(shù):
數(shù)字版權(quán)保護技術(shù)(Digital Rights Management,即DRM)就是以一定的計算方法,實現(xiàn)對數(shù)字內(nèi)容的保護,其具體的應(yīng)用可以包括eBook、視頻、音頻、圖片、安全文檔等數(shù)字內(nèi)容的保護。數(shù)字版權(quán)保護方法主要有兩類,一類是采用數(shù)字水印技術(shù),另一類是以數(shù)據(jù)加密和防拷貝為核心的DRM技術(shù)。數(shù)字水印(Digital Watermark)技術(shù)是在數(shù)字內(nèi)容中嵌入隱蔽的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測工具才能提取。數(shù)字水印可以用于圖片、音樂和電影的版權(quán)保護,在基本不損害原作品質(zhì)量的情況下,把著作權(quán)相關(guān)的信息隱藏在圖片、音樂或電影中,而產(chǎn)生的變化通過人的視覺或聽覺是發(fā)現(xiàn)不了的。但是,目前市場上的數(shù)字水印產(chǎn)品在應(yīng)用方面還不成熟,容易被破壞或破解,而且數(shù)字水印方法,只能在發(fā)現(xiàn)盜版后用于取證或追蹤,不能在事前防止盜版。數(shù)據(jù)加密和防拷貝為核心的DRM技術(shù)是把數(shù)字內(nèi)容進行加密,只有授權(quán)用戶才能得到解密的密鑰,而且密鑰是與用戶的硬件信息綁定的。加密技術(shù)加上硬件綁定技術(shù),防止了非法拷貝,這種技術(shù)能有效地達(dá)到版權(quán)保護的目的,當(dāng)前國內(nèi)外大部分計算機公司和研究機構(gòu)的DRM技術(shù)采用這種方法。混沌是存在于非線性系統(tǒng)中的一種較為普遍的現(xiàn)象,混沌并不是一片混亂,而是有著精致內(nèi)在結(jié)構(gòu)的一類現(xiàn)象。混沌運動具有遍歷性、規(guī)律性等特點。因此,如果利用混沌變量進行優(yōu)化搜索,無疑會比隨機搜索更具有優(yōu)先性。RSA加密算法是一種非對稱加密算法。在公鑰加密標(biāo)準(zhǔn)和電子商業(yè)中RSA被廣泛使用。RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。RSA加密算法的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學(xué)界多數(shù)人士傾向于因子分解不是NPC問題。RSA的缺點主要有1)產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。2)分組長度太大,為保證安全性,η至少也要600bits以上,使運算代價很高,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級;且隨著大數(shù)分解技術(shù)的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。目前,SET (Secure Electronic Transaction)協(xié)議中要求CA采用2048bits長的密鑰,其他實體使用10M比特的密鑰。3)RSA密鑰長度隨著保密級別提高,增加很快。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法,安全性和可靠性較高,運行速度快,具較好的穩(wěn)定性和開放性。本發(fā)明一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法,包括私鑰生成、數(shù)據(jù)加密和數(shù)據(jù)解密3個步驟步驟1、生成私鑰參數(shù),并以此產(chǎn)生公、私鑰對,作為加密解密用;步驟11、先用混沌算法隨機生成最低位為奇數(shù)的隨機數(shù),然后,對生成的隨機數(shù)進行合數(shù)判斷測試,當(dāng)經(jīng)過預(yù)設(shè)次數(shù)的合數(shù)判斷測試仍未通過時,則該隨機數(shù)視為素數(shù);如此,通過上述方法隨機生成三個素數(shù)P,q和r ;步驟12、利用步驟11通過混沌算法隨機生成三個素數(shù)p,q,r,計算N = p*q*r ;步驟13、計算 N = (p-1) (q-1) (r_l);步驟14、隨機選取整數(shù)e,該整數(shù)e滿足Mod (e,N) = 1 ;步驟15、利用歐幾里得算法計算d,滿足e*d ^ 1 MOD N ;步驟16、公開N,整數(shù)e作為E,記為公鑰E = <N,e>,保密p,q,r,d,N作為D,記為私鑰 D = <p, q, r, d,N> ;步驟2、讀取待加密文件的數(shù)字內(nèi)容,利用步驟1中獲得的公鑰E對待加密文件的數(shù)字內(nèi)容進行RSA加密,其中,加密時的加密算法為c = E(m) =me(M0D N),保存經(jīng)加密的數(shù)字內(nèi)容的同時附加私鑰文件和每一次取出密文的長度,以便解密時使用;步驟3、在解密過程中,解密模塊通過讀取私鑰文件獲取私鑰,對已加密的數(shù)字內(nèi)容進行解密;其中,解密時用的解密算法為m = D(c) = cd(MOD N)。所述的步驟11中隨機生成3個素數(shù)的算法如下(1)選擇用于載波的混沌變量選用公式χη+1= μ I(I-Xn),其中 μ = 4,0 彡 彡 1,η = 0,1,2,;首先,用系統(tǒng)隨機函數(shù)產(chǎn)生一個隨機值C,設(shè)定& = c ;然后通過公式χη+1 = μ Xn(I-Xn)分別進行M次的循環(huán)計算,得到M個混沌變量,該循環(huán)次數(shù)M等于要生成的素數(shù)的二進制的位數(shù),通過M次循環(huán)后,可以得到一組混沌變量
X1J X2J Χβ …? ^M ‘(2)將步驟(1)中產(chǎn)生的所有混沌變量的變化范圍,通過公式m_ValUe[i]= Ci+diXi,i =0,1,2,3,...,M-1分別放大到相應(yīng)的優(yōu)化變量(Ci5CiH)取值范圍中,其中Ci, Cli為常數(shù),Ci為步驟(1)中用系統(tǒng)隨機函數(shù)產(chǎn)生隨機值,Ci = Xi - 550,Cli為小素數(shù)表中隨機選取的值,值為prime [cj.從而,可以得到一個隨機數(shù)p,總共M位,其中,隨機數(shù)ρ的大小可以表示為ρ = m_value
+m_value[l] · 0x10000000+m_value[2] · (0x10000000)2++ …+m_value[M_l] · (0x10000000廣1(3)用Miller-Rabin算法進行合數(shù)判斷測試,當(dāng)經(jīng)過預(yù)設(shè)次數(shù)的合數(shù)判斷測試仍未通過時,則由步驟O)生成的隨機數(shù)視為素數(shù),進入步驟G),若測試失敗,則生成的隨機數(shù)不是素數(shù),返回步驟O),繼續(xù)生成素數(shù)的算法,重新生成素數(shù);
所述的Miller-Rabin算法,令n-1 = 2 ,其中t是非負(fù)整數(shù),m是正奇數(shù),若 bmEl(mod d)或者爐、Ξ -1 (mod d),0 彡 j 彡 t_l,則稱 η 通過以 b 為基的 Rabin-Miller 測試,具體步驟如下A、假定待測試的素數(shù)為p,計算b,b是2整除p-1的次數(shù),即,滬是能整除p-1的 2的最大冪數(shù),然后計算m,使得η = l+2bm ;B、選擇一個小于ρ的隨機數(shù)a,即1彡a彡p-1 ;C、設(shè) j = 0 且 ζ = am mod ρ ;D、如果ζ = 1或者ζ = p-1,那么ρ通過測試,可能是素數(shù);E、如果j >0且ζ = 1,那么,ρ不是素數(shù);F、設(shè)j = j+Ι,如果j<b且ζ乒p-1,設(shè)ζ = Z2 mod p,然后回到步驟E,如果ζ = P-I,那么ρ通過測試,可能為素數(shù);G、如果j =b且ζ乒p-1,那么ρ不是素數(shù);循環(huán)上述步驟若干次,如果ρ通過測試了,則將ρ視為素數(shù),表示成功生成一個素數(shù);若還沒有生成3個素數(shù),則要返回步驟0),用步驟(2)中獲得的混沌變量%進行迭代搜索,否則,跳到步驟(5);(5)判斷該生成的3個素數(shù)p,q,r是否相等,若相等,則返回步驟(2)繼續(xù)生成素數(shù)的算法,若各不相同,則隨機生成3個素數(shù)的算法結(jié)束。所述的步驟14中整數(shù)e選值65537。本發(fā)明利用混沌算法為RSA加密算法生成素數(shù),利用所生成的素數(shù)組合成公鑰和私鑰,再利用該公鑰和私鑰對文件的內(nèi)容進行加密和解密。由于混沌算法具有遍歷性、隨機性、規(guī)律性等特點,使搜索更加有效,從而使得生成素數(shù)更好更快。目前,世界上還沒有任何可靠的攻擊RSA算法的方式,本發(fā)明采用RSA加密算法,安全性較高,且基于混沌算法生成組合的私鑰,長度足夠長,速度足夠快,由于公鑰已知,故RSA加密算法具有很好的開放性。
圖1為本發(fā)明的流程示意圖。以下結(jié)合附圖和具體實施例對本發(fā)明作進一步詳述。
具體實施例方式如圖1所示,本發(fā)明一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法, 具體包括私鑰生成、數(shù)據(jù)加密和數(shù)據(jù)解密3個主要步驟步驟1、生成私鑰參數(shù),并以此產(chǎn)生公、私鑰對,作為加密解密用;步驟11、首先用混沌算法隨機生成最低位為奇數(shù)的隨機數(shù),因為素數(shù)必定為奇數(shù), 如果是偶數(shù)的話,能夠被2整除,然后,對生成的隨機數(shù)進行合數(shù)判斷測試,若通過測試,則其為合數(shù),否則當(dāng)經(jīng)過預(yù)設(shè)次數(shù)的測試仍未通過時,則該隨機數(shù)視為素數(shù),最后,通過混沌算法隨機生成三個素數(shù)P、q和r ;本發(fā)明中使用Miller-Rabin算法進行合數(shù)判斷測試,在本發(fā)明中,由于素數(shù)用一個大整數(shù)類表示,并且,表示為一個0x100000000進制數(shù),其中,這個數(shù)的所有位保存在數(shù)組中,因此,對于一個隨機素數(shù)的生成,這中間就進行了許多次混沌演化。所述的步驟11中隨機生成3個素數(shù)的算法如下(1)選擇用于載波的混沌變量選用公式χη+1= μ I(I-Xn),其中 μ = 4,0 彡 彡 1,η = 0,1,2,;首先,用系統(tǒng)隨機函數(shù)產(chǎn)生一個隨機值C,設(shè)定& = c ;然后通過公式χη+1 = μ Xn(I-Xn)分別進行M次的循環(huán)計算,得到M個混沌變量,該循環(huán)次數(shù)M等于要生成的素數(shù)的二進制的位數(shù),通過M次循環(huán)后,可以得到一組混沌變量
X1J X2J Χβ …?(2)將步驟(1)中產(chǎn)生的所有混沌變量的變化范圍,通過公式m_ValUe[i]= Ci+diXi,i =0,1,2,3,...,M-1分別放大到相應(yīng)的優(yōu)化變量(Ci5CiH)取值范圍中,其中Ci, Cli為常數(shù),Ci為步驟(1)中用系統(tǒng)隨機函數(shù)產(chǎn)生隨機值,Ci = Xi - 550,Cli為小素數(shù)表中隨機選取的值,值為prime [cj,從而,可以得到一個隨機數(shù)p,總共M位,其中,隨機數(shù)ρ的大小可以表示為ρ = m_value
+m_value[l] · 0x10000000+m_value[2] · (0x10000000)2++—+m_value[M-l] · (0x10000000廣1(3)用Miller-Rabin算法進行合數(shù)判斷測試,當(dāng)經(jīng)過預(yù)設(shè)次數(shù)的合數(shù)判斷測試仍未通過時,則由步驟O)生成的隨機數(shù)視為素數(shù),進入步驟G),若測試失敗,則生成的隨機數(shù)不是素數(shù),返回步驟O),繼續(xù)生成素數(shù)的算法,重新生成素數(shù);所述的Miller-Rabin算法,令n-1 = 2 ,其中t是非負(fù)整數(shù),m是正奇數(shù),若 bmEl(mod d)或者爐、Ξ -1 (mod d),0 彡 j 彡 t_l,則稱 η 通過以 b 為基的 Rabin-Miller 測試,具體步驟如下A、假定待測試的素數(shù)為p,計算b,b是2整除p-1的次數(shù),即,滬是能整除p-1的 2的最大冪數(shù),然后計算m,使得η = l+2bm ;B、選擇一個小于ρ的隨機數(shù)a,即1彡a彡p-1 ;C、設(shè) j = 0 且 ζ = am mod ρ ;D、如果ζ = 1或者ζ = p-1,那么ρ通過測試,可能是素數(shù);E、如果j >0且ζ = 1,那么,ρ不是素數(shù);F、設(shè)j = j+1,如果j <b且ζ乒p-1,設(shè)ζ = ζ2 mod p,然后回到步驟E,如果ζ = P-I,那么ρ通過測試,可能為素數(shù);G、如果j =b且ζ乒ρ-1,那么ρ不是素數(shù);循環(huán)上述步驟若干次,如果ρ通過測試了,則將ρ視為素數(shù),表示成功生成一個素數(shù);若還沒有生成3個素數(shù),則要返回步驟0),用步驟(2)中獲得的混沌變量%進行迭代搜索,否則,跳到步驟(5);(5)判斷該生成的3個素數(shù)p,q,r是否相等,若相等,則返回步驟(2)繼續(xù)生成素數(shù)的算法,若各不相同,則隨機生成3個素數(shù)的算法結(jié)束。步驟12、利用步驟11通過混沌算法隨機生成三個素數(shù)p,q,r,計算N = p*q*r ;步驟13、計算 N = (p-1) (q-1) (r_l);
步驟14、隨機選取整數(shù)e,該整數(shù)e滿足Mod(e,N) = 1 ;為了兼顧效率可以選取特殊值,可采用比較特殊的e值。比如3或65537。但是,如果e太小,明文m(需要加密的內(nèi)容)也很小,則對密文(c)來講,c = nf (mod η),當(dāng)nf< η時,不用取模計算,直接將密文開 e此方就可以得到明文m。另外,e取的太小,很容易通過截獲e個相同消息的密文后,導(dǎo)致小指數(shù)攻擊成功。綜合以上考慮,本發(fā)明e選用65537 ;步驟15、利用歐幾里得算法計算d,滿足e*d ^ 1 MOD N ;步驟16、公開N,整數(shù)e作為E,記為公鑰E = <N,e>,保密p,q,r,d,N作為D,記為私鑰 D = <p, q, r, d,N> ;步驟2、讀取待加密文件的數(shù)字內(nèi)容,利用步驟1中獲得的公鑰E對待加密文件的數(shù)字內(nèi)容進行RSA加密,其中,加密時的加密算法為c = E(m) = me (MOD N),保存經(jīng)加密的數(shù)字內(nèi)容的同時附加私鑰文件和每一次取出密文的長度,以便解密時使用;步驟3、在解密過程中,解密模塊通過讀取私鑰文件獲取私鑰,對已加密的數(shù)字內(nèi)容進行解密;其中,解密時用的解密算法為m = D(c) = cd(MOD N)。本發(fā)明的混沌算法過程具隨機性、均衡性和穩(wěn)定性的特點,生成的素數(shù)質(zhì)量好,速度快,并且均衡分布;公鑰和私鑰生成時,通過大整數(shù)來表示素數(shù),對素數(shù)進行相應(yīng)的計算, 組合成私鑰,并且公布公鑰,對于素數(shù)的計算都是在素數(shù)這個類中進行操作的,方便并且響應(yīng)速度快,結(jié)果可靠正確;在加密過程和解密過程,通過私鑰和公鑰對數(shù)據(jù)進行加密和解密,其私鑰的長度足夠長,同時,對數(shù)據(jù)的加密速度比較快,兩者均得到了保證,同時,私鑰又不易被破解,大大增強了算法的實用性和開放性。
權(quán)利要求
1.一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法,其特征在于包括私鑰生成、數(shù)據(jù)加密和數(shù)據(jù)解密3個步驟步驟1、生成私鑰參數(shù),并以此產(chǎn)生公、私鑰對,作為加密解密用; 步驟11、先用混沌算法隨機生成最低位為奇數(shù)的隨機數(shù),然后,對生成的隨機數(shù)進行合數(shù)判斷測試,當(dāng)經(jīng)過預(yù)設(shè)次數(shù)的合數(shù)判斷測試仍未通過時,則該隨機數(shù)視為素數(shù);如此,通過上述方法隨機生成三個素數(shù)P,q和r ;步驟12、利用步驟11通過混沌算法隨機生成三個素數(shù)p,q,r,計算N = p*q打; 步驟 13、計算 N = (p-1) (q-1) (r-1); 步驟14、隨機選取整數(shù)e,該整數(shù)e滿足Mod (e,N) = 1 ; 步驟15、利用歐幾里得算法計算d,滿足e*d ^ 1 MOD N ;步驟16、公開N,整數(shù)e作為E,記為公鑰E = <N,e>,保密p,q,r,d,N作為D,記為私鑰 D = <p, q,r, d,N> ;步驟2、讀取待加密文件的數(shù)字內(nèi)容,利用步驟1中獲得的公鑰E對待加密文件的數(shù)字內(nèi)容進行RSA加密,其中,加密時的加密算法為c = E(m) =me(M0D N),保存經(jīng)加密的數(shù)字內(nèi)容的同時附加私鑰文件和每一次取出密文的長度,以便解密時使用;步驟3、在解密過程中,解密模塊通過讀取私鑰文件獲取私鑰,對已加密的數(shù)字內(nèi)容進行解密;其中,解密時用的解密算法為 m = D (c) = cd (MOD N)。
2.根據(jù)權(quán)利要求1所述的一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法,其特征在于所述的步驟11中隨機生成3個素數(shù)的算法如下(1)選擇用于載波的混沌變量選用公式 χη+1= μ\(l-xn),其中 μ1,η = 0,1,2,;首先,用系統(tǒng)隨機函數(shù)產(chǎn)生一個隨機值c,設(shè)定^ = C;然后通過公式χη+1= μ Xn(I-Xn)分別進行M次的循環(huán)計算,得到M個混沌變量,該循環(huán)次數(shù)M等于要生成的素數(shù)的二進制的位數(shù),通過M次循環(huán)后,可以得到一組混沌變量Xl,x2,X3,…,Xm 1 ;(2)將步驟(1)中產(chǎn)生的所有混沌變量的變化范圍,通過公式m_ValUe[i]= CiHxi'i =0,1,2,3,..., M-I分別放大到相應(yīng)的優(yōu)化變量(Ci,c.+d,)取值范圍中,其中Ci, Cli為常數(shù),Ci為步驟(1)中用系統(tǒng)隨機函數(shù)產(chǎn)生隨機值,Ci = Xi - 550,Cli為小素數(shù)表中隨機選取的值,值為prime [cj,從而,可以得到一個隨機數(shù)p,總共M位,其中,隨機數(shù)ρ的大小可以表示為ρ = m_value
+m_value[l] · 0x10000000+ m_value[2] · (0x10000000)2+ +…+m_value[M-l] · (0x10000000)(3)用Miller-Rabin算法進行合數(shù)判斷測試,當(dāng)經(jīng)過預(yù)設(shè)次數(shù)的合數(shù)判斷測試仍未通過時,則由步驟O)生成的隨機數(shù)視為素數(shù),進入步驟G),若測試失敗,則生成的隨機數(shù)不是素數(shù),返回步驟( ,繼續(xù)生成素數(shù)的算法,重新生成素數(shù);所述的Miller-Rabin算法,令n_l = 2、其中t是非負(fù)整數(shù),m是正奇數(shù),若bm ^ 1 (mod d)或者爐、Ξ -1 (mod d),0彡j彡t-Ι,則稱η通過以b為基的Rabin-Miller測試,具體A、假定待測試的素數(shù)為p,計算b,b是2整除p-1的次數(shù),即,滬是能整除p-1的2的最大冪數(shù),然后計算m,使得η = l+2bm ;B、選擇一個小于ρ的隨機數(shù)a,即1彡a彡p-1;C、設(shè)j = 0 且 ζ = am mod ρ ;D、如果ζ= 1或者ζ = ρ-l,那么ρ通過測試,可能是素數(shù);E、如果j> 0且ζ = 1,那么,ρ不是素數(shù);F、設(shè)j= j+1,如果j <b且ζ乒p-1,設(shè)ζ = ζ2 mod p,然后回到步驟E,如果ζ = p_l, 那么P通過測試,可能為素數(shù);G、如果j= b且ζ乒p-1,那么ρ不是素數(shù);循環(huán)上述步驟若干次,如果P通過測試了,則將P視為素數(shù),表示成功生成一個素數(shù); 若還沒有生成3個素數(shù),則要返回步驟0),用步驟( 中獲得的混沌變量%進行迭代搜索,否則,跳到步驟(5);(5)判斷該生成的3個素數(shù)p,q,r是否相等,若相等,則返回步驟(2)繼續(xù)生成素數(shù)的算法,若各不相同,則隨機生成3個素數(shù)的算法結(jié)束。
3.根據(jù)權(quán)利要求1所述的一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法,其特征在于所述的步驟14中整數(shù)e選值65537。
全文摘要
本發(fā)明一種基于混沌算法的N重RSA加密算法的數(shù)字版權(quán)保護方法,包括私鑰生成、數(shù)據(jù)加密和數(shù)據(jù)解密3個步驟利用混沌算法為RSA加密算法生成素數(shù),利用所生成的素數(shù)組合成公鑰和私鑰,再利用該公鑰和私鑰對文件的內(nèi)容進行加密和解密。由于本發(fā)明的混沌算法過程具隨機性、均衡性和穩(wěn)定性的特點,生成的素數(shù)質(zhì)量好,速度快,并且均衡分布;本發(fā)明對于素數(shù)的計算都是在素數(shù)這個類中進行操作的,方便并且響應(yīng)速度快,結(jié)果可靠正確;在加密過程和解密過程,通過私鑰和公鑰對數(shù)據(jù)進行加密和解密,其私鑰的長度足夠長,同時,對數(shù)據(jù)的加密速度比較快,兩者均得到了保證,同時,私鑰又不易被破解,大大增強了算法的實用性和開放性。
文檔編號H04L9/00GK102437912SQ20121000306
公開日2012年5月2日 申請日期2012年1月6日 優(yōu)先權(quán)日2012年1月6日
發(fā)明者王炳興 申請人:廈門博鼎智文傳媒科技有限公司