基于密文反饋的logistic映射認(rèn)證加密算法
混沌系統(tǒng)是一種高度復(fù)雜的非線(xiàn)性動(dòng)態(tài)系統(tǒng),不僅具有對(duì)初值敏感、遍歷等特性,而且還能夠提供具有良好隨機(jī)性、相關(guān)性和復(fù)雜性的偽隨機(jī)序列。因此,將混沌系統(tǒng)應(yīng)用到密碼系統(tǒng)中的研究引起了國(guó)內(nèi)外的廣泛關(guān)注,并先后提出了許多基于混沌系統(tǒng)的加密算法。那么接下來(lái),我就給大家介紹一種基于密文反饋的logistic映射認(rèn)證加密算法。
基于密文反饋的logistic映射認(rèn)證加密算法原理
1、偽隨機(jī)序列的產(chǎn)生
Logistic映射是一個(gè)離散混沌系統(tǒng),它的映射關(guān)系為:
![]()
混沌動(dòng)力系統(tǒng)的研究指出,當(dāng)3.5699456…<μ≤4時(shí),logistic映射于混沌狀態(tài),為了獲得二進(jìn)制密鑰流,需要對(duì)序列進(jìn)行有限精度的A/D變換。映射產(chǎn)生的混沌軌道上的每個(gè)點(diǎn)采用二進(jìn)制形式可以表示為:
![]()
式中,bi(x)可以通過(guò)式(3)得出:

式中,Φt(x)為門(mén)限函數(shù),即:
![]()
并且Φt(x)=1-Φt(x),通過(guò)式(1)~(4)可以得到偽隨機(jī)二進(jìn)制序列Bni={bi(τn(x))}∞n=0,其中,n是偽隨機(jī)序列的長(zhǎng)度,τn(x)為第n次logistic迭代時(shí)的值。
2、基于密文反饋的logistic映射認(rèn)證加密算法原理
基于密文反饋的logistic映射認(rèn)證加密算法主要包括以下幾個(gè)步驟:
步驟1、假設(shè)A發(fā)送信息給B,明文M表示為長(zhǎng)度tbit的明文字(這里假設(shè)為t=64,可以根據(jù)需要進(jìn)行調(diào)整)。

因此,第j組明文字和密文字分別可以表示為:
![]()
步驟2、將logistic映射250次,得到logistic映射產(chǎn)生偽隨機(jī)序列的起始點(diǎn)τ250(x0)。
步驟3、B選擇保密素?cái)?shù)pB和qB,令nB=pBqB,并將nB公開(kāi),選擇B的公鑰KPB,KPB滿(mǎn)足:
![]()
式中,gcd()表示最大公約數(shù).A根據(jù)下圖計(jì)算初值x0的模的冪運(yùn)算,記為CK,然后將CK和第0組密文C0一起發(fā)送。圖中,x0為logistic映射初始值;KPB、KSB為B的公鑰、私鑰;C0為第0組密文字;CK為利用KPB計(jì)算x0的模的冪運(yùn)算。
舉例說(shuō)明如下:
例1、B選擇保密素?cái)?shù)pB=7,qB=17,則nB=pBqB=7×17=119,公開(kāi)nB=119;選擇KPB=5作為B的公鑰,KPB滿(mǎn)足gcd(KPB,96)=gcd(5,96)=1;根據(jù)(KSBKPB)mod96=1,即(KSB×5)mod96=1,B能夠計(jì)算出私鑰KSB=77。設(shè)初值x0=19,A的加密過(guò)程為CK=(x0)KPB(modnB)=(19)5mod119=66,將CK發(fā)送出去;B的解密過(guò)程為x0=(CK)KSB(modnB)=(66)77_mod119=19,只有B擁有唯一的KSB,能夠解密CK得到初值x0。
步驟4、同時(shí)A選擇保密素?cái)?shù)pA和qA,令nA=pAqA,并將nA公開(kāi),同理分別根據(jù)式(7)和(8)得到A的公鑰和私鑰KPA、KSA:

根據(jù)這個(gè)圖計(jì)算簽名的模的冪運(yùn)算,記為CM,然后將CM附著在明文上。
再根據(jù)下圖進(jìn)行加密。

簽名S的傳輸及認(rèn)證過(guò)程中,S為數(shù)字簽名;KPA、KSA為A的公鑰、私鑰;Cj為第j組密文字;CM為利用KSA計(jì)算S的模的冪運(yùn)算。舉例說(shuō)明如下:
例2、A選擇保密素?cái)?shù)pA=7,qA=17,則nA=pAqA=7×17=119并公開(kāi)nA=119;選擇KPA=5作為A的公鑰,KPA滿(mǎn)足gcd(KPA,96)=gcd(5,96)=1;根據(jù)(KSAKPA)mod96=1,即(KSA×5)mod96=1,A能夠計(jì)算出私鑰KSA=77;設(shè)簽名S=19,A的傳送過(guò)程為CM=(S)KSA(modnA)=(19)5mod119=66,將CM發(fā)送出去;B的認(rèn)證過(guò)程為S=(CM)KPA(modnA)=(66)77mod119=19,任何人接收到CM后,只要能夠用KPA解密CM,都說(shuō)明該信息是A發(fā)送的,A無(wú)法抵賴(lài)。
步驟5、通過(guò)前面所描述的方法產(chǎn)生二進(jìn)制序列B1iB2i…B64iB65iB66i…B70i,假設(shè)第j組明文字Mj所使用的密鑰字Kj=B1iB2i…B64i,計(jì)算B65iB66i…B70i序列的數(shù)值記為K'j,則第j組密文字Cj為:
![]()
式中,→表示右移運(yùn)算,+表示異或運(yùn)算。
步驟6、分別根據(jù)式(10)和(11)計(jì)算C'j,然后利用上面的方法產(chǎn)生第j+1組的密鑰字Kj+1和序列數(shù)值K'j+1,即:在原有迭代基礎(chǔ)上再迭代logistic映射70+C'j次。

步驟7、同理,第j+2組密鑰字Kj+2將在第j+1組迭代基礎(chǔ)上再迭代70+C'j+1次,此時(shí)的C'j+1為:

如果所有的明文字都已被加密,則加密過(guò)程結(jié)束,否則轉(zhuǎn)到步驟5繼續(xù)執(zhí)行,具體實(shí)現(xiàn)框圖如上圖所示:
步驟8、解密時(shí),B根據(jù)初值x0的傳輸及解密過(guò)程得到初值x0,即:
![]()
式中,KSB滿(mǎn)足:
![]()
解密過(guò)程和加密過(guò)程類(lèi)似,只需將式(9)替換為:
![]()
通過(guò)和加密相反的變換,將式(15)的等式左邊序列左移K'j位,得到對(duì)應(yīng)的明文字。
步驟9、由步驟8同時(shí)也分解出CM,計(jì)算模的逆運(yùn)算。
![]()
根據(jù)式(16)得到簽名S,與B本身計(jì)算的摘要信息對(duì)比,如果相同,則說(shuō)明收到的信息是完整的,在傳輸過(guò)程中沒(méi)有被篡改,否則就說(shuō)明信息被篡改了。
考慮到實(shí)際應(yīng)用中對(duì)加密系統(tǒng)的安全性及效率的要求,本文提出的一種基于密文反饋的logistic映射認(rèn)證加密算法,不僅解決了信息傳輸過(guò)程中面臨的信息完整性、身份認(rèn)證以及防抵賴(lài)性等問(wèn)題,而且適用于大量的數(shù)據(jù)文件加密。
小知識(shí)之偽隨機(jī)序列
偽隨機(jī)序列是具有某種隨機(jī)特性的確定的序列。它們是由移位寄存器產(chǎn)生確定序列,然而他們卻具有某種隨機(jī)特性的隨機(jī)序列。









