古詩詞大全網 - 個性簽名 - 什麽是ssl

什麽是ssl

ssl加密的方法

關鍵詞: ssl加密的方法

隨著計算機網絡技術的發展,方便快捷的互連網使人們漸漸習慣了從Web頁上收發E-mail、購物和

交易,這時Web頁面上需要傳輸重要或敏感的數據,例如用戶的銀行帳戶、密碼等,所以網絡安全

就成為現代計算機網絡應用急需解決的問題。

現行網上銀行和電子商務等大型的網上交易系統普遍采用HTTP和SSL相結合的方式。服務器端采用

支持SSL的Web服務器,用戶端采用支持SSL的瀏覽器實現安全通信。

SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。

Netscape公司在推出第壹個Web瀏覽器的同時,提出了SSL協議標準,目前已有3.0版本。SSL采用公

開密鑰技術。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現支

持。目前,利用公開密鑰技術的SSL協議,已成為Internet上保密通訊的工業標準。本文著重在

SSL協議和SSL程序設計兩方面談談作者對SSL的理解。

SSL協議初步介紹

安全套接層協議能使用戶/服務器應用之間的通信不被攻擊者竊聽,並且始終對服務器進行認證,

還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於

它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立於

SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密算法、通信密鑰的協商及服務器認證

工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的私密性。

通過以上敘述,SSL協議提供的安全信道有以下三個特性:

1.數據的保密性

信息加密就是把明碼的輸入文件用加密算法轉換成加密的文件以實現數據的保密。加密的過程需要

用到密匙來加密數據然後再解密。沒有了密鑰,就無法解開加密的數據。數據加密之後,只有密匙

要用壹個安全的方法傳送。加密過的數據可以公開地傳送。

2.數據的壹致性

加密也能保證數據的壹致性。例如:消息驗證碼(MAC),能夠校驗用戶提供的加密信息,接收者可

以用MAC來校驗加密數據,保證數據在傳輸過程中沒有被篡改過。

3.安全驗證

加密的另外壹個用途是用來作為個人的標識,用戶的密匙可以作為他的安全驗證的標識。

SSL是利用公開密鑰的加密技術(RSA)來作為用戶端與服務器端在傳送機密資料時的加密通訊協定。

目前,大部分的Web 服務器及瀏覽器都廣泛支持SSL 技術。當瀏覽器試圖連接壹個具有SSL認證加

密的服務器時,就會喚醒壹個SSL會話,瀏覽器檢查認證,必須具備下面三個條件:

1)有壹個權威機構發放證書,當然可以創建自我簽訂的證書(x509 結構)。

2)證書不能過期。

3)證書是屬於它所連接的服務器的。

只有全部具備了這三個條件,瀏覽器才能成功完成認證。通過這三個條件,用戶能確認其瀏覽器連接

到正確的服務器,而不是連接到壹些想盜取用戶密碼等重要信息的虛假的服務器上。

在當今的電子商務中還有壹項被廣泛使用的安全協議是SET協議。SET(Secure Electronic Transaction,

安全電子交易)協議是由VISA和MasterCard兩大信用卡公司於1997年5月聯合推出的規範。SET能在電

子交易環節上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺詐的可能性。SET交

易分三個階段進行:用戶向商家購物並確定支付;商家與銀行核實;銀行向商家支付貨款。每個階段都

涉及到RSA對數據加密,以及RSA數字簽名。使用SET協議,在壹次交易中,要完成多次加密與解密操作,

故有很高的安全性,但SET協議比SSL協議復雜,商家和銀行都需要改造系統以實現互操作。

在Linux 下,比較流行支持SSL認證的是OpenSSL服務器。OpenSSL項目是壹個合作的項目,開發壹個

健壯的、商業等級的、完整的開放源代碼的工具包,用強大的加密算法來實現安全的Socket層

(Secure Sockets Layer,SSL v2/v3)和傳輸層的安全性(Transport Layer Security,TLS v1)。

這個項目是由全世界的誌願者管理和開發OpenSSL工具包和相關文檔。

如何在Linux下配置OpenSSL服務器,首先從OpenSSL的主頁(/

範曉明

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

使用公鑰加密法認證

認證是壹個身份認證的過程。在下列例子中包括甲和乙,公鑰加密會非常輕松地校驗身份。符號{數據} key意味著"數據"已經使用密碼加密或解密。假如甲想校驗乙的身份。乙有壹對密碼,壹個是公開的,另壹個是私有的。乙透露給甲他的公鑰。甲產生壹個隨機信息發送給乙。甲——〉乙:random-message

乙使用他的私鑰加密消息,返回甲加密後的消息。 乙——〉甲:{random-message}乙的私鑰

甲收到這個消息然後使用乙的以前公開過的公鑰解密。他比較解密後的消息與他原先發給乙的消息。如果它們完全壹致,就會知道在與乙說話。任意壹個中間人不會知道乙的私鑰,也不能正確加密甲檢查的隨機消息。

除非妳清楚知道妳加密的消息。用私鑰加密消息,然後發送給其他人不是壹個好主意。因為加密值可能被用來對付妳,需要註意的是:因為只有妳才有私鑰,所以只有妳才能加密消息。所以,代替加密甲發來的原始消息,乙創建了壹個信息段並且加密。信息段取自隨機消息(random-message)並具有以下有用的特性:

1. 這個信息段難以還原。任何人即使偽裝成乙,也不能從信息段中得到原始消息;

2. 假冒者將發現不同的消息計算出相同的信息段值;

3. 使用信息段,乙能夠保護自己。他計算甲發出的隨機信息段,並且加密結果,並發送加密信息段返回甲。甲能夠計算出相同的信息段並且解密乙的消息認證乙。

這個技術僅僅描繪了數字簽名。通過加密甲產生的隨機消息,乙已經在甲產生的消息簽名。因此我們的認證協議還需要壹次加密。壹些消息由乙產生:

甲——〉乙:妳好,妳是乙麽?

乙——〉甲:甲,我是乙

{信息段[甲,我是乙] } 乙的私鑰

當妳使用這個協議,乙知道他發送給乙的消息,他不介意在上面簽名。他先發送不加密的信息,"甲,我是乙。",然後發送信息段加密的消息版本。甲可以非常方便地校驗乙就是乙,同時,乙還沒有在他不想要的信息上簽名。

提交公鑰

那麽,乙怎樣以可信的方式提交他的公鑰呢?看看認證協議如下所示:

甲——〉乙:妳好

乙——〉甲:嗨,我是乙,乙的公鑰

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲,我是乙] } 乙的私鑰

在這個協議下,任何人都能夠成為"乙"。所有妳所要的只是公鑰和私鑰。妳發送給甲說妳就是乙,這樣妳的公鑰就代替了乙的密碼。然後,妳發送用妳的私鑰加密的消息,證明妳的身份。甲卻不能發覺妳並不是乙。為了解決這個問題,標準組織已經發明了證書。壹個證書有以下的內容:

* 證書的發行者姓名

* 發行證書的組織

* 標題的公鑰

* 郵戳

證書使用發行者的私鑰加密。每壹個人都知道證書發行者的公鑰(這樣,每個證書的發行者擁有壹個證書)。證書是壹個把公鑰與姓名綁定的協議。通過使用證書技術,每壹個人都可以檢查乙的證書,判斷是否被假冒。假設乙控制好他的私鑰,並且他確實是得到證書的乙,就萬事大吉了。

這些是修訂後的協議:

甲——〉乙:妳好

乙——〉甲:嗨,我是乙,乙的校驗

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲, 我是乙] } 乙的私鑰

現在當甲收到乙的第壹個消息,他能檢查證書,簽名(如上所述,使用信息段和公鑰解密),然後檢查標題(乙的姓名),確定是乙。他就能相信公鑰就是乙的公鑰和要求乙證明自己的身份。乙通過上面的過程,制作壹個信息段,用壹個簽名版本答復甲。甲可以校驗乙的信息段通過使用從證書上得到的公鑰並檢查結果。

如果壹個黑客,叫H

甲——〉H:妳好

H——〉不能建立壹個令甲相信的從乙的消息。

交換密碼(secret)

壹旦甲已經驗證乙後,他可以發送給乙壹個只有乙可以解密、閱讀的消息:

甲——〉乙:{secret}乙的公鑰

唯壹找到密碼的方法只有使用乙的私鑰解碼上述的信息。交換密碼是另壹個有效使用密碼加密的方法。即使在甲和乙之間的通訊被偵聽,只有乙才能得到密碼。

使用密碼作為另壹個secret-key增強了網絡的安全性,但是這次這是壹個對稱的加密算法(例如DES、RC4、IDE甲)。因為甲在發送給乙之前產生了密碼,所以甲知道密碼。乙知道密碼因為乙有私鑰,能夠解密甲的信息。但他們都知道密碼,他們都能夠初始化壹個對稱密碼算法,而且開始發送加密後的信息。這兒是修定後的協議:

甲——〉乙:妳好

乙——〉甲:嗨,我是乙,乙的校驗

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰

甲——〉乙:ok 乙,here is a secret {secret}乙的公鑰

乙——〉甲:{some message}secret-key

黑客竊聽

那麽如果有壹個惡意的黑客H在甲和乙中間,雖然不能發現甲和乙已經交換的密碼,但能幹擾他們的交談。他可以放過大部分信息,選擇破壞壹定的信息(這是非常簡單的,因為他知道甲和乙通話采用的協議)。

甲——〉H:妳好

H——〉乙:妳好

乙——〉H:嗨,我是乙,乙的校驗

H——〉甲:嗨,我是乙,乙的校驗

甲——〉H:prove it

H——〉乙:prove it

乙——〉H:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰

H——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰

甲——〉H:ok 乙,here is a secret {secret} 乙的公鑰

H——〉乙:ok 乙,here is a secret {secret} 乙的公鑰

乙——〉H:{some message}secret-key

H——〉甲:Garble[{some message}secret-key ]

H忽略壹些數據不修改,直到甲和乙交換密碼。然後H幹擾乙給甲的信息。在這壹點上,甲相信乙,所以他可能相信已經被幹擾的消息並且盡力解密。

需要註意的是,H不知道密碼,他所能做的就是毀壞使用秘鑰加密後的數據。基於協議,H可能不能產生壹個有效的消息。但下壹次呢?

為了阻止這種破壞,甲和乙在他們的協議中產生壹個校驗碼消息(message authentication code)。壹個校驗碼消息(MAC)是壹部分由密碼和壹些傳輸消息產生的數據。信息段算法描述的上述特性正是它們抵禦H的功能:

MAC= Digest[some message,secret ]

因為H不知道密碼,他不能得出正確的值。即使H隨機幹擾消息,只要數據量大,他成功的機會微乎其微。例如,使用HD5(壹個RSA發明的好的加密算法),甲和乙能夠發送128位MAC值和他們的消息。H猜測正確的MAC的幾率將近1/18,446,744,073,709,551,616約等於零。

這是又壹次修改後的協議:

甲——〉乙:妳好

乙——〉甲:嗨,我是乙,乙的校驗

甲——〉乙:prove it

乙——〉甲:嗨,我是乙,乙的校驗

甲,我是乙

{信息段[甲,我是乙] } 乙的私鑰

ok 乙,here is a secret {secret} 乙的公鑰

{some message,MAC}secret-key

現在H已經無技可施了。他幹擾了得到的所有消息,但MAC計算機能夠發現他。甲和乙能夠發現偽造的MAC值並且停止交談。H不再能與乙通訊。

OpenSSL FAQ