晏國勛
(云南省公安消防總隊司令部信息通信處 云南 650000)
以互聯網為代表的全球信息化浪潮日益深刻,信息網絡技術的應用正日益普及和廣泛,應用層次正在深入,應用領域從傳統的小型業務系統逐漸向大型、關鍵業務系統擴展。伴隨網絡的普及以及信息的重要性,安全問題日益成為影響政府,企業及個人戰略的重要問題,而互聯網所具有的開放性、國際性和自由性增加應用自由度的同時,對信息安全提出了更高的要求。如最近備受關注的“棱鏡門”事件,就揭露了信息安全的嚴峻形勢,如何保證機密信息不受黑客和工業間諜的入侵,已成為政府、企業單位信息化健康發展所要考慮的重要議題。
信息安全(Security of Information Carrier)一般是指信息在通信、存貯或處理過程中是否得到妥善的、完好無損的保護,表現在信息不能被竊取、丟失、修改、錯誤投遞等,并可以追溯發信人。
“信息安全”要求信息網絡或系統在承載信息時,要確保它本身的安全。因此,“信息安全”是信息網絡、信息系統的責任和義務。為保證通信過程信息的安全,通常采用身份鑒別和數據加密的措施。為了保證存貯的安全性,也采用身份鑒別訪問、加密存貯、文件備份等措施。為了保證傳輸過程的安全,采用校驗、糾錯、編碼等措施。
說到“加密”,實際上包括如下幾個基本術語:
(1)密碼學——制作和破解“秘密代碼”的技藝和科學。
(2)加密(加密系統)——“秘密代碼”的制作過程。
(3)密碼分析——“秘密代碼”的破解過程。
(4)加密——根據情況不同,這個詞語可以看成上述所有術語(甚至還有諸如此類的更多說法和詞匯)中任何一個的同義詞,具體場合的精確含義應該根據上下文來判定清楚。
密碼學所采用的加密方法通常是用一定的數學計算操作來改變原始信息。用某種方法偽裝消息并隱藏它的內容,稱作加密(Encryption)。待加密的消息稱作明文(Plaintext),所有明文的集合稱為明文空間;被加密以后的消息稱為密文(Ciphertext),所有密文的集合稱為密文空間。而把密文轉變成明文的過程,稱為解密(Decryption)。加密體制中的加密運算是由一個算法類組成的,這些算法類的不同運算可用不同的參數表示,不同的參數分別代表不同的算法,這些參數稱作密鑰,密鑰空間是所有密鑰的集合。密鑰空間與相應的加密運算結構(包括明文和密文的結構特征)構成一個密碼體制。
任何一個密碼系統都包含明文空間、密文空間、密鑰空間和算法。密碼系統的兩個基本單元是算法和密鑰。如果所示,在最簡單的黑盒加密示意圖(圖1)中:發送方用加密密鑰,通過加密設備或算法,將信息加密后發送出去。接收方在收到密文后,用解密密鑰將密文解密,恢復為明文。如果傳輸中有人竊取,他只能得到無法理解的密文,從而對信息起到保密作用。

圖1 黑盒加密示意圖
對于理想的密碼系統,要能夠確保:在沒有密鑰的情況下,想從密文恢復出明文是不可能的。這是加密系統的目標,雖然現實往往并非能夠如愿以償。密碼學的基本原則之一是:密碼系統的內部工作原理對于攻擊者,是完全可見的,唯一的秘密就是密鑰(也被稱為Kerckhoffs原則)。事實上,如果你的安全依賴于秘密設計的系統,那么至少會有下面幾個問題。首先,即使可以保密,所謂“秘密”加密系統的細節也極少會長期保持機密性。逆向工程可能會被用于從軟件恢復出算法實現,而且,即使算法嵌入到所謂的防篡改硬件中,有時也仍然會遭受逆向工程攻擊,進而被泄露。其次,更加令人擔憂的是這樣一個事實:當算法本身一旦暴露在公眾明察秋毫的視野之下,秘密的加密算法和系統將不再有任何安全性可言,而這樣的例子由來已久,層出不窮。
2.1.1 代碼加密
發送秘密消息的最簡單做法,就是使用通信雙方預先設定的一組代碼。代碼可以是日常詞匯、專有名詞或特殊用語,但都有一個預先指定的確切含義。它簡單而有效,得到廣泛的應用。例如:

密文 明文黃姨白姐安全到家了 黃金和白銀巳經走私出境了
代碼簡單好用,但只能傳送一組預先約定的信息。當然,可以將所有的語意單元(如每個單詞)編排成代碼簿,加密任何語句只要查代碼表即可。不重復使用的代碼是很安全的。但是,代碼經過多次反復使用,竊密者會逐漸明白它們的意義,代碼就逐漸失去了原有的安全性。
2.1.2 替換加密
明文中的每個字母或每組字母被替換成另一個或一組字母。例如,下面的一組字母對應關系就構成了一個替換加密器:

密文 明文ABCD HGUA
替換加密器可以用來傳達任何信息,但有時還不及代碼加密安全。竊密者只要多搜集一些密文就能夠發現其中的規律。
2.1.3 變位加密
代碼加密和替換加密保持著明文的字符順序,只是將原字符替換并隱藏起來。變位加密不隱藏原明文的字符,卻將字符重新排序。例如,加密方首先選擇一個用數字表示的密鑰,寫成一行,然后把明文逐行寫在數字下。按密鑰中數字指示的順序,逐列將原文抄寫下來,就是加密后的密文:

密鑰:4 1 6 8 2 5 7 3 9 0密文 明文里人現平來住已在出安 來人已出現住在平安里
2.1.4 一次一密亂碼本加密
要既保持代碼加密的可靠性,又要保持替換加密器的靈活性,可以采用一次一密亂碼本進行加密。一次一密亂碼本是一個不重復的真隨機密鑰字母集,這個密鑰字母集被寫在幾張紙上,并被粘成一個亂碼本。 發送者用亂碼本中的每一密鑰字母加密一個明文字符。加密使用明文字符和一次一密亂碼本中密鑰字符的模26加法。一次一密亂碼本密碼體制具有以下特點:①每個密鑰僅對一個消息使用一次;②密鑰以隨機方式產生;③密鑰長度等于明文長度; ④發送者和接收者必須完全同步;⑤一次一密亂碼本密碼體制是唯一達到理論不可破譯的密碼體制。
一次性密碼本,也被稱為弗納姆(Vernam)密碼,是一種可證明為安全的密碼系統。假如我們有兩個明文消息P1 和P2,我們進行加密:C1=P1 ⊕ K 和C2=P2 ⊕ K,也就是說,我們有兩個消息被加密,它們是用同一個一次性密碼本密鑰K 加密的。在密碼分析行業里,這稱為depth。對于使用一次性密碼本加密的 in depth(有相同的depth)的兩個密文來說,我們可以得到如下計算:
C1 ⊕ C2=P1 ⊕ K⊕ P2 ⊕ K=P1 ⊕ P2
我們可以看到在這個問題當中,密鑰已經完全消失了。在這種情況下,密文確實會供出有關背后的明文的一些信息。看待這個問題的另一個角度是考慮窮舉式密鑰檢索。如果密碼本僅使用一次,攻擊者就沒有辦法了解到猜測的密鑰對錯與否。但是如果兩個消息是in depth 的,那么對于正確的密鑰,必然會有兩個猜測的明文都有確定含義。這就為攻擊者提供了一種途徑用來區分正確的密鑰和錯誤的密鑰。密鑰被重復使用的次數越多,問題就只能變得越嚴重。
既然我們無法做到比可證明的安全性更好,那么我們為什么不一直使用一次性密碼本呢?遺憾的是,該方法對于大多數應用來說很不實際。為什么會是這種情況呢?這里的一個關鍵問題是:需要與消息體本身等長的密碼本,因為密碼本正是密鑰自身,所以必須安全地共享給消息的目標接收方,而且應該是在密文消息被解密之前。如果我們可以安全地傳送密碼本,那么為什么不簡單地采用同樣的方式直接傳送明文消息,而要花費大力氣去做加密呢?所以,對于現代的高數據率加密系統來說,一次性密碼本加密就完全屬于不切實際的方案了。
現代信息系統主要使用兩種加密算法:對稱密鑰密碼算法以及公鑰密碼算法。我們將主要通過討論對稱密鑰算法的原理以及其中的流密碼、分組密碼和公鑰密碼算法的原理以及其中的RSA算法來理解現代加密算法和信息安全的關系。
2.2.1 對稱密鑰加密技術
對稱密鑰加密技術主要有兩個分支:流密碼加密和分組密碼加密。在流密碼中,將明文按字符一個一個地加密;在分組密碼中,將明文分成若干個組,每組含多個字符,一組一組地加密。
流密碼
流密碼簡述
在流密碼中,將明文m寫成連續的符號m=m1m2…,利用密鑰流k=k1k2…中的第i個元素ki對應明文中的第i個元素mi進行加密,若加密變換為E,則加密后的密文為:

設與加密變換E對應的解密變換為D,其中D滿足:

則通過解密運算可譯得明文為:

從而完成一次密碼通信。流密碼通信框圖如圖2所示。
密鑰流生成器
在流密碼中,如果密鑰流經過d個符號之后重復,則稱該流密碼是周期的,否則稱之為非周期的。密鑰流元素kj的產生由第j時刻流密碼的內部狀態sj和實際密鑰k所決定,記為kj=f(k,sj)。加密變換Ekj與解密變換Dkj都是時變的,其時變性由加密器或解密器中的記憶文件來保證。加密器中存儲器的狀態s隨時間變化而變化,這種變化可用狀態轉移函數fs表示。如果fs與輸入的明文無關,則密鑰流kj=f(k,sj)與明文無關,j=1,2,…,從而j時刻輸出的密文cj=Ekj(mj)與j時刻之前的明文也無關,稱此種流密碼為同步流密碼。在同步流密碼中,只要發送端和接收端有相同的實際密鑰和內部狀態,就能產生相同的密鑰流,此時稱發送端和接收端的密鑰生成器是同步的。一旦不同步,解密工作立即失敗。如果狀態轉移函數fs與輸入的明文符號有關,則稱該流密碼為自同步流密碼。目前應用最廣泛的流密碼是同步流密碼。

圖2 流密碼通信模式框圖
一個同步流密碼是否具有很高的密碼強度主要取決于密鑰流生成器的設計。為了設計安全的密鑰流生成器,必須在生成器中使用線性變換,這就給生成器的理論分析工作帶來了很大困難。密鑰流生成器的目的是由一個短的隨機密鑰(也稱實際密鑰或種子密鑰)k生成一個長的密鑰流,用這個長的密鑰流對明文加密或對密文解密,從而使一個短的密鑰可用來加密更長的明文或解密更長的密文的目的。對一個密鑰流生成器的一個實際的安全要求是它的不可測性,即要求生成的密鑰流具有隨機性,從而使密碼分析者不可能從截獲的i比特子段生成大于i比特的密碼。構造密鑰流生成器是流密碼最核心的內容,目前有各種各樣的構造方法,這些方法可劃分為四大類:信息論方法、系統論方法、復雜度理論方法和隨機化方法。根據已知的構造方法構造出來的大多數密鑰流生成器已被證明是不安全的,現在還沒有被證明是不安全的少數密鑰流生成器遲早也會被證明是不安全的。因為現在被認為是安全的密碼,都是基于世界上某個數學難題沒有解決,即破譯密碼系統的難度等價于解決世界上某個公開數學問題的難度,一旦這個數學問題被解決,與之同難度的密碼系統就不安全了。下面介紹由兩個移位寄存器組成的收縮密鑰流生成器,該構造方法屬于系統論方法。
收縮密鑰流生成器
在介紹收縮密鑰流生成器之前,先介紹移位寄存器。移位寄存器是密碼學中最基本也是最重要的電子設備。圖3是n級移位寄存器的框圖。

圖3 n級移位寄器
圖中n個小方框是n個寄存器,從左到右依序叫第1級,第2級,…,第n級寄存器。開始時,設第1級內容是an-1,第2級內容是an-2,…,第n級內容是a0,則稱這個寄存器的初始狀態是(a0,a1,…,an-1)。當加上一個脈沖時,每個寄存器的內容移給下一級,第n級內容輸出,同時將各級內容送給運算器f(x0,x1,…,xn-1),并將運算器的結果an= f (a0,a1,…,an-1)反饋到第一級去。這樣這個移位寄存器的狀態就是(a1,a2,…,an),而輸出是a0。不斷地加脈沖,上述n級移位寄存器的輸出就是一個二元(或q元)序列:
a0,a1,a2,…
在運算器中反饋函數f(x0,x1,…,xn-1)給定的條件下,這個序列完全由初始狀態(a0,a1,…,an-1)完全確定。當f(x0,x1,…,xn-1)為線性函數時,稱該移位寄存器為n級線性移位寄存器;否則為n級非線性移位寄存器。代數編碼中已證明移位寄存器產生的序列都是周期序列,周期都不大于2n。
分組密碼
分組密碼體系的概念
分組密碼將明文按一定的位長分組,輸出也是固定長度的密文。明文組經過加密運算得到密文組。解密時密文組經過解密運算(加密運算的逆運算)還原成明文組。分組密碼的優點是:密鑰可以在一定時間內固定,不必每次變換,因此給密鑰配發帶來了方便。但是,由于分組密碼存在密文傳輸錯誤在明文中擴散的問題,因此在信道質量較差的情況下無法使用。
分組密碼通信模式
分組密碼是將明文消息編碼表示成數字序列x1,x2,…,xm之后,再劃分成長為m的組x=(x1,x2,…, xm),各組分別在密鑰k=( k1,k2,…, kt)的控制下變換成長為n的密文y=(y1,y2,…, yn)。分組密碼通信模式框圖如圖4所示。
分組密碼與流密碼的不同之處在于輸出的每一位數字不是只與相應時刻輸入的明文數字有關,而是與一組長為m的明文數字有關。分組密碼的優點是容易標準化,而且容易實現同步,其缺點是相同的密文組蘊含相同的明文組,且其加密不能抵抗組的重放等攻擊。但這些缺點可通過一些技術手段加以克服。

圖4 分組密碼通信模式框圖
在分組密碼通信中,通常明文與密文長度相等,稱該長度為分組長度。設明文空間與密文空間均為F2n,密鑰空間為Sk,則分組密碼的加密函數y=E(x,k)和解密函數x=D(y,k)都是從F2
n到F2
n的一個置換。一個好的分組密碼應該是既難破譯又容易實現的,即加密函數E(x,k)和解密函數D(y,k)都必須是很容易計算的,但是要從方程y=E(x,k)和x=D(y,k)中求出k應該是一個很困難的問題。
設計一個好的分組密碼算法是非常困難的。目前有代表性的私鑰分組密碼算法有DES(美國商業部的數據加密標準)、IDEA(國際數據加密算法)等。
2.2.2 公鑰密碼算法
上節討論的對稱密鑰密碼體制中,解密密鑰與加密密鑰相同或容易從加密密鑰導出,加密密鑰的暴露會使系統變得不安全,因此使用對稱密鑰密碼體制在傳送任何密文之前,發送者和接收者必須使用一個安全信道預先通信傳輸密鑰k,在實際通信中做到這一點很困難。公鑰密碼體制能很好地解決對稱密鑰密碼體制中的安全性問題。
公鑰密碼體制及其設計的基本原理
設計公鑰密碼體制的基本原理
在公鑰密碼中,解密密鑰和加密密鑰不同,從一個難于推出另一個,解密和加密是可分離的,加密密鑰是可以公開的。公鑰密碼系統的觀點是由Diffie和Hellman在1976年首次提出的,它使密碼學發生了一場革命。1977年由Rivest,Shamir和Adleman提出了第一個比較完善的公鑰密碼算法,這就是著名的RSA算法。自那時起,人們基于不同的計算問題,提出了大量的公鑰密碼算法,代表性的算法有RSA算法、Merke-Hellman背包算法和橢圓曲線算法等。在公鑰密碼體制中,信息可通過編碼被加密在一個NP-完全問題之中,使得以普通的方法破譯這種密碼等價于解一個NP-安全問題。但若已知解密密鑰,解密就容易實現。要構造這樣的密碼,核心問題是找一個陷門單向函數。
如果函數f(x)滿足以下條件:
(1)對f(x)的定義域中的任意x,都容易計算函數值f(x)
(2)對于f(x)的值域中的幾乎所有的y,即使已知f要計算f--1(y)也是不可行的
則稱f(x)是單向函數(One-way Function)。
若給定某些輔助信息時又容易計算單向函數f的逆f--1,則稱f(x)是一個陷門單向函數。這一輔助信息就是秘密的解密密鑰。這就是設計公鑰密碼體制的基本原理。
公鑰密碼體制
公鑰密碼體制也稱為雙密鑰密碼體制或非對稱密碼體制,與此相對應,將序列密碼和分組密碼等稱為單密鑰密碼體制或對稱密鑰密碼體制。

單鑰加密 公開密鑰加密運行條件①加密和解密使用同一密鑰和同一算法②發送方和接收方必須共享密鑰和算法①用同一算法進行加密和解密,而密鑰有一對,其中一個用于加密,而另一個用于解密②發送方和接收方每個擁有一個相互匹配的密鑰中的一個(不是另一個)①兩個密鑰中的一個必須保密②如果不掌握其他信息,要想解密報文是不可能或者至少是不現實的③知道所用的算法加上一個密鑰和密文的樣本必須不足以確定密鑰安全條件①密鑰必須保密②如果不掌握其他信息,要想解密報文是不可能或者至少是不現實的③知道所用的算法加上密文的樣本必須是不足以確定密鑰
為了區分這兩個體制,一般將單鑰加密中使用的密鑰稱為秘密密鑰(Secret Key),公開密鑰加密中使用的兩個密鑰分別稱為公開密鑰(Public Key)和私有密鑰(Private Key)。在任何時候私有密鑰都是保密的,但把它稱為私有密鑰而不是秘密密鑰,以免同單鑰加密中的秘密密鑰混淆。
單鑰密碼安全的核心是通信雙方秘密密鑰的建立,當用戶數增加時,其密鑰分發就越來越困難,而且單鑰密碼不能滿足日益膨脹的數字簽名的需要。公開密鑰密碼編碼學是在試圖解決單鑰加密面臨的這個難題的過程中發展起來的。公共密鑰密碼的優點是不需要經安全渠道傳遞密鑰,大大簡化了密鑰管理。它的算法有時也稱為公開密鑰算法或簡稱為公鑰算法。公開密鑰的應用主要有以下三方面:
(1)加密和解密。發送方用接收方的公開密鑰加密報文。
(2)數字簽名。發送方用自己的私有密鑰“簽署”報文。簽署功能是通過對報文或者作為報文的一個函數的一小塊數據應用發送者私有密鑰加密完成的。
(3)密鑰交換。兩方合作以便交換會話密鑰。
公開密鑰密碼系統原理
公開密鑰算法用一個密鑰進行加密,而用另一個不同但是相關的密鑰進行解密:①僅僅知道密碼算法和加密密鑰而要確定解密密鑰,在計算上是不可能的;②兩個相關密鑰中任何一個都可以用作加密而讓另外一個解密。
圖5給出了公開密鑰加密和解密的過程,其中重要步驟如下:
(1)網絡中的每個端系統都產生一對用于將接收的報文進行加密和解密的密鑰;
(2)每個系統都通過把自己的加密密鑰放進一個登記本或者文件來公布它,這就是公開密鑰。另一個密鑰則是私有的;
(3)如果A想給B發送一個報文,A就用B的公開密鑰加密這個報文;
(4)B收到這個報文后用自己的私有密鑰解密報文,其他收到這個報文的人都無法解密它,因為只有B才有自己的私有密鑰。
使用這種方法,所有參與方都可以獲得各個公開密鑰,而各參與方的私有密鑰則由各參與方自己在本地產生和保管。只要一個系統控制住它的私有密鑰,它收到的通信內容就是安全的。任何時候,一個系統都可以更改它的私有密鑰并公開相應的公開密鑰來替代它原來的公開密鑰。

圖5 公開密鑰加密過程
公鑰密碼體制的安全性
公鑰密碼體制的安全性是指計算安全性,而絕不是無條件安全性,這是由公鑰密碼算法中求陷門單向函數的逆的復雜性決定的。雖然有許多函數被認為或被相信是單向的,但目前還沒有一個函數能被證明是單向的。下面舉一個被相信是單向函數的例子。
設n是兩個大素數p和q的乘積,b是一個正整數,對x∈Zn,令
f(x)≡xb(mod n)
即f(x)等于xb被n除所得的余數,人們認為f(x)是一個從Zn到Zn的單向函數。
當對b和n作一個適當的選擇時,該函數就是著名的RSA算法的加密函數。
RSA加密系統
RSA 因其創始人 Rivest,Shamir和 Adleman 而得名。RSA 的難度是基于因式分解,RSA 的安全性幾乎都建立在一些重要的數學假設基礎之上,它至今仍是一條數學家相信存在但缺乏正式證明的定理。RSA 算法研制的最初理念與目標是努力使互聯網安全可靠,旨在解決 DES 算法秘密密鑰利用公開信道傳輸分發的難題。而實際結果不但很好地解決了這個難題,還可利用 RSA 來完成對電文的數字簽名以抵抗對電文的否認與抵賴,同時還可以利用數字簽名較容易地發現攻擊者對電文的非法篡改,以保護數據信息的完整性。RSA 是第一個比較完善的公開密鑰算法,它既能用于加密也能用于數字簽名。在已公開的公鑰算法中,RSA 是最容易理解和實現的。
RSA算法簡單描述
RSA 算法的實現步驟如下(這里設B為實現者):
①B尋找出兩個大素數p和q。
②B計算出n=pq和 j(n)=(p-1)(q-1)。
③B選擇一個隨機數b(0
④B使用Euclidean(歐幾里得)算法計算a= b-1(mod j(n))。
⑤B在目錄中公開n和b作為他的公開密鑰,保密p、q和a。
密碼分析者攻擊RSA體制的關鍵點在于如何分解n。若分解成功使n=pq,則可以算出
j(n) =(p-1)(q-1),
然后由公開的b解出秘密的a。
加密時,對每一明文m計算密文:
c=mb(mod n)
解密時,對每一密文c計算明文:
m=ca(mod n)
RSA算法主要用于數據加密和數字簽名。RSA算法用于數字簽名時,公鑰和私鑰的角色可變換,即將消息用a加密簽名,用b驗證簽名。
歐幾里德算法又稱輾轉相除法,用于計算兩個整數a,b的最大公約數(記為gcd(a,b)),其計算原理為:gcd(a,b) =gcd(b,a mod b)。
例如:
gcd(72,15)=gcd(15,72 mod 15)=gcd(15,12)=gcd(12,15 mod 12)=gcd(12,3)
=gcd(3, 12 mod 3)=gcd(3, 0)=3
根據歐幾里德算法,若gcd(ab, j(n))= gcd(j(n),ab mod j(n))= gcd(j(n),1), 則ab = 1(mod j(n)),即a=b-1(mod j(n))。因此,根據歐幾里德算法,如果已知b,通過列舉計算的方法可得到私有密鑰a。
RSA的安全性
RSA算法的理論基礎是一種特殊的可逆模指數運算,它的安全性是基于分解大整數n的困難性。密碼破譯者對RSA密碼系統的一個明顯的攻擊是企圖分解n,如果能做到,則他很容易計算出歐拉數j(n)=(p-1)(q-1),這樣他就可從公鑰b計算出私鑰a,從而破譯密碼系統。目前大整數分解算法能分解的數已達到130位的十進制數。也就是說,129位十進制數字的模數是能夠分解的臨界數,因此,n的選取應該大于這個數?;诎踩钥紤],建議用戶選擇的素數p和q大約都為100位的十進制數,那么n=pq將是200位的十進制數。因為在每秒上億次的計算機上對200位的整數進行因數分解,要55萬年。因而RSA體制在目前技術條件下是安全的,是無人能破譯的。
當然,現在有很多種攻擊RSA的方法,但這些攻擊方法都是在得到一定信息的前提下進行攻擊才有效。
三種可能攻擊RSA算法的方法是:①強行攻擊:這包含對所有的私有密鑰都進行嘗試。②數學攻擊:有幾種方法,實際上都等效于對兩個素數乘積的因子分解。③定時攻擊:這依賴于解密算法的運行時間。
基于安全性考慮,一般在應用RSA時,必須做到以下幾點:①絕對不要對陌生人提交的隨機消息進行簽名;②不要在一組用戶間共享n;③加密之前要用隨機值填充消息,以確保m和n的大小一樣。
RSA技術既可用于加密通信又能用于數字簽名和認證。由于RSA的速度大大低于DES等分組算法,因此RSA多用于加密會話密鑰、數字簽名和認證。RSA以其算法的簡單性和高度的抗攻擊性在實際通信中得到了廣泛的應用。在許多操作平臺(如Windows、Sun、Novell等)都應用了RSA算法。另外,幾乎所有的網絡安全通信協議(如SSL,IPsec等)也都應用了RSA算法。ISO幾乎已指定RSA用作數字簽名標準。在ISO9796中,RSA已成為其信息附件。法國銀行界和澳大利亞銀行界已使RSA標準化,ANSI銀行標準的草案也利用了RSA。許多公司都采用了RSA安全公司的PKCS。
RSA在目前和可預見的未來若干年內,在信息安全領域的地位是不可替代的,在沒有良好的分解大數因子的方法以及不能證明RSA的不安全性的時候,RSA的應用領域會越來越廣泛。但是一旦分解大數因子不再困難,RSA的時代將會成為歷史。
加密技術下的信息安全
通過以上章節我們分析了幾種經典的加密算法的原理可以看出,加密技術是保護信息安全的主要手段,使用加密技術不僅可以保證信息的機密性,而且可以保證信息的完整性和正確性,防止信息被篡改、偽造和假冒。選擇一個強壯的加密算法是至關重要的,為了防止密碼分析,可以采取以下機制:
(1)強壯的加密算法。一個好的加密算法往往只有用窮舉法才能得到密鑰,所以只要密鑰足夠長就會很安全。建議至少為64位。
(2)動態會話密鑰。每次會話的密鑰不同,即使一次會話通信被破解,不會因本次密鑰被破解而殃及其它通信。
(3)保護關鍵密鑰(Key Encryption Key,KEK),定期變換加密會話密鑰的密鑰。因為這些密鑰是用來加密會話密鑰的,泄漏會引起災難性后果。
人們一直努力在其他困難問題上建立和改進各種加密算法體制,不至于一旦一些數學難題被解決之后,沒有可用的密碼算法,所以出現了大量的加密衍生算法,如RC2及RC4算法,IDEA算法, SKIPJACK算法,ElGamal算法,SCHNORR算法,ESIGN算法等。
加密算法不僅僅是編碼與破譯的學問,而且包括了安全管理,安全協議設計,數字簽名,秘密分存,散列函數等很多內容。當然,對信息安全的重視才是最有分量的,政府和企業在提倡信息安全的大環境里講求安全之道會事半功倍,信息安全形勢嚴峻的另一面,也將推動安全管理技術的發展。
[1]Brian Hatch, 2001, Linux Security Secrets & Solutions,The McGraw-Hill Companies
[2]IEEE,2004,Functional Requirements for 802.20 Security,IEEE.org
[3]姚顧波,2003,網絡安全完全解決方案,電子工業出版社
[4]RSA, 2010,The Security Division of EMC,www.rsasecurity.com
[5]Stallings W,2006,密碼學和網絡安全,Prentice HALL