公用金鑰加密技術使用不對稱的金鑰來加密和解密,每對金鑰包含乙個公鑰和乙個私鑰,公鑰是公開,而且廣泛分布的,而私鑰從來不公開,只有自己知道。
用途網路身份驗證
特點通用,安全
通俗解釋
在網路中使用的金鑰
加密型別
對稱加密、非對稱加密和hash加密
原理按照規則使資料進行重新排列組合
目錄1基本簡介
2加密解密雛形
3數字簽名
4分發公鑰與證書
5防止資料篡改與訊息認證碼
摺疊編輯本段基本簡介
用公鑰加密的資料只有私鑰才能解密,相反的,用私鑰加密的資料只有公鑰才能解密,正是這種不對稱性才使得公用金鑰密碼系統那麼有用。
使用公用金鑰密碼系統進行認證
認證是乙個驗證身份的過程,目的是使乙個實體能夠確信對方是他所聲稱的實體。
下面用簡單的例子來描述如何使用公用金鑰密碼系統來輕易的驗證身份。
注:下面的 key 表示something 已經用金鑰 key 加密或解密。
摺疊編輯本段加密解密雛形
假設a要認證b,b有乙個金鑰對,即乙個公鑰和乙個私鑰,b透露給a他的公鑰(至於他是怎麼做的將在以後討論)。然後a產生一段隨機的訊息,然後把它發給b。
a-->b random--message
b用自己的私鑰來加密這段訊息,然後把加密後的訊息返回給a。
b-->a b's--private--key
a接到了這段訊息,然後用b以前發過來的公鑰來解密。她把解密後的訊息和原始的訊息做比較,如果匹配的話,她就知道自己正在和b通訊。乙個入侵者應該不知道b的私鑰,因此就不能正確的加密那段a要檢查的隨機訊息。
摺疊編輯本段數字簽名
除非你確切的知道你在加密什麼,否則用你的私鑰加密一些東西,然後發給別人永遠不是一件好事。這是因為加密後的資料可能會背叛你(記住,只有你能加密,因為只有你才有金鑰)。
所以,我們不加密a 傳送的原始訊息,取而代之的是,由b構造乙個訊息摘要,然後加密它。訊息摘要是從隨機訊息中以某種方式提取出來的,並且具有以下特點:
- 摘要很難逆轉,任何假冒b的人不能從摘要得到原始訊息
- 假冒者無法找到具有相同摘要的不同訊息
通過使用摘要,b能夠保護自己。他首先計算出a發給他的隨機訊息的摘要並加密,然後把加密後的摘要返回給a,a可以計算出相同的摘要,通過解密b的訊息然後對比一下就可以認證b的身份。
這個過程就是傳說中的數字簽名。
a-->b hello,are you b?
b-->a a,this is bb's-private-key
當b使用這個協議的時候,他知道自己發給a的是什麼訊息,並且不介意簽名。他首先傳送沒有加密的訊息"a,this is b" 然後傳送加密的摘要。a能夠輕易的判斷b是b,並且b沒有籤任何他不願意籤的東西。
摺疊編輯本段分發公鑰與證書
b如何以一種可信賴的方式分發他的公鑰呢?我們假設認證協議是這個樣子的:
a-->b hello
b-->a hi, i'm b, b's-public-key
a-->b prove it
b-->a a, this is b b's-private-key
如果使用這個協議的話,任何人都可以是b。你需要的只是乙個公鑰和私鑰,你跟a慌稱你是b,接著你用自己的公鑰代替b的公鑰,然後你通過用你的私鑰加密的東西來證明,這樣a就不能分辨出你不是b。
為了解決這個問題,標準化組織發明了乙個叫做證書的東西,乙個證書包括下面的一些內容:
- 證書發行者的名字
- 證書傳送給的團體
- 主題的公鑰
- 一些時間戳
證書是由證書發行者的私鑰簽名的,每個人都知道證書發行者的公鑰(即證書發行者有乙個證書,等等)。證書是一種把公鑰繫結到名字的標準方式。
通過使用證書這種技術,每個人都可以通過檢查b的證書來判斷b是不是偽造的。假設b嚴格的控制著他的私鑰,並且的確是b得到了他的證書,那麼一切都好。下面是補償協議:
a-->b hello
b-->a hi, i'm b, b's-certificate
a-->b prove it
b-->a a, this is b b's-private-key
當a收到b的第一條訊息,她可以檢查證書,核實簽名(如上,使用摘要和公鑰加密),然後,核實主題(b的名字)來判斷那是不是真的b。這樣她就相信公鑰是b的公鑰,然後要求b證明他的身份。b則重新進行一次上面的相同過程,計算訊息的摘要,簽名之後發給a,a可以用從證書得到的公鑰檢查b的訊息摘要,從而判斷b的身份。
摺疊編輯本段防止資料篡改與訊息認證碼
假設有個壞傢伙h,雖然不能發現a和b交換的秘密,但是他可以干預並且破壞他們的對話。
舉例來說,如果h位於a和b之間,他可以選擇讓大多數的訊息返回以及向前繼續傳輸沒有改變,但是破壞了特定位的訊息。
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 b's-private-key
h-->a 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 secret-key
h-->a garble[ secret-key ]
h一直讓資料沒有改變的通過,直到a和b分享乙個秘密。然後h通過改變b傳送給a的訊息來進入這個方式中。這時候a是相信b的,因此她就可能相信這個改變的訊息,然後按照它來做。注意h並不知道這個秘密-他能做的所有事就是破壞用這個秘密的金鑰加密的資料。他可能不能利用這個協議製造出一條有效的訊息,但是下一次,他可能會幸運一點。
為了防止這種破壞,a和b在他們的協議中引入了一種訊息認證碼(mac)。mac是根據秘密的金鑰和傳輸的資料計算出來的,上面描述的摘要演算法的屬性正好可以用於構造抵抗h的mac功能。
mac := digest[ some message, secret ]
因為h不知道這個秘密的金鑰,所以他無法計算出這個摘要的正確數值。即使h隨機的改變訊息,如果摘要資料很大的話,他成功的可能性也很小。舉例來說,通過使用md5,a和b能和他們的訊息一起傳送128位的mac值。h猜中這個正確的mac值的機率是 18,446,744,073,709,551,616 分之1。
下面是樣本協議,又訂正了一次:
a-->b hello
b-->a hi, i'm b, b's-certificate
a-->b prove it
b-->a b's-private-key
ok b, here is a secret b's-public-key
secret-key
h現在有麻煩了,h可以改變任何的訊息,但是mac的計算將揭露他的欺詐行為。a和b能發現偽造的mac值並停止會話,h就不能偽造b的訊息了。
但是這樣同樣不能防範h鸚鵡學舌。如果h記錄了會話的過程,他雖然可能不知道會話的內容,但是他可以重放這些會話。實際上,h能在a和b之間做一些真正齷齪的事。
簡單密匙加密解密
加密的原理為 讀入src,將src與key進行某種操作,便得到加密後的結果,解密時,需要用相同的key來進行解密.簡單點就是result fn src,password,operator src為需要加密的,password為對應密碼,operator為相應加密操作 就是result src pas...
google map 密匙獲取小結
1.獲取map api key a eclipse window preferences android build 記住default debug keystore xx b 生成key cmd下 執行 keytool list keystore c users zms android debug...
網路安全策略和網路安全機制
考研初試專業課中的乙個題目,考的是有關安全機制和安全策略有關的方面,在專業課教材裡翻了好久沒有找到相關的內容,拿到複試的教材後發現才裡面有提到 於是今天拿出來總結一下好了安全策略是指在乙個特定的環境裡,為保證提供一定安全級別的安全保護所必須遵守的規則。主要包括以下內容 隨著應用環境的不同 實施客體的...