專利名稱:用于最高安全性應(yīng)用的加密方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于最高安全性應(yīng)用的加密方法,更具體地,
涉及一種改進(jìn)的一次性密碼本(One-Time-Pad)的加密方法。
背景技術(shù):
一次性密碼本的發(fā)明被認(rèn)為是美國電話電才艮公司(AT&T)的 Gilbert Vernam詳口上篇t Joseph Mauborgne的耳關(guān)合工作。在一次'l"生密石馬 本中,將需要加密的明文和同明文長度一樣的隨機(jī)密鑰(key )或"密 碼本(pad)"相結(jié)合。報(bào)文中的每個(gè)字符與來自(隨機(jī)的、機(jī)密的、 以及僅使用一次的)密碼本中的一個(gè)字符相結(jié)合。因此,該密碼本 必須至少具有報(bào)文的長度。
理論上,如果不知道密碼本的內(nèi)容,使用強(qiáng)力進(jìn)攻是不可能石皮 譯報(bào)文的。由于這個(gè)緣故,密碼本的保護(hù)(例如,機(jī)密的)、隨機(jī)性
(例如,任何人不可預(yù)知的)、以及僅使用一次是非常重要的,以免 密碼輕易地泄露。當(dāng)明文和相應(yīng)的密文都已知的時(shí)候,密碼本是很 容易被確定的。在現(xiàn)代密碼學(xué)中,存在一些反對使用一次性密碼本
(OTP)的異議。第一種異議涉及對于安全地分布所需的巨大數(shù)量 的隨機(jī)數(shù)據(jù)的困難以及該隨機(jī)數(shù)據(jù)存儲的可靠性的困難,而第二種 異議涉及在不安全的傳輸信道(例如,7>共因特網(wǎng))上進(jìn)行傳輸?shù)?期間更改才艮文的可能性。第一種異議可以通過^吏用適于生成高質(zhì)量隨枳4t的合適的隨枳J 數(shù)發(fā)生器來克服。對于解決第二個(gè)問題,使用現(xiàn)代信息鑒別算法中 的一種算法似乎是合理的解決方案。這樣的結(jié)合在原則上保證了牢 不可破的安全性。然而,在某些領(lǐng)域的應(yīng)用中,特別地,在許多通 信報(bào)文(像電子銀行)在所有報(bào)文中非常頻繁地使用相同標(biāo)準(zhǔn)的且 已知的小文本片段的應(yīng)用中,進(jìn)一步加強(qiáng)由加密方法賦予的保護(hù)是 值得關(guān)注的。
發(fā)明目的
本發(fā)明的目的是提供一種改進(jìn)的一次性密碼本的加密方法。
發(fā)明內(nèi)容
這個(gè)目的通過如權(quán)利要求1中所主張的加密方法來實(shí)現(xiàn)。本方 法的進(jìn)一步變形在從屬權(quán)利要求中給出。
所提出的用于加密/礦位長的報(bào)文M的方法,包括以下步驟a) 提供/w-位長的第一隨機(jī)位序列,/^/m; b )將所述報(bào)文M細(xì)分為 位的單位報(bào)文串,其中/^/m; c)對于每一單位報(bào)文串,對所述單 位才艮文串與所述第 一 隨才幾位序列的/5-位4丸行異或運(yùn)算 (XOR-operation ),用于生成加密的單位串;以及d)將所述加密的 單位串匯編(assembling)成密文。根據(jù)本發(fā)明,密文的匯編是這樣 的,相對于相應(yīng)的單位報(bào)文串在所述報(bào)文中的位置而隨機(jī)置換所述 加密的單位串在所述密文中的位置,該位置的置換基于第 一隨才幾位 序列。換句話i兌,將所述加密的單位串匯編成密文的步-驟包括以下 步驟基于第 一隨機(jī)位序列來相對于相應(yīng)的單位報(bào)文串在所述報(bào)文 中的位置而隨機(jī)置換所述加密的單位串在所述密文中的位置。
在加密的才艮文中,單位串(例如,原始明文的字節(jié))以隨才幾的 方式改變其位置。這意p未著即使在需要反復(fù)加密和傳輸相同簡短標(biāo)準(zhǔn)報(bào)文的應(yīng)用中,可能的攻擊者將面對以隨機(jī)位序列的形式出現(xiàn)的 位串。
在本方法的優(yōu)選實(shí)施例中,報(bào)文M包括總計(jì)/尸-位的明文和//r 位長的散列值,所述散列值由所述明文的位來確定,其中,/p+/w/m。 可以由任意合適的散列算法(諸如,例如MD5算法)生成的散列 值允許在接收者一邊鑒別報(bào)文,并因此允許確定報(bào)文在傳輸期間是 否已經(jīng)4皮更改。
應(yīng)當(dāng)注意,在加密之前以及在隨機(jī)置換字節(jié)位置之前,報(bào)文鑒 別的信息被加到明文。因此在最后得到的加密的報(bào)文中,甚至報(bào)文 鑒別代碼(16字節(jié)=128位)的位置是未知的,所以對該信息進(jìn)行 攻擊是不可能的。
在第 一加密步驟以及隨后將加密的單位串匯編成密文之后,最 后得到的密文最好是用不同的隨才幾位序列再次加密的。因此,本方 法最好還包括以下步驟提供長度相應(yīng)于密文長度的第二隨機(jī)位序 列;以及對所述密文與所述第二隨才幾位序列扭^亍異或運(yùn)算,用于生 成所述加密的報(bào)文。
應(yīng)當(dāng)注意,組成一次性密石馬本的隨扭j立序列可以由適于生成高 質(zhì)量隨機(jī)數(shù)的任意合適的隨機(jī)數(shù)發(fā)生器生成。在本方法的優(yōu)選實(shí)施 例中,提供第一和/或第二隨機(jī)位序列的步驟包括以下步驟
a )提供具有ws^個(gè)可尋址位BTj的隨機(jī)位表(BFT ),其中, 0y^m胖r-1,所述隨機(jī)位表包含隨機(jī)分布的相當(dāng)數(shù)量的"0" 4立和"1" 4立;以及
b) 對于所述第一和/或第二隨機(jī)位序列的每一位i)在0和 wwr- 1之間的范圍內(nèi)生成地址FA, ii)從所述隨機(jī)位表中選擇具有地址FA的位BTFA,以及iii)將所述第一和/或第二隨才幾位 序列的所述位i殳置為等于來自所述隨機(jī)位表中的所述位BTFA。
用于生成隨機(jī)位序列的這個(gè)方法通過從包含隨機(jī)分布的相當(dāng)數(shù) 量的"0"位和"1"位的隨機(jī)位表中隨機(jī)地選擇一位,再現(xiàn)了石更幣 拋擲原理的結(jié)果。然后,從這個(gè)"硬幣拋擲模擬"的連續(xù)結(jié)果中一 ^M立i也匯編需要生成的隨扭W立序列。
將要從隨機(jī)位表BFT中選擇的位的地址FA可以通過任意合適 的方法隨才幾地生成,此方法確保得到在給定范圍內(nèi)的地址的高質(zhì)量 的隨機(jī)性。為了得到分布得很好的隨機(jī)數(shù),產(chǎn)生的最終地址FA也 必須是在位-查詢-表(Bit-Fishing-Table) BFT的整個(gè)地址空間上隨 一幾地分布的。實(shí)現(xiàn)這個(gè)目標(biāo)的適當(dāng)?shù)拇胧┛梢园ǜ鶕?jù)專用復(fù)合的 最終地址匯編參數(shù),將來自大量基礎(chǔ)隨機(jī)值的選中的位中的FA地
后面的一皮之前生成的預(yù)定lt目的位所影響。
因此,這種方法生成了非常高質(zhì)量的隨機(jī)數(shù),同時(shí)還在任意的 標(biāo)準(zhǔn)計(jì)算機(jī)(諸如,例如簡單的個(gè)人計(jì)算機(jī))上容易地實(shí)施。
具體實(shí)施例方式
應(yīng)當(dāng)注意,根據(jù)本發(fā)明的方法可以在任意的標(biāo)準(zhǔn)個(gè)人計(jì)算機(jī)上 或甚至在諸如智能卡或具有例如32-位處理器的USB令牌的小型物 理載體上容易地實(shí)施。從以下的一個(gè)特定的實(shí)施方式的描述中,這 將變得更顯而易見。
不僅為了允許文件的安全傳輸,而且為了力良務(wù)于全雙工實(shí)況通 信(像電子銀行),所提出的方法將所要加密的明文報(bào)文斷開為具有 1000個(gè)字節(jié)長度的明文塊。然后,將每個(gè)明文塊轉(zhuǎn)換成1024字節(jié) 長的密文塊。這個(gè)密文塊包含關(guān)于(文件或會話的)塊數(shù)目、存儲在數(shù)據(jù)報(bào)中的文本的長度的信息以及報(bào)文鑒別的信息。在可行的實(shí)
施例中,才艮文鑒別的信息可以由諸如MD5型算法來生成。
術(shù)語"隨^L置換的位置"暗示了這樣的事實(shí),在加密期間,原 始文本的每個(gè)字節(jié)老卩以隨才幾的方式改變其在密文中的^f立置,例i口, 第一明文塊的字節(jié)5可以在第一密文塊中處于4立置844,而第二明 文塊的字節(jié)5可以在第二密文塊中處于位置45,等等。
以該方式加密的動機(jī)是基于這樣的事實(shí)許多通信報(bào)文(像電 子4艮行)在所有凈艮文中非常頻繁地^吏用相同標(biāo)準(zhǔn)的且已知的小文本 片段。最后得到的密文給任何可能的攻擊者留下了 8192完全隨才幾位 的位串,其中,在該最后得到的密文中,每一字節(jié)都隨才幾地改變了
其位置并且每一位都與不同的隨4幾位進(jìn)行了兩次異或運(yùn)算。
甚至才艮文鑒別代碼(16字節(jié)=128位)的4立置是未知的,所以 對該信息進(jìn)行攻擊是不可能的。
加密包4舌以下步駛A:
a) 生成具有8192隨機(jī)位的第一序列,在存儲區(qū)域中,基數(shù) (base)是以字節(jié)來編組的
b) 預(yù)備具有1024個(gè)標(biāo)記的空列表以及具有1024個(gè)字節(jié)的密 文存4諸空間以存4諸密文
c) 預(yù)備具有1024字節(jié)的明文存儲空間,該明文存4諸空間可以 細(xì)分為8字節(jié)(64位)的頭部、1000字節(jié)的文本部以及16字 節(jié)的散列部
d) 在明文存儲空間的頭部中存儲明文塊的塊數(shù)目(54位)以 及數(shù)據(jù)報(bào)的長度(IO位)e) 在明文存4諸空間的文本部中存<諸明文直到1000字節(jié)(如果 明文小于1000字節(jié),則剩余字節(jié)為0)f) 計(jì)算報(bào)文摘要(message digest)作為鑒別并且將最后得到 的16字節(jié)存儲到明文存儲空間的散列部,所以現(xiàn)在我們有1024 字節(jié)的原始文本要加密g )通過將0存儲到密碼-位置-計(jì)數(shù)器和原始-文本-計(jì)數(shù)器來初 始化密碼-位置-計(jì)數(shù)器和原始-文本-計(jì)數(shù)器h) 從基數(shù)中提取來自由密碼-位置-計(jì)數(shù)器指示的字節(jié)的最低5 位(0到31 )并將這5位加到密碼-位置-計(jì)數(shù)器,注意如果結(jié)果 是1024或以上,則在對該計(jì)數(shù)器進(jìn)行所有加法之后必須減去 1024i) 檢查相應(yīng)于密碼-位置-計(jì)數(shù)器的標(biāo)記是否為空,如果不是, 則將密碼-位置-計(jì)數(shù)器增加1,直到我們找到空位置(如果計(jì)數(shù) 器達(dá)到了 1024,則為了在4立置0處重新啟動,必須減去1024)j )對來自原始-文本-計(jì)數(shù)器所參考的(referenced )原始文本的 字節(jié)與密碼_位置_計(jì)數(shù)器所參考的基數(shù)的字節(jié)執(zhí)行異或運(yùn)算,并且將異或運(yùn)算的結(jié)果存儲在密碼塊中的相同字節(jié)位置處k ) 將標(biāo)記列表中相同的位置標(biāo)記為已占有1) 將原始-文本-計(jì)數(shù)器和密碼-位置-計(jì)數(shù)器增加1,再次注意 如果結(jié)果是1024或以上,則在對該計(jì)凄t器進(jìn)4于所有加法之后必 須減去1024m) 將步驟h)到1)重復(fù)1023次n) 生成具有8192隨枳W立的第二序列o)對密碼塊與該8192位-串執(zhí)行異或運(yùn)算,得到密文用于傳 送在4妄收者 一 邊的解密通過#丸4于以下步驟來顛倒加密a) 對密文與具有8192隨機(jī)位的第二序列4丸行異或運(yùn)算b) 使用具有8192隨機(jī)位的第一序列、基數(shù),以找回原始文本 的位置,并且對密碼與來自基數(shù)的對應(yīng)字節(jié)執(zhí)行異或運(yùn)算以得 到原始文本c) 為了發(fā)覺可能的錯(cuò)誤,在完成原始文本的1024字節(jié)之后, 檢查數(shù)據(jù)報(bào)的長度和塊數(shù)目d) 保存最后的16字節(jié),報(bào)文鑒別,并且將這些字節(jié)替換為Oe) 再計(jì)算報(bào)文摘要并且將結(jié)果與保存的16字節(jié)相比較,允許 我們發(fā)覺通過任意手革殳所做的任何更改,例如,通過傳輸4昔誤 或通過攻擊者盡管以上描述的方法似乎是個(gè)漫長的過程,^f旦我們不應(yīng)該忘記, 是計(jì)算才幾負(fù)責(zé)加密和解密凈艮文。運(yùn)4亍在3 GHz的具有64位英特爾 內(nèi)存擴(kuò)展技術(shù)的英特爾@奔騰@1¥能夠處理大約6000塊/秒,所包括 的如上所述的隨才幾數(shù)的生成,給出了 6兆字節(jié)/秒的吞吐量。當(dāng)然,本方法不是用于10千兆比特/秒《連*接的解決方案,^怛與 對稱加密的結(jié)合,如高級加密標(biāo)準(zhǔn)(AES)與所4是出的方法的結(jié)合 用于密鑰交換,將保證與使用所謂的量子密碼具有相同的高保密性,作為優(yōu)勢,具有低成本和易于長距離(如歐洲和澳洲)鏈接的可能 性。應(yīng)當(dāng)注意,可以輕松地利用生成隨機(jī)數(shù)的機(jī)密的隨機(jī)位表成對地對包含具有被保護(hù)存儲器的纟鼓處理器(MPU)的小型物理載體進(jìn) 行編程。由于存儲在被保護(hù)存儲器中,在物理傳輸?shù)竭h(yuǎn)距離同伴的 期間進(jìn)4亍復(fù)制是不可能的,因此,在通過CD或》茲帶交換用于一次 性密碼本的隨機(jī)數(shù)的情況下,避免了信息泄露的可能來源。如果上 述的隨機(jī)數(shù)發(fā)生器集成在這種微處理器(MPU)內(nèi),則還可以執(zhí)行 對稱加密應(yīng)用中將要^f吏用的新密鑰的生成。如果我們考慮(例如)用于鑒別和注冊的小報(bào)文,則本發(fā)明所 提出的方法的安全性變得更顯而易見。因?yàn)楝F(xiàn)在這些報(bào)文可以總是 被隱藏在8192隨機(jī)位中,對于攻擊者而言對傳輸?shù)膱?bào)文進(jìn)行密碼分 析就變得不可能了。如果使用上述的隨機(jī)數(shù)發(fā)生器,對于生成的數(shù)的隨機(jī)性,命名 為位-查詢-表(BFT)的隨機(jī)位表是決定要素。這意味著如果在密碼 機(jī)應(yīng)用中使用該隨機(jī)數(shù)發(fā)生器,只有BFT(而非啟動源(seed))是 需要機(jī)密保存的要素。因此,可以公開指出(在電子郵件的主題中 或在全雙工信道的同步中)要4吏用啟動源來解密。為了避免相同隨 才幾凄t的二次使用,在全雙工通信中,應(yīng)答器可以〗吏用第一啟動源加 L為了擴(kuò)展點(diǎn)對點(diǎn)通信之外的使用,存在兩種可能性。在適當(dāng)?shù)?地方我們可以創(chuàng)建可信的并且安全的郵局來與每個(gè)參與者分享不同 的隨才幾位表BTF?,F(xiàn)在,組內(nèi)的每個(gè)成員都有發(fā)送和4妄收來自該組 內(nèi)任意其他成員的機(jī)密報(bào)文的可能性,因?yàn)猷]局在內(nèi)部解密接收到 的報(bào)文(具有鑒別)并且在利用適當(dāng)?shù)腂FT進(jìn)行新的加密后將其發(fā)送給收報(bào)人。這似乎是用于地方當(dāng)局、較大公司等等的最好的解決 方案。用于較小的保密組的不同的解決方案是共享公共的隨機(jī)位表BFT,但授權(quán)每個(gè)加密單位僅僅使用受限制的具有264個(gè)可能啟動源 的凄t空間。才艮據(jù)本方法,那么加密才艮文的第一加密塊應(yīng)該包括希望 將報(bào)文發(fā)送給的一個(gè)或多個(gè)收報(bào)人。如果自己的成員號沒有包括在 第一塊的收凈艮人列表中,那么其他成員的單元解密程序可以拒絕解 密該才艮文。其他的應(yīng)用可以涉及組織內(nèi)部才幾密文件的分布,通過包括計(jì)算 機(jī)與印刷機(jī)之間的解密單元,強(qiáng)制收報(bào)人使用他自己的帶有口令保 護(hù)的智能卡來打印公司的IT-網(wǎng)絡(luò)內(nèi)部的明文中從來沒有出現(xiàn)過的 公文。以相同的方式,可以組織可信的/^司范圍的計(jì)算才幾網(wǎng)絡(luò),其中, 所有敏感的計(jì)算機(jī)都通過根據(jù)本發(fā)明的加密系統(tǒng)防護(hù)起來,盡管如 此還是允許在英特網(wǎng)上的所有內(nèi)部通信。這可以應(yīng)用到律師事務(wù)所、 專利代理所、銀行業(yè)等等。
權(quán)利要求
1.一種用于加密lM-位長的報(bào)文M的方法,包括以下步驟提供lR-位長的第一隨機(jī)位序列,lR≥lM;將所述報(bào)文M細(xì)分為lS-位的單位報(bào)文串,其中l(wèi)S≤lM;對于每個(gè)單位報(bào)文串,對所述單位報(bào)文串與所述第一隨機(jī)位序列的lS-位執(zhí)行異或運(yùn)算,用于生成加密的單位串;將所述加密的單位串匯編成密文;其特征在于,相對于相應(yīng)的所述單位報(bào)文串在所述報(bào)文中的位置而置換所述加密的單位串在所述密文中的位置,其中,所述位置的置換基于所述第一隨機(jī)位序列。
2. 根據(jù)權(quán)利要求1所述的方法,其中,將所述加密的單位串匯編 成密文的步艱《包括以下步-驟基于所述第一隨4幾位序列來相對 于相應(yīng)的所述單位報(bào)文串在所述報(bào)文中的位置而隨機(jī)置換所 述加密的單位串在所述密文中的位置。
3. 根據(jù)權(quán)利要求1或2中任一項(xiàng)所述的方法,其中,所述報(bào)文M 包括總計(jì)/f-位的明文和/礦位長的散列值,所述散列值由所述 明文的所述位來確定,其中,/p+//^/m。
4. 根據(jù)權(quán)利要求1到3中任一項(xiàng)所述的方法,還包括以下步驟提供長度對應(yīng)于所述密文的長度的第二隨機(jī)位序列;以及對所述密文與所述第二隨機(jī)位序列執(zhí)行異或運(yùn)算,用于生 成加密的所述才艮文。根據(jù)權(quán)利要求1到4中任一項(xiàng)所述的方法,其中,才是供第一和 /或第二隨枳"立序列的步-驟包4舌以下步艱艮a ) 提供具有w^r個(gè)可尋址位BTj的隨機(jī)位表(BFT ), 其中,O^^w^r-1,所述隨機(jī)位表包含隨機(jī)分布的相當(dāng)數(shù)量 的"0" ^立和"1" <立,以及b) 對于所述第一和/或第二隨機(jī)位序列的每一位i. 在0和w胖r - 1之間的范圍內(nèi)生成地址FA,ii. 從所述隨才幾位表中選4奪具有所述地址FA的位 BTfa,以及iii. 將所述第 一和/或第二隨4幾位序列的所述位i殳置 為等于來自所述隨才幾位表的所述位BTFA。
全文摘要
一種用于加密l<sub>M</sub>-位長的報(bào)文M的方法,包括以下步驟a)提供l<sub>R</sub>-位長的第一隨機(jī)位序列,l<sub>R</sub>≥l<sub>M</sub>;b)將所述報(bào)文M細(xì)分為l<sub>S</sub>-位的單位報(bào)文串,其中l(wèi)<sub>S</sub>≤l<sub>M</sub>;c)對于每一單位報(bào)文串,對所述單位報(bào)文串與所述第一隨機(jī)位序列的l<sub>S</sub>-位執(zhí)行異或運(yùn)算,用于生成加密的單位串;以及d)將所述加密的單位串匯編成密文。根據(jù)本發(fā)明,密文的匯編是這樣的相對于相應(yīng)的單位報(bào)文串在所述報(bào)文中的位置而隨機(jī)置換所述加密的單位串在所述密文中的位置,該位置的置換基于第一隨機(jī)位序列。換句話說,將所述加密的單位串匯編成密文的步驟包括以下步驟相對于相應(yīng)的單位報(bào)文串在所述報(bào)文中的位置而隨機(jī)置換所述加密的單位串在所述密文中的位置。
文檔編號G06F7/58GK101411114SQ200780011471
公開日2009年4月15日 申請日期2007年3月29日 優(yōu)先權(quán)日2006年3月31日
發(fā)明者阿蘭·舒馬赫 申請人:阿蘭·舒馬赫