SSL算法解密分析

RSA公鑰加密在計(jì)算機(jī)產(chǎn)業(yè)中被廣泛使用在認(rèn)證和加密??梢詮腞SA Data Security Inc.獲得的RSA公鑰加密許可證。公鑰加密是使用一對(duì)非對(duì)稱的密碼加密或解密的方法。每一對(duì)密碼由公鑰和私鑰組成。公鑰被廣泛發(fā)布。私鑰是隱密的,不公開。用公鑰加密的數(shù)據(jù)只能夠被私鑰解密。反過來,使用私鑰加密的數(shù)據(jù)只能用公鑰解密。這個(gè)非對(duì)稱的特性使得公鑰加密很有用。

使用公鑰加密法認(rèn)證

認(rèn)證是一個(gè)身份認(rèn)證的過程。在下列例子中包括甲和乙,公鑰加密會(huì)非常輕松地校驗(yàn)身份。符號(hào){數(shù)據(jù)} key意味著"數(shù)據(jù)"已經(jīng)使用密碼加密或解密。假如甲想校驗(yàn)乙的身份。乙有一對(duì)密碼,一個(gè)是公開的,另一個(gè)是私有的。乙透露給甲他的公鑰。甲產(chǎn)生一個(gè)隨機(jī)信息發(fā)送給乙。甲——〉乙:random-message?乙使用他的私鑰加密消息,返回甲加密后的消息。 乙——〉甲:{random-message}乙的私鑰

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

除非你清楚知道你加密的消息。用私鑰加密消息,然后發(fā)送給其他人不是一個(gè)好主意。因?yàn)榧用苤悼赡鼙挥脕韺?duì)付你,需要注意的是:因?yàn)橹挥心悴庞兴借€,所以只有你才能加密消息。所以,代替加密甲發(fā)來的原始消息,乙創(chuàng)建了一個(gè)信息段并且加密。信息段取自隨機(jī)消息(random-message)并具有以下有用的特性:

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

2. 假冒者將發(fā)現(xiàn)不同的消息計(jì)算出相同的信息段值;

3. 使用信息段,乙能夠保護(hù)自己。他計(jì)算甲發(fā)出的隨機(jī)信息段,并且加密結(jié)果,并發(fā)送加密信息段返回甲。甲能夠計(jì)算出相同的信息段并且解密乙的消息認(rèn)證乙。

這個(gè)技術(shù)僅僅描繪了數(shù)字簽名。通過加密甲產(chǎn)生的隨機(jī)消息,乙已經(jīng)在甲產(chǎn)生的消息簽名。因此我們的認(rèn)證協(xié)議還需要一次加密。一些消息由乙產(chǎn)生:

甲——〉乙:你好,你是乙么?

乙——〉甲:甲,我是乙

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

當(dāng)你使用這個(gè)協(xié)議,乙知道他發(fā)送給乙的消息,他不介意在上面簽名。他先發(fā)送不加密的信息,"甲,我是乙。",然后發(fā)送信息段加密的消息版本。甲可以非常方便地校驗(yàn)乙就是乙,同時(shí),乙還沒有在他不想要的信息上簽名。

提交公鑰

那么,乙怎樣以可信的方式提交他的公鑰呢?看看認(rèn)證協(xié)議如下所示:

甲——〉乙:你好

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

甲——〉乙:prove it

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

在這個(gè)協(xié)議下,任何人都能夠成為"乙"。所有你所要的只是公鑰和私鑰。你發(fā)送給甲說你就是乙,這樣你的公鑰就代替了乙的密碼。然后,你發(fā)送用你的私鑰加密的消息,證明你的身份。甲卻不能發(fā)覺你并不是乙。為了解決這個(gè)問題,標(biāo)準(zhǔn)組織已經(jīng)發(fā)明了證書。一個(gè)證書有以下的內(nèi)容:

* 證書的發(fā)行者姓名

* 發(fā)行證書的組織

* 標(biāo)題的公鑰

* 郵戳

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

這些是修訂后的協(xié)議:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校驗(yàn)

甲——〉乙:prove it

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

現(xiàn)在當(dāng)甲收到乙的第一個(gè)消息,他能檢查證書,簽名(如上所述,使用信息段和公鑰解密),然后檢查標(biāo)題(乙的姓名),確定是乙。他就能相信公鑰就是乙的公鑰和要求乙證明自己的身份。乙通過上面的過程,制作一個(gè)信息段,用一個(gè)簽名版本答復(fù)甲。甲可以校驗(yàn)乙的信息段通過使用從證書上得到的公鑰并檢查結(jié)果。

如果一個(gè)黑客,叫H?甲——〉H:你好

H——〉不能建立一個(gè)令甲相信的從乙的消息。

交換密碼(secret)

一旦甲已經(jīng)驗(yàn)證乙后,他可以發(fā)送給乙一個(gè)只有乙可以解密、閱讀的消息:

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

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

使用密碼作為另一個(gè)secret-key增強(qiáng)了網(wǎng)絡(luò)的安全性,但是這次這是一個(gè)對(duì)稱的加密算法(例如DES、RC4、IDE甲)。因?yàn)榧自诎l(fā)送給乙之前產(chǎn)生了密碼,所以甲知道密碼。乙知道密碼因?yàn)橐矣兴借€,能夠解密甲的信息。但他們都知道密碼,他們都能夠初始化一個(gè)對(duì)稱密碼算法,而且開始發(fā)送加密后的信息。這兒是修定后的協(xié)議:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校驗(yàn)

甲——〉乙:prove it

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

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

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

黑客竊聽

那么如果有一個(gè)惡意的黑客H在甲和乙中間,雖然不能發(fā)現(xiàn)甲和乙已經(jīng)交換的密碼,但能干擾他們的交談。他可以放過大部分信息,選擇破壞一定的信息(這是非常簡(jiǎn)單的,因?yàn)樗兰缀鸵彝ㄔ挷捎玫膮f(xié)議)。

甲——〉H:你好

H——〉乙:你好

乙——〉H:嗨,我是乙,乙的校驗(yàn)

H——〉甲:嗨,我是乙,乙的校驗(yàn)

甲——〉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忽略一些數(shù)據(jù)不修改,直到甲和乙交換密碼。然后H干擾乙給甲的信息。在這一點(diǎn)上,甲相信乙,所以他可能相信已經(jīng)被干擾的消息并且盡力解密。

需要注意的是,H不知道密碼,他所能做的就是毀壞使用秘鑰加密后的數(shù)據(jù)?;趨f(xié)議,H可能不能產(chǎn)生一個(gè)有效的消息。但下一次呢?

為了阻止這種破壞,甲和乙在他們的協(xié)議中產(chǎn)生一個(gè)校驗(yàn)碼消息(message authentication code)。一個(gè)校驗(yàn)碼消息(MAC)是一部分由密碼和一些傳輸消息產(chǎn)生的數(shù)據(jù)。信息段算法描述的上述特性正是它們抵御H的功能:

MAC= Digest[some message,secret ]

因?yàn)镠不知道密碼,他不能得出正確的值。即使H隨機(jī)干擾消息,只要數(shù)據(jù)量大,他成功的機(jī)會(huì)微乎其微。例如,使用HD5(一個(gè)RSA發(fā)明的好的加密算法),甲和乙能夠發(fā)送128位MAC值和他們的消息。H猜測(cè)正確的MAC的幾率將近1/18,446,744,073,709,551,616約等于零。

這是又一次修改后的協(xié)議:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校驗(yàn)

甲——〉乙:prove it

乙——〉甲:嗨,我是乙,乙的校驗(yàn)

甲,我是乙

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

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

{some message,MAC}secret-key

現(xiàn)在H已經(jīng)無技可施了。他干擾了得到的所有消息,但MAC計(jì)算機(jī)能夠發(fā)現(xiàn)他。甲和乙能夠發(fā)現(xiàn)偽造的MAC值并且停止交談。H不再能與乙通訊。