李京倍
?
加鹽隨機亂序建造密鑰加密組保護數(shù)據(jù)的研究
李京倍1,2
(1.華僑大學 計算機科學與技術(shù)學院,福建 泉州 362021;2.泉州財貿(mào)職業(yè)技術(shù)學校,福建 泉州 362000)
闡述了加鹽密鑰加密現(xiàn)狀和隨機亂序建造密鑰的作用以及流程方法。探討加密、解密流程設(shè)計以確保數(shù)據(jù)安全的設(shè)想,探索一種加鹽隨機亂序建造密鑰加密數(shù)據(jù),并結(jié)合文字置換應對窮舉密鑰攻擊,設(shè)計并構(gòu)建應用于java的加密軟件,以應對不斷提高的個人商業(yè)信息隱私要求,保證重要文件信息不被泄露。
數(shù)據(jù)保護;密鑰加密組;文字置換;加鹽隨機亂序
隨著人類社會進入信息時代,全球信息化進程加快,計算機、因特網(wǎng)、小型網(wǎng)絡(luò)設(shè)備(如:手機)在信息全球化中扮演著非常重要的角色。通信、計算機技術(shù)等高科技手段在社會各個方面廣泛運用,網(wǎng)絡(luò)支付迅速發(fā)展,給人們帶來方便的同時,利用信息網(wǎng)絡(luò)技術(shù)犯罪也在迅速增長。曾幾何時,銀行存折和信用卡明明在自己手里,計算機操作密碼慎之又慎,賬戶上的存款卻不翼而飛;自己公司的機密信息經(jīng)過加密,卻被對手公司成功竊取。這些情況有的是因為被木馬竊取密碼進而被盜,而還有一些則是通過破解密鑰的方式直接暴力破解。為此,眾多學者設(shè)計了各種加密算法來應對。從早期的DES,到RSA(Ron Rivest,Adi Shamir,Len Adleman)[1],再到ECC(Elliptic Curves Cryptography,橢圓曲線密碼編碼學)[2],加密算法也由此變得更加復雜,除了不斷加強算法的復雜性,有沒有別的方法增強信息的保密性?這里筆者考慮用文字置換、加鹽隨機亂序建造密鑰加密組保護真實數(shù)據(jù)。
加鹽加密法在國外很早就有使用過,UNIX系統(tǒng)的口令加密就是先使用密碼進行加密,然后將結(jié)果與加鹽隨機值結(jié)合在一起,再進行24次DES加密,最后得到密鑰。同時,由于鹽和密碼的無關(guān)性,它的生成方式也是多種多樣的,有的使用md5.,有的使用hash,有的使用隨機數(shù)。最后,鹽的存放位置也是各不相同,有的統(tǒng)一存放在機器的存儲器上,有的存在文件中,儲存位置靈活多變。因此,大家公認使用加鹽的方式進行加密使其自身被破解的抵抗力得到了大大加強。加鹽算法發(fā)展至今,有的甚至使用迭代加鹽的方式去防止對方破解。
在隨機數(shù)的生成上,各種算法也有了長足的進步,不同于以前需要多個參數(shù)才能使生成的隨機數(shù)真正隨機,現(xiàn)在很多算法都可以在參數(shù)差異極小的情況下生成相關(guān)度極小的隨機數(shù)組。如使用混沌算法[3]的混沌Hash函數(shù)構(gòu)造算法[4]就可以由最初極小參數(shù)的改變而使得結(jié)果產(chǎn)生極大的差異性。通過這些隨機數(shù)組的生成,各種密鑰的生成也越來越難以被人破解,使加密算法有了長足的進步。
2.2.1 隨機亂序
這里的目的是通過隨機亂序方法來建立作為密鑰的隨機數(shù)組。要建立的隨機數(shù)組要求具有真隨機數(shù)[5]的某些性質(zhì),例如數(shù)組元素之間沒有任何關(guān)系,每個元素都是獨立的存在,并且無法由前面的數(shù)據(jù)推算后面的數(shù)據(jù),沒有周期等,但它們又是可以控制的可以重復產(chǎn)生,目的是用來做加密文件的密鑰,所以它的產(chǎn)生要和用戶密碼密切關(guān)聯(lián)。
2.2.2 加鹽
加鹽法的最大特色是增加加密強度,它是一種動態(tài)方法。所謂鹽也是一種隨機數(shù),最常見的鹽所用的隨機數(shù)一般是由程序讀取時間流而得到數(shù)值,然后以數(shù)值做種子啟用隨機函數(shù)得到多個隨機數(shù)作為鹽。得到鹽后,讓鹽和用戶密碼共同決定函數(shù)種子的數(shù)值,這樣可以保證同一個密碼對同一個文件進行加密,得到的加密結(jié)果也不相同,防止有人用同一個文件相同密碼加密分析破解加密算法。當然,使用這種方法,鹽是要保存下來的。這里可以選擇將其保存在加密后的文件里,也可以保存在系統(tǒng)中的別的位置。
2.2.3 文字置換的探索
很多情況下,有許多人會采用暴力破解密鑰的方法對數(shù)據(jù)進行破解,當然,這種破解可能帶來兩種截然不同的結(jié)果,比如明文是“確定”,破解后的結(jié)果為“否定”,僅僅是由于二者用的密碼不同。由于正確的使用者知道自己的密碼是什么,所以解密后仍能得到正確的信息,而破解者由于無法確定哪個是正確的密碼,所以他仍然面臨兩種選擇,這樣至少有50%的機率保護自己的商業(yè)秘密。這個可以嘗試一下,當然由于概率、語法等原因,結(jié)果可能不盡如人意,但這給我們提供了一個思路。如果說我們由密碼來設(shè)計一個算法,用以控制我們對上述詞語的修改,即使最后密鑰被人破解了,但由于密碼修改詞語的算法沒有被破解,仍可以一定程度上彌補明文被破解的后果。
首先設(shè)計加密流程,流程如圖1所示。
(1) 要求用戶選擇好要加密的文件并輸入密碼;
(2) 為明文添加校驗碼,方便解密后校驗數(shù)據(jù);
(3) 用隨機信息生成鹽,這里可以選擇時間,隨機數(shù)甚至機器串號等經(jīng)過一系列隨機函數(shù)計算后得到的一長串數(shù)字,一般要求長度不得小于密碼的長度;
(4) 對明文使用鹽進行文字置換,置換可基于一個加密軟件默認數(shù)據(jù)表,也可生成表附在明文后;
(5) 將鹽和密碼一起作為參數(shù)通過計算得到密鑰;
(6) 用密鑰對添加了校驗碼的明文進行加密;
(7) 將鹽進行一次可逆變換,算法可以由密碼來決定,這樣可以使鹽不被人直接獲??;
(8) 由密碼計算出一個位置,在加密好的信息中將這個位置放入變換好的鹽(不一定連續(xù)放入,如跳位,多區(qū)域等),最后得到密文。
圖1 加密流程示意圖
設(shè)計解密流程,流程如圖2所示。
圖2 解密流程示意圖
(1) 要求用戶選擇好要解密的文件并輸入密碼;
(2) 用密碼計算出鹽的變換參數(shù)、文件插入位置;
(3) 輸入密文,從中找出并運算得到鹽并將鹽從密文中去除;
(4) 將鹽和密碼一起作為參數(shù)通過計算得到密鑰;
(5) 用密鑰對去除了鹽的密文進行解密;
(6) 解密后的明文信息進行反轉(zhuǎn)換修改,得到明文;
(7) 使用解密后的校驗碼校驗明文無誤后,輸出結(jié)果。
為了實現(xiàn)文字置換加密,最簡單的實現(xiàn)方法就是加密時,將明文中的“不是”改成“是”,“yes”改成“no”等等,而這個改正則由密碼或者是鹽控制什么時候改,什么時候不改。在上述加密過程中,由于是對明文進行直接修改,所以即使對方使用暴力破解,破解后的兩種明文進行校驗的結(jié)果仍然是正確的。當然,這種應該有一定的局限性,對于簡單的回答“是”“否”的應答加密效果好,但對于“你是不是想要去學?!边@類的否定+否定的語句就會對最后的結(jié)果造成干擾,從而泄露這方面的算法。因此,這需要對語言方面的數(shù)據(jù)庫進行完善,并可能對文字的語法進行一定的限定才能較好的解決這個問題,當然這帶來的可能是運算量大大增加(如反問句,漢語,英語等等)。如:“你是不是想要去學校”這個例子,對于這樣的疑問句,不對其進行置換對加密結(jié)果并無影響。實際上,筆者認為用這種方法對帶數(shù)字的語句加密會更加簡單易行,如“早上10點到香港”“5月7日去北京”這樣帶數(shù)字的語句,可以使用密碼作為算法,對數(shù)字進行改變,如改成“早上11點到香港”“6月8日去北京”,這種改變對于實驗室的關(guān)鍵數(shù)據(jù)保護是可以起到良好的效果的,就算算法被公布,但由于上述破解的是密鑰而非密碼,破解人員仍然不知道原數(shù)據(jù)是多少。
3.4.1 密鑰長度
在上述加密解密過程中,實際的最后參與者都是用密鑰進行加密,不過由于有了鹽的不確定性(位置不確定,無法將其與加密后的文件正確分離,長度不定),所以安全性仍是有一定保證的,當然這里的安全性很大部分也是由密鑰的長度決定的。由于考慮到一般通訊的速度要求,所以密鑰長度仍要取一個適量的范圍。
3.4.2 明文與鹽的長度
首先,由于明文的不確定性,造成的結(jié)果可能是明文長度小于鹽的長度,這種情況下,可能就會有一定的安全隱患。為了防止加密算法被破解,所以很可能會在加密前將明文擴展到一個比較合適的長度[6]。同樣,受限于機器的運算速度及存儲狀況,對于長明文可能也要采用分組加密的方式進行加密[7]。當然,這種時候最好能采用每一個分組都用不同的鹽的方法來保證密鑰不被破解。
3.4.3 鹽的位置
由于鹽的位置是由密碼得到的,所以如果有人用同一密碼對相同文件進行加密,鹽的位置都在同一位置,這可能使得有心人得到鹽并將鹽從加密后的文件中取出[8]。所以為了安全起見,未來可能會對其算法進行改進。如:除了密碼之外,將計算機的串號,內(nèi)存的大小等作為參數(shù),這樣可以加強鹽的防范,保證即時有人用同一密碼對相同文件進行加密,得到了鹽,卻無從推導出密碼和鹽位置間的關(guān)系。當然,還可以專門將鹽放置在系統(tǒng)中的某個位置,不過,這種方法容易被人從進程中發(fā)現(xiàn)調(diào)用的文件位置,從而使鹽被發(fā)現(xiàn)。
一個好的算法和思路是需要事實驗證的。同時為了更好的在多平臺上使用,程序使用java編寫,然后大批量輸入數(shù)據(jù)和密碼讓其運行加密來實驗其算法的可靠性和實用性。由于用文字置換加密的文件主要是應對于文字,所以驗證的時候也應以文檔為主進行驗證,保證其實用性。從實驗結(jié)果看,這種加密方法對有數(shù)字的語句加密效果最好,對選擇以及肯定否定的回答加密效果較好。
本設(shè)計力圖探索一種加鹽隨機亂序建造密鑰加密數(shù)據(jù),并結(jié)合文字置換應對窮舉密鑰攻擊,設(shè)計并構(gòu)建應用于java的加密軟件,主要應對不斷提高的個人商業(yè)信息隱私要求,保證重要文件信息不被泄露。相較于傳統(tǒng)的加密方式用了加鹽的方法,并讓鹽的長度不固定,由多組函數(shù)隨機生成,使得用同一密鑰對相同文件加密后的結(jié)果會每次都不相同,保證了安全性;同時對明文使用文字置換的欺騙,保證消息泄露后也能取得不錯的保密措施。完成基本的加密過程后,將其用于各種支持java的設(shè)備進行文字通訊傳輸,達到加密通訊的效果。
[1] Agrawal S, Krishnan V, Haritsa J R. On Addressing Efficiency Concerns in Privacy-preserving Mining[C]//Proc. of the 9th Int'l Conf. on Database Systems for Advanced Applieations. Jeju, Island: [s. n.],2004.
[2] 韋鵬程,等.一種多級混沌圖像加密算法研究[J].計算機科學,2005,32(7):172-175.
[3] Fridrich J. Symmetric ciphers based on two-dimensional chaotic maps[J].Iht J Bifurcat Chaos,1998,8(6):1259~1284.
[4] 姜楠,等.一種基于混沌系統(tǒng)的密鑰生成方法[J].東北師大學報,2008,40(4):43-46.
[5] 張偉,等.一種基于符號動力學的偽隨機序列發(fā)生器設(shè)計方法[J].計算機科學,2005,32(6):140-141.
[6] 徐子杰.多層加密算法的設(shè)計與分析[J].計算機工程與應用,2005,41(24):36-37.
[7] 馮登國,吳文玲.分組密碼的設(shè)計與分析[M].北京:清華大學出版社,2000.
[8] 胡志遠.口令破解與加密技術(shù)[M].北京:機械工業(yè)出版社,2003.
The Research of Data Protection by Salt-contained Random Out-of-order Build-key Encryption Groups
LI Jing-bei1,2
(1.College of Computer Science & Technology, Huaqiao University. Quanzhou, Fujian 362021, China;2.Finance and Accounting College of Quanzhou,Quanzhou, Fujian 362000, China)
To expound not only the present situation of salt-contained key encryption but also the functions and the process methods of random out-of-order build-key. Explored encryption and decryption process design to ensure the idea of data security. Explored a kind of encrypted data built by salt-contained random out-of-order,and combined with text replacement deal with exhaustive key attack, design and build encryption software applied in Java, in respond to continuously improvement of personal business information privacy requirements, ensure that the important file information could not be revealed.
data protection; key encryption groups; text replacement; salt-contained random out-of-order
2011-03-10
李京倍(1984-),男,福建泉州人,助理講師,華僑大學在職研究生,研究方向:計算機數(shù)據(jù)傳輸與加密。
TP309.7
A
1673-1417(2011)02-0030-05
(責任編輯:季平)