加解密技术(Cryptography)基本概念
轉載自:http://www.cnblogs.com/piyeyong/archive/2010/06/10/1744692.html
要想實現在不安全的網絡上的安全通信,需要考慮3個方面的問題:保密(Privacy),認證(Authentication),完整性(Integrity)。
1.保密(Privacy)
數據在網絡傳輸的過程中,需要經過多個中間節點進行轉發,因此,數據很容易就被截獲,為了保證數據的保密性,就需要對數據進行加密傳輸,使用密文進行傳輸。
如上圖所示,明文數據(plaintext)經過加密算法(Encryption Algorithm)得到密文(ciphertext),在網絡中傳輸,到達目的地后,再經過解密算法(Decryption Algorithm)還原成原文。
在網絡中傳輸的是密文,即使被第三方截獲,也不能解析其含義。注意,這里的加密和解密算法是公開的,如對稱算法DES,3DES,非對稱算法RSA 等,任何人都可以得到,但是每種算法都需要有一個KEY作為輸入,對稱算法與非對稱算法的區別就在于加密的KEY和解密的KEY是否一樣,一致的是對稱算 法。
由于非對稱機密在效率上比對稱加密慢100倍以上,并不適合對大數據量的原文使用非對稱加密,在實際的加密傳輸過程中,會隨即生成一個對稱密鑰 (session key),使用該對稱算法對原文進行加密,同時使用非對稱算法將session key進行加密,一起傳輸給對方,接收者使用private key將session key還原后再用對稱算法對數據進行解密。
?
2.認證(Authentication)
數據的接收方在收到數據后,為了驗證數據確實是從發送著發送的,而不是第三方冒充的,就需要對發送方進行認證。認證需要使用一個憑據,即數字證書 (Certificate),相當于個人的護照。Certificate由專門的證書管理機構發放,就是我們常說的CA(Certificate Authority)。Certificate含有發放者(Issued by),使用者(Subject),公鑰私鑰等信息,并且是被CA使用自己的證書簽名的。我們驗證身份的時候,實際是相信發放證書的CA,就好比我們查看 護照的時候是相信發放證書的國家一樣。這里需要詳細說明一下簽名。
如上圖所示,使用Private key對明文進行加密計算,得到數字簽名,改簽名只能使用Private key對應的Public key才能解密,重新得到原文。Public key是公開的,所有人都可以得到,并且知道該Public key是屬于誰的.如果A要發送數據給B,A就用自己的Private key計算簽名,發給B,B再使用A的Public key進行驗證,如果能計算出原文,則證明該數據確實是A發送的。而第三方C如果想假冒A給B發送數據,由于沒法得到A的private key,就沒法對數據進行簽名,如果使用任意key簽名,B在收到數據后使用A的public key解密時就會發現數據無法還原,從而發現數據是假冒的。實際的應用場景是這樣的:
A首先對要發送的數據計算Hash,只對該Hash進行簽名,這樣會大大提高效率,然后將原文和簽名一起發送(為了保證原文的Privacy,需要 使用B的public key進行加密,只有擁有private key的B本人才能進行解密),B在收到后,使用同樣的Hash算法對原文計算Hash(如果原文加密,要先進行解密哦),同時對數字簽名使用A的 public key解密,比較兩者是否一致,不一致就說明數據不是由A發送過來的。
由于只有A本人采用與自己的Private key,所以數字簽名還具有不可抵賴性。
?
3.完整性(Integrity)
即使數據被加密傳輸,第三方無法知道傳輸的內容,但是當第三方還是可以進行破壞活動,例如將數據截取一半,再發給接收者,接收者進行解密后并不知道 數據已經被截斷。為了保證傳送的數據完整性,需要對接收到的數據進行完整性校驗,可以使用hash算法,對原文計算hash,接收者驗證hash即可,過 程參照上一小節數字簽名部分。
轉載于:https://www.cnblogs.com/langqi250/archive/2012/09/26/2704376.html
總結
以上是生活随笔為你收集整理的加解密技术(Cryptography)基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WordPress主题制作常用代码集合
- 下一篇: 跨机房问题解决方案