1 个不稳定版本
0.1.0 | 2023年11月23日 |
---|
#1007 在 密码学
被 2 crates 使用
305KB
6K SLoC
Lox
Lox是一个基于声誉的桥接分发系统,为用户及其社交图提供隐私保护,对所有用户开放。
Lox库中的协议与Tulloch and Goldberg(以及更详细的内容在此)中描述的Lox系统相一致。然而,随着系统的部署和其局限性的进一步阐明,这种实现可能随着时间的推移而偏离理论。此库的原始版本将始终是理论的更精确实现。
Lox是用rust编写的,需要cargo
进行测试。 安装Rust。我们使用了Rust版本1.65.0。
与原始仓库的显著变化
对现有的Lox协议与Tor的桥接分发程序rdsys进行了某些更改,但到目前为止,这些更改尚未影响Lox协议本身。
这些更改是为了保持Lox所需的桶中桥接的一致性,同时考虑到rdsys/Tor目前接收和分发桥接信息的方式。Lox的更改包括
- 向BridgeLine添加一个
uid_fingerprint
字段,该字段有助于桥接查找,并与rdsys为每个桥接提供的唯一指纹(由IP和可插拔传输类型的哈希组成)大致对应 - 允许更新桥接的详细信息。这已被添加到
crates/lox-library/src/lib.rs
中,并考虑到某些现有桥接的详细信息(即具有匹配指纹的桥接)可能随着时间的推移而更新。 - 允许在不受惩罚的情况下替换桥接器。这已被添加到
crates/lox-library/src/lib.rs
,并考虑到Tor目前没有一种可靠的方法来 知道桥接器是否被屏蔽,但有一些测试(例如,bridgestrap 和 onbasca)有助于确定桥接器是否不应分发。由于我们不知道这些测试的结果是否指示屏蔽事件,我们允许在Lox库中对rdsys标记为不适合分发的桥接器进行更新,而不受惩罚。 bridge_table.rs
中的向量已被重构为使用唯一u32
进行查找的HashMap。这导致桥接器在桥接表中的插入/删除方式发生了一些变化,但不会影响Lox系统的整体功能。DupFilter
已从HashMap
更改为HashSet
,主要是因为这在使用时更容易序列化/反序列化,以便在恢复失败或能够回滚到先前的状态时存储Lox系统的状态。dalek-cryptography
库已更新到最新版本,而zkp
库已被分叉(直到/除非在现有上游仓库中修复)以修复当公共属性设置为0时出现的错误(以前仅影响在用户邀请在迁移后设置为0时的阻塞迁移协议)。zkp
的分叉还包括对dalek-cryptography
依赖和一些其他依赖(如rand
)的类似更新。- 用于创建Lox论文/论文和衡量系统性能的许多测试已从本存储库中删除,因为在部署场景中它们是不必要的。它们仍然可在 原始存储库 中找到。
其他重要注意事项
与原始实现一样,此实现按如下方式编码:可达性证书在00:00 UTC时过期。因此,如果不幸的用户在00:00 UTC之前请求可达性证书并在之后尝试使用它,则请求将失败。如果桶仍然可达,用户可以简单地请求一个新的可达性令牌,如果由于此原因请求失败(新的证书应在过期的证书到期之前可用)。
依赖项
~9–16MB
~213K SLoC