系統(tǒng)敏感配置信息MEA加密算法

結(jié)合廣電系統(tǒng)安全播出的實(shí)際需求,探索了多種加密算法,在此基礎(chǔ)上設(shè)計(jì)了多重加密算法——MEA算法。

一、配置信息加密算法的選擇

配置信息中數(shù)據(jù)的加密的粒度一般有文件級(jí)(file)、段落級(jí)(section)、關(guān)鍵字級(jí)(keyword)和數(shù)值級(jí)(value)四種。對(duì)于配置信息的加密而言,加密粒度越小,則適用范圍越廣。就目前的應(yīng)用而言,以關(guān)鍵字級(jí)和數(shù)值級(jí)為加密粒度居多。

選擇適于配置信息加密的加密算法要滿足以下幾點(diǎn)要求:

(1)由于配置文件中信息保存的時(shí)限相對(duì)較長(zhǎng),配置信息加密對(duì)加密算法強(qiáng)度的要求足第一位的。

(2)由于應(yīng)用程序需要頻繁提取配置文件中的信息,因此對(duì)加密算法的加解密效率的要求較高,不能引起應(yīng)用程序的性能的大幅下降。

(3)加密后的內(nèi)容的解密,必須要和實(shí)現(xiàn)加密的計(jì)算機(jī)的特定標(biāo)識(shí),如MAC或CPU序列號(hào)實(shí)現(xiàn)綁定,使配置文件不能在另外一臺(tái)計(jì)算機(jī)上被解密。

(4)由于時(shí)限較長(zhǎng),密鑰管理機(jī)制需要更加靈活和堅(jiān)固。

(5)由于配置文件都是和特定系統(tǒng)部署在一臺(tái)機(jī)器上的,因而密文的解密也被限定在該機(jī)器上,以確保安全性。因而密文的長(zhǎng)度不能和明文長(zhǎng)度一致,以增加破譯難度。同時(shí)對(duì)于在該機(jī)器上運(yùn)行的窮舉攻擊程序的破譯具有一定的防護(hù)功能。

(6)由于配置信息可能涉及到中文或大量特殊字符,因而加密算法必須要能很好實(shí)現(xiàn)對(duì)這類字符的加密和解密。

通過(guò)以上分析,配置信息加密采用基于對(duì)稱密鑰的多重加密算法比較適宜。由于配置信息的長(zhǎng)度具有不確定性,系統(tǒng)的調(diào)用又比較頻繁。所以多重加密算法的重?cái)?shù)不應(yīng)當(dāng)多于3次,否則會(huì)增加解密的系統(tǒng)開(kāi)銷,降低系統(tǒng)性能。由于DES算法的密鑰長(zhǎng)度固定,無(wú)法擴(kuò)展,且被多次攻破,安全性不高;AES算法需要128位分組,因而解密的效率比較慢。MD5和SHA都是單向加密算法,沒(méi)有解密算法,不適合配置信息的加密aBASE64算法的實(shí)現(xiàn)比較簡(jiǎn)單,而且可以處理中文和幾乎所有特殊字符。在電子郵件處理中有廣泛應(yīng)用。由于其適用范圍廣,解密速度快,因而適合被用來(lái)作為設(shè)計(jì)配置信息加密的基礎(chǔ)算法。但是由于該算法的加密強(qiáng)度有限,缺乏密鑰保護(hù)機(jī)制,因而需要考慮在該算法加密前和加密后均增加一重基于密鑰的加密算法,從而形成適合敏感配置信息加密的新加密算法——多重加密算法 ( Multiple EncryptionAlgorithms,簡(jiǎn)稱MEA算法)。

二、MEA加密算法

1、多重加密算法的參數(shù)和運(yùn)算

MEA算法是以字為基本信息單位實(shí)現(xiàn)所有操作和運(yùn)算的。每個(gè)字為p比特,在此算法的第一步取p=8,它是可變的,例如第二步會(huì)自動(dòng)換算為p=6或240MEA算法有雙字的明文輸入和不確定的密文輸出分組大小。

MEA算法有前后兩個(gè)密鑰轉(zhuǎn)換表,分別用S1和S2表示。Sl密鑰表用于BASE64轉(zhuǎn)換前,該密鑰表只能轉(zhuǎn)換標(biāo)準(zhǔn)的ASCII字符。S1的大小依賴于轉(zhuǎn)換輪次仃和需要加密的字符串中ASCII字符的數(shù)量1,S1有v(logu-2)字。BASE64算法后,非ASCII字符也得到了處理,應(yīng)用了S2密鑰表進(jìn)行了再次轉(zhuǎn)換。

S2的大小依賴于加密字符串的長(zhǎng)度Ma S2有(65+26)(65-M%26)字。

2、加密算法介紹

MEA算法的明文輸入包含兩個(gè)字,記為p和正算法用到一個(gè)包含v(logcr-2)字前置密鑰表,由用戶提供的密鑰只得到。算法還將依據(jù)前一個(gè)密鑰的產(chǎn)生結(jié)果和系統(tǒng)特征值綁定而產(chǎn)生一個(gè)有( 65+M/26)(65-Mo-/026)字的后置密鑰表S2[0.…,(M%65)]。算法由4部分組成:前置密鑰擴(kuò)展算法、后置密鑰綁定算法、加密算法和解密算法。

(1)前置密鑰擴(kuò)展

前置密鑰需要用戶設(shè)置的常量值X;和系統(tǒng)參數(shù)常量值Yi:
1

其中,e=2.718281828459.-(自然對(duì)數(shù)的底),(I>=1.618033988749-,-(黃金分割率)。Exp(X)小于等于用戶設(shè)置的加密的常量密鑰數(shù)值XoX的取值在6到II位之間,不超過(guò)大腦的記憶邊界?!剖窍到y(tǒng)可以獲取到的系統(tǒng)參數(shù)值的有效疊加,系統(tǒng)的參數(shù)有硬盤(pán)的MAC數(shù)值,網(wǎng)卡的MAC數(shù)值和CPU的MAC數(shù)值等。

前置密鑰的混合算法,通過(guò)融合系統(tǒng)參數(shù)的混淆運(yùn)算,使不超出記憶邊界的數(shù)值變換成一個(gè)大容量的密鑰數(shù)值,參與后續(xù)的加密。前置擴(kuò)展函數(shù)具有的單向性特征:從P不能得到Y(jié)。

(2)后置密鑰綁定

前置密鑰函數(shù)用于在BASE64加密前,用于給需要加密的內(nèi)容入一個(gè)高強(qiáng)度但不超過(guò)大腦記憶邊界的密鑰。后置密鑰綁定,則是BASE64加密后,再次提取系統(tǒng)的硬件值和系統(tǒng)發(fā)生的時(shí)間戳,放置到隱蔽的系統(tǒng)文件夾以二進(jìn)制文件保存。該密鑰則可稱為后置密鑰。后置密鑰需要兩個(gè)系統(tǒng)值,常量是系統(tǒng)的硬件值,一般取網(wǎng)卡或硬盤(pán)的MAC值的前3位,標(biāo)記為∞;變量是系統(tǒng)該點(diǎn)的時(shí)間戳,標(biāo)記為u。

M代表需要處理的BASE64加密后的字符串的長(zhǎng)度。密鑰是循環(huán)變化逐次綁定到字符串中的每個(gè)字符。

(3)加密算法(Encrypt)

假設(shè)加密原文放在寄存器組A中,密鑰房子寄存器組B中。并且考慮了密鑰擴(kuò)展算法和移位運(yùn)算的執(zhí)行。算法的加密過(guò)程如圖1所示。

系統(tǒng)敏感配置信息MEA加密算法

(4)解密算法(Decrypt)

解密函數(shù)是加密算法逆向過(guò)程。

3、加密算法安全性分析

對(duì)MEA算法的安全性作了一定的分析,主要測(cè)試了p=24的情況。

首先測(cè)試了輸入的加密原文和輸出的密文之間的相關(guān)性,發(fā)現(xiàn)當(dāng)輪數(shù)越多,其相關(guān)性越小,密文長(zhǎng)度比原文長(zhǎng)度明顯增加。當(dāng)達(dá)到5輪以后,密文長(zhǎng)度的增加明顯變小。因而輪數(shù)的取值建議不要超過(guò)5輪,則加密效果最佳。

其次測(cè)試了加密原文與循環(huán)移位的關(guān)系,就是觀察加密原文做很小的改動(dòng),加密結(jié)果是否有很大的移位變幻。發(fā)現(xiàn)到第3輪時(shí),原文很小的改動(dòng),就會(huì)引起密文的長(zhǎng)度和結(jié)果有很大的移位變幻,且變幻沒(méi)有明顯的規(guī)律可以尋找。加密原文可以是任何字符,包括中文字符,但是加密后的密文經(jīng)過(guò)多輪加密后,則全部是大寫(xiě)的拉丁字母呈現(xiàn),且排列沒(méi)有規(guī)律。

最后測(cè)試了密文對(duì)抗窮舉密鑰軟件的飽和攻擊能力,由于密鑰和加密的計(jì)算機(jī)硬件參數(shù)綁定,則密文在其他計(jì)算機(jī)上,即使輸入正確密鑰,也只能還原成亂碼,無(wú)法有效破解。因而特別適合對(duì)于系統(tǒng)配置文件中的敏感信息的加密。在本機(jī)上的窮舉測(cè)試,對(duì)于2輪的加密結(jié)果,軟件連續(xù)運(yùn)行了4小時(shí),只還原出不到6%的原文。因而在實(shí)際運(yùn)行中,建議加密輪數(shù)設(shè)置不少于3輪。則配合完善的巡檢制度和服務(wù)器系統(tǒng)的防火墻系統(tǒng),可以在一個(gè)工作日周期內(nèi)為運(yùn)行在服務(wù)器本地的黑客攻擊軟件的窮舉破解行為的發(fā)現(xiàn)和阻止贏得時(shí)間。從而提高系統(tǒng)的安全級(jí)別。

另外該算法的解密速度非常快,對(duì)系統(tǒng)讀取配置文件中的敏感的加密信息的延時(shí)在微秒級(jí)別,不會(huì)影響原來(lái)系統(tǒng)的正常運(yùn)行。

小知識(shí)之CPU

中央處理器(CPU,Central Processing Unit)是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋計(jì)算機(jī)指令以及處理計(jì)算機(jī)軟件中的數(shù)據(jù)。