1 个不稳定版本

0.0.3 2022年11月7日

#29 in #generate-keys

Apache-2.0

330KB
5.5K SLoC


id: crypto title: Crypto custom_edit_url: https://github.com/aptos-labs/aptos-core/edit/main/crypto/crypto/README.md

密码组件包含我们在Aptos中使用所有加密原语的实现:哈希、签名、多签名、聚合签名以及密钥推导/生成。

为了强制类型安全性,我们依赖于来自 traits.rsvalidatable.rs 的特性,以了解如何符合我们的API以及涉及的一些安全问题。

概述

Aptos使用多个密码学算法

  • SHA-3 作为主要的哈希函数
  • HKDF:基于HMAC的提取和扩展密钥推导函数
    • RFC 5869 中标准化
    • 用于从盐(可选)、种子和应用信息(可选)生成密钥
  • Ed25519 签名和(天真)多签名
    • 基于 ed25519-dalek 包,增加了额外的安全检查(例如,针对可塑性)
  • Boneh-Shacham-Lynn (BLS) 多签名和聚合签名
    • 基于 blst
    • 基于Barreto-Lynn-Scott BLS12-381椭圆曲线实现
  • Noise协议框架
    • 用于在验证者之间创建认证和加密通信通道
  • X25519 密钥交换

用于更安全密码学实现的特性

在实现密码学原语之前,务必阅读 traits.rsvalidatable.rs,了解如何遵守我们的API以及涉及的一些安全问题。

该模块是如何组织的?

    crypto/src
    ├── bls12-381/          # Boneh-Lynn-Shacham (BLS) signatures over (Barreto-Lynn-Scott) BLS12-381 curves
    ├── unit_tests/         # Unit tests
    ├── lib.rs
    ├── ed25519/            # Ed25519 implementation of the signing/verification API in traits.rs
    ├── hash.rs             # Hash function (SHA-3)
    ├── hkdf.rs             # HKDF implementation
    ├── multi_ed25519.rs    # MultiEd25519 implementation of the signing/verification API in traits.rs
    ├── noise.rs            # Noise Protocol Framework implementation
    ├── test_utils.rs
    ├── traits.rs           # Traits for safer implementations of signature schemes
    ├── validatable.rs      # Traits for deferring validation of group elements (e.g., public keys, signatures)
    └── x25519.rs           # X25519 implementation

变更日志

  • 该包历史上支持过(不同的)BLS12-381,EC-VRF,以及SLIP-0010,但由于使用率低已被移除。移除前的最后git版本是00301524。

依赖项

~15MB
~426K SLoC