#security #aws-security #crypto

sys no-std aws-lc-rs

aws-lc-rs 是一个使用 AWS-LC 进行加密操作的加密库。该库力求与流行的 Rust 库 ring 兼容。

21 个稳定版本

1.8.1 2024 年 7 月 18 日
1.7.2 2024 年 5 月 23 日
1.6.2 2024 年 2 月 14 日
1.5.2 2023 年 11 月 20 日
0.0.1 2023 年 4 月 11 日

密码学 类别中排名第 35

Download history 61111/week @ 2024-05-04 62473/week @ 2024-05-11 59124/week @ 2024-05-18 65123/week @ 2024-05-25 71771/week @ 2024-06-01 80784/week @ 2024-06-08 74378/week @ 2024-06-15 75863/week @ 2024-06-22 81277/week @ 2024-06-29 107428/week @ 2024-07-06 105624/week @ 2024-07-13 141565/week @ 2024-07-20 143232/week @ 2024-07-27 127649/week @ 2024-08-03 130418/week @ 2024-08-10 116293/week @ 2024-08-17

每月下载量 540,080
70 crate 中使用(直接使用 25 个)

ISC AND (Apache-2.0 OR ISC)

58MB
1.5M SLoC

GNU Style Assembly 744K SLoC // 0.0% comments Rust 528K SLoC // 0.0% comments C++ 113K SLoC // 0.1% comments C 112K SLoC // 0.2% comments Perl 102K SLoC // 0.1% comments Assembly 94K SLoC // 0.0% comments Go 13K SLoC // 0.1% comments Bitbake 11K SLoC Shell 83 SLoC // 0.2% comments Pan 30 SLoC // 0.2% comments Batch 9 SLoC

AWS Libcrypto for Rust (aws-lc-rs)

Crates.io GitHub

A 与 ring 兼容的加密库,使用由 AWS-LC 提供的加密操作。它使用本存储库中找到的自动生成的 aws-lc-sysaws-lc-fips-sys 外部函数接口 (FFI) crate 来调用 AWS-LC

构建

aws-lc-rs 通过 crates.io 提供。您可以使用 Cargo.toml 以标准方式将其添加到项目中。

[dependencies]
aws-lc-rs = "1.0.0"

使用项目需要 C 编译器(Clang 或 GCC)来构建。对于某些平台,构建可能还需要 CMake。在任何平台上使用“fips”功能需要 CMakeGo

请参阅我们的 用户指南 以获取有关安装构建要求的说明。

功能标志

alloc (默认)

允许实现分配任意大小的值。(此功能的含义与 ring 的 "alloc" 功能不同。)目前,此功能由 io::writer 模块需要。

ring-io (默认)

启用功能以访问 io 模块。

ring-sig-verify (默认)

启用功能以保持与 ring 的 signature::VerificationAlgorithm::verify 函数的兼容性。这增加了对 untrusted = "0.7.1" 的要求。

fips

启用此功能,让 aws-lc-rs 使用 aws-lc-fips-sys 包进行加密实现。该 aws-lc-fips-sys 包提供了对 AWS-LC-FIPS 2.x 的绑定,该版本已经通过认证实验室的 FIPS 验证测试,并已提交给 NIST 进行认证。使用 AWS-LC-FIPS 的静态构建。

请参阅 NIST 密码模块验证计划正在进行的模块列表,了解静态或动态 AWS-LC 密码模块的最新状态。一旦颁发验证证书,将提供支持的操作环境的完整列表。我们还将更新我们的发布说明和文档,以反映 FIPS 认证状态的变化。

asan

执行 "地址清理器" 构建。这可以用来帮助检测内存泄露。请参阅 "地址清理器" 部分,该部分在 Rust 不稳定书籍 中。

bindgen

使 aws-lc-sysaws-lc-fips-sys 生成 AWS-LC 的新绑定,而不是使用预生成的绑定。此功能需要安装 libclang。请参阅 rust-bindgen 的要求

ring-兼容性

尽管这个库试图完全兼容 ring (v0.16.x),但我们的行为在某些地方是可观察到的。

  • 我们的实现需要 std 库。我们目前不支持 #![no_std] 构建。
  • 我们只能支持 aws-lc-sys 支持的平台的一个子集。请参阅上面支持的平台列表。
  • Ed25519KeyPair::from_pkcs8Ed25519KeyPair::from_pkcs8_maybe_unchecked 都支持解析 v1 或 v2 PKCS#8 文档。如果向任一函数提供 v2 编码的密钥,如果存在,公钥组件将与从编码的私钥派生的公钥进行验证。

动机

Rust 开发者越来越需要部署符合美国和加拿大政府密码要求的应用程序。我们评估了如何在 Rust 语言的惯用和高效的 AWS-LC 产品基础上交付 FIPS 验证的密码学。我们发现流行的 ring (v0.16) 库满足了 Rust 社区中的许多密码需求,但它不符合具有 FIPS 要求的开发者的需求。我们的意图是贡献一个 ring 的替代品,提供 FIPS 支持,并与 ring API 兼容。具有指定密码要求的 Rust 开发者可以无缝地将 aws-lc-rs 集成到他们的应用程序中,并在 AWS 区域中部署它们。

为 Amazon Linux 2023 的贡献者快速入门

对于那些想要为我们的项目做出贡献或直接从我们的存储库构建它的人来说,可能还需要更多的包。以下列表显示了您开始本地构建和测试我们的项目的步骤。

# Install dependencies needed for build and testing
sudo yum install -y cmake3 clang git clang-libs golang openssl-devel perl-FindBin

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

# Clone and initialize a local repository
git clone https://github.com/awslabs/aws-lc-rs.git
cd aws-lc-rs
git submodule update --init --recursive

# Build and test the project
cargo test

问题、反馈和贡献

我们使用 GitHub Issues 来管理功能请求、错误报告或有关 aws-lc-rs API 使用的疑问。

否则,如果您认为可能发现了影响安全的问题,请遵循以下 安全通知流程

安全通知流程

如果您在 AWS-LCaws-lc-rs 中发现潜在的安全问题,请通过我们的漏洞报告页面通知 AWS 安全团队。请不要创建公开的 GitHub 问题。

如果您打包或分发 aws-lc-rs,或将其作为大型多用户服务的一部分使用,您可能符合提前通知未来 aws-lc-rs 发布的资格。请联系[email protected]

许可证

此库采用 Apache-2.0 或 ISC 许可证。

依赖项