#key #diem #signing-key #key-derivation #generate-keys #framework #traits

已撤回 diem-framework-crypto

Diem 框架加密工具

0.3.2 2022年8月23日
0.3.1 2022年8月13日
0.2.1 2022年7月22日
0.1.6 2022年7月5日
0.1.4 2022年5月23日

#31 in #signing-key


用于 2 个crate(通过 diem-framework-natives

Apache-2.0

250KB
4.5K SLoC

加密组件包含我们在Diem中使用的所有加密原语的实现:哈希、签名和密钥推导/生成。使用 traits.rs 的库部分包含强制类型安全的加密API、可验证的随机函数、EdDSA & MultiEdDSA签名。

概述

Diem 使用了多种加密算法

  • SHA-3作为主哈希函数。它在FIPS 202中标准化。它基于tiny_keccak库。
  • HKDF:基于RFC 5869的基于HMAC的提取和扩展密钥推导函数(HKDF)。它用于从盐(可选)、种子和应用信息(可选)生成密钥。
  • traits.rs引入了新的加密API抽象。
  • Ed25519使用基于ed25519-dalek库的新API设计进行签名,并增加了额外的安全检查(例如,对可变形性的检查)。
  • X25519用于密钥交换。它用于通过Noise Protocol Framework在验证者之间安全通信。它基于x25519-dalek库。

这个模块是如何组织的?

    crypto/src
    ├── hash.rs             # Hash function (SHA-3)
    ├── hkdf.rs             # HKDF implementation (HMAC-based Extract-and-Expand Key Derivation Function based on RFC 5869)
    ├── macros/             # Derivations for SilentDebug and SilentDisplay
    ├── utils.rs            # Serialization utility functions
    ├── lib.rs
    ├── ed25519.rs          # Ed25519 implementation of the signing/verification API in traits.rs
    ├── multi_ed25519.rs    # MultiEd25519 implementation of the signing/verification API in traits.rs
    ├── x25519.rs           # X25519 wrapper
    ├── test_utils.rs
    ├── traits.rs           # New API design and the necessary abstractions
    └── unit_tests/         # Tests

注意:此crate历史上支持BLS12381、ECVRF和SlIP-0010,但由于使用率低而被删除。删除前的最后一个git版本是00301524。

依赖

~4–6MB
~114K SLoC