0.2.7 2022年8月16日
0.2.6 2022年8月13日
0.2.2 2022年7月22日
0.1.7 2022年7月9日
0.1.0 2022年5月26日

#18 in #policies

Download history 28/week @ 2024-03-28 12/week @ 2024-04-04 3/week @ 2024-04-11 5/week @ 2024-04-18 7/week @ 2024-04-25 5/week @ 2024-05-02 4/week @ 2024-05-09 7/week @ 2024-05-16 6/week @ 2024-05-23 4/week @ 2024-05-30 7/week @ 2024-06-06 6/week @ 2024-06-13 8/week @ 2024-06-20 3/week @ 2024-06-27 112/week @ 2024-07-04 20/week @ 2024-07-11

143 次每月下载
72 个crate中(直接使用13个) 使用

Apache-2.0

610KB
11K SLoC


id: secure_storage title: 安全存储 custom_edit_url: https://github.com/aptos-labs/aptos-core/edit/main/secure/storage/README.md

安全存储

安全存储为区块链中的敏感数据提供了一个安全、持久的存储解决方案。这里的敏感数据包括用于安全和身份的信息,如加密密钥和共识安全规则,以及运行时配置数据。

概述

有关安全存储的设计概述,包括API、错误类型和政策,请参阅安全存储规范:[TODO(joshlind):发布安全存储规范!]

实现细节

此crate定义了安全存储API,由两个独立的Rust特质(接口)组成

  • KVStorage: KVStorage特质提供了一种键值存储抽象(例如,获取和设置键值对)。
  • CryptoStorage: CryptoStorage特质提供了一种基于Ed25519密钥的加密密钥存储抽象(例如,密钥创建、旋转和签名)。

此crate提供了四种不同的安全存储实现,每种实现都实现了KVStorageCryptoStorage

  • Github:Github安全存储实现使用Github仓库作为存储后端。
  • Vault:Vault安全存储实现使用Vault存储引擎(由HashiCorp提供:[https://www.vaultproject.io/](https://www.vaultproject.io/))。Vault安全存储实现是区块链节点在生产环境中主要使用的实现。
  • InMemory:InMemory安全存储实现提供了一个简单的内存存储引擎。这个引擎仅应用于测试,因为它不提供任何持久性或安全性(即数据仅在DRAM中存储,可能在崩溃或重启时丢失)。
  • OnDisk:与InMemory类似,OnDisk安全存储实现提供了一个有用的测试实现:一个磁盘存储引擎,其中存储后端使用写入本地磁盘的单个文件实现。与内存存储类似,磁盘存储不应在生产环境中使用,因为它不提供任何安全保证(例如,写入磁盘前的加密)。此外,OnDisk存储目前不支持并发数据访问。

此外,此crate还提供了一个安全存储实现的Namespaced包装器。使用Namespaced包装器,不同的实体可以在不同的命名空间下共享同一个安全存储实例,提供每个实体都有自己的安全存储后端的抽象。

此模块是如何组织的?

    secure/storage/
    ├── github             # Contains the secure storage implementation based on Github.
    ├── src                # Contains the definitions for secure storage (e.g., API and error types),
                                as well as lightweight implementations for testing (e.g in-memory and on-disk).
    |── src/tests          # Contains the testsuite for all secure storage implementations.
    ├── vault              # Contains the secure storage implementation based on Vault, including the client
                                add fuzzing helper functions.

依赖关系

~21-35MB
~733K SLoC