王朝陽 張遠(yuǎn)
摘 要:文章通過對比英文字符和漢字之間的差異,提出了一種可用于對漢字等表意文字進(jìn)行加密的單表代替密碼技術(shù)。該技術(shù)通過使用雙方約定的文字信息構(gòu)成私有字庫,同時通過漢字補(bǔ)充形成總字庫;在使用時,將明文使用構(gòu)成的總字庫進(jìn)行Caesar加密,形成密文,為了保證加密過程的安全性,需要實(shí)時地更新私有字庫的文字信息。采用窮舉攻擊、單字頻率攻擊、雙字組合頻率攻擊對單表代替密碼技術(shù)的加密過程進(jìn)行安全性分析,經(jīng)驗(yàn)證,在三種攻擊條件下該技術(shù)均能保證文字信息的安全。針對最新提出的特殊字攻擊方法,文章提出了避免攻擊的辦法。
關(guān)鍵詞:漢字;表意文字;信息加密;實(shí)時動態(tài);特殊字攻擊
1 文字的分類與研究現(xiàn)狀
1.1 拼音文字與表意文字
如通過類似于拼音一樣的方法,將字母組合在一起,形成單詞,然后再通過空格等間隔符號構(gòu)成一句話,這樣的文字稱作拼音文字;像漢字、彝文字等,用象征性書寫符號記錄詞或詞素的文字,稱作表意文字。
這兩種文字形式有很大的不同,拼音文字基本組成的字符元素簡單,如英文僅有26個英文字母;而表意文字卻不一樣,他們的基本組成復(fù)雜,如果將漢字每一個字看作基本字符元素,那么表意文字的基本字符元素的集合相對于拼音文字會龐大很多,這也就導(dǎo)致了兩種文字在加密方面產(chǎn)生了差異。
時至今日,我國的漢字、彝文字是世界上為數(shù)不多仍在使用的表意文字,這也就導(dǎo)致了較難從其他國家借鑒經(jīng)驗(yàn)來研究表意文字的加密。
1.2 漢字的特點(diǎn)及其加密研究現(xiàn)狀
在《中華大字典》中收錄了48000左右漢字[1],根據(jù)《現(xiàn)代漢語常用字表》的聯(lián)合通知,表中的3500個字在語料(約200萬字的《人民日報》等大眾讀物)中的覆蓋率達(dá)到99.48%[2]。如果再統(tǒng)計常用詞組、短語及專業(yè)詞匯,約有一百萬左右。
在對于漢字加密的研究中,大部分是基于中文的GB碼或Unicode碼進(jìn)行的[3],甚至還有一些僅僅是在Java、ASP或者VB中的簡單應(yīng)用。結(jié)合漢字本身特點(diǎn)的研究有:胡善岳等提出根據(jù)整數(shù)串代表百萬個常用漢字、詞語,在整數(shù)串中加入統(tǒng)計頻數(shù)和所在的不同表,構(gòu)成9位整數(shù)串,然后結(jié)合DES和RSA算法進(jìn)行加密[1];趙杰通過考慮漢字的筆順、筆畫、字根和字形等,并進(jìn)行拆分編碼,然后結(jié)合一系列常用的加密方法分析[3]。
2 文字加密所用代替技術(shù)
代替技術(shù)是將明文的字母或者文字用其他的字母、文字、數(shù)字、符號表示的方法。它屬于古典加密方法,是一種對稱密碼模型,包含Caesar密碼、單表代換密碼、Playfair密碼、Hill密碼、多表代替密碼(Vigenere密碼、Vernam密碼)、一次一密,等。
進(jìn)行加密的過程中使用Caesar密碼、單表代換密碼,在英文加密(可以代表拼音文字)過程中安全性不能達(dá)到很高的保證。Caesar密碼加密的文字可以使用窮舉法攻擊;對于單表代換密碼加密的文字使用密碼分析學(xué)的內(nèi)容——通過分析其出現(xiàn)頻率、統(tǒng)計雙字母混合、單詞聯(lián)想可以破解。[4]由于漢字作為表意文字的不同特性,在這些方面很難破解。
2.1 Caesar密碼技術(shù)
Caesar密碼技術(shù)應(yīng)用于英文中,是通過對字母表中的每個字母用它之后的第k個字母來代替。
相對于3500個常用漢字的加密,首先根據(jù)這些漢字在《現(xiàn)代漢語常用字表》中的順序,依次等價于一個數(shù)值。在這里僅用3500個常用字進(jìn)行算法說明,在實(shí)際應(yīng)用中,存在非常用字,會大于3500。在這里排列的可能性只有3499種,很容易進(jìn)行窮舉攻擊,不過這是作為文章實(shí)際加密算法中最后使用,不存在窮舉攻擊后就得到明文的情況。
2.2 單表代替密碼技術(shù)
如果上面所有漢字任意代替,密鑰空間將會急劇增加。一般,具有N個元素的集合會有N!種置換。由于消息的加密對應(yīng)有一個漢字映射表,所以稱作單表代替密碼。3500個漢字進(jìn)行任意置換,那么排列的方法就有3500!種可能的密鑰。
3 表意文字具體加密實(shí)施
在實(shí)際的應(yīng)用過程中,整個加密的流程圖如圖1所示,具體過程如下。
3.1 生成私密字庫
這一步相當(dāng)于單表代替密碼中形成單表的過程,在這里需要一些加密者和接收用戶約定的文章或者文字內(nèi)容,將這些內(nèi)容中的不重復(fù)的漢字依次取出,構(gòu)成私有字庫。過程中會有很大可能出現(xiàn)非常用漢字,這也保證了更好的信息加密效果。
在構(gòu)成私有字庫的時候,可以約定這些文字來自于發(fā)送密文當(dāng)天某報刊網(wǎng)站的第一個版面的文字等。這就達(dá)到了實(shí)時動態(tài)效果,使得攻擊者幾乎不可能找到形成單表代替密碼中的單表,也就是如果破解相當(dāng)于需要窮盡破解。
3.2 生成私有補(bǔ)充字庫
在我們生成的私密字庫中,有很大可能性不能夠包含3500個常用字。為了防止出現(xiàn)要加密的源信息(明文)中漢字在私密字庫中不包括的情況,將3500個常用字作為公共補(bǔ)充字庫,將私有字庫擴(kuò)展成為總字庫。
將公共字庫中文字的順序置亂,一方面防止他人通過公共補(bǔ)充字庫的漢字排列順序來反推私有字庫的某些信息,比如私有庫漢字字?jǐn)?shù)以及包括哪些漢字等;另一方面防止推斷出加密明文漢字和加密后密文漢字中間的間隔。構(gòu)成總字庫的過程相當(dāng)于單表代替密碼加密形成最后總的表。
3.3 信息加密環(huán)節(jié)
將源信息中每一個漢字在總字庫內(nèi)找到相應(yīng)位置,并用其k個字后漢字進(jìn)行取代,這就是對Caesar密碼技術(shù)的應(yīng)用。
在信息加密的過程中,可能在總字庫中找不到源信息中的某個漢字。這是由于這個漢字不是常用字,且在私有字庫中不包括這個字。出現(xiàn)這樣的情況,這個字就不給予代替。
3.4 信息發(fā)送環(huán)節(jié)
使用普通鏈接對于密文的發(fā)送即可,這個信息也是一般攻擊者比較容易獲取到的內(nèi)容。對于約定信息和公共字庫的置亂密碼,最好采用提前約定的方式,約定動態(tài)更新字庫方法,提高加密信息的安全性;如無法提前約定,那就需要通過更高級和安全的加密方法(如RSA等),并使用安全通道發(fā)送。
4 抗攻擊性分析
4.1 窮舉攻擊
僅考慮常用字的情況下,總字庫相當(dāng)于單表代替密碼技術(shù)生成的文字映射表,3500字任意置換,排列的方法有3500!種漢字映射。如考慮私有字庫或源信息中的非常用字,漢字的映射表的可能性會遠(yuǎn)大于3500!種。3500漢字的排列可能性約為2.39×1010886種。舉一個例子,就2013年“天河二號”5億億次超級計算機(jī),及2015年開始研發(fā)10億億次超級計算機(jī),它們10萬年可以執(zhí)行的雙精度運(yùn)算為1.578×1030次。窮舉破解方法不可能達(dá)到攻擊的目的。
4.2 單字頻率攻擊
這種方法是首先將密文的漢字使用頻率進(jìn)行統(tǒng)計,然后與最廣泛統(tǒng)計的漢字使用頻率進(jìn)行對比。如果密文足夠長,使用這種方法可以得到相應(yīng)的破解結(jié)果。
這種方法如果應(yīng)用于英文字母,有較好效果,因?yàn)橛⑽淖帜傅慕M成僅有26個,統(tǒng)計26個字母的頻率相對簡單。
對于漢字卻完全不同,進(jìn)行統(tǒng)計學(xué)的頻率分析,表意文字需要非常龐大的文字量。至于漢字有統(tǒng)計學(xué)意義的字?jǐn)?shù),《現(xiàn)代漢語字頻統(tǒng)計》中高頻字頻率大于176次/百萬,低頻字頻率小于73次/百萬。起碼百萬左右的漢字才有統(tǒng)計學(xué)的意義,可是往往密文很短,但這也只是僅能分辨高低頻詞匯而已;如要仔細(xì)分辨3500多字的使用頻率,則需要更多密文統(tǒng)計分析。
采用單字頻率的密碼分析學(xué)技術(shù)攻擊,達(dá)不到破解的目的。
4.3 雙字組合頻率攻擊
在密文消息較短時,不能夠得到準(zhǔn)確的文字匹配的情況下,通過統(tǒng)計雙文字組合頻率分析。這在英文中可行,26的平方才676種組合,拋去不常用的配合,出現(xiàn)頻率較高的字母組合較少,容易通過概率學(xué)得到相應(yīng)的對比結(jié)論。
但是對于漢字來說,3500的平方本身數(shù)量較大,即使減去其中不構(gòu)成詞語的組合,還會有很多詞匯,除了“我們”、“因?yàn)椤钡壬贁?shù)詞匯的頻率較高以外,其他組合的頻率一般不會太高,因此,如果想用這種方法,就需要更長的密文,這同樣是不太現(xiàn)實(shí)的。
如果在寫明文的時候通過使用同義詞的方式來避過常用的詞匯,就更不可能被該方法破解。密碼分析學(xué)中的雙字組合頻率攻擊也無法攻破密文。
4.4 特殊字攻擊
特殊字攻擊是通過分析密文中出現(xiàn)的使用非常少的漢字進(jìn)行分析,這是專門對于類似于漢字的表意文字的一種攻擊方法。由于在源信息中出現(xiàn)總字庫中沒有字,這個字會在密文中保持原樣,很多的地名和人名都不是常用字,通過這些字就能聯(lián)想出一些特殊的地名和人名,已獲取部分信息。
特殊字攻擊會威脅到密文的安全性,但有方法避免。如果在生成私有字庫的過程中,加入一些古文等含有特殊字較多的文章,甚至可以統(tǒng)計使用最少的文字加入私有字庫,則可以增加這種分析的難度,來達(dá)到保密的結(jié)果。
5 結(jié)束語
文章通過分析類似于漢字等表意文字與英文字符的不同,設(shè)計了一種針對表意文字特征的加密技術(shù)。該技術(shù)通過約定信息構(gòu)成私有字庫,然后通過置亂后的共有字庫進(jìn)行補(bǔ)充形成總字庫,而這個過程就相當(dāng)于單表代替密碼技術(shù)。在實(shí)際應(yīng)用中,將源信息使用總字庫進(jìn)行Caesar加密,形成密文,將約定信息和密文分別通過機(jī)密途徑和普通鏈接發(fā)給接收用戶,同時在形成私有字庫時,可以實(shí)時更新加密所使用的總字庫。
通過對加密信息的安全型進(jìn)行分析,得出以下結(jié)論:該信息在窮舉攻擊、單字頻攻擊、雙字組合頻率攻擊條件下都具有較好的安全性。對于最新提出的特殊字攻擊,可以在形成私有字庫時進(jìn)行避免。在文章結(jié)尾處,提出了可以改善本加密技術(shù)安全性的幾點(diǎn)建議。
參考文獻(xiàn)
[1]胡善岳,李俊山,吳婭.漢字加密的新思路-漢字混合加密技術(shù)研究與實(shí)現(xiàn)[J].計算機(jī)安全,2004,12:21-23
[2]百度文庫.現(xiàn)代漢語常用字表.http://baike.baidu.com/link?url=DW6
vbRpEuUUBaoV9krT0g9-7V-PJrEioRAmHwcybnKEROflGQurwIi2_MgmQ5uHSq6VLYCv8jp4_oqXx0VgZfq. 2015-10-8.
[3]趙杰.基于字形編碼的中文字符密碼算法研究[J].吉林師范大學(xué)學(xué)報(自然科學(xué)版),2014,04:109-113.
[4]William Stallings. CRYPTOGRAPHY AND NETWORK SECURITY-PRINCIPLES AND PRACTICE[B].FIFTH EDITION. Prentice Hall,2011:38-52.