非对称密钥
非对称密钥(也称为 公钥/私钥对)用于非对称加密。 非对称加密主要用于加密和解密 会话密钥 和 数字签名。 非对称加密使用 公钥加密 算法。
公钥算法使用两个不同的密钥: 公钥 和 私钥。 该对的私钥成员必须保持私密和安全。 但是,公钥可以分发给请求它的任何人。 密钥对的公钥通常通过 数字证书进行分发。 当一个密钥对的一个密钥用于加密消息时,需要该密钥对中的另一个密钥来解密消息。 因此,如果用户 A 的公钥用于加密数据,则只有用户 A (或有权访问用户 A 的私钥) 的人才能解密数据。 如果用户 A 的私钥用于加密一段数据,则只有用户 A 的公钥将解密数据,从而指示用户 A (或有权访问用户 A 的私钥) 进行加密。
如果使用私钥对消息进行签名,则必须使用该对中的公钥来验证签名。 例如,如果 Alice 想要向某人发送数字签名的消息,她将使用她的私钥对消息进行签名,而其他人可以使用她的公钥来验证她的签名。 由于大概只有 Alice 有权访问她的私钥,因此可以使用 Alice 的公钥验证签名这一事实表明 Alice 创建了签名。
遗憾的是,公钥算法速度非常慢,大约比对称算法慢 1,000 倍。 使用它们来加密大量数据是不切实际的。 实际上,公钥算法用于加密 会话密钥。 对称算法 用于加密/解密大多数数据。
同样,由于对消息进行签名实际上会加密消息,因此使用公钥签名算法对大型消息进行签名是不切实际的。 相反,由消息创建 固定长度哈希 ,并且哈希值有符号。 有关详细信息,请参阅 哈希和数字签名。
每个用户通常有两个 公钥/私钥对。 一个密钥对用于加密会话密钥,另一个密钥对用于创建 数字签名。 这些密钥分别称为 密钥交换密钥对 和 签名密钥对。
请注意,尽管大多数 加密服务提供程序 (CSP 创建的密钥容器) 包含两个密钥对,但这不是必需的。 某些 CSP 不存储任何 密钥对, 而其他 CSP 存储两个以上的密钥对。
CryptoAPI 中的所有密钥都存储在 CSP 中。 CSP 还负责创建密钥、销毁密钥,并使用它们执行各种加密操作。 加密密钥 存储和 Exchange 中讨论了从 CSP 导出密钥以便可以发送给其他用户的密钥。