韓 磊
1.北京交通大學電子信息工程學院,北京 100044 2.中國人民解放軍66402部隊,內蒙古 呼和浩特 010050
大多數現代加密算法都沿續了古典加密思想的思考方式,所以運用現代的新技術思想繼續打造安全可靠的古典加密方法仍是一個現實可行的思路。在計算機出現之前,無法編制足夠多的密碼本,繁瑣的檢索和長時間的加解密過程都是制約古典密碼思想發展的因素。本文將利用計算機技術,建立由大量隨機密碼表組成的碼本庫,設計一種新的多表替換密碼,本文稱之為隨機字庫碼,簡記為 C2R2(Random Replace Character Cipher)。
目前在字符級加密(尤其是針對漢字字符特點的加密)領域的研究和相關文獻很少,不利于古典密碼思想與現代密碼學結合應用的發展,本文在這方面作出了有益的嘗試。
C2R2借鑒分組密碼一組一密鑰的思想,使每個字符都對應至少一個密碼本,繼承了多表替換密碼在隱藏單字符的頻率分布的優點,同時改進的隨機替換方式解決了傳統多表替換具有周期性、抗字典攻擊和抗窮舉攻擊能力差的問題。
由于簡單多表替代編碼,用統計字頻的方法就可以較輕易地推算出可能的替換表。所以,C2R2利用數據庫技術對字頻高的字符的對應碼本進行擴容,將其代替字符的數量大大增加,從而達到分散其字頻分布的效果。針對不同的應用環境,字頻統計結果也不同,具體分組應結合實際情況統計分析之后決定。本文只考慮一般性需求,將GBK中的20902個漢字分為四級:一級頻用字,約占0.2%;二級常用字,約占11.4%;三級鮮用字,約占38.4%;四級不用字,約占50%。
將每個字符視為一個碼本,每個碼本為一個8*8n的數組,本文以最簡單的8*8結構為例。
碼本1-8位是跳位標識符T,表示目標字符碼本的位置,范圍是0-255,分別表示明文中與自身相距0到255個字符的位置;9-16位是密鑰識符A,用于指出目標碼本的生效字符,范圍是0-255,表示第一個碼本中有效的替換字符編號(對于8*8結構的碼本僅有1、2、3三個編號);17-64位分3段,每兩個字節表示一個備選替換字符。跳轉位和密鑰位的值都由系統隨機生成,備選替換字符的值則由分配算法依規則計算得出。
不包含外文字符和特殊符號,僅用一至三級漢字編寫密文,用全部四級漢字編制明文的規則下:
1)三級鮮用字,每個字在所有碼本中出現且僅出現一次;
2)二級常用字,每個字在所有碼本中出現5~10次且不在同一碼本中重復出現;
3)一級頻用字,每個字在所有碼本中出現500次且不在同一碼本中重復出現;
4)碼本空余替換字符位隨機抽取一級頻用字填補。
明文:M=m1m2…mi…mj
密文:C= c1c2…ci…cj
編碼密鑰:{T0,A0};{T1,A1},{T2,A2},…,{Ti,Ai},…,{Tj,Aj}
{T0,A0}取自標識字符的跳轉位和密鑰位,{Ti,Ai}取自有效碼本字符的跳轉位和密鑰位
替換函數:F(x,k),f(x,y,K)
檢索函數:s(m)輸入一個明文字符m返回一個字符位包含m的碼本字符k
密碼本庫 :{k1,k2,…,kp,…,kq},{K1,K2,…,Ku,… ,Kv}
冗余函數:r(n)隨機添加n個冗余字符
判斷函數:A(k)返回輸入字符k密鑰位的值,T(k)返回輸入字符k跳轉位的值
加密過程:
c1= r(1)r(T0)F(A0,s(m1))
ci=r(Ti-1)F(Ai-1,s(mi)) (i>1)
密文中第一個字符為隨機選取,其跳轉位T0表示第一個明文字符的替換字符的位置,冗余函數r在它們之間隨機填充T0個字符;密鑰位表示第一個有效字符碼本中生效的替換字符編號。第一個有效字符的跳轉位表示第二個有效字符碼本的位置;生效替換字符即為明文的第一個字符,以此類推。
解密過程:
mi=f(Ti-1,Ai,s(mi))
密文中第一個字符為標識字符,其跳轉位表示第一個有效碼本字符的位置;密鑰位表示第一個有效碼本字符中生效的替換字符編號。第一個有效字符的跳轉位表示第二個有效碼本字符的位置;生效替換字符即為明文的第一個字符,以此類推。
初始狀態下,密報收發雙方終端程序的碼本庫生成密鑰是一樣的,所以密報的接收方可以讀取每個字符的數據結構和隱含信息,實現解密過程。在發送端傳出密文時,可以在密文中最后一個有效碼本字符后添加字符串,作為新的密鑰。字符串添加原則是:字串的長度最小為1且不大于字串中第一個字符跳轉位的數值。密報接收端在解密完成的同時,讀取字符串包含的二進制信息,其作為下一次碼本庫生成的密鑰。
目前C2R2加密所得到的密文是無意義的字符串,但理想狀態是能夠在完成加密過程后,添加冗余字符的同時組成一篇順暢的普通文章,而且文章須具備發信方的寫作習慣和用詞特點等特征,不能夠利用語言學和心理學等分析手段推理出破綻。相信運用大量機器計算和巧妙人工構造相結合的方式,最終的完美加密是有可以實現的。
[1]宣蕾,閆紀寧.基于混沌的“一組一密”分組密碼[J].通信學報,2009,30(11A).
[2]張玉安,馮登國.一種實用的仿一次一密分組加密方案[J].北京郵電大學學報,2005,28(2).
[3]李春林,宋建社.古典多表密碼體系的改進[J].網絡安全技術與應用,2003,12.