摘 要
針對分組較小的分組密碼算法在安全方面存在的某些設計缺陷,以及因明文組空間較小可能引發的明文格式特征泄露問題,設計了一種能適用于較小分組長度的分組密碼工作模式。對長段明文進行分組加密時,通過將前一組密文與系統參數及密鑰因素混合產生一組偽隨機向量,并將該向量以加擾形式作用到當前明文組,然后對被加擾的明文組做多輪迭代式分組加密。由于被加擾后的明文組具有不可預測性,可有效地防止已知明文或選擇明文攻擊。給出了一種產生認證標簽的方法,使得該工作模式可提供數據加密和報文完整性檢驗功能。
內容目錄:
1 隱秘密文分組鏈接模式
1.1 隱秘密文分組鏈接模式加密方法
1.3 隱秘密文分組鏈接加密認證模式
2 隱秘密文分組鏈接模式性能分析
3 結 語
為防止一些敏感信息被人偷窺,信息加密是一種較好的應對措施。但有些情形并不需要對大量明文進行加密,比如有一些表格,每張表格上只有手機號、身份證號和電子郵箱地址等內容是較為敏感的信息,其他內容無須加密。為了讓密文可方便地書寫在表格內,自然希望加密后的密文能夠保持明文的數據類型和長度。這就使得一些保留格式加密(Format Preserving Encryption,FPE)算法 應運而生。
此外,近幾年輕量級密碼學研究開始活躍,因為輕量級算法具有功率消耗少、內存占用少等特點,易被用于嵌入式系統中。有些輕量級分組密碼算法的分組長度只有 32 比特,當數據量較大時,數據中容易存在密文組重復。例如,當每一個密文組的出現概率均為 1/232 時,按照生日攻擊模型,只要有 77 164 個密文組,在這些密文組中兩兩比對,存在密文組重復的概率理論上可以大于 0.5。實際應用中,將長段明文按 32 比特分組后,各個明文組的出現機會一般是不均勻的,如果使用電子密本(Electronic Code Book,ECB)模式會導致各個密文組的出現概率也不均勻,更容易存在密文組重復。
分組較小的分組密碼算法和保留格式加密算法可能需要面對明文組(密文組)空間較小引發的安全隱患 。例如,用 ECB 模式加密長段報文后,由于分組小,也許在密文中可以找到相同的密文組,由此可推測明文段中相距某長度有重復明文,這有助于驗證或猜測某長段明文是否由某段密文譯出,或者猜測某段密文的底碼會不會是文字、數字流、某類圖片或文檔等,進而攻擊者能夠以一定的概率獲得部分明文組與密文組的對應。同樣,如果攻擊者對 A行密文猜設了明文,當無法為 B 行密文猜設明文時,若發現 B 行與 A 行有一個相同密文組,則有可能以已知 B 行一個明文組為線索,綜合場景信息和上下文關聯,而合理地猜出 B 行其他密文組的明文。
為了規避因明文組空間較小引發的這類安全問題,或者彌補分組密碼安全方面的設計缺陷,本文提出一種能增強算法安全性的工作模式——分組密碼隱秘密文分組鏈接模式。
1
隱秘密文分組鏈接模式
密文分組鏈接(Cipher Block Chaining,CBC)是當今廣泛應用的分組密碼工作模式,也是最受歡迎的分組密碼工作模式之一。對于一些較小分組的分組密碼算法或保留格式加密算法,理論上也可以使用 CBC 模式。不過,若出現了密文組碰撞,有可能會暴露明文格式特征,甚至導致分明文泄露。因此,當明密文空間較小時,尤其選用了保留格式加密算法時,使用 CBC 或者 ECB 工作模式可能存在安全缺陷。
為了防止攻擊者獲得明密對,沿用 CBC 模式的設計理念和指導思想,設計了一種類似于CBC 的專用工作模式,因前一個密文組以被加密形式參與其中,故稱其為分組密碼隱秘密文分組鏈接模式。
在介紹具體方法之前,先定義 3 個術語。
(1)字符模加:分組密碼的明文組一般由若干個字符構成,例如 AES 算法的明文組由 16個 ASCII 字符構成。保留格式加密算法的明文可以是若干個十進制符、十六進制符或小寫英文字母等。依據字符集合大小的不同,字符模加的模數是不一樣的,例如 ASCII 字符的字符相加是模 256 加,十進制符的字符相加是模 10 加,小寫英文字母的字符相加是模 26 加等。下文將這種字符集合有多大就模多少的加法稱為字符模加,用運算符
表示。例如,明文為十進制符,模數為
(無進位)。
(2)字符模減:字符模加的逆運算被稱為字符模減,用
表示。例如,模數為 10,
(無借位)。
(3)隱秘種子:用當前密鑰將加解密雙方約定的某特定數據組(系統參數)加密,產生的加密結果記作隱秘種子。它將頻繁地作用于每一個數據組的加密或解密。
1.1 隱秘密文分組鏈接模式加密方法
設明文字符集大小為 m,分組長度為 N 個字符。用 Enc(P,K) 表示使用密鑰 K,將明文組 P以 ECB 模式加密。對整個明文段的加密可以有初始向量,也可以不用初始向量。如圖 1 所示,隱秘密文分組鏈接模式加密方法如下:
(1)將明文數據按分組長度分成若干個組,記作
(2) 商 定 參 數 f 并計算隱秘種子 R, 即R=Enc( f,K),可默認 f=1。
(3)加密第一個明文組
時,由于未產生過密文組,默認前一個密文組為 IV,如果不使用 IV,則默認前一個密文組為“0”。先對
加 密, 即 得 到 中 間 變 量
或者
明文組
與 V 按位字符模加,得
然后將 P加密得到第一組密文,即
(4)對于第 i 個明文組
先計算中間變量
再 計 算


圖 1 隱秘密文分組鏈接模式加密
注 1:圖中
表示按位字符模加,“分組加密”是指調用分組算法的 ECB 模式。其中的參數 f 為加解密雙方事先協商為某固定常數(可以默認 f=1),或者選定某個類似于 Hash算法的函數,雙方以密鑰為輸入參數由函數算出 f 值。該 f 值不是 IV,約定了 f 值還可以照常使用 IV。該 f 值既可以是公開常數,也可以是密鑰的一部分。
注 2:為什么方案中采用字符模加,而不采用異或呢?這是因為本工作模式要順應保留格式加密。當保留格式加密的字符集大小為 10 或26 等非 2 的方冪數值時,不方便做異或運算。
1.2 隱秘密文分組鏈接模式解密過程
該工作模式的解密方法與加密方法相似,需要由相同的 f 參數計算出相同的隱秘種子 R。解密情形的步驟(1)至步驟(3)與上節的加密情形相同。步驟(4)相應地變為

這 里
表 示字符模減,是字符模加的逆運算),如圖 2 所示。

圖 2 隱秘密文分組鏈接模式解密
上述圖 1 和圖 2 均為明文段長度恰好是分組長度的整倍數情形。當明文段長度不是分組長度的整倍數時,會出現末尾組是一個不滿組。常見的不滿組加密處理方法包括協議填充和密文偷壘等多種方法。本工作模式采用弱處理法,即省去末尾組的分組迭代。也就是說,設分組長度為N個字符,末尾明文組
的字符個數為m,
若
對第
組密文
做加密運算,即計算中間變量
取 V 的左邊(高權位)m 個字符與
做字符模加,產生不滿密文組,即
(這里 MSC 為 Most Significant Character 的 縮 寫)。解密時依據末尾密文組是否滿組,并選擇合適的解密方式。
1.3 隱秘密文分組鏈接加密認證模式
與分組密碼工作模式 CBCMAC、XCBC、OCB 等類似,隱秘密文分組鏈接模式也可以用于產生具有完整性校驗用途的 MAC 碼,將上述模式改造成隱秘密文分組鏈接加密認證模式,如圖 3 所示。設分組長度為 N 個字符,加密方法如下文所述。
(1)將明文數據按分組長度分成若干個組,記作
(2)清空一批單元用于存放明文累加和,即令數據組 M=0。
(3) 商 定 參 數 f 并計算隱秘種子 R, 即R=Enc( f,K),可默認 f=1。
(4)約定密文組
若
是滿組,則對
計算:

圖 3 隱秘密文分組鏈接加密認證模式
①將明文組
以字符模加形式累加到 M 中,即
②計算
若
不 是 滿 組, 設
只 有 m 個 字 符,m
計算:
①將明文組 Pi 以字符模加形式累加到 M 中,即
②計算
對于第 n 組,可以形式化地在
右邊(低位)補 N-m 個“0”,并將補“0”后的
以字符模加形式累加到 M 中,即
不滿組密文為
(5)將數據組 M(明文累加和)加密。若
是滿組,則計算 Cn+1=Enc(Enc(Cn ◎ R,K) ◎ M,K)。若
不是滿組,
只有 m 個字符,則通過在
右 邊( 低 位) 補 N-m 個“0”, 然 后 計 算
除此之外,也可根據約定的認證標簽長度,只輸出
的左邊若干個字符。比如使用 AES或者 SM4 算法時,收發雙方可約定只輸出第n+1 組 16 個字節中的左邊 8 字節、10 字節或者12 字節等作為認證標簽。
解密方在解密過程中也要計算明文累加和M,解密完 n 組明文后將數據組 M 加密,將加密結果與認證標簽(第 n+1 密文組
)進行比對,檢驗密文是否被篡改。如果輸出整個第 n+1密文組作為認證標簽,則解密方也可以在解密認證標簽
后,比對明文累加和與解密出來的累加和是否相同。
依據約定的認證標簽長度和接收到的密文長度,解密之前需要注意密文倒數第二組是否為不滿組。由此可見,這種簡單的不滿組處理方法可能不適用于接收方在線同步解譯的場景中。
2
隱秘密文分組鏈接模式性能分析
本文給出的隱秘密文分組鏈接模式與傳統的分組密碼 CBC 模式有些相似。盡管 CBC 模式被許多人公認為“完美的分組密碼算法工作模式”,但它還是有一個小小的缺陷。例如,在不變更密鑰的情況下,若密文中出現了相同的密文組,不妨將第一份密文的第 i-1 個和第 i 個密文組分別記作
和
設
對應的明文組是
第二份密文的第 k-1 個和第 k 個密文組分別記作
設
對應的明文組是
那么,若出現了數據組
相同,則攻擊者可以知
其中符號“⊕”表示兩個數據組做異或。探知了兩明文組間的距差,可能會有助于攻擊者猜出明文組
以及進行更為深入的密碼分析和攻擊行為。
如果將隱秘種子 R 看作初始向量,隱秘密文分組鏈接模式可以描述為以 R 為初始向量將前一個密文組作類 CBC 模式加密,得到一組更加難以預測的實用初始向量或稱亂數(因為 R原本已經難以預測),又基于這個秘密的難以預測的實用初始向量,用類 CBC 模式將明文組加密為密文組。這里所述的類 CBC 模式與 CBC 模式略有不同,CBC 模式是前一組密文(或 IV)與明文組異或后做分組迭代,而類 CBC 模式是一組碼符與明文組字符模加后做分組迭代。
設想 Eve 偷偷地復制了 Alice 發給 Bob 的一段密文,試圖破解 Alice 與 Bob 之間的共享密鑰。正當 Eve 冥思苦想地猜測報文內容的時候,Bob公開了全部明文,Eve 欣喜若狂,因為這恰好是他想要的明文。可是,Eve 的笑容很快就會消失,因為明文段與密文段對準后,明文組與密文組之間沒有“確定的”對應關系,也不能用通常的相關分析方法求取密鑰。
隱秘密文分組鏈接模式的分組加密過程也可以描述為“產生亂數并對明文組做自同步序列加密,然后對已加密的數據組又做了一次 ECB模式分組加密”。破譯復合加密體制的方法通常是分割分析,各個擊破。Eve 將明文段與密文段對準后,如果他想攻擊序列密碼,需要擁有一段亂數序列,通過研究序列特征取得進展。可是,在實際中獲取不到亂數。如果 Eve 想攻擊分組密碼,需要有若干個明密對,通過研究分組迭代變換輸入與輸出之間的相關特性或函數關系求取密鑰。可是,取不到明密對,因為沒有辦法去除加在明文上的擾碼。結論:對這樣的分組序列混合加密體制不能有效地實施各個擊破攻擊。
對于分組密碼的輸出反饋(Output Feedback Mode,OFB)和計數器 CTR 等工作模式,IV 重用會導致信息泄露。而隱秘密文分組鏈接模式的 IV 重用不會對安全性產生影響,最壞情形的安全性仍優于 ECB 模式。
之所以說隱秘密文分組鏈接模式可以增強分組算法的安全強度,是因為它限制了攻擊者有效地獲取和形成數據條件。數據條件是密碼分析及密碼破譯的基本素材,也是攻擊成功的必備基礎。沒有適度的數據條件,就不能實施有效的攻擊。
隱秘密文分組鏈接模式能夠彌補分組密碼算法在安全性上存在的不足或缺陷。例如,用戶使用了一種有缺陷的分組密碼算法,比如使用只迭代 8 輪的 DES 算法,其中的 8 個 48 比特的輪密鑰是由 128 比特密鑰派生的(因 56 比特時存在密鑰窮盡攻擊,故密鑰加長到 128 比特)。因存在可供利用的高概率差分路徑,只要幾萬個已知明密對就可用差分攻擊方法求取密鑰。可是,如果用戶不使用 ECB 或 CBC 模式,而是用了本文的隱秘密文分組鏈接模式,攻擊者就不能做差分攻擊。每個密文組會與明文組、前一個密文組和隱秘因子三者相關。如果將不可見的隱秘因子看作長期不變的秘密常數或者密鑰的一部分,那么一個 64 比特密文組由明文組和前一個密文組共同確定。如果研究輸出比特與輸入比特間的相關關系,需要尋找一比特密文與 128 比特輸入狀態之間的相關性。因為前一個密文組與隱秘因子模加后被 8 輪 DES 加密,所以,相關程度與 16 輪 DES 相近,但相關關系利用會更加困難。如果報文充分長,在密文中按前一個密文組狀態歸類,在同一類內密文組完全由明文組確定,若某一類內能夠存在上萬個已知明文,則可用該類數據實施基于 8 輪DES 的差分攻擊。這樣優厚的數據條件與實際應用相差太遠。由此可見,如果選對了工作模式,有缺陷的密碼算法是可以使用的。
在信道上傳輸密文時,如果因干擾而發生了一比特誤碼,那么會導致當前密文組譯出錯誤明文組,且影響下一個密文組的正確解密。這與 CBC 模式的錯誤擴散率等同,即密文中的一比特錯誤通常會導致兩個明文組解譯出錯。
由于隱秘密文分組鏈接模式分組加密約等于進行了兩次普通分組加密迭代,因此,它的加解密效率大約相當于通常 CBC 模式的 1/2。對于許多實際應用情形,不會帶來較大影響。
在分組密碼算法和算法工作模式設計方面,算法安全與加解密效率通常是相互制約的兩個方面。對于分組長度較短的分組密碼算法和保留格式加密算法,可能需要彌補算法設計和使用上潛在的不足,當需要面對的安全問題比效率問題更為突出時,有必要采用隱秘密文分組鏈接工作模式。
3
結 語
自 20 世紀 80 年代以來,人們的密碼學認知水平有了長足進步。隨著國際上有關分組密碼和序列密碼標準征集活動的陸續開展,以及形形色色密碼學術會議的召開,使現代密碼算法設計和分析水平有了質的飛躍。因此,對于實際使用的分組密碼算法或序列密碼算法,唯密文攻擊 幾乎沒有成功希望。從密碼破譯所需要的數據角度來看,較為現實可行的分組密碼攻擊類型當屬已知明文攻擊和選擇明文攻擊,較為現實可行的序列密碼攻擊類型當屬基于較長亂數序列的密碼分析或攻擊。為了能夠形成攻擊所需要的數據條件,攻擊者必須設法搜索和猜設一定數量的明密對或者剝取一定長度的亂數序列。隱秘密文分組鏈接模式讓攻擊者難以獲取明密對,也難以獲取亂數,從而使得攻擊者既不能有效地實施分組密碼破譯,也不能有效地實施序列密碼破譯。
尚思卓越
Coremail郵件安全
信息安全與通信保密雜志社
信息安全與通信保密雜志社
一顆小胡椒
信息安全與通信保密雜志社
尚思卓越
看雪學苑
HACK學習呀
安全牛
一顆小胡椒