本發(fā)明涉及一種用于加密的計算機執(zhí)行的方法,特別是安全抵御已知明文攻擊的方法。
背景技術:
加密技術在當今的信息技術中是非常重要的。對于加密技術來說,需要安全抵御各種類型的攻擊;如果不知道加密密鑰,就不可能在合理的時間內(nèi)將加密的文本進行解密。
一種類型的攻擊是已知明文攻擊(KPA)。在可以獲得對應于已知明文的密文時,KPA是有效的攻擊。當明文的開頭是固定數(shù)據(jù)、序列號或時間戳(例如,為了符合通信協(xié)議標準),更容易推斷出對應于所述密文的明文。因此,安全抵御KPA對于加密方法來說是重要的要求。
如果僅僅增加加密密鑰大小,在技術標準符合性和計算復雜性方面可能會存在問題。當符合標準的加密規(guī)范時,安全抵御KPA是優(yōu)選的。
編碼速率也必須良好,這意味著密文不應該明顯大于相應的明文。
此外,在當今的信息技術環(huán)境中,為了對可變長度的數(shù)據(jù)進行加密,例如數(shù)字化電話語音,加密方法應該不僅可用于塊加密,而且可用于流加密。
為了增加KPA的計算復雜性而使用多個明文/密文對,通過使用不依賴于明文、初始化向量和加密密鑰的秘密信息,可能對明文進行預處理。
例如,在US20030191950中公開了一種使用基于明文中的所有比特的秘密信息對明文進行預處理的方法。
然而,當這種方法被應用到流加密時,產(chǎn)生了一個問題,因為整個明文必須被掃描兩次來緩存,顯著地增加了所需的存儲器空間。
技術實現(xiàn)要素:
本發(fā)明將要解決的問題
提供一種編碼速率良好,適用于流加密并且安全抵御已知明文攻擊的加密方法、系統(tǒng)和程序。
用于解決所述問題的方法
本發(fā)明通過提供一種用于對文本進行加密的方法解決了上述問題,所述方法包括:產(chǎn)生隨機數(shù),基于所述隨機數(shù),從彼此長度不同的一組獨立隨機數(shù)序列中選擇隨機數(shù)序列,基于所選擇的隨機數(shù)序列,通過使用第一變換方法將第一明文變換,將所述隨機數(shù)和所述經(jīng)過變換的第一明文拼接成第二明文,以及,通過使用第二變換方法將所述第二明文變換。
本發(fā)明根據(jù)前面的段落,通過提供一種用于對文本進行加密的方法解決了上述問題,其中:所述第一變換方法包括:重復所選擇的隨機數(shù)序列,以及對所重復選擇的隨機數(shù)序列和所述第一明文應用異或操作。
本發(fā)明通過提供一種用于對文本進行加密的計算機程序解決了上述問題,所述計算機程序包括計算機可執(zhí)行的指令,所述指令用于:產(chǎn)生隨機數(shù),基于所述隨機數(shù),從彼此長度不同的一組獨立隨機數(shù)序列中選擇隨機數(shù)序列,基于所選擇的隨機數(shù)序列,通過使用第一變換指令將第一明文變換,將所述隨機數(shù)和所述經(jīng)過變換的第一明文拼接成第二明文,以及,通過使用第二變換指令將所述第二明文變換。
本發(fā)明根據(jù)前面的段落,通過提供一種用于對文本進行加密的計算機程序解決了上述問題,其中:所述第一變換方法包括:重復所選擇的隨機數(shù)序列,以及對所重復選擇的隨機數(shù)序列和所述第一明文應用異或操作。
本發(fā)明通過提供一種用于對文本進行加密的計算機系統(tǒng)解決了上述問題,所述計算機系統(tǒng)包括指令,所述指令用于:隨機數(shù)生成器;選擇器,其基于所述隨機數(shù),從彼此長度不同的一組獨立隨機數(shù)序列中選擇隨機數(shù)序列;第一變換器,其基于所選擇的隨機數(shù)序列,通過使用第一變換方法將第一明文變換;拼接器,其將所述隨機數(shù)和所述經(jīng)過變換的第一明文拼接成第二明文;以及,第二變換器,其通過使用第二變換方法將所述第二明文變換。
根據(jù)前面的段落的一種用于對文本進行加密的計算機系統(tǒng),其中所述第一變換器還包括:第三變換器,其重復所選擇的隨機數(shù)序列;以及,第四變換器,其對所重復選擇的隨機數(shù)序列和所述第一明文應用異或操作。
本發(fā)明的有益效果
提供了一種編碼速率良好,與傳統(tǒng)加密方法結合,適用于流加密并且安全抵御已知明文攻擊的加密方法、系統(tǒng)和程序。
附圖說明
圖1是在本發(fā)明的一個實施例中使用的示例性信息系統(tǒng)的概覽結構圖。
圖2是在本發(fā)明的一個實施例中使用的示例性的隨機數(shù)序列矩陣。
圖3是在本發(fā)明的一個實施例中的加密和解密處理的示例性概覽流程圖。
圖4是在本發(fā)明的一個實施例中的加密預處理的示例性概覽流程圖。
圖5是在本發(fā)明的一個實施例中的解密后處理的示例性概覽流程圖。
具體實施方式
在下文中將參考附圖描述本發(fā)明的一個實施例。
圖1是在本發(fā)明的一個實施例中使用的示例性信息系統(tǒng)101的功能概覽圖。信息系統(tǒng)101可以由物理計算機組成,也可以由例如云基礎架構服務提供的虛擬計算資源組成。
加密預處理102是在傳統(tǒng)加密103之前變換明文的功能。其細節(jié)在圖4中示出并在后面描述。
傳統(tǒng)加密103是使用例如數(shù)據(jù)加密標準(DES)的眾所周知的加密方法,來執(zhí)行加密(將明文變換到密文)的功能。它是公知的并且不需加以說明的,因此將不再進行進一步討論。
傳統(tǒng)解密104是使用例如數(shù)據(jù)加密標準(DES)的眾所周知的加密方法,來執(zhí)行解密(將密文變換到明文)的功能。它是公知的并且不需加以說明的,因此將不再進行進一步討論。
解密后處理105是在傳統(tǒng)解密105之后變換明文的功能。其細節(jié)在圖5中示出并在后面描述。
在本發(fā)明中,明文106是輸入到解密處理的數(shù)據(jù),并且是從加密處理輸出的數(shù)據(jù)。明文可以存儲在例如硬盤驅(qū)動器的非易失性存儲器中,也可以存儲在位于主存儲器中的臨時存儲器中。這可以從本發(fā)明中信息系統(tǒng)101的外部提供。
在本發(fā)明中,密文107是從解密處理輸出的數(shù)據(jù),并且是輸入到加密處理的數(shù)據(jù)。密文可以存儲在例如硬盤驅(qū)動器的非易失性存儲器中,也可以存儲在位于主存儲器中的臨時存儲器中。這可以被提供到本發(fā)明中信息系統(tǒng)101的外部系統(tǒng)。
隨機數(shù)序列矩陣108是存儲隨機數(shù)序列的手段,所述隨機數(shù)序列作為由加密預處理102和解密后處理105使用的參數(shù)。隨機數(shù)序列矩陣108可以存儲在非易失性存儲器中,也可以存儲在位于主存儲器中的臨時存儲器中。這可以從本發(fā)明中的信息系統(tǒng)101的外部提供。隨機數(shù)序列矩陣108在圖2中示出并且將在后面詳細描述。
圖2是本發(fā)明的一個實施例中的隨機數(shù)序列矩陣108的示例。其是如預定規(guī)范確定的2^n階的隨機數(shù)(2的n次冪,其中n是自然數(shù))。此規(guī)范可以是任何人都可以使用的開放標準,或是通信雙方在進行通信之前可更換的規(guī)范。規(guī)范可以通過指定隨機數(shù)序列索引來指定隨機數(shù)序列矩陣108中的一個隨機數(shù)。
優(yōu)選地,隨機數(shù)序列矩陣108中的每個隨機數(shù)的長度不同并且是互質(zhì)的,因為如果長度是固定的,隨機性效果可能受到影響。
圖3是本發(fā)明中加密和解密處理的示例性概覽流程圖。每個處理步驟如中間的矩形中所描繪的,到每個步驟的輸入在圖3的左側(cè)示出,以及來自每個步驟的輸出在圖3的右側(cè)示出。在本發(fā)明中的所述加密處理結合了加密預處理(S301)和傳統(tǒng)加密(S302)(例如DES)。在本發(fā)明中的所述解密處理結合了解密后處理(S301)和傳統(tǒng)解密(S302)(例如DES)。
圖4是本發(fā)明中加密預處理的示例性概覽流程圖。下面將解釋每個步驟。
(S401)
確定n比特隨機數(shù),其獨立于例如所述明文本身、所述初始化矢量、所述加密密鑰或所述時刻的信息。因此,完全隨機地確定此隨機數(shù),產(chǎn)生了將與2^-n誤匹配的可能性。此隨機數(shù)可通過物理隨機數(shù)生成器來產(chǎn)生。此隨機數(shù)臨時保存為隨機數(shù)序列索引。
(S402)
使用S401中的所述隨機數(shù)序列索引,從隨機數(shù)序列矩陣108中獲得隨機數(shù)序列并臨時保存。
(S403)
使用S402中的隨機數(shù)序列,將所述明文變換為偽裝明文。優(yōu)選地,此變換應當易于逆變換并且不應當增加數(shù)據(jù)大小。例如,通過重發(fā)匹配所述明文的長度的隨機數(shù)序列,并且通過應用XOR(“異或”)操作,這兩個條件可被滿足。
(S404)
通過拼接S403中的所述偽裝明文和所述隨機數(shù)索引,可獲得經(jīng)預處理的明文,其是輸入到傳統(tǒng)加密步驟(S302)的數(shù)據(jù)。這里“拼接”包括在所述偽裝明文的前面拼接所述隨機數(shù)索引,在所述偽裝明文的末端拼接所述隨機數(shù)索引,或?qū)⑺鲭S機數(shù)索引嵌入到所述偽裝明文的預定位置。雖然所述經(jīng)預處理的明文略微大于所述原始的明文,所述大小差異受限于所述隨機數(shù)序列索引的比特寬度,不顯著影響編碼速率。
圖5是本發(fā)明中解密后處理304的示例性概覽流程圖。下面將解釋每個處理步驟。
(S501)
將來自例如DES的傳統(tǒng)解密方法的輸出分成隨機數(shù)序列索引和偽裝明文。因為所述隨機數(shù)序列索引的長度和插入位置被認為是雙方商定的規(guī)范,所以此處理是明確的。
(S502)
使用S501中的所述隨機數(shù)序列索引,從隨機數(shù)序列矩陣108中獲得隨機數(shù)序列并臨時保存。
(S503)
使用S502中的隨機數(shù)序列,將所述偽裝明文變換為明文。這是在S403中進行處理的逆變換。例如,如果必要時對重發(fā)的所述隨機數(shù)序列進行XOR操作,在S503中的逆處理將是相應的操作。
(本發(fā)明中加密方法的安全性的證明)
在下文中,將解釋本發(fā)明中加密方法的安全性。
所述隨機數(shù)序列索引從所述系統(tǒng)中的獨立源中產(chǎn)生。它的保密性由加密來確保。人們不能假設或?qū)嵤⒁褂玫碾S機數(shù)序列索引。在下文的解釋中,n是隨機數(shù)序列索引的比特寬度,m是KPA中所需的明文/密文對的數(shù)量,L是加密中使用的密鑰的比特寬度。
即使KPA攻擊者具有多于一個的明文/密文對,每一對都是與獨立隨機數(shù)序列索引相關的。因此,在KPA中需要(2^n)^m=2^(n*m)次試驗。另一方面,窮舉搜索(蠻干攻擊)處理需要2^L次試驗。
在所述蠻干攻擊中,每次試驗都需要唯一的解密和匹配處理。另一方面,在KPA中,每次試驗都需要使用明文/密文對,查找所述密鑰的附加處理。因此,假設T1為用于所述蠻干攻擊中的一次試驗的時間,假設T2為用于KPA中的一次試驗的時間,T1小于或等于T2(T1<=T2)。
如果KPA可比所述蠻干攻擊更快地查找到密鑰,那么KPA可以說是成功的。因為總計算量等于試驗時間長度乘以試驗的次數(shù),對于將要成功的KPA,必須滿足T1*2^L>T2*2^(n*m)的條件。
因為T1<=T2,所以,T1*2^L>T2*2^(n*m)可通過以下步驟變形為2^L>2^(n*m):
T1*2^L>T2*2^(n*m)
→T1/T2*2^L>2^(n*m)
→(因為1>=T1/T2,所以)1*2^L>=T1/T2*2^L>2^(n*m)
→2^L>2^(n*m)
若剔除m這個條件,則得到L/n>m不等式關系:
2^L>2^(n*m)
→(因為L>0,n>0,m>0,所以)Log(2^L)>Log(2^(n*m))
→L*Log(2)>n*m*Log(2)
→L>n*m
→L/n>m
例如,在本發(fā)明中的具有8比特隨機數(shù)序列索引的加密方法中,對于將要成功的KPA,當所述密鑰長度為256比特時,必須查找到具有少于32個明文/密文對的密鑰;以及,當所述密鑰長度為56比特時,必須查找到具有少于7個明文/密文對的密鑰。
在當今的KPA攻擊中,明文/密文對的數(shù)量被認為獨立于計算復雜度。然而,本發(fā)明是有用的,在于其可以限制所需的明文/密文對的數(shù)量。
(本發(fā)明技術上的有益效果)
本發(fā)明的加密方法易于與傳統(tǒng)加密方法結合來實施,同時編碼速率良好,并且不需要多次掃描明文(更容易適用于流加密)。此外,即使受限于要遵循標準,而且添加本發(fā)明的方法不能增加、限制加密密鑰的長度,仍然可以改進整體安全性,特別是安全抵御KPA的整體安全性。