4 个版本

0.0.3 2021年10月4日
0.0.2 2021年5月11日
0.0.1 2021年3月9日
0.0.0 2021年3月5日

#5 in #diem

每月 43 次下载
用于 5 包(4 个直接使用)

Apache-2.0

250KB
4.5K SLoC


id: crypto title: Crypto custom_edit_url: https://github.com/diem/diem/edit/main/crypto/crypto/README.md

加密组件包含我们在Diem中使用的所有加密原语实现:哈希、签名和密钥派生/生成。使用traits.rs的库部分包含加密API,该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。

依赖关系

~5–6.5MB
~131K SLoC