GB | BIG5
|
| 首頁 > 應用技術 > SSL > 正文 |
 |
| SSL原理解密 |
| 本文出自:http://noc.cstnet.net.cn/ 范曉明 (2001-06-08 12:10:00) |
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不再能與乙通訊。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |