網(wǎng)絡(luò)安全密匙的介紹
今天學(xué)習(xí)啦小編就要跟大家講解下什么是網(wǎng)絡(luò)安全密匙~那么對此感興趣的網(wǎng)友可以多來了解了解下。下面就是具體內(nèi)容!!!
網(wǎng)絡(luò)安全密匙
公用密鑰加密技術(shù)使用不對稱的密鑰來加密和解密,每對密鑰包含一個公鑰和一個私鑰,公鑰是公開,而且廣泛分布的,而私鑰從來不公開,只有自己知道。
基本簡介
用公鑰加密的數(shù)據(jù)只有私鑰才能解密,相反的,用私鑰加密的數(shù)據(jù)只有公鑰才能解密,正是這種不對稱性才使得公用密鑰密碼系統(tǒng)那么有用。
使用公用密鑰密碼系統(tǒng)進行認證
認證是一個驗證身份的過程,目的是使一個實體能夠確信對方是他所聲稱的實體。
下面用簡單的例子來描述如何使用公用密鑰密碼系統(tǒng)來輕易的驗證身份。
注:下面的 key 表示something 已經(jīng)用密鑰 key 加密或解密。
加密解密雛形
假設(shè)A要認證B,B有一個密鑰對,即一個公鑰和一個私鑰,B透露給A他的公鑰(至于他是怎么做的將在以后討論)。然后A產(chǎn)生一段隨機的消息,然后把它發(fā)給B。
A-->B random--message
B用自己的私鑰來加密這段消息,然后把加密后的消息返回給A。
B-->A B's--private--key
A接到了這段消息,然后用B以前發(fā)過來的公鑰來解密。她把解密后的消息和原始的消息做比較,如果匹配的話,她就知道自己正在和B通信。一個入侵者應(yīng)該不知道B的私鑰,因此就不能正確的加密那段A要檢查的隨機消息。
數(shù)字簽名
除非你確切的知道你在加密什么,否則用你的私鑰加密一些東西,然后發(fā)給別人永遠不是一件好事。這是因為加密后的數(shù)據(jù)可能會背叛你(記住,只有你能加密,因為只有你才有密鑰)。
所以,我們不加密A 發(fā)送的原始消息,取而代之的是,由B構(gòu)造一個消息摘要,然后加密它。消息摘要是從隨機消息中以某種方式提取出來的,并且具有以下特點:
- 摘要很難逆轉(zhuǎn),任何假冒B的人不能從摘要得到原始消息
- 假冒者無法找到具有相同摘要的不同消息
通過使用摘要,B能夠保護自己。他首先計算出A發(fā)給他的隨機消息的摘要并加密,然后把加密后的摘要返回給A,A可以計算出相同的摘要,通過解密B的消息然后對比一下就可以認證B的身份。
這個過程就是傳說中的數(shù)字簽名。
A-->B hello,are you B?
B-->A A,This Is B{digest[A,This Is B]}B's-private-key
當B使用這個協(xié)議的時候,他知道自己發(fā)給A的是什么消息,并且不介意簽名。他首先發(fā)送沒有加密的消息“A,This Is B” 然后發(fā)送加密的摘要。A能夠輕易的判斷B是B,并且B沒有簽任何他不愿意簽的東西。
分發(fā)公鑰與證書
B如何以一種可信賴的方式分發(fā)他的公鑰呢?我們假設(shè)認證協(xié)議是這個樣子的:
A-->B hello
B-->A Hi, I'm B, B's-public-key
A-->B prove it
B-->A A, This Is B{ digest[A, This Is B] } B's-private-key
如果使用這個協(xié)議的話,任何人都可以是B。你需要的只是一個公鑰和私鑰,你跟A慌稱你是B,接著你用自己的公鑰代替B的公鑰,然后你通過用你的私鑰加密的東西來證明,這樣A就不能分辨出你不是B。
為了解決這個問題,標準化組織發(fā)明了一個叫做證書的東西,一個證書包括下面的一些內(nèi)容:
- 證書發(fā)行者的名字
- 證書發(fā)送給的團體
- 主題的公鑰
- 一些時間戳
證書是由證書發(fā)行者的私鑰簽名的,每個人都知道證書發(fā)行者的公鑰(即證書發(fā)行者有一個證書,等等)。證書是一種把公鑰綁定到名字的標準方式。
通過使用證書這種技術(shù),每個人都可以通過檢查B的證書來判斷B是不是偽造的。假設(shè)B嚴格的控制著他的私鑰,并且的確是b得到了他的證書,那么一切都好。下面是補償協(xié)議:
A-->B hello
B-->A Hi, I'm B, B'S-certificate
A-->B prove it
B-->A A, This Is B{ digest[A, This Is B] } B's-private-key
當A收到B的第一條消息,她可以檢查證書,核實簽名(如上,使用摘要和公鑰加密),然后,核實主題(B的名字)來判斷那是不是真的B。這樣她就相信公鑰是B的公鑰,然后要求B證明他的身份。B則重新進行一次上面的相同過程,計算消息的摘要,簽名之后發(fā)給A,A可以用從證書得到的公鑰檢查B的消息摘要,從而判斷B的身份。
防止數(shù)據(jù)篡改與消息認證碼編輯
假設(shè)有個壞家伙H,雖然不能發(fā)現(xiàn)A和B交換的秘密,但是他可以干預(yù)并且破壞他們的對話。
舉例來說,如果H位于A和B之間,他可以選擇讓大多數(shù)的消息返回以及向前繼續(xù)傳輸沒有改變,但是破壞了特定位的消息。
A-->H hello
H-->B hello
B-->H Hi, I'm B, B's-certificate
H-->A Hi, I'm B, B's-certificate
A-->H prove it
H-->B prove it
B-->H A, This Is B{ digest[A, This Is B] } B's-private-key
H-->A A, This Is B{ digest[A, This Is B] } B's-private-key
A-->H ok B, here is a secret B's-public-key
H-->B ok B, here is a secret B's-public-key
B-->H {some message}secret-key
H-->A Garble[ {some message}secret-key ]
H一直讓數(shù)據(jù)沒有改變的通過,直到A和B分享一個秘密。然后H通過改變B發(fā)送給A的消息來進入這個方式中。這時候A是相信B的,因此她就可能相信這個改變的消息,然后按照它來做。注意H并不知道這個秘密-他能做的所有事就是破壞用這個秘密的密鑰加密的數(shù)據(jù)。他可能不能利用這個協(xié)議制造出一條有效的消息,但是下一次,他可能會幸運一點。
為了防止這種破壞,A和B在他們的協(xié)議中引入了一種消息認證碼(MAC)。MAC是根據(jù)秘密的密鑰和傳輸?shù)臄?shù)據(jù)計算出來的,上面描述的摘要算法的屬性正好可以用于構(gòu)造抵抗H的MAC功能。
MAC := Digest[ some message, secret ]
因為H不知道這個秘密的密鑰,所以他無法計算出這個摘要的正確數(shù)值。即使H隨機的改變消息,如果摘要數(shù)據(jù)很大的話,他成功的可能性也很小。舉例來說,通過使用MD5,A和B能和他們的消息一起發(fā)送128位的MAC值。H猜中這個正確的MAC值的幾率是 18,446,744,073,709,551,616 分之1。
下面是樣本協(xié)議,又訂正了一次:
A-->B hello
B-->A Hi, I'm B, B's-certificate
A-->B prove it
B-->A {digest[A, This Is B] } B's-private-key
ok B, here is a secret B's-public-key
{some message,MAC}secret-key
H現(xiàn)在有麻煩了,H可以改變?nèi)魏蔚南?,但是MAC的計算將揭露他的欺詐行為。A和B能發(fā)現(xiàn)偽造的MAC值并停止會話,H就不能偽造B的消息了。
但是這樣同樣不能防范H鸚鵡學(xué)舌。如果H記錄了會話的過程,他雖然可能不知道會話的內(nèi)容,但是他可以重放這些會話。實際上,H能在A和B之間做一些真正齷齪的事。