鄭東 秦寶東
當你在用手機與他人進行通信時,你是否擔心手機里的隱私數據被其他人知道?曾經有這樣一則報道:一名黑客來到一家咖啡館,在20分鐘之內,他獲取了所有人的出生地、就讀學校以及他們最近在Google搜索過的關鍵詞等信息。無獨有偶,2016年3月15日,央視“3·15晚會”曝光了公共WIFI存在的嚴重安全隱患。在晚會現場,設有免費的公共網絡信號,參加試驗的觀眾在連上無線網絡之后,打開自己常用的一兩個消費類軟件,比如打車、訂餐、購物類軟件,瀏覽一下過去的訂單和消費記錄。令人驚訝的一幕出現了—現場的大屏幕上顯示出了各種地址、姓名、身份證號、銀行卡號??吹酱祟悎蟮?,你是否有一種想趕快刪除手機里敏感的數據、圖片、聊天記錄等信息的沖動呢?
其實,除了將數據刪除掉,我們還有更聰明的方式來保護它,那就是數據加密!也許你已經聽說過很多數據加密方式,比如愷撒密碼和二戰(zhàn)時期的恩尼格瑪密碼等古典密碼,然而在破譯技術飛速發(fā)展的今天,這些古典密碼技術已經不再安全并使用了。那當今又流行什么樣的數據加密技術呢?
數據加密是信息安全的核心技術之一,它主要用于保障數據在不安全環(huán)境中的安全存儲和通信。通過數據加密,我們手機里的敏感信息將變成一堆亂碼。即使公布這堆亂碼,也只有你的那個TA才能讀懂它的真正含義。在這一過程中,敏感信息就是待加密的數據,專業(yè)術語稱為明文(Plaintext),被公布的亂碼稱為密文(Ciphertext),從明文到密文的變換過程稱為加密(Encryption),而從密文恢復出明文的過程稱為解密(Decryption)。顯然,加密過程必須是可逆的,即從密文一定能夠正確地恢復出明文。
從數學角度講,加密的本質是一種數學變換函數。它的定義域和值域則分別為數據加密中的明文集合和密文集合。無論我們要加密的信息是各種符號還是圖片,都可以用一串數字來表達這些信息。例如,變換函數f將每個大寫英文字母往后平移3位,即A替換為D,B替換為F,以此類推。假如你要傳遞信息“ILOVEYOU”,那么變換后的密文則為“LORYHBRX”。如果TA知道該函數的變換技巧,那么TA就很容易從密文中恢復出明文。如果用整數0~25分別表示26個大寫英文字母,這種變換函數可以簡單地寫成y=x+3。除了你,也許還有別人和TA通信,選擇的變換函數也大同小異,比如y=x+5。那么,這類函數可以統(tǒng)一寫成y=f(k,x)=x+k的形式,區(qū)別在于你們選擇的k不同。在專業(yè)術語里,k稱為密鑰。
總之,我們的密碼系統(tǒng)就是由這些明文、密文、加密算法、解密算法和密鑰五種元素組成的。那么,密碼系統(tǒng)的安全性依賴哪些元素呢?一種觀點是依賴加密/解密算法的保密性。一旦算法泄漏,就要重新設計算法,但這種成本是很高的。另一種觀點是依賴密鑰的保密性。一旦密鑰泄漏,僅需要更新一個密鑰。相比之下,在泄漏事件發(fā)生后,依賴密鑰保密性的系統(tǒng)付出的代價非常低。
依賴密鑰保密性的觀點稱為密碼學的柯克霍夫原則,它由奧古斯特·柯克霍夫在19世紀提出:即使密碼系統(tǒng)的任何細節(jié)已為人悉知,只要密鑰未泄漏,它也應是安全的。依據柯克霍夫原則,大多數民用加密系統(tǒng)都使用公開的算法。但相對地,用于政府或軍事機密的算法還是保密的。
根據加密算法和解密算法所使用的密鑰是否相同、加密過程和解密過程能否相互推出,數據加密算法可以分為對稱加密和非對稱加密兩類。
對稱加密,又稱私鑰加密,是指數據發(fā)送方和接收方使用同一個密鑰去加密數據。一個對稱加密系統(tǒng)就好比一個保險柜。相同的保險柜在市場上到處都有,但是只有你擁有這個柜子的鑰匙。這里的保險柜(類似密碼算法)是公開的,而保險柜的鑰匙(類似密鑰)是保密的。要將你的money(類似明文)存入保險柜,你必須用鑰匙打開保險柜,將money放進去,然后鎖上保險柜(類似加密過程)。如果要取出你的money,你必須再次用同一把鑰匙打開保險柜(類似解密過程)。
非對稱加密,又稱公鑰加密,使用兩種不同的密鑰分別完成加密和解密操作并且加密所使用的密鑰是公開的。生活中投遞信件的郵筒就可以看作是一種非對稱加密系統(tǒng)。任何人想郵寄一封信,都可以通過郵筒預留的小窗口將信投入,但是只有郵遞員(TA有郵筒的鑰匙)可以打開郵筒看到郵件。
與非對稱加密相比,對稱加密的最大優(yōu)勢是加密/解密速度非???,適合對大數據量進行加密。例如,Windows 7操作系統(tǒng)的硬盤數據加密保護工具BitLocker就是使用一種對稱加密算法對數據進行直接加密。
我們知道的古典加密算法都可以看作是一種對稱加密系統(tǒng)。使用它給你的TA傳遞悄悄話也是非常有意思的。但是,用它來保護你的重要數據,比如銀行卡密碼,卻是非常危險的。那么,什么樣的密碼系統(tǒng)才是安全的呢?一般來說,當破譯密鑰的代價遠遠超出密文信息的價值或生命周期時,該密碼系統(tǒng)是安全的。當前,設計對稱加密系統(tǒng)通常遵循香農提出的兩種基本方法:混淆和擴散。
香農認為,在一個理想的密碼系統(tǒng)中,密文的所有統(tǒng)計特性都應與使用的密鑰獨立?;煜追Q擾亂,好比數學題老師總是喜歡出一些帶有陷阱的題目,使得粗心的你很容易得出錯誤的結果。在密碼學中,混淆是指讓密文和密鑰之間的關系變得非常復雜,以至于敵手無法推測出密鑰。擴散就好比一種液體融入到另一種液體中一樣,目的是讓明文的每一比特(注:比特是一種計算機信息量的度量單位,由0和1組成,為信息量的最小單位)能夠影響到密文的許多比特的取值。當今的對稱加密算法就是通過反復利用混淆和擴散這兩種方法設計出來的,從而使得算法的安全性堅不可破。
在計算機中,無論是明文還是密文都是以二進制即比特形式存儲的。由于計算機一次僅能處理有限長度的數據,設計一個能夠接受固定長度的明文進行加密的密碼算法更具有實際價值。由此,便有了分組密碼的概念。分組密碼的思想是將明文按指定長度分割成多個塊,對每一塊分別進行加密,然后再把密文連起來。如果分割過程中最后一塊達不到指定長度,就要對其按照一定的規(guī)則進行填充。
目前,多數對稱加密算法都是分組加密的,并且分組加密的明文和密文長度是一致的。數據加密的分組長度要足夠大,否則由于從明文到密文變換的方式有限,很容易被破解。例如,假設長度為1比特,那么對于任意固定的密鑰,明文0和1變換后的結果要么分別是0和1,要么分別是1和0。
2012年3月21日,國家密碼管理局發(fā)布了一種自主設計的商用分組密碼算法—SM4算法。商用密碼算法主要用于對不涉及國家秘密但又具有敏感性的內部信息、行政事務信息、經濟信息等進行加密保護。對于SM4算法而言,它主要用于無線局域網絡和可信計算系統(tǒng)的網絡數據加密保護,同時也可用于其他環(huán)境下的存儲數據或文件的加密保護,是中國制定WAP標準的組成部分。
要知道,在國際上存在著多種分組密碼算法標準,包括DES算法、AES算法、IDEA算法等。而此次中國自主設計密碼算法標準對于擺脫國外技術和產品的過度依賴、建設行業(yè)網絡安全環(huán)境、增強中國行業(yè)信息系統(tǒng)的“安全自主可控”具有重要的意義和價值。
在實際應用中,對稱密碼算法要具有足夠安全強度,基本條件是要具備足夠的密鑰長度。SM4算法的密鑰長度為128比特,在安全性上要高于密鑰長度僅有56比特的DES算法。經過理論分析和實踐檢驗,SM4算法能夠抵抗針對分組密碼算法的各種攻擊方法,包括窮舉搜索攻擊等,為中國核心金融領域的數據存儲和信息通信提供強有力的安全保障。