什麼是公鑰密碼學?
公鑰密碼學(PKC)又稱為非對稱密碼學,是一種同時使用公鑰和私鑰的機制,與使用單一金鑰的對稱密碼學相對應。金鑰對的使用賦予了PKC獨特的功能和特性,以解決存在於其他密碼學技術中的固有挑戰。此種形式的密碼學已成為現代電腦安全中重要原理,同時也是日益增長的加密貨幣生態系統的關鍵組成部分。
在PKC體系中,發送方使用公鑰來加密訊息,而接收者則使用私鑰來解密訊息。由於兩個金鑰的完全不同,因此可以安然的進行公鑰共享,而不用擔心會損害私鑰的安全性。每組非對稱金鑰對都是唯一的,所以就確保了使用公鑰加密的資訊只能由持有對應私鑰的人才能進行讀取。
並且,由於非對稱加密演算法產生的密鑰對之間是數學相關的,所以它們的密鑰長度相比於對稱密碼學使用的密鑰要長的多。其長度通常為1024位或2048位,所以使用公鑰來計算對應私鑰也變得極為困難。如今,最常見的非對稱加密演算法稱為RSA。在RSA方案中,金鑰是透過兩個數相乘(通常為兩個較大的質數)所得到的公共模數來產生。其中模數將產生兩個金鑰,一個是可以共享的公鑰,另一個是需要保密的私鑰。 RSA演算法在1977年由Rivest、Shamir以及Adleman(所以叫RSA)首次提出,而現在也仍然是公鑰密碼系統的重要組成部分。
公鑰密碼學解決了對稱演算法中長期存在的問題,即加密金鑰和解密金鑰之間的通訊問題。在不安全的連線中傳送對稱金鑰將會產生將其暴露給第三方的風險,而第三方隨後則可以讀取任何由該共用金鑰所加密的資訊。雖然存在諸如迪菲-赫爾曼金鑰交換協定等加密學技術來解決這一問題,但這些金鑰仍是容易受到攻擊的。而在公鑰密碼學中完全不用擔心此問題,且用於加密的金鑰可以在任何網路連線中共用。至此,與對稱演算法相比,非對稱演算法就提供了更高等級的保護。
非對稱密碼學演算法的另一個應用就是使用數位簽章來驗證資料。本質上來說,數位簽章就是使用資訊中的資料所建立的雜湊。當資訊被發送之後,接收方可以使用發送方的公鑰來核實簽名,以此來驗證訊息的來源並確保資訊未被篡改。在某些情況下,數位簽章和加密技術是同時應用的,這是因為雜湊本身也可能是加密的。然而要注意的是,並非所有的數位簽章體係都是使用加密技術的。
的確,PKC的可以用來提高電腦的安全性並驗證資訊的完整性,但其也存在一定的限制。由於加密和解密涉及複雜的數學操作,因此非對稱演算法在處理大量資料時也可能略顯緩慢。且此類型密碼學也很大程度的依賴私鑰保密的假設。倘若意外的共享或公開了私鑰,則使用其對應公鑰加密的資訊的安全性就會受到影響。有時用戶的私鑰也可能意外遺失,而這種情況下用戶將失去加密資料的存取權。
此種密碼學被許多現在電腦系統所使用來為敏感資訊提供安全保障。就例如,可以使用公鑰密碼技術來對電子郵件進行加密,以確保其中內容的機密性。同時允許網站安全連線的安全通訊端層(SSL)協定也使用了非對稱密碼學。 PKC系統也被用於安全電子投票環境的探索(此種電子投票環境將允許選民在家庭電腦上參與選舉)。
PKC的特性在區塊鏈和加密貨幣技術中也表現突出。當新的加密貨幣錢包被創建時,就會產生一對金鑰(公鑰和私鑰)。公共地址是使用公鑰產生的,並且可以安全的與他人共享。另一方面,私鑰被用於創建數位簽名和驗證交易,所以必須保密。當交易被數位簽章中的認證雜湊驗證之後,就可以被添加到區塊鏈帳本中。這個數位簽章系統確保了只有擁有加密貨幣錢包對應私鑰的用戶才能從錢包中獲取資金。但值得注意的是,加密貨幣應用中所使用的非對稱密碼與電腦安全目的中所用的卻不同。例如,比特幣和以太坊所使用的是橢圓曲線數位簽章演算法(ECDSA)來驗證交易。
從電腦安全到驗證加密貨幣交易可以看出,公鑰密碼學在現代數位系統的安全保護方面發揮了關鍵作用。透過使用成對的公鑰和私鑰,非對稱密碼學演算法解決了對稱密碼中固有的安全性問題。對於PKC的使用已經經歷了多年,也不斷開發其在新興領域內的應用,特別是區塊鏈和加密貨幣領域。