4个版本 (2个重大更改)
0.2.0 | 2023年7月22日 |
---|---|
0.1.1 | 2022年12月1日 |
0.1.0 | 2022年8月14日 |
0.0.1 | 2021年8月30日 |
#2572 在 密码学
6,739 每月下载量
在 4 个crate中使用 (2个直接使用)
25KB
403 代码行
RustCrypto: crypto_secretstream
纯Rust实现libsodium的crypto_secretstream
原语,提供使用ChaCha20和Poly1305的AEAD。
它已与sodiumoxide进行了测试,这是一个Rustlibsodium绑定。
关于
想象一下,Alice想要与Bob建立一个安全的通信频道,这个频道不能被其他人读取或修改。
她可以做的其中一种方式是首先与Bob达成共识,共享一个密钥(例如,通过密钥交换协议生成),然后她通过一个正常/不安全的通信频道发送消息,这些消息都是使用这个共享密钥加密的。然后,当Bob收到这些消息时,他可以解密每一个,仅仅知道这个共享密钥就可以确保它确实是由Alice发送的。
在内部,第一个消息由Alice生成的一个随机数后缀,称为nonce,在加密和解密时考虑,然后对每个新消息进行递增。
它还允许在每个消息中发送附加数据。这些数据未加密,但在加密过程中使用,因此接收者需要提前知道。它可以用来添加另一层安全性,大小不是固定的,就像密钥一样。
许可
以下两种许可中选择一种:
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都应如上所述双重许可,不附加任何额外条款或条件。
注意事项
- 计数器溢出时自动重键尚未测试
Tag::Final
实际上没有做任何事情,因为libsodium做了,但sodiumoxide没有Key
和Nonce
没有被置零,也许应该这样做PullStream
中的MAC校验不是常数时间
依赖项
~0.6–1.2MB
~22K SLoC