密钥

在密码学中，密钥（key）是指某个用来完成加密、解密、完整性验证等密码学应用的秘密信息。在对称密码学（或称密钥密码学）中，加密和解密用的是同一个钥匙，因此钥匙需要保密。而在公钥密码学（或称非对称密码学）中，加密和解密用的钥匙不同：通常一个是公开的，称为公钥；另一个保密，称为私钥。

现实世界中的钥匙通常是具有一定形状的金属片，钥匙用来打开锁。而密码算法中的“钥匙”（密钥）则用来“打开”密文。密钥是一串非常大的数字。根据密钥的使用方法，可将密码分为对称密码（symmetric cryptography）和非对称密码（asymmetric cryptography）两种。非对称密码通常又称为公钥密码（pubilc-key cryptography）。

密钥分类及其关系

對稱密碼學的密钥，和公鑰密碼學的密钥：对称密码學是指在加密和解密时使用同一个密钥的方式，对称密码又称为共享密钥（Pre-shared key，PSK）。公钥密码學是指在加密和解密时使用不同密钥的方式。用于加密的密钥称为公钥，意思就是可以公开的密钥，用于解密的密钥称为私钥，不能公开。公钥和私钥具有数学关系，称为密钥对（Keypair）。
消息认证码的密钥和数字签名的密钥：在消息认证码中，消息发送方和接收方使用共享密钥进行认证。在数字签名中，签名使用私钥，而验证使用公钥。
用于确保机密性的密钥和用于认证的密钥：对称密码的密钥和公钥密码的密钥都是用于确保消息的机密性。相对而言，消息认证码的密钥和数字签名的密钥则是用于认证。
会话密钥和主密钥：每次通信只使用一次的密钥称为会话密钥（session key）。相对于会话密钥，重复使用的密钥称为主密钥（master key）。
用于加密内容的密钥和用于加密密钥的密钥。

密钥管理

生成密钥：可以用随机数生成密钥，也可以用口令生成密钥。
配送密钥：可采用事先共享密钥、使用密钥分配中心、使用公钥密码、使用Diffie-Hellman密钥交换。
更新密钥
保存密钥
作废密钥

密钥与密码
对于大多数计算机安全目的和大多数用户而言，“密钥”与“密码”不是同义词，尽管密码实际上可以用作密钥。密钥和密码之间的主要实际区别在于后者旨在由人类用户生成，读取，记忆和再现（尽管​​用户可以将这些任务委托给密码管理软件）。相反，密钥旨在供实现加密算法的软件使用，因此不需要人类可读性等。实际上，在大多数情况下，大多数用户甚至不会意识到他们日常使用的软件的安全组件里面含有密钥。

如果密码被用作加密密钥，那么在精心设计的密码系统里就不会是这样使用的。这是因为密码往往是人类可读的，因此可能不是特别强。为了改善这缺点，一个好的加密系统不会使用密码作为密钥来执行主加密任务本身，而是充当密钥派生函数（KDF）的输入。KDF使用密码作为起点，然后从中生成实际的安全加密密钥。在生成中可以使用各种方法，例如添加盐 (密码学)和密钥延伸。

参考文献 

密码学