对称加密与非对称加密

发布于:2022-12-28 ⋅ 阅读:(675) ⋅ 点赞:(0)

【网络】对称加密与非对称加密

MIT《Missing Semester》

  • 对称加密
keygen() -> key  (this function is randomized)

encrypt(明文:array<byte>,key) -> array<byte> (密文)
decrypt(密文:array<byte>,key) -> array<byte> (明文)

应用实例

  • 加密文件以存储在不受信任的云服务中。这可以与 KDF 结合使用,因此您可以使用密码加密文件。生成key = KDF(passphrase),然后存储encrypt(file, key)。使用者需要记住的只是passphrase密语。
  • 非对称加密
keygen() -> (public key, private key)  (this function is randomized)

encrypt(明文:array<byte>,公钥)-> array<byte>(密文)
decrypt(密文:array<byte>,私钥)-> array<byte>(明文)

sign(message:array<byte>,私钥)->array<byte>(签名)
verify(message:array<byte>,签名:array<byte>,公钥) 
-> bool  (whether or not the signature is valid)

应用实例

在ssh使用中,一旦服务器知道客户端的公钥(存储在 .ssh/authorized_keys文件中),连接客户端就可以使用非对称签名证明其身份。这是通过 质询-响应【sign和verify】来完成的。在高层次上,服务器选择一个随机数并将其发送给客户端。客户端然后对该消息进行签名并将签名发送回服务器,服务器根据记录的公钥检查签名。这有效地证明了客户端拥有与服务器文件中的公钥对应的私钥.ssh/authorized_keys,因此服务器可以允许客户端登录。


网站公告

今日签到

点亮在社区的每一天
去签到