8 个不稳定版本 (3 个重大更改)

0.4.1 2024年8月18日
0.4.0 2024年8月18日
0.3.0 2024年8月3日
0.2.0 2024年7月29日
0.1.3 2024年7月22日

#1348加密学

Download history 109/week @ 2024-07-08 3/week @ 2024-07-15 328/week @ 2024-07-22 262/week @ 2024-07-29 19/week @ 2024-08-05

每月621次下载
sumatradigest 中使用

Apache-2.0 OR MIT

44KB
731

libsumatracrypt-rs

Crates.io Version docs.rs Crates.io License Crates.io Total Downloads | Discord

libsumatracrypt-rs 是一个使用纯 Rust 编写的 开源加密库,它设计上严格且本质上是安全的,易于访问,有强大的文档,并提供了高级加密(零知识证明、同态加密、后量子密码学)的扩展,同时保持了一个简单易用的接口。它使用 Sumatracrypt-Standardized-API-Model 提供了一个易于使用的 API 接口,设计上难以出错。它有大量的文档详细说明了某些设计选择,如何在底层工作,以及其他内容。

它目前实现了以下加密协议

公钥加密方案

  • 使用 CURVE25519 的椭圆曲线集成加密系统 (ECIES)
  • RSA4096-OAEP

数字签名方案

  • ED25519
  • 基于 Ristretto 压缩 Ed25519 点的 Schnorr
  • ED448(尚未实现)

密钥交换

  • Curve448 上的 X448

哈希函数(摘要)

  • SHA2(SHA2-224、SHA2-256、SHA2-384、SHA2-512)
  • BLAKE2B(可变长度,支持密钥哈希)
  • BLAKE3
  • SHA3(SHA3-224、SHA3-256、SHA3-384、SHA3-512)
  • SHAKE256(512位)

加密安全的随机数生成器(CSPRNG)

  • 用于获取操作系统加密安全伪随机数生成器(CSPRNG)的跨平台 getrandom()

通用

libsumatracrypt-rs

  • 易于使用

  • 纯 Rust(内存安全)

  • 轻量级

  • 设计上严格安全,重点放在安全性上(包括侧信道攻击和高级对手)

  • 极简主义,依赖关系和可选依赖关系最少

  • 标准化 API,称为 Sumatracrypt-Standardized-API-Model

  • 有大量的文档、社区讨论和深入代码的探讨

  • 具有使用 高级加密技术(如零知识证明、同态加密、后量子加密、可验证随机函数、可验证延迟函数)的扩展,并且具有被称为 sumatracryptadvanced-standardized-api标准化API

库用途

对于普通用户

libsumatracrypt-rs 的目的是为更多人提供一个轻量级、纯Rust的加密库,其核心是 安全性(抵御最先进的攻击,如旁路攻击)同时保持 易于访问易于使用的API,即使面对高级攻击者。

它还希望通过简单的API向公众提供更多高级加密算法,如 零知识证明同态加密后量子加密

对于开发者

libsumatracrypt-rs 开发的未来开发者/贡献者的想法是保持

  • 易于使用,具有 简单的接口 和使用 Sumatra-Standardized-API-Model标准化API
  • 轻量级,具有 最少的依赖项(并且这些依赖项将随后进行 审计 和/或 分叉
  • 严格关注安全性(包括针对旁路攻击、时间攻击和高级对手的措施)
  • 默认情况下,通过将依赖项 设置为可选 并将其分开到不同的crate中,来 使依赖项可选
  • 让普通用户难以 出错(配置错误、处理密钥问题、其他用户配置攻击等)
  • 提供 实质性 的文档和深入讨论
  • 每个crate中都有 示例

对于开发者(安全性)

它还旨在对抗 旁路攻击 并保持 常量时间。其他安全措施也是可取的。

概述

加密

ECIES (Curve25519)(主要)

curve25519-dalek 上实现的 椭圆曲线集成加密方案 (ECIES) 被选为加密的主要选择。

RSA4096-OAEP

RSA4096-OAEP 使用纯Rust的 rsa crate。它仅生成

PKCS#8 注意:默认使用 LF (\n) 以保护隐私,因此没有人能够确定你从哪里生成了密钥。

哈希函数

  • SHA2 (SHA224,SHA256,SHA384,SHA512)
  • SHA3 (SHA3-224,SHA3-256,SHA3-384,SHA3-512)
  • SHAKE256
  • BLAKE2B(可变摘要)
  • BLAKE3

数字签名

  • Schnorr
  • ED25519
  • RSA4096(待办事项)

已实现的协议列表

加密

  • ECIES-Curve25519
  • RSA4096-OAEP

ECIES-CURVE25519

  • [安全性] 对所有结构体实现 Zeroize/ZeroizeOnDrop

RSA4096

  • [编码] 实现PEM(PKCS#8)

数字签名

  • 基于 CURVE25519 的 Schnorr 签名
  • ED25519

ED25519

ED25519 是一种使用 Curve25519 的加密数字签名算法。

公钥: 32-bytes(256位)

私钥: 32-bytes(256位)

签名: 64字节(512位)

详情

默认情况下,所有密钥都编码为上划线十六进制编码的 String,其字符数是大小的一半。这意味着公钥是64个字符长,私钥也是64个字符长,签名是128个字符长。

安全性

  • [安全性] [密钥生成] 密钥 来自 32-bytes 大小的 操作系统CSPRNG 作为数组。
  • [安全性] [Zeroize] 对所有结构体实现 Zeroize/ZeroizeOnDrop

开发者注释

结构体(ED25519PublicKeyED25519SecretKeyED25519Signature)以大写十六进制编码的形式存储为String

  • [安全] 密钥由操作系统的[u8;32] | array形式的32字节(256位)的[CSPRNG]生成。

待办事项

加密

SumatraEncryptECIES | 使用纯Rust实现基于Twisted Edwards Curve25519的椭圆曲线集成加密方案(ECIES),采用AES-GCM和HKDF-SHA256。

  • 提供强大的安全性保证、快速的速度和小的密钥尺寸。
  • 依赖项:使用带有pure功能标志的ecies-ed25519 crate。

SumatraRSA4096 | 使用纯Rust实现基于Optimal Asymmetric Encryption Padding (OAEP)的RSA4096。

  • 具有强大的安全性,通过经典的、经过良好审查的安全论证来对抗经过良好测试的RSA算法,只提供一种密钥尺寸(最高密钥尺寸,具有最大的安全性)。
  • 生成新的RSA4096密钥大约需要3-5分钟。适用于具有经典安全假设的长期密钥。
  • 依赖项:使用经过审计的rsa crate。

数字签名

SumatraEd25519 | 纯Rust实现的常量时间ED25519签名方案。

Ed25519(查看网站)是一种提供强大安全性、抵抗各种旁路攻击和分支预测的加密数字签名方案。它速度极快,提供

SumatraEd25519通过广泛使用ed25519-dalek crate为ED25519签名提供强大的安全性。这些签名通过保持常量时间、实现零化以及降低对旁路攻击的易损性来提供强大的安全性。它使用Curve25519。

常量时间

  • Schnorr签名

哈希函数

  • SHA2 (SHA224,SHA256,SHA384,SHA512)

依赖项

~61MB
~1.5M SLoC