1 个不稳定版本

0.1.0 2023年11月23日

#1007密码学


2 crates 使用

MIT 许可证

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的更改包括

  1. 向BridgeLine添加一个uid_fingerprint字段,该字段有助于桥接查找,并与rdsys为每个桥接提供的唯一指纹(由IP和可插拔传输类型的哈希组成)大致对应
  2. 允许更新桥接的详细信息。这已被添加到crates/lox-library/src/lib.rs中,并考虑到某些现有桥接的详细信息(即具有匹配指纹的桥接)可能随着时间的推移而更新。
  3. 允许在不受惩罚的情况下替换桥接器。这已被添加到 crates/lox-library/src/lib.rs,并考虑到Tor目前没有一种可靠的方法来 知道桥接器是否被屏蔽,但有一些测试(例如,bridgestraponbasca)有助于确定桥接器是否不应分发。由于我们不知道这些测试的结果是否指示屏蔽事件,我们允许在Lox库中对rdsys标记为不适合分发的桥接器进行更新,而不受惩罚。
  4. bridge_table.rs 中的向量已被重构为使用唯一 u32 进行查找的HashMap。这导致桥接器在桥接表中的插入/删除方式发生了一些变化,但不会影响Lox系统的整体功能。
  5. DupFilter 已从 HashMap 更改为 HashSet,主要是因为这在使用时更容易序列化/反序列化,以便在恢复失败或能够回滚到先前的状态时存储Lox系统的状态。
  6. dalek-cryptography 库已更新到最新版本,而 zkp 库已被分叉(直到/除非在现有上游仓库中修复)以修复当公共属性设置为0时出现的错误(以前仅影响在用户邀请在迁移后设置为0时的阻塞迁移协议)。zkp 的分叉还包括对 dalek-cryptography 依赖和一些其他依赖(如 rand)的类似更新。
  7. 用于创建Lox论文/论文和衡量系统性能的许多测试已从本存储库中删除,因为在部署场景中它们是不必要的。它们仍然可在 原始存储库 中找到。

其他重要注意事项

与原始实现一样,此实现按如下方式编码:可达性证书在00:00 UTC时过期。因此,如果不幸的用户在00:00 UTC之前请求可达性证书并在之后尝试使用它,则请求将失败。如果桶仍然可达,用户可以简单地请求一个新的可达性令牌,如果由于此原因请求失败(新的证书应在过期的证书到期之前可用)。

依赖项

~9–16MB
~213K SLoC