使用SSL協議保證web服務通訊安全(一、基礎理論篇)

技術小甜發表於2017-11-15

我的參賽主頁是:http://2010blog.51cto.com/1060257,請各位支援我,給我投上寶貴一票,謝謝!

 

Apache伺服器與客戶端的通訊是明文方式,很多通過HTTP協議傳送資料的應用將受到黑客的威脅,資訊的安全性難以得到保障。因此,本文就將對SSL協議進行深入剖析,並介紹如何使用SSL技術保護Apache伺服器通訊。

全文請見:http://netsecurity.51cto.com/art/201011/234421.htm

1  SSL簡介

通常的連線方式中,通訊是以非加密的形式在網路上傳播的,這就有可能被非法竊聽到,尤其是用於認證的口令資訊。為了避免這個安全漏洞,就必須對傳輸過程進行加密。對HTTP傳輸進行加密的協議為HTTPS,它是通過SSL進行HTTP傳輸的協議,不但通過公用金鑰的演算法進行加密保證傳輸的安全性,而且還可以通過獲得認證證書CA,保證客戶連線的伺服器沒有被假冒。

SSL是一種國際標準的加密及身份認證通訊協議,使用者採用的瀏覽器就支援此協議。SSL(Secure Sockets Layer)最初是由美國Netscape公司研究出來的,後來成為了Internet網上安全通訊與交易的標準(參見圖1)。SSL協議使用通訊雙方的客戶證書以及CA根證書,允許客戶/伺服器應用以一種不能被偷聽的方式通訊,在通訊雙方間建立起了一條安全的、可信任的通訊通道。它具備以下基本特徵:資訊保密性、資訊完整性、相互鑑定。

該協議主要使用Hash編碼、加密技術,下面對這些技術進行簡要介紹:

圖1  SSL工作層次示意圖

圖1  SSL工作層次示意圖

(1)Hash編碼是使用Hash(雜湊)演算法從任意長度的訊息中計算Hash值的一個過程,Hash值可以說是訊息的指紋,或者說是摘要。因為對於任何不同的訊息,幾乎總有不同的Hash值,如果有衝突的話,可以採用開鏈法等方法來進行避免。因此在SSL通訊過程中,可以對訊息的Hash值進行加密,確保傳遞的訊息在傳輸過程中沒有被修改。

(2)非對稱加密或稱之為公鑰加密使用數學上相關的兩個數值來對資訊進行編碼(加密),其中一個數字稱為公鑰,另一個稱為私鑰。公鑰加密的資訊可以用私鑰解密,私鑰加密的資訊可以用公鑰解密。由於公鑰可以大面積發放,因此公鑰加密在SSL加密通訊中應用於對金鑰的加密或者進行數字簽名。

對稱加密和非對稱加密相比的區別在於對稱加密中,加密資訊和解密資訊使用同樣的金鑰,因此該金鑰無法公開,並且一旦知道其密碼,則該加密完全失效。但是其具有加密、解密快速、方便的特點。

2  Apache中運用SSL的基本原理

1.公鑰體制

加密和解密使用同一個金鑰的演算法,稱為對稱加密演算法;加密和解密使用的是不同的金鑰,稱為非對稱加密演算法,公鑰系統即屬於非對稱加密演算法。對於對稱加密而言,需要著重保護的是對稱金鑰,對於公鑰演算法而言,需要著重保護的是私鑰。

公鑰加密演算法,以及衍生出的數字簽名、數字證書技術,不僅廣泛應用於Internet通訊中,例如HTTPS協議中的SSL/TLS,在單機系統中也越來越受到重視,例如Windows XP的裝置驅動程式、.NET的GAC assembly都要求數字簽名。微軟從Windows98/NT4起即提供了Cryptograph API,支援DES、RC2、RC4,IDEA等對稱加密演算法和RSA公鑰系統等非對稱密演算法,以及MD5,SHA,MAC等摘要(Digest,也稱為Hash,雜湊)演算法。

 

RSA公鑰加密在計算機產業中被廣泛使用在認證和加密。可以從RSA Data Security Inc.獲得的RSA公鑰加密許可證。公鑰加密是使用一對非對稱的密碼加密或解密的方法。每一對密碼由公鑰和私鑰組成。公鑰被廣泛釋出。私鑰是隱密的,不公開。用公鑰加密的資料只能夠被私鑰解密。反過來,使用私鑰加密的資料只能用公鑰解密。這個非對稱的特性使得公鑰加密很有用。

2.數字證書簡介

數字證書就是網際網路通訊中標誌通訊各方身份資訊的一系列資料,提供了一種在Internet上驗證您身份的方式,其作用類似於司機的駕駛執照或日常生活中的身份證。它是由一個由權威機構—–CA機構,又稱為證書授權(Certificate Authorit y)中心發行的,人們可以在網上用它來識別對方的身份。數字證書是一個經證書授權中心數字簽名的包含公開金鑰擁有者資訊以及公開金鑰的檔案。最簡單的證書包含一個公開金鑰、名稱以及證書授權中心的數字簽名。一般情況下證書中還包括金鑰的有效時間,發證機關(證書授權中心)的名稱,該證書的序列號等資訊,證書的格式遵循ITUT X.509國際標準。數字證書可以應用於網際網路上的電子商務活動和電子政務活動,其應用範圍涉及需要身份認證及資料安全的各個行業,包括傳統的商業、製造業、流通業的網上交易,以及公共事業、金融服務業、工商稅務、海關、政府行政辦公、教育科研單位、保險、醫療等網上作業系統。

一個標準的X.509數字證書包含以下一些內容:

證書的版本資訊;

證書的序列號,每個證書都有一個唯一的證書序列號;

證書所使用的簽名演算法;

證書的發行機構名稱,命名規則一般採用X.500格式;

證書的有效期,現在通用的證書一般採用UTC時間格式,它的計時範圍為1950-2049;

證書所有人的名稱,命名規則一般採用X.500格式;

證書所有人的公開金鑰;

證書發行者對證書的簽名。

3.數字證書基本功能

基於Internet網的電子商務系統技術使在網上購物的顧客能夠極其方便輕鬆地獲 得商家和企業的資訊,但同時也增加了對某些敏感或有價值的資料被濫用的風險。買方和賣方都必須對於在因特網上進行的一切金融交易運作都是真實可靠的,並且要使顧客、商家和企業等交易各方都具有絕對的信心,因而因特網(Internet)電子商務系統必須保證具有十分可靠的安全保密技術,也就是說,必須保證網路安全的四大要素,即資訊傳輸的保密性、資料交換的完整性、傳送資訊的不可否認性、交易者身份的確定性。

1、資訊的保密性

交易中的商務資訊均有保密的要求。如信用卡的帳號和使用者名稱被人知悉,就可能 被盜用,訂貨和付款的資訊被競爭對手獲悉,就可能喪失商機。因此在電子商務的信 息傳播中一般均有加密的要求。

 

2、交易者身份的確定性

網上交易的雙方很可能素昧平生,相隔千里。要使交易成功首先要能確認對方的身份,對商家要考慮客戶端不能是騙子,而客戶也會擔心網上的商店不是一個玩弄欺詐的黑店。因此能方便而可靠地確認對方身份是交易的前提。對於為顧客或使用者開展服務的銀行、信用卡公司和銷售商店,為了做到安全、保密、可靠地開展服務活動,都要進行身份認證的工作。對有關的銷售商店來說,他們對顧客所用的信用卡的號碼是不知道的,商店只能把信用卡的確認工作完全交給銀行來完成。銀行和信用卡公司可以採用各種保密與識別方法,確認顧客的身份是否合法,同時還要防止發生拒付款 問題以及確認訂貨和訂貨收據資訊等。

3、不可否認性

由於商情的千變萬化,交易一旦達成是不能被否認的。否則必然會損害一方的利益。例如訂購黃金,訂貨時金價較低,但收到訂單後,金價上漲了,如收單方能否認受到訂單的實際時間,甚至否認收到訂單的事實,則訂貨方就會蒙受損失。因此電子 交易通訊過程的各個環節都必須是不可否認的。

4、不可修改性

交易的檔案是不可被修改的,如上例所舉的訂購黃金。供貨單位在收到訂單後,發現金價大幅上漲了,如其能改動檔案內容,將訂購數1噸改為1克,則可大幅受益,那麼訂貨單位可能就會因此而蒙受損失。因此電子交易檔案也要能做到不可修改,以保障交易的嚴肅和公正。

4.數字證書原理

人們在感嘆電子商務的巨大潛力的同時,不得不冷靜地思考,在人與人互不見面的計算機網際網路上進行交易和作業時,怎麼才能保證交易的公正性和安全性,保證交易雙方身份的真實性。國際上已經有比較成熟的安全解決方案,那就是建立安全證書體系結構。數字安全證書提供了一種在網上驗證身份的方式。安全證書體制主要採用了公開金鑰體制,其它還包括對稱金鑰加密、數字簽名、數字信封等技術。

我們可以使用數字證書,通過運用對稱和非對稱密碼體制等密碼技術建立起一套嚴密的身份認證系統,從而保證:資訊除傳送方和接收方外不被其它人竊取;資訊在傳輸過程中不被篡改;傳送方能夠通過數字證書來確認接收方的身份;傳送方對於自己的資訊不能抵賴。

數字證書採用公鑰體制,即利用一對互相匹配的金鑰進行加密、解密。每個使用者自己設定一把特定的僅為本人所知的私有金鑰(私鑰),用它進行解密和簽名;同時設定一把公共金鑰(公鑰)並由本人公開,為一組使用者所共享,用於加密和驗證簽名。當傳送一份保密檔案時,傳送方使用接收方的公鑰對資料加密,而接收方則使用 自己的私鑰解密,這樣資訊就可以安全無誤地到達目的地了。通過數字的手段保證加密過程是一個不可逆過程,即只有用私有金鑰才能解密。在公開金鑰密碼體制中,常用的一種是RSA體制。其數學原理是將一個大數分解成兩個質數的乘積,加密和解密用的是兩個不同的金鑰。即使已知明文、密文和加密金鑰(公開金鑰),想要推匯出解密金鑰(私密金鑰),在計算上是不可能的。按現在的計算機技術水平,要破解目前採用的1024位RSA金鑰,需要上千年的計算時間。公開金鑰技術解決了金鑰釋出的管理問題,商戶可以公開其公開金鑰,而保留其私有金鑰。購物者可以用人人皆知的公開金鑰對傳送的資訊進行加密,安全地傳送給商戶,然後由商戶用自己的私有金鑰進行解密。

使用者也可以採用自己的私鑰對資訊加以處理,由於金鑰僅為本人所有,這樣就產生了別人無法生成的檔案,也就形成了數字簽名。採用數字簽名,能夠確認以下兩點:

(1)保證資訊是由簽名者自己簽名傳送的,簽名者不能否認或難以否認;

(2)保證資訊自簽發後到收到為止未曾作過任何修改,簽發的檔案是真實檔案。

 

數字簽名具體做法是:

(1)將報文按雙方約定的HASH演算法計算得到一個固定位數的報文摘要。在數學上保證:只要改動報文中任何一位,重新計算出的報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。

(2)將該報文摘要值用傳送者的私人金鑰加密,然後連同原報文一起傳送給接收者,而產生的報文即稱數字簽名。

(3)接收方收到數字簽名後,用同樣的HASH演算法對報文計算摘要值,然後與用傳送者的公開金鑰進行解密解開的報文摘要值相比較。如相等則說明報文確實來自所稱的傳送者。

5.證書授權中心

CA機構,又稱為證書授權(Certificate Authority)中心,作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。CA中心為每個使用公開金鑰的使用者發放一個數字證書,數字證書的作用是證明證書中列出的使用者合法擁有證書中列出的公開金鑰。CA機構的數字簽名使得攻擊者不能偽造和篡改證書。它負責產生、分配並管理所有參與網上交易的個體所需的數字證書,因此是安全電子交易的核心環節。

由此可見,建設證書授權(CA)中心,是山西省開拓和規範電子商務市場必不可少的一步。為保證使用者之間在網上傳遞資訊的安全性、真實性、可靠性、完整性和不可抵賴性,不僅需要對使用者的身份真實性進行驗證,也需要有一個具有權威性、公正性、唯一性的機構,負責向電子商務的各個主體頒發並管理符合國內、國際安全電子 交易協議標準的電子商務安全證書。


本文轉自samsunglinuxl51CTO部落格,原文連結: http://blog.51cto.com/patterson/433765,如需轉載請自行聯絡原作者


相關文章