四川文理學院數學與財經系 楊 波
密碼是通信雙方按約定的法則進行信息特殊變換的一種重要保密手段。通過這些法則,將明文變為密文,稱為加密變換;將密文變為明文,稱為脫密變換。密碼在早期只是對文字或數碼進行加密、脫密變換,隨著通信技術的發展,對語音、圖像、數據等多種信息都可實施加密、脫密變換。密碼學是在編碼與破譯的斗爭實踐過程中逐步發展起來的,并隨著先進的信息科學技術的應用,已成為一門綜合性的尖端技術科學。它與語言學、數學、電子學、聲學、信息論、計算機科學等學科都有著廣泛而密切的聯系。它的現實研究成果,特別是現用的密碼編制方法及破譯手段都具有高度的機密性。
密碼學是研究如何隱密地傳遞信息的學科。在現代特別指對信息以及其傳輸的數學性研究,常被認為是數學和計算機科學的分支,和信息論也密切相關。古希臘錯位的羊皮紙和木棍的組合是一個替換法的圓柱體,可將信息內字母的次序調動,利用了字條纏繞木棒的方式,把字母進行位移,收信人要使用相同直徑的木棒才能得到還原的信息。這就是密碼學的發源。在中國古代就有一些秘密通信的手段,趨近于密碼學的雛形。宋曾公亮、丁度等編寫的《武經總要》中記載,早在北宋前期,在作戰中曾用一首五言律詩的40個漢字,來分別代表40種情況或者要求,以達到對所表達意思的隱藏,只有知道其中表示方法的自己一方才能明白其真正的含義。這種方式已具有了密本體制的特點。
早期的常規密碼體制的加密方法很多,但本質上可分為兩大類,即換位密碼和替代密碼。
換位密碼是一種不改變明文中字符本身,僅按照某種模式將其重新排列構成密文的加密方法。它是目前最古老的密碼。[1]典型的換位密碼有列換位、按樣本換位和分組換位。下面以列換位來說明這種加密方法的本質。
例如:用列換位法將明文computability加密成密文。首先按行順序把明文寫入4*4距陣中,得

然后把它按列順序讀出,即得到密文cuiyotlmaipbt。
替代密碼可分為簡單替代、多名替代、多表替代和區位替代等四種。下面以簡單替代為例來說明這種加密方法的機理。
最簡單的簡單替代是循環移位密碼。其加密方法是把明文中的所有字母均用它右邊第幾個字母替代,并認為Z后面又是A。這種映射關系可用下式表示:

式中n為字符集中字母的個數。循環移位密碼又稱凱撒密碼,因為是由羅馬皇帝Julius Caesar首先使用的,當k=3時,凱撒碼的映射關系為:
明文字符集P:a b c d e f g h i j k l m n o p q r s t u v w x y z
密文字符集C:d e f g h i j k l m n o p q r s t u v w x y z a b c
所以用凱撒密碼對computability一詞加密,所得到的密文是frpsxwdelolwb。凱撒密碼的優點是密碼簡單易記,但因明文與密文之間的映射關系過于簡單,故安全性較差。為提高安全性,這種密碼體制還有序列密碼和分組密碼兩種,這里不再詳細討論。
綜上我們可以看出,在以上這些方式加密的過程中密鑰非常重要,只要知道密鑰,密文就成了明文了。
因為早期的加密技術的一些局限性和安全性的不足,20世紀70年代以后,一些學者提出了公開密鑰體制,即運用單向函數的數學原理,來實現加密、脫密密鑰的分離,也就是使用了不同的加密與脫密密鑰,以加強密文的安全性。密碼學中進行明文和密文變換的法則,被稱為密碼的體制,其中指示這種變換的參數,稱之為密鑰。它們是密碼編制的重要組成部分。加密密鑰是公開的,而脫密密鑰是保密的。這種新的密碼體制,引起了密碼學界的廣泛注意和探討。
RSA算法是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的一種公鑰算法,從1978年提出到現在近三十年的時間,經歷了各種攻擊的考驗之后,逐漸為人們接受,也普遍被認為是目前最優秀的公鑰方案之一。通常認為破譯RSA的難度與大數分解難度等價,所以其安全性較高。RSA算法是以三個發明者的名字來命名的,他們分別是:Ron Rivest,Adi Shamir和Leonard Adleman。下面我們就RSA算法的原理作一簡單介紹。
RSA算法的原理:
a.密鑰的產生
選擇兩個大素數,p和q。計算:n=p*q,然后隨機選擇一個加密密鑰e,要求e和(p-1)*(q-1)互質。最后,利用Euclid算法計算解密密鑰d,使其滿足e*d=1(mod(p-1)*(q-1))其中n和d要互為質數。數字e和n是公鑰,d是私鑰。兩個素數p和q要對其保密,保證其安全性。
b.加密
加密信息m(二進制表示)時,首先把m分成長度相等的數據塊m1,m2,...,mi,數據塊長度為s,其中2^s<=n,s要盡可能的大。加密的公式是:ci=mi^e(mod n)。
c.解密解密時進行如下計算:mi=ci^d(mod n)。RSA算法的安全性與大數n的分解有關。如果能把作為部分加密密鑰公開的n分解成素因數,那么就能得到P、q以及,從而求出解密密鑰d。即使用目前最快的算法對整數n進行素因數分解,也要用exp步。所以只要n足夠大,所采用RSA算法的密碼體制就應該是十分可靠的。
密碼技術除了提供信息的加密解密外,還要提供對信息來源的鑒別、保證信息的完整性和不可否認等功能,而這三種功能都需要結合數字簽名技術來實現的。[2]簡而言之,數字簽名技術的原理可以這樣理解:用非對稱算法的私鑰加密的密文只能用對應的公鑰來解密。公鑰是公開的,而私鑰是保密的。因此,如果信息能使用某個人的公鑰來解密,那么它一定是使用此人的私鑰來加密的。這種方法和物理的簽名一樣,是很難偽造的。
在實際應用過程中,數字簽名的過程通常是這樣實現:將要傳送的明文通過一種函數運算(Hash)轉換成報文摘要(不同的明文對應不同的報文摘要),報文摘要用私鑰加密后與明文一起傳送給對接收方,接收方用發送方的公鑰來解密報文摘要,再將接收的明文產生新的報文摘要與發送方的報文摘要比較,如比較結果一致則表示明文確實來自期望的發送方,而且并未被改動。如果不一致表示明文已被篡改或不是來自期望的發送方(如圖1)。

圖1
公開密鑰技術和傳統加密方法各有優缺點,傳統加密技術方法簡單,易于實現,但其安全性較差。公開密鑰技術雖然安全性較好,但其運算量較大,與傳統的加密算法比較在速度上有很大的差距。有資料表明RSA算法的軟件實現比DES算法的軟件實現速度慢100倍,而且RSA算法的硬件實現比DES算法的硬件實現慢1000~10000倍。這些數據表明傳統加密技術仍有其存在的意義,所以許多加密系統都采用公開密鑰技術與傳統加密算法結合的方式。如PGP系統和Netscape2.0就是采用這樣的方法:使用一把會話鑰匙和傳統加密算法來加密需要傳送的數據內容,再使用公開密鑰技術來加密較短的會話鑰匙。
密碼技術是信息安全的核心技術。如今,計算機網絡環境下信息的保密性、完整性、可用性和抗抵賴性,都需要采用密碼技術來解決。密碼技術的發展與現代網絡息息相關,當前,密碼學發展面臨著挑戰和機遇。計算機網絡通信技術的發展和信息時代的到來,給密碼學提供了前所未有的發展機遇。我們要在研究密碼技術的過程中揚長避短,將傳統與現代的密碼技術相融合,力求達到更高的安全性。我們要在密碼理論、密碼技術、密碼保障、密碼管理等方面進行創造性思維,去開辟密碼學發展的新紀元。
[1]楊心強,陳國友,邵軍力.數據通信與計算機網絡[M].北京:電子工業出版社,2003:382-385.
[2]馮博琴,程向前.計算機網絡——基于因特網的信息服務平臺[M].北京:清華大學出版社,2004:379-382.
[3]http://pda.c114.net/157/a149703.html.
[4]楊波.IP地址解析與子網分割[J].四川文理學院學報,2007(2):55-57.
[5][美國]BehrouzA.Forouzan.密碼學與網絡安全[M].馬振晗,賈軍保譯.北京:清華大學出版社,2009:60-65.