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 魔法豆
每月下载量 191 次
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