在密碼學中,密鑰(key)是指某個用來完成加密、解密、完整性驗證等密碼學應用的秘密信息。在對稱密碼學(或稱密鑰密碼學)中,加密和解密用的是同一個鑰匙,因此鑰匙需要保密。而在公鑰密碼學(或稱非對稱密碼學)中,加密和解密用的鑰匙不同:通常一個是公開的,稱為公鑰;另一個保密,稱為私鑰。
現實世界中的鑰匙通常是具有一定形狀的金屬片,鑰匙用來打開鎖。而密碼算法中的「鑰匙」(密鑰)則用來「打開」密文。密鑰是一串非常大的數字。根據密鑰的使用方法,可將密碼分為對稱密碼(symmetric cryptography)和非對稱密碼(asymmetric cryptography)兩種。非對稱密碼通常又稱為公鑰密碼(pubilc-key cryptography)。[1]
密鑰分類及其關係
- 對稱密碼學的密鑰,和公鑰密碼學的密鑰:對稱密碼學是指在加密和解密時使用同一個密鑰的方式,對稱密碼又稱為共享密鑰(Pre-shared key,PSK)。公鑰密碼學是指在加密和解密時使用不同密鑰的方式。用於加密的密鑰稱為公鑰,意思就是可以公開的密鑰,用於解密的密鑰稱為私鑰,不能公開。公鑰和私鑰具有數學關係,稱為密鑰對(Keypair)。
- 消息認證碼的密鑰和數字簽名的密鑰:在消息認證碼中,消息發送方和接收方使用共享密鑰進行認證。在數字簽名中,簽名使用私鑰,而驗證使用公鑰。
- 用於確保機密性的密鑰和用於認證的密鑰:對稱密碼的密鑰和公鑰密碼的密鑰都是用於確保消息的機密性。相對而言,消息認證碼的密鑰和數字簽名的密鑰則是用於認證。
- 會話密鑰和主密鑰:每次通信只使用一次的密鑰稱為會話密鑰(session key)。相對於會話密鑰,重複使用的密鑰稱為主密鑰(master key)。
- 用於加密內容的密鑰和用於加密密鑰的密鑰。
密鑰管理
- 生成密鑰:可以用隨機數生成密鑰,也可以用口令生成密鑰。
- 配送密鑰:可採用事先共享密鑰、使用密鑰分配中心、使用公鑰密碼、使用Diffie-Hellman密鑰交換。
- 更新密鑰
- 保存密鑰
- 作廢密鑰
密鑰與密碼
對於大多數計算機安全目的和大多數用戶而言,「密鑰」與「密碼」不是同義詞,儘管密碼實際上可以用作密鑰。密鑰和密碼之間的主要實際區別在於後者旨在由人類用戶生成,讀取,記憶和再現(儘管用戶可以將這些任務委託給密碼管理軟件)。相反,密鑰旨在供實現加密算法的軟件使用,因此不需要人類可讀性等。實際上,在大多數情況下,大多數用戶甚至不會意識到他們日常使用的軟件的安全組件裡面含有密鑰。
如果密碼被用作加密密鑰,那麼在精心設計的密碼系統裡就不會是這樣使用的。這是因為密碼往往是人類可讀的,因此可能不是特別強。為了改善這缺點,一個好的加密系統不會使用密碼作為密鑰來執行主加密任務本身,而是充當密鑰派生函數(KDF)的輸入。KDF使用密碼作為起點,然後從中生成實際的安全加密密鑰。在生成中可以使用各種方法,例如添加鹽 (密碼學)和密鑰延伸。
參考文獻
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.