加密解密(2)*客戶端,服務器,CA(Certificate Authority),公鑰,私鑰,證書,簽名,驗證
各角色比喻
客戶端:通常為請求方,要驗證服務器的身份。
服務器:通常為響應方,有時也要驗證客戶端的身份。
C A :全拼為Certificate Authority,就是第三方驗證機構。客戶端與服務器只有在CA申請了證書之后才能證明身份合法。
加 密 :客戶端或服務器把數據放在箱子里,然后用鑰匙(公鑰或私鑰)將箱子鎖上,再放到網絡上傳輸,只有有用鑰匙的人才能打開箱子。
根據非對稱密碼學的原理,每個證書持有人(在CA認證過的人)都有一個公鑰和私鑰,它們成對出現,這兩把密鑰可以互相解密。
證 書: 數字證書則是由證書認證機構(CA)對證書申請者真實身份驗證之后,用CA的根證書對申請人的一些基本信息以及申請人的公鑰進行簽名(相當於加蓋發證書機構的公章)后形成的一個數字文件。
私 鑰: 私有,只能解開本公鑰加密的數據(用於解密),用它加密的數據只能被本公鑰解密(用於簽名)。
公 鑰: 公有,只能解開本私鑰加密的數據(用於驗證),用它加密的數據只能被本私鑰解密(用於加密)。
簽 名: 用私鑰加密,簽上自己的名,證明自己合法。
驗 證: 用公鑰解密,驗證別人是否合法。
加密和解密:
發送方利用接收方的公鑰對要發送的明文進行加密,接受方利用自己的私鑰進行解密,
其中公鑰和私鑰匙相對的,任何一個作為公鑰,則另一個就為私鑰.但是因為非對稱加密技術的速度比較慢,所以,一般采用對稱加密技術加密明文,
然后用非對稱加密技術加密對稱密鑰,即數字信封技術.
簽名和驗證:
發送方用特殊的hash算法,由明文中產生固定長度的摘要,然后利用自己的私鑰對形成的摘要進行加密,這個過程就叫簽名。
接受方利用發送方的公鑰解密被加密的摘要得到結果A,然后對明文也進行hash操作產生摘要B.最后,把A和B作比較。
此方式既可以保證發送方的身份不可抵賴,又可以保證數據在傳輸過程中不會被篡改。
公鑰私鑰加密原理
1,公鑰和私鑰成對出現
2,公開的密鑰叫公鑰,只有自己知道的叫私鑰
3,用公鑰加密的數據只有對應的私鑰可以解密
4,用私鑰加密的數據只有對應的公鑰可以解密
5,如果可以用公鑰解密,則必然是對應的私鑰加的密
6,如果可以用私鑰解密,則必然是對應的公鑰加的密
舉例
服務器為S,它有1把私鑰,4把公鑰(因為公開,別人可以獲取)
客戶端為C1,C2,C3,C4,它們各有一把S的公鑰。
C1 用S的公鑰加密數據后,若對方能解開,說明通它是S。這樣可驗證服務器身份(原理2,6)
如果C2想冒充S,它給C1發數據,C1用公鑰無法解開,因為C2沒有S的私鑰,說明C2不合法。(原理4,5)
公鑰加密舉例
假設一下,我找了兩個數字,一個是1,一個是2。我喜歡2這個數字,就保留起來,不告訴你們(私鑰),然后我告訴大家,1是我的公鑰。
我有一個文件,不能讓別人看,我就用1加密了。別人找到了這個文件,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用
數字2,就是我的私鑰,來解密。這樣我就可以保護數據了。
我的好朋友x用我的公鑰1加密了字符a,加密后成了b,放在網上。別人偷到了這個文件,但是別人解不開,因為別人不知道2就是我的私鑰,
只有我才能解密,解密后就得到a。這樣,我們就可以傳送加密的數據了。
私鑰簽名舉例
如果我用私鑰加密一段數據(當然只有我可以用私鑰加密,因為只有我知道2是我的私鑰),結果所有的人都看到我的內容了,因為他們都知
道我的公鑰是1,那么這種加密有什么用處呢?防止冒充,如下
我的好朋友x說有人冒充我給他發信。怎么辦呢?我把我要發的信,內容是c,用我的私鑰2,加密,加密后的內容是d,發給x,再告訴他
解密看是不是c。他用我的公鑰1解密,發現果然是c。
這個時候,他會想到,能夠用我的公鑰解密的數據,必然是用我的私鑰加的密。只有我知道我得私鑰,因此他就可以確認確實是我發的東西。
這樣我們就能確認發送方身份了。這個過程叫做數字簽名。當然具體的過程要稍微復雜一些。用私鑰來加密數據,用途就是數字簽名。
總結一下
1,公鑰私鑰成對出現
2,私鑰只有我知道
3,大家可以用我的公鑰給我發加密的信了
4,大家用我的公鑰解密信的內容,看看能不能解開,能解開,說明是經過我的私鑰加密了,就可以確認確實是我發的了。
5,用公鑰加密數據,用私鑰來解密數據
6,用私鑰加密數據(數字簽名),用公鑰來驗證數字簽名。
在實際的使用中,公鑰不會單獨出現,總是以數字證書的方式出現,這樣是為了公鑰的安全性和有效性。