私鑰
出自 MBA智库百科(https://wiki.mbalib.com/)
私鑰(Private key)
目錄 |
私鑰就是,私鑰加密演算法使用單個私鑰來加密和解密數據。由於具有密鑰的任意一方都可以使用該密鑰解密數據,因此必須保護密鑰不被未經授權的代理得到。私鑰加密又稱為對稱加密,因為同一密鑰既用於加密又用於解密。私鑰加密演算法非常快(與公鑰演算法相比),特別適用於對較大的數據流執行加密轉換。通常,私鑰演算法(稱為塊密碼)用於一次加密一個數據塊。塊密碼(如 RC2、DES、TripleDES 和 Rijndael)通過加密將 n 位元組的輸 入塊轉換為加密位元組的輸出塊。如果要加密或解密位元組序列,必須逐塊進行。由於 n 很小(對於 RC2、DES 和 TripleDES,n = 8 字 節;n = 16 [預設值];n = 24;對於 Rijndael,n = 32),因此必須對大於 n 的數據值一次加密一個塊。
基類庫中提供的塊密碼類使用稱作密碼塊鏈 (CBC) 的鏈模式,它使用一個密鑰和一個初始化向量 (IV) 對數據執行加密轉換。對於給定的私鑰 k,一 個不使用初始化向量的簡單塊密碼將把相同的明文輸入塊加密為同樣的密文輸出塊。如果在明文流中有重覆的塊,那麼在密文流中將存在重覆的塊。如果未經授權的 用戶知道有關明文塊的結構的任何信息,就可以使用這些信息解密已知的密文塊並有可能發現您的密鑰。若要剋服這個問題,可將上一個塊中的信息混合到加密下一 個塊的過程中。這樣,兩個相同的明文塊的輸出就會不同。由於該技術使用上一個塊加密下一個塊,因此使用了一個 IV 來加密數據的第一個塊。使用該系統, 未經授權的用戶有可能知道的公共消息標頭將無法用於對密鑰進行反向工程。
可以危及用此類型密碼加密的數據的一個方法是,對每個可能的密鑰執行窮舉搜索。根據用於執行加密的密鑰大小,即使使用最快的電腦執行這種搜索,也極其耗 時,因此難以實施。使用較大的密鑰大小將使解密更加困難。雖然從理論上說加密不會使對手無法檢索加密的數據,但這確實極大增加了這樣做的成本。如果執行徹 底搜索來檢索只在幾天內有意義的數據需要花費三個月的時間,那麼窮舉搜索的方法是不實用的。
私鑰加密的缺點是它假定雙方已就密鑰和 IV 達成協議,並且互相傳達了密鑰和 IV 的值。並且,密鑰必須對未經授權的用戶保密。由於存在這些問題,私鑰加密通常與公鑰加密一起使用,來秘密地傳達密鑰和 IV 的值。
私鑰的管理維度[1]
在區塊鏈系統中,大多採用 私鑰 -> 公鑰 -> 地址,這樣逐級生成的方案,用戶使用地址來暴露對外的收款地址,私鑰多用於交易簽名。 不論是地址還是公鑰,最後都可以由私鑰進行推導得出,我們一般關心以下的幾點:
(1)密鑰的生成方法;
(2)密鑰存儲模式;
(3)多層分級的私鑰派生規則;
(4)多密碼學公鑰對應協議;
(5)和密鑰地址轉換規則制定標準。
私鑰的儲存[1]
私鑰的存儲和使用一般分為軟實現和硬實現。
軟實現即存儲和使用都以軟體形式。密鑰生成後作為文件或字元串保存在用戶終端或者托管到伺服器,使用時直接或通過簡單的口令控制讀取到私鑰明文到記憶體,通過CPU完成私鑰計算。這種存儲和使用方式顯然有很多安全風險,容易被黑客或內鬼複製、竊取、暴力破解等。
硬實現一般是依托專用密碼安全晶元或者密碼設備作為載體,一般有物理保護、敏感數據保護、密鑰保護等機制,確保私鑰必須由專用硬體產生。在任何時間、任何情況下,私鑰均不能以明文形式出現在密碼設備外;密碼設備內部存儲的密鑰應具備有效的密鑰保護機制,防止解剖、探測和非法讀取。私鑰不可導出,僅可計算輸出簽名值。比如金融領域常見的U盾(UKEY)、金融IC卡、加密機等均屬於此類方式。
私鑰的意義[1]
(1)降低密鑰管理難度
區塊鏈的用戶可以使用一把私鑰在不同的鏈控制多個不同的賬戶/地址,降低用戶使用/管理密鑰的難度。
(2)降低差異,打破孤島
在任意遵循標準的鏈上創建的密鑰可以直接在所有其他遵循標準的鏈上使用,減少區塊鏈項目密鑰管理模塊的差異性。 比如遵循該標準的錢包A和錢包B,用戶只需要掌控一把私鑰,即可無縫切換兩個錢包,無需再管理兩套助記詞或者Keystore。
(3)打通身份證明
區塊鏈用戶可以在不同密碼學的多條鏈上證明身份的唯一性,為去中心化身份認證提供底層支持。當前因為密鑰管理的割裂,用戶在各條鏈上的身份無法打通,無法證明多個私鑰歸屬於一個用戶,從而為身份識別增加了障礙,通過遵循該標準,用戶只需一把私鑰即可管理多個鏈上資產,從而更好的對用戶的身份進行識別。
1、公鑰和私鑰成對出現;
2、公開的密鑰叫公鑰,只有自己知道的叫私鑰;
3、用公鑰加密的數據只有對應的私鑰可以解密;
4、用私鑰加密的數據只有對應的公鑰可以解密;
5、如果可以用公鑰解密,則必然是對應的私鑰加的密;
6、如果可以用私鑰解密,則必然是對應的公鑰加的密。