加密、解密、數字簽名和數字證書概念詳解


1.  概述

隨着電子商務的迅速發展,信息安全已成為焦點問題之一,尤其是網上支付和網絡銀行對信息安全的要求顯得更為突出。為了能在因特網上開展安全的電子商務活動,公開密鑰基礎設施(PKI, Public Key Infrastructure)逐步在國內外得到廣泛應用。我們是否真的需要PKI,PKI究竟有什么用?下面通過一個案例一步步地來剖析這個問題。

2.  案例

2.1 案例內容

甲想將一份合同文件通過Internet發給遠在國外的乙,此合同文件對雙方非常重要,不能有絲毫差錯,而且此文件絕對不能被其他人得知其內容。如何才能實現這個合同的安全發送?

 

2.2 問題1

問題1:最自然的想法是,甲必須對文件加密才能保證不被其他人查看其內容。那么,到底應該用什么加密技術,才能使合同傳送既安全又快速呢?

 

  可以采用一些成熟的對稱加密算法,如DES、3DES、RC5等對文件加密。對稱加密采用了對稱密碼編碼技術,對稱加密的特點是文件加密和解密使用相同的密鑰,即加密密鑰也可以用做解密密鑰,這種方法在密碼學中叫做對稱加密算法,

2.3 問題2

問題2:如果黑客截獲此文件,是否用同一算法就可以解密此文件呢?

  不可以,因為加密和解密均需要兩個組件:加密算法和對稱密鑰,加密算法需要用一個對稱密鑰來解密,黑客並不知道此密鑰。

2.4 問題3

問題3:既然黑客不知密鑰,那么乙怎樣才能安全地得到其密鑰呢?用電話通知,若電話被竊聽,通過Internet 發此密鑰給乙,可能被黑客截獲,怎么辦?

  方法是用非對稱密鑰算法加密對稱密鑰后進行傳送。與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(Public Key)和私有密鑰(Private Key)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫做非對稱加密算法(公/私鑰可由專門軟件生成)。甲乙雙方各有一對公/私鑰,公鑰可在Internet上傳送,私鑰自己保存。這樣甲就可以用乙的公鑰加密問題1中提到的對稱加密算法中的對稱密鑰。即使黑客截獲到此密鑰,也會因為黑客不知乙的私鑰,而解不開對稱密鑰,因此也解不開密文,只有乙才能解開密文。(注意:這里是乙生成非對稱算法的公鑰和私鑰,乙將私鑰保存在自己的手中,然后將公鑰發給甲,公鑰是公開的,誰都可以截獲/獲得)。

 

 

 

2.5 問題4

問題4既然甲可以用乙的公鑰加密其對稱密鑰,為什么不直接用乙的公鑰加密其文件呢?這樣不僅簡單,而且省去了用對稱加密算法加密文件的步驟?

  不可以這么做。因為非對稱密碼算法有兩個缺點:(1)加密速度慢,比對稱加密算法慢10~100倍,因此只可用其加密小數據(如對稱密鑰);(2)非對稱加密后會導致得到的密文變長。因此一般采用對稱加密算法加密其文件,然后用非對稱算法加密對稱算法所用到的對稱密鑰。

2.6 問題5

問題5如果黑客截獲到密文(甲發送給乙的用自己的對稱密鑰加密的文件),同樣也截獲到用公鑰加密的對稱密鑰(甲用乙的公鑰加密的自己的對稱密鑰),由於黑客無乙的私鑰,因此他解不開對稱密鑰,但如果他用對稱加密算法加密一份假文件,並用乙的公鑰加密一份假文件的對稱密鑰,並發給乙,乙會以為收到的是甲發送的文件,會用其私鑰解密假文件,並很高興地閱讀其內容,但卻不知已經被替換。換句話說,乙並不知道這不是甲發給他的,怎么辦?

 

  答案是用數字簽名證明其身份。數字簽名是通過散列算法(Secure Hash Algorithm,縮寫為SHA,也稱為Hash或者哈希,也稱為雜湊),如MD5、SHA-1等算法從大塊的數據中提取一個摘要。而從這個摘要中不能通過散列算法恢復出任何一點原文,即得到的摘要不會透露出任何最初明文的信息,但如果原信息受到任何改動,得到的摘要卻肯定會有所不同(摘要是通過Hash算法得到的,相同信息的不同算法得到的摘要是不同的)。因此甲可以對文件進行散列算法得到摘要,並用自己的私鑰加密(因為非對稱算法可逆,即用私鑰可解開公鑰加密的文件,反之亦然),這樣即使黑客截獲也無用。因為黑客不會從摘要內獲得任何信息,但乙卻不一樣,他可用甲的公鑰解密,得到其摘要(如果用甲的公鑰能夠解開此摘要,說明此摘要肯定是甲發的,因為只有甲的公鑰才能解開用甲的私鑰加密的信息,而甲的私鑰只有甲自己知道),並對收到的文件(解密后的合同文件)也進行同樣的散列算法,通過比較其摘要是否一樣,就可得知此文件是否被篡改過(因為若摘要相同,則肯定信息未被改動,這是散列算法的特點)。這樣不僅解決了證明發送人身份的問題,同時還解決了文件是否被篡改問題。(注意:摘要不是加解密,摘要只能用於對比,看是否相同)

 

2.7 問題6

問題6通過對稱加密算法加密其文件,再通過非對稱算法加密其對稱密鑰,又通過散列算法證明其發送者身份和其信息的正確性,這樣是否就萬無一失了?

  回答是否定的。問題在於乙並不能肯定他所用的所謂甲的公鑰一定是甲的(這里的公鑰是指甲發送給乙用於解密摘要的公鑰)。假如丙也有自己的公鑰私鑰,如果丙替換了甲手中乙的公鑰,然后丙用自己的私鑰給乙發送數據,這個時候乙是不知道他收到的數據時來自丙。為了解決這個問題就出現了證書,解決辦法是用數字證書來綁定公鑰和公鑰所屬人,以此來證明公鑰確實是甲的公鑰。

  數字證書是一個經證書授權中心(CA)數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件,是網絡通信中標識通信各方身份信息的一系列數據,它提供了一種在 Internet上驗證身份的方式,其作用類似於司機的駕駛執照或日常生活中的身份證,人們可以在交往中用它來識別對方的身份。

  一般情況下證書中包括公開密鑰、名稱、密鑰的有效時間、發證機關(證書授權中心)名稱、該證書的序列號等信息。它是由一個權威機構—CA(Certificate Authority)機構,又稱為證書授權中心發放的。

  CA機構作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。CA中心為每個使用公開密鑰的用戶發放一個數字證書,數字證書的作用是證明證書中列出的用戶合法擁有證書中列出的公開密鑰。CA機構的數字簽名使得攻擊者不能偽造和篡改證書,CA是PKI的核心,負責管理PKI結構下的所有用戶(包括各種應用程序)的證書,把用戶的公鑰和用戶的其他信息捆綁在一起,在網上驗證用戶的身份。

  這樣理解可能更簡單點,CA機構它也有一對公鑰和私鑰,證書機構用它的私鑰將甲的公鑰和一些甲的信息加密得到數字證書。然后甲發送數據給乙時,包含了三個部分:原文+數字簽名+數字證書,注意,現在乙不持有甲的公鑰,乙持有的是證書機構的公鑰,通過證書機構的公鑰解密數字證書拿到乙的公鑰,然后在重復之前的過程計算數字簽名,跟發來的數字簽名比對。但是有同樣的一個問題:如果乙現在持有的證書機構的公鑰被別人替換呢?這個過程是建立在被大家所認可的證書機構之上得到的公鑰,意思就是說,我們默認證書機構是安全的,所以這是一種安全的方式。

2.8 問題7

問題7至此似乎很安全了。但仍存在安全漏洞,例如:甲雖將合同文件發給乙,但甲拒不承認在簽名所顯示的那一時刻簽署過此文件(數字簽名就相當於書面合同的文字簽名),並將此過錯歸咎於電腦,進而不履行合同,怎么辦?(簽名時間不一致)

  解決辦法是采用可信的時鍾服務(由權威機構提供),即由可信的時間源和文件的簽名者對文件進行聯合簽名。在書面合同中,文件簽署的日期和簽名一樣均是十分重要的防止文件被偽造和篡改的關鍵性內容(例如合同中一般規定在文件簽署之日起生效)。在電子文件中,由於用戶桌面時間很容易改變(不准確或可人為改變),由該時間產生的時間戳不可信賴,因此需要一個第三方來提供時間戳服務(數字時間戳服務(DTS)是網上安全服務項目,由專門的機構提供)。此服務能提供電子文件發表時間的安全保護。

  時間戳產生的過程為:用戶首先將需要加時間戳的文件用哈希編碼加密形成摘要,然后將該摘要發送到DTS,DTS在加入了收到文件摘要的日期和時間信息后再對該文件加密(數字簽名),然后送回用戶。因此時間戳(time-stamp)是一個經加密后形成的憑證文檔,它包括三個部分:需加時間戳的文件的摘要DTS收到文件的日期和時間DTS的數字簽名。由於可信的時間源和文件的簽名者對文件進行了聯合簽名,進而阻止了文檔簽名的那一方(即甲方)在時間上欺詐的可能性,因此具有不可否認性。

 

2.9 問題8

問題8:有了數字證書將公/私鑰和身份綁定,又有權威機構提供時鍾服務使其具有不可否認性,是不是就萬無一失了?不,仍然有問題。乙還是不能證明對方就是甲,因為完全有可能是別人盜用了甲的私鑰(如別人趁甲不在使用甲的電腦),然后以甲的身份來和乙傳送信息,這怎么解決呢?

  解決辦法是使用強口令、認證令牌、智能卡和生物特征等技術對使用私鑰的用戶進行認證,以確定其是私鑰的合法使用者。

  以認證令牌舉例:假設用戶的私鑰被保存在后台服務器的加密容器里,要訪問私鑰,用戶必須先使用認證令牌認證(如用戶輸入賬戶名、令牌上顯示的通行碼和PIN等),如果認證成功,該用戶的加密容器就下載到用戶系統並解密。

通過以上問題的解決,就基本滿足了安全發送文件的需求。下面總結一下這個過程,對甲而言整個發送過程如下:

  1. 創建對稱密鑰(相應軟件生成,並且是一次性的),用其加密合同,並用乙的公鑰打包對稱密鑰。
  2. 創建數字簽名,對合同進行散列算法(如MD5算法)並產生原始摘要,甲用自己的私鑰加密該摘要(公/私鑰既可自己創建也可由CA提供,公鑰和私鑰要能對應起來)。
  3. 甲將自己的一些公鑰信息發送給CA機構,CA機構通過你的信息給你提供數字證書。
  4. 最后,甲將加密后的合同、打包后的密鑰、加密后的摘要,以及甲的數字證書(由權威機構CA簽發)一起發給乙。

而乙接收加密文件后,需要完成以下動作 :

  1. 接收后,用乙的私鑰解密得到對稱密鑰,並用對稱密鑰解開加密的合同,得到合同明文。
  2. 通過甲的數字證書和CA機構的公鑰獲得屬於甲的公鑰,並用其解開摘要(稱做摘要1)。
  3. 對解密后的合同使用和發送者同樣的散列算法來創建摘要(稱做摘要2)。
  4. 比較摘要1和摘要2,若相同,則表示信息未被篡改,且來自於甲。

  甲乙傳送信息過程看似並不復雜,但實際上它由許多基本成分組成,如:對稱/非對稱密鑰密碼技術、數字證書、數字簽名、證書發放機構(CA)、公開密鑰的安全策略等,這其中最重要、最復雜的是證書發放機構(CA)的構建。

 

在此強調下證書和簽名:

  證書實際對於非對稱加密算法(公鑰加密)來說的,一般證書包括公鑰、姓名、數字簽名三個部分。證書好比身份證,證書機構(ca)就好比是公安局,職責就是負責管理用戶的證書也就是身份證。比如我的公鑰是FrankKey,姓名是FrankXuLei。公安局可以給我登記,但是怎么保證我和別的FrankXuLei區別開呢,於是公安局(證書機構)就使用我的名字和密鑰做了個組合,再使用一種哈希算法,得出一串值,來標識我的唯一性,這個值就是我的身份證號碼,也就是證書里的數字簽名(消息摘要),同時為了不能讓黑客仿造數字證書,數字證書的發行者用自己的私鑰對數字簽名進行加密,這樣,使用該數字證書的網絡交易實體就可以用證書發行者的公鑰進行解密驗證。(即:證書中數字簽名的目的是證明自己的身份的確是真實的自己而非其他人,所以需要用自己的私鑰進行加密,讓使用者用公鑰進行解密驗證,從而從技術上杜絕了偽造自己的黑客。)

  所以說加密不一定要證書,取決於你數據安全具體的需求。一般大型的電子商務網站都有自己特定的證書。證書管理的機構比較有名的就是VeriSign(可以說是互聯網上的身份證管理局)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM