一、前言
加密技術是一門古老而深奧的學科,長期以來,都應用在很小的範圍,如軍事、外交、情報等部門。
公元前405年,斯巴達的將領就使用了原始的錯亂密碼;公元1世紀,羅馬皇帝凱撒就使用了有序的單表代替密碼。中國古代出現的“符”,也是一種數據加密的方法。
20世紀初,電子通訊技術的發展,尤其是兩次世界大戰中,密碼通訊和第三方解密的較量更爲激烈。
但計算機技術的出現,互聯網技術的迅猛發展,到今天,有成千上萬的組織和個人需要保護自己的隱私數據,需要保護相互通訊中的數據安全,這就爲數據加密解密提供了用武之地。
那什麼是加密和解密呢?簡單來說:
加密,即採用一些方式對數據進行處理後,使數據從表面上看,已經不能表達出原有的意思。
解密,就是對加密過的數據採用某些方法,去還原原有數據面貌,從而瞭解所包含信息的真實意圖。
二、名詞解釋
明文:待加密的報文
密文:加密後的報文
密鑰:加密過程中或解密過程中輸入的數據
算法:將明文和密鑰相結合進行處理,生成密文的方法,叫加密算法;或將密文和密鑰相結合進行處理,生成明文的方法,叫解密算法。
三、加密技術分類
(一)單向加密
將數據進行計算變成另一種固定長度的值,而且這種行爲不可逆。
這種加密算法具備幾個特點:
定長輸出,碰撞機率極低
相同消息反覆加密獲得同樣的密文
雪崩效應,即使微小的單個字節的變化,也能引起加密結果的巨大變化
密文不可逆,即從密文不可以推出原明文。
常用算法
MD5、SHA1、、SHA256、SHA384、SHA512
(二)對稱加密技術
使用同一個密鑰,對數據鏡像加密和解密,這種加密技術,稱爲對稱加密。
常用算法:
DES,3DES,IDEA,AES
優點
算法公開、計算量小、加密速度快、加密效率高
缺點
不同通訊雙方使用不同密鑰,導致密鑰過多,難以管理
通訊雙方密鑰交換,無法保證安全
無法驗證發送者和接受者身份
數據完整性無法保證
(三)非對稱加密技術
Public-key cryptography,即公開密鑰加密,又稱非對稱加密。在這個加密過程中,需要一對密鑰,不公開的密鑰稱爲私鑰,公開的那一個密鑰稱爲公鑰。
常用算法:
RSA,DSA,EIGamal
優點
密鑰數目較少。
從一對密鑰中的任何一個密鑰都不能計算出另一個密鑰。
使用一對密鑰中的任何一個加密,只有另一個密鑰才能解密。如果截獲公鑰加密數據,沒有私鑰也無法解密。
缺點
算法複雜,加密解密速度要慢
密鑰交換也不是非常安全
應用場景
1、A和B之間通信,首先互相發送各自的公鑰給對方
2、A發數據給B,A將用B的 公鑰加密 數據後發送給B
3、B收到這個數據後,B使用自己的私鑰來解密數據。其他人截獲了A發出的數據也沒有用,他沒有私鑰。
注:如果2、3步驟中,A發給B的用B公鑰加密的數據被C掉包,即使A的數據中,有自己數據的指紋信息,但是由於B的公鑰是公開的,任何人都能獲取B的公鑰,C就可以做一個一樣格式的數據包給B。B無法驗證這就是A發過來的。
4、如果A用自己的 私鑰加密 數據後,發送給B
5、B使用A的公鑰解密數據成功,就能證明這段數據數據確實是A是發送者。
身份認證:
以上步驟4、5中使用私鑰加密後發佈數據,數據的接受者可以使用發佈者的公鑰來驗證數據的完整性,接受者由此可知這條信息確實來自私鑰擁有者,這也被稱爲數字簽名。解決了數據的不可否認性。
四、安全網絡通信模型
從以上的介紹中可以看出,各種加密算法都有其特點和適用性:
-
使用非對稱加密,發送者A使用私鑰加密,接受者B能夠驗證數據的發送者A是誰,由於所有人都能使用發佈者A公鑰解密,這種方法只能適合發佈公開的信息。
-
接受者B的公鑰是公開的,用它加密數據後發給B,有可能被截獲掉包。
-
非對稱加密算法,加密速度很慢,強度高。對稱加密算法,速度快,但是密鑰交換是個問題。
-
單向加密不可逆,接收者無法還原到明文。
那麼,就需要一種通信模型能夠揚長避短,解決通信安全的問題,於是便有了下面的模型:
通信工作流程
1、發送者A準備好信息明文。
2、發送者A對信息進行哈希運算(單向加密算法),得到一個信息摘要。
3、發送者A使用自己的私鑰(SK)對信息摘要進行加密,即數字簽名,之後將其附件在發送的信息上。(實現不可否認性)
4、發送者A隨機生成一個對稱加密密鑰,並使用它對發送的信息包括摘要進行對稱加密,生成密文。
5、發送者A再使用接收方的公鑰(PK)對第4步使用的隨機對稱密鑰進行加密,之後將其附加至第4步生成的密文上,一併發給接收者B。
6、接收者B收到發送者A的密文後,首先使用自己的私鑰(SK)解密出對稱加密的密鑰。
7、接收者B使用對稱密鑰解密密文,得到附加摘要的信息明文。
8、接收者B使用發送者的公鑰(PK)解密摘要,獲得哈希值
9、接收者B使用同樣的哈希算法再次對信息明文計算,得到新的信息摘要,與解密後的摘要比對,如果一致,則說明收到的信息明文未被篡改。(保證數據完整性)
五、總結
以上的通信模型很好的解決了數據完整性、不可否認性,但這個模型的依賴的關鍵點是雙方公鑰。
這個模型中雙方公鑰來源無法驗證,而且在通訊前,如何獲得每個人的可信任的公鑰也成了整個系統的關鍵。
因此,需要一套系統,能夠解決以上存在的種種問題:身份認證、數據完整性、密鑰交換、操作的不可否認性,它就是PKI。