加密解密及安全網絡通信模型

一、前言

加密技術是一門古老而深奧的學科,長期以來,都應用在很小的範圍,如軍事、外交、情報等部門。

公元前405年,斯巴達的將領就使用了原始的錯亂密碼;公元1世紀,羅馬皇帝凱撒就使用了有序的單表代替密碼。中國古代出現的“符”,也是一種數據加密的方法。

20世紀初,電子通訊技術的發展,尤其是兩次世界大戰中,密碼通訊和第三方解密的較量更爲激烈。

但計算機技術的出現,互聯網技術的迅猛發展,到今天,有成千上萬的組織和個人需要保護自己的隱私數據,需要保護相互通訊中的數據安全,這就爲數據加密解密提供了用武之地。

那什麼是加密和解密呢?簡單來說:

加密,即採用一些方式對數據進行處理後,使數據從表面上看,已經不能表達出原有的意思。

解密,就是對加密過的數據採用某些方法,去還原原有數據面貌,從而瞭解所包含信息的真實意圖。

 

二、名詞解釋

明文:待加密的報文

密文:加密後的報文

密鑰:加密過程中或解密過程中輸入的數據

算法:將明文和密鑰相結合進行處理,生成密文的方法,叫加密算法;或將密文和密鑰相結合進行處理,生成明文的方法,叫解密算法。

 

三、加密技術分類

(一)單向加密

將數據進行計算變成另一種固定長度的值,而且這種行爲不可逆。

這種加密算法具備幾個特點:

定長輸出,碰撞機率極低

相同消息反覆加密獲得同樣的密文

雪崩效應,即使微小的單個字節的變化,也能引起加密結果的巨大變化

密文不可逆,即從密文不可以推出原明文。

常用算法

MD5、SHA1、、SHA256、SHA384、SHA512

 

(二)對稱加密技術

使用同一個密鑰,對數據鏡像加密和解密,這種加密技術,稱爲對稱加密。

對稱加密

常用算法:

DES,3DES,IDEA,AES

優點

算法公開、計算量小、加密速度快、加密效率高

缺點

不同通訊雙方使用不同密鑰,導致密鑰過多,難以管理

通訊雙方密鑰交換,無法保證安全

無法驗證發送者和接受者身份

數據完整性無法保證

 

(三)非對稱加密技術

Public-key cryptography,即公開密鑰加密,又稱非對稱加密。在這個加密過程中,需要一對密鑰,不公開的密鑰稱爲私鑰,公開的那一個密鑰稱爲公鑰。

常用算法:

RSA,DSA,EIGamal

優點

密鑰數目較少。

從一對密鑰中的任何一個密鑰都不能計算出另一個密鑰。

使用一對密鑰中的任何一個加密,只有另一個密鑰才能解密。如果截獲公鑰加密數據,沒有私鑰也無法解密。

缺點

算法複雜,加密解密速度要慢

密鑰交換也不是非常安全

 

應用場景

1、A和B之間通信,首先互相發送各自的公鑰給對方

非對稱加密1公鑰

2、A發數據給B,A將用B的 公鑰加密 數據後發送給B

3、B收到這個數據後,B使用自己的私鑰來解密數據。其他人截獲了A發出的數據也沒有用,他沒有私鑰。

注:如果2、3步驟中,A發給B的用B公鑰加密的數據被C掉包,即使A的數據中,有自己數據的指紋信息,但是由於B的公鑰是公開的,任何人都能獲取B的公鑰,C就可以做一個一樣格式的數據包給B。B無法驗證這就是A發過來的。

 

非對稱加密2私鑰

4、如果A用自己的 私鑰加密 數據後,發送給B

5、B使用A的公鑰解密數據成功,就能證明這段數據數據確實是A是發送者。

身份認證:  

以上步驟4、5中使用私鑰加密後發佈數據,數據的接受者可以使用發佈者的公鑰來驗證數據的完整性,接受者由此可知這條信息確實來自私鑰擁有者,這也被稱爲數字簽名。解決了數據的不可否認性。

 

四、安全網絡通信模型

從以上的介紹中可以看出,各種加密算法都有其特點和適用性:

  • 使用非對稱加密,發送者A使用私鑰加密,接受者B能夠驗證數據的發送者A是誰,由於所有人都能使用發佈者A公鑰解密,這種方法只能適合發佈公開的信息。

  • 接受者B的公鑰是公開的,用它加密數據後發給B,有可能被截獲掉包。

  • 非對稱加密算法,加密速度很慢,強度高。對稱加密算法,速度快,但是密鑰交換是個問題。

  • 單向加密不可逆,接收者無法還原到明文。

那麼,就需要一種通信模型能夠揚長避短,解決通信安全的問題,於是便有了下面的模型:

PKI通信流程

通信工作流程

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。

PKI及用OpenSSL實現簡單的PKI,請看下一篇博文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章