rsa公鑰加密在計算機產業中被廣泛使用在認證和加密。可以從rsa data security inc.獲得的rsa公鑰加密許可證。公鑰加密是使用一對非對稱的密碼加密或解密的方法。每一
對密碼由公鑰和私鑰組成。公鑰被廣泛發布。私鑰是隱密的,不公開。用公鑰加密的資料只能夠被私鑰解密。反過來,使用私鑰加密的資料只能用公鑰解密。這個非對稱的特性使得公鑰加密很有用。
使用公鑰加密法認證
認證是乙個身份認證的過程。在下列例子中包括甲和乙,公鑰加密會非常輕鬆地校驗身份。符號 key意味著"資料"已經使用密碼加密或解密。假如甲想校驗乙的身份。乙有一對密碼,乙個是公開的,另乙個是私有的。乙透露給甲他的公鑰。甲產生乙個隨機資訊傳送給乙。甲——〉乙:random message
乙使用他的私鑰加密訊息,返回甲加密後的訊息。 乙——〉甲:乙的私鑰
甲收到這個訊息然後使用乙的以前公開過的公鑰解密。他比較解密後的訊息與他原先發給乙的訊息。如果它們完全一致,就會知道在與乙說話。任意乙個中間人不會知道乙的私鑰,也不能正確加密甲檢查的隨機訊息。
除非你清楚知道你加密的訊息。用私鑰加密訊息,然後傳送給其他人不是乙個好主意。因為加密值可能被用來對付你,需要注意的。所以,代替加密甲發來的原始訊息,乙
建立了乙個資訊段並且加密。資訊段取自隨機訊息(random-message)並具有以下有用的特性: 1.
這個資訊段難以還原。任何人即使偽裝成乙,也不能從資訊段中得到原始訊息;
2. 假冒者將發現不同的訊息計算出相同的資訊段值; 2.
使用資訊段,乙能夠保護自己。他計算甲發出的隨機資訊段,並且加密結果,並傳送加密資訊段返回甲。甲能夠計算出相同的資訊段並且解密乙的訊息認證乙。
這個技術僅僅描繪了數字簽名。通過加密甲產生的隨機訊息,乙已經在甲產生的訊息簽名。因此我們的認證協議還需要一次加密。一些訊息由乙產生:
甲——〉乙:你好,你是乙麼?
乙——〉甲:甲,我是乙
乙的私鑰
當你使用這個協議,乙知道他傳送給乙的訊息,他不介意在上面簽名。他先傳送不加密的資訊,"甲,我是乙。",然後傳送資訊段加密的訊息版本。甲可以非常方便地校驗乙就是乙,同時,乙還沒有在他不想要的資訊上簽名。
提交公鑰
那麼,乙怎樣以可信的方式提交他的公鑰呢?看看認證協議如下所示:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的公鑰
甲——〉乙:prove it
乙——〉甲:甲,我是乙 乙的私鑰
在這個協議下,任何人都能夠成為"乙"。所有你所要的只是公鑰和私鑰。你傳送給甲說你就是乙,這樣你的公鑰就代替了乙的密碼。然後,你傳送用你的私鑰加密的訊息,證明你的身份。甲卻不能發覺你並不是乙。為了解決這個問題,標準組織已經發明了證書。乙個證書有以下的內容: l
證書的發行者姓名 l
發行證書的組織 l
標題的公鑰 l
郵戳 證書使用發行者的私鑰加密。每乙個人都知道證書發行者的公鑰(這樣,每個證書的發行者擁有乙個證書)。證書是乙個把公鑰與姓名繫結的協議。通過使用證書技術,每乙個人都可以檢查乙的證書,判斷是否被假冒。假設乙控制好他的私鑰,並且他確實是得到證書的乙,就萬事大吉了。
這些是修訂後的協議:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校驗
甲——〉乙:prove it
乙——〉甲:甲,我是乙 乙的私鑰
現在當甲收到乙的第乙個訊息,他能檢查證書,簽名(如上所述,使用資訊段和公鑰解密),然後檢查標題(乙的姓名),確定是乙。他就能相信公鑰就是乙的公鑰和要求乙證明自己的身份。乙通過上面的過程,製作乙個資訊段,用乙個簽名版本答覆甲。甲可以校驗乙的資訊段通過使用從證書上得到的公鑰並檢查結果。
如果乙個黑客,叫h
甲——〉h:你好
h——〉不能建立乙個令甲相信的從乙的訊息。
交換密碼(secret)
一旦甲已經驗證乙後,他可以傳送給乙乙個只有乙可以解密、閱讀的訊息:
甲——〉乙:乙的公鑰
唯一找到密碼的方法只有使用乙的私鑰解碼上述的資訊。交換密碼是另乙個有效使用密碼加密的方法。即使在甲和乙之間的通訊被偵聽,只有乙才能得到密碼。使用密碼作為另乙個secret-key增強了網路的安全性,但是這次這是乙個對稱的加密演算法(例如des、rc4、ide甲)。因為甲在傳送給乙之前產生了密碼,所以甲知道密碼。乙知道密碼因為乙有私鑰,能夠解密甲的資訊。但他們都知道密碼,他們都能夠初始化乙個對稱密碼演算法,而且開始傳送加密後的資訊。這兒是修定後的協議:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校驗
甲——〉乙:prove it
乙——〉甲:甲,我是乙 乙的私鑰
甲——〉乙:ok 乙,here is a secret 乙的公鑰
乙——〉甲:secret-key
黑客竊聽
那麼如果有乙個惡意的黑客h在甲和乙中間,雖然不能發現甲和乙已經交換的密碼,但能干擾他們的交談。他可以放過大部分資訊,選擇破壞一定的資訊(這是非常簡單的,因為他知道甲和乙通話採用的協議)。
甲——〉h:你好
h——〉乙:你好
乙——〉h:嗨,我是乙,乙的校驗
h——〉甲:嗨,我是乙,乙的校驗
甲——〉h:prove it
h——〉乙:prove it
乙——〉h:甲,我是乙 乙的私鑰
h——〉甲:甲,我是乙 乙的私鑰
甲——〉h:ok 乙,here is a secret 乙的公鑰
h——〉乙:ok 乙,here is a secret 乙的公鑰
乙——〉h:secret-key
h——〉甲:garble[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-key
現在h已經無技可施了。他干擾了得到的所有訊息,但mac計算機能夠發現他。甲和乙能夠發現偽造的mac值並且停止交談。h不再能與乙通訊。
HashSet底層原理解密詳解
了解完了hashmap,今天來看一看hashset。應該都知道list和set都實現自collection,list保證元素的新增順序,元素可重複。而set不保證元素的新增順序,元素不可重複。上圖中可以得知set在collection家族中的位置,有兩個很重要的實現hashset和treeset。乙...
關於SSL原理的說明理解
1.ssl登入是乙個雙向認證過程 2.客戶端證書和伺服器端證書都是由權威機構 即ca 頒發的證明自己身份的東西,類似於個人身份證 3.通過證書可以完成簽名驗籤,加密解密功能 4.可通過證書讀取公鑰來完成驗籤功能 5.一般證書分為交換證書,簽名證書,和兩者證書 既支援加解密,也支援簽名驗籤 6.ssl...
ssl工作原理
ssl工作原理 ssl 是乙個安全協議,它提供使用 tcp ip 的通訊應用程式間的隱私與完整性。網際網路的 超文字傳輸協議 http 使用 ssl 來實現安全的通訊。在 客戶端與伺服器間傳輸的資料是通過使用對稱演算法 如 des 或 rc4 進行加密的。公用金鑰演算法 通常為 rsa 是用來獲得加...