私鑰
使用單個私鑰來加密和解密數據
私鑰加密演演算法使用單個私鑰來加密和解密數據。由於具有密鑰的任意一方都可以使用該密鑰解密數據,因此必須保護密鑰不被未經授權的代理得到。私鑰加密又稱為對稱加密,因為同一密鑰既用於加密又用於解密。私鑰加密演演算法非常快(與公鑰演演算法相比),特別適用於對較大的數據流執行加密轉換。通常,私鑰演演算法(稱為塊密碼)用於一次加密一個數據塊。塊密碼(如 RC2、DES、TripleDES 和 Rijndael)通過加密將 n 位元組的輸 入塊轉換為加密位元組的輸出塊。如果要加密或解密位元組序列,必須逐塊進行。由於 n 很小(對於 RC2、DES 和 TripleDES,n = 8 字 節;n = 16 [默認值];n = 24;對於 Rijndael,n = 32),因此必須對大於 n 的數據值一次加密一個塊。
與公鑰演演算法一起使用的密鑰對的秘密一半。
1、公鑰和私鑰成對出現;
2、公開的密鑰叫公鑰,只有自己知道的叫私鑰;
3、用公鑰加密的數據只有對應的私鑰可以解密;
4、用私鑰加密的數據只有對應的公鑰可以解密;
5、如果可以用公鑰解密,則必然是對應的私鑰加的密;
6、如果可以用私鑰解密,則必然是對應的公鑰加的密。
基類庫中提供的塊密碼類使用稱作密碼塊鏈 (CBC) 的鏈模式,它使用一個密鑰和一個初始化向量 (IV) 對數據執行加密轉換。對於給定的私鑰 k,一 個不使用初始化向量的簡單塊密碼將把相同的明文輸入塊加密為同樣的密文輸出塊。如果在明文流中有重複的塊,那麼在密文流中將存在重複的塊。如果未經授權的 用戶知道有關明文塊的結構的任何信息,就可以使用這些信息解密已知的密文塊並有可能發現您的密鑰。若要克服這個問題,可將上一個塊中的信息混合到加密下一 個塊的過程中。這樣,兩個相同的明文塊的輸出就會不同。由於該技術使用上一個塊加密下一個塊,因此使用了一個 IV 來加密數據的第一個塊。使用該系統,未經授權的用戶有可能知道的公共消息標頭將無法用於對密鑰進行反向工程。
可以危及用此類型密碼加密的數據的一個方法是,對每個可能的密鑰執行窮舉搜索。根據用於執行加密的密鑰大小,即使使用最快的計算機執行這種搜索,也極其耗 時,因此難以實施。使用較大的密鑰大小將使解密更加困難。雖然從理論上說加密不會使對手無法檢索加密的數據,但這確實極大增加了這樣做的成本。如果執行徹 底搜索來檢索只在幾天內有意義的數據需要花費三個月的時間,那麼窮舉搜索的方法是不實用的。
私鑰加密的缺點是它假定雙方已就密鑰和 IV 達成協議,並且互相傳達了密鑰和 IV 的值。並且,密鑰必須對未經授權的用戶保密。由於存在這些問題,私鑰加密通常與公鑰加密一起使用,來秘密地傳達密鑰和 IV 的值。
公鑰和私鑰就是俗稱的不對稱加密方式,是從以前的對稱加密(使用用戶名與密碼)方式的提高。用電子郵件的方式說明一下原理。
使用公鑰與私鑰的目的就是實現安全的電子郵件,必須實現如下目的:
1、我發送給你的內容必須加密,在郵件的傳輸過程中不能被別人看到。
2、必須保證是我發送的郵件,不是別人冒充我的。
要達到這樣的目標必須發送郵件的兩人都有公鑰和私鑰。
公鑰,就是給大家用的,你可以通過電子郵件發布,可以通過網站讓別人下載,公鑰其實是用來加密/驗章用的。私鑰,就是自己的,必須非常小心保存,最好加上 密碼,私鑰是用來解密/簽章,首先就Key的所有權來說,私鑰只有個人擁有。公鑰與私鑰的作用是:用公鑰加密的內容只能用私鑰解密,用私鑰加密的內容只能 用公鑰解密。
比如說,我要給你發送一個加密的郵件。首先,我必須擁有你的公鑰,你也必須擁有我的公鑰。
首先,我用你的公鑰給這個郵件加密,這樣就保證這個郵件不被別人看到,而且保證這個郵件在傳送過程中沒有被修改。你收到郵件后,用你的私鑰就可以解密,就能看到內容。
其次我用我的私鑰給這個郵件加密,發送到你手裡后,你可以用我的公鑰解密。因為私鑰只有我手裡有,這樣就保證了這個郵件是我發送的。
當A->B資料時,A會使用B的公鑰加密,這樣才能確保只有B能解開,否則普羅大眾都能解開加密的訊息,就是去了資料的保密性。驗證方面則是使用簽 驗章的機制,A傳資料給大家時,會以自己的私鑰做簽章,如此所有收到訊息的人都可以用A的公鑰進行驗章,便可確認訊息是由 A 發出來的了。