#恢复 #密钥管理 #安全 #加密货币 #服务器 #私钥

bin+lib depo

用于安全且匿名存储和检索二进制对象的服务器

12 个版本 (5 个重大变更)

0.6.1 2024 年 7 月 9 日
0.5.1 2024 年 5 月 23 日
0.3.0 2024 年 3 月 31 日
0.1.2 2023 年 12 月 23 日
0.1.1 2023 年 11 月 16 日

#2045 in 魔法豆

Download history 5/week @ 2024-04-14 164/week @ 2024-04-28 149/week @ 2024-05-05 3/week @ 2024-05-12 295/week @ 2024-05-19 6/week @ 2024-05-26 1/week @ 2024-06-02 1/week @ 2024-06-09 1/week @ 2024-06-16 171/week @ 2024-06-30 105/week @ 2024-07-07 4/week @ 2024-07-14 78/week @ 2024-07-28

每月下载量 191 次

BSD-2-Clause-Patent

57KB
1K SLoC

区块链通用存储库

由 Wolf McNally 编写

简介

区块链通用存储库 (depo) 是一种基于服务器的软件,它提供了不关注其内容的二进制对象的secure存储和检索功能。典型的用例将是使用Shamir's Secret Sharing (SSS) 或 Sharded Secret Key Reconstruction (SSKR) 创建的加密种子或私钥碎片。各方可以运行存储库(depos)以提供分布式基础设施,以实现安全的非托管社交密钥恢复。

状态

这是一个早期开发版本。它尚未准备好用于生产。

数据库安装

对于 macOS 开发和维护,我推荐 DBeaver 作为 GUI 数据库客户端。

depo 使用 MariaDB 进行开发,但它也应与 MySQL 兼容。以下说明适用于 MariaDB。

$ brew install mariadb
$ brew services start mariadb
$ sudo $(brew --prefix mariadb)/bin/mariadb-admin -u root password NEWPASSWORD

对于无密码(仅限开发!)

sudo $(brew --prefix mariadb)/bin/mariadb-admin -u root password ''

验证 brew 服务是否正在运行

brew services list | grep mariadb

验证服务器是否活动并且正在监听默认端口

lsof -i :3306

登录到监视器

mariadb -u root -p

Depo 安装

在克隆此仓库后,切换到其目录并运行

cargo run

编译完成后,服务器将运行。您将看到欢迎信息,包括服务器的公钥 (ur:crypto-pubkeys),您将需要它来访问其API。服务器第一次运行时将设置数据库模式。

在这个早期开发版本中,它将无密码以root身份登录数据库。显然,在生产版本发布之前,这将得到修复。

[2023-11-16T03:10:21Z INFO  depo::server] Starting Blockchain Commons Depository on 127.0.0.1:5332
[2023-11-16T03:10:21Z INFO  depo::server] Public key: ur:crypto-pubkeys/lftanshfhdcxnnimfnjzlnwkzmrofmluglosetrteyjeonkgchmybbktcmonksbyjocsjkehjllytansgrhdcxlrrkgypmierotkgsgdntpdptntptzegabagmfxdlsgiobnveiypsstjkzoosyahyynimcwze
[2023-11-16T03:10:21Z INFO  warp::server] Server::run; addr=127.0.0.1:5332
[2023-11-16T03:10:21Z INFO  warp::server] listening on http://127.0.0.1:5332

为了测试它是否正在运行,请打开浏览器并导航到https://127.0.0.1:5332

你应该在浏览器窗口中看到相同的ur:crypto-pubkeys出现。这是服务器上的唯一HTTP GET端点。所有API访问都是通过POST进行的。

了解API

API是首次使用时信任(TOFU),因此没有账户创建。客户端首次存储BLOB时,将为其创建一个账户。客户端的公钥用于识别账户。

所有对API的请求都包含客户端的公钥,并且必须使用客户端的私钥进行签名,并使用服务器的公钥进行加密,这可以通过HTTP GET端点获得。服务器将验证请求中的公钥是否与签名请求使用的密钥匹配。

服务器发送的所有响应都使用客户端的公钥进行加密,并使用服务器的私钥进行签名。除了使用客户端的私钥解密响应外,客户端还应使用服务器的公钥验证签名。

我们目前建议您查看集成测试,以了解API。

有九种支持的功能

存储、检索和删除BLOBs

  • storeShare - 存储与客户端公钥关联的单个BLOB,返回收据。
  • getShares - 接受一个Receipt列表,并返回与客户端公钥和这些收据关联的BLOBs。如果收据列表为空,则返回与客户端公钥关联的所有BLOBs。
  • deleteShares - 接受一个Receipt列表,并删除与客户端公钥和这些收据关联的BLOBs。如果收据列表为空,则删除与客户端公钥关联的所有BLOBs。

账户维护

  • updateKey - 更新客户端的公钥。当需要更改客户端的公钥时使用。
  • updateRecovery - 更新或删除客户端的恢复方法。这是一种用于授权分配新公钥的二因素认证方法。
  • getRecovery - 如果有的话,返回客户端的恢复方法。
  • startRecovery - 启动恢复过程。这包括一个新的公钥。为了完成过程,客户端必须使用二因素认证方法检索续订。
  • finishRecovery - 通过使用二因素认证方法检索到的续订来完成恢复过程。如果续订尚未过期,则客户端的公钥将更新为新公钥。
  • deleteAccount - 删除客户端的账户,包括所有BLOBs和恢复方法。

depo-api 包。

depo-api 包为depo服务器提供Rust API。它旨在由希望从depo服务器存储和检索BLOBs的客户端使用。它主要包括用于序列化和反序列化API请求和响应的结构和方法。

依赖项

~37–52MB
~847K SLoC