#building-block #concepts #proof #computation #flexible #attempt

scicrypt

多方计算中证明概念实现中的轻量级加密构建块

14个版本 (7个重大更新)

0.7.1 2022年9月14日
0.6.2 2022年9月8日
0.6.0 2022年5月6日
0.5.0 2022年2月28日
0.1.0 2021年7月11日

#898 in 密码学

每月39次下载

MITLGPL-3.0+

185KB
3.5K SLoC

警告:虽然这个库为安全实现做出了一些努力,但它不应用于任何实际应用。代码未经审计。我们不保证代码的正确性和安全性。

应用密码学中证明概念实现的轻量级加密构建块。

虽然存在许多实现加密构建块的库,但许多库属于以下两类之一

  • 快速但僵硬,如许多用C++编写的库
  • 慢但灵活,如许多用Python编写的库

这个库试图在速度和灵活性之间找到平衡,以简化实现密码协议证明概念的过程,例如多方计算(MPC)领域的协议。

当前功能

目前,该库实现了以下同态密码系统和相关的同态操作

  • 基于Curve25519(Ristretto编码)的ElGamal和两个阈值版本
  • 基于安全素数群的ElGamal和两个阈值版本
  • Paillier和阈值Paillier
  • RSA

此外,该库实现了安全素数生成,其速度比其他crate中实现的功能更快。代码在每次版本之间进行基准测试,以确保我们没有增加运行时间,并与其他实现进行比较。

请查看下表,比较安全素数生成的平均运行时间(以毫秒为单位)

库 | 比特数128192256320384
glass_pumpkin52.51704026521530
openssl3.9511.121.953.679.8
scicrypt2.207.0220.137.572.5

更新于2022年3月31日,来自 GitHub Actions

您可以通过执行以下命令自行运行此基准测试:cargo bench --bench prime_gen。默认情况下,此基准测试被关闭,因为它可能需要15分钟才能运行。换句话说,当您只运行cargo bench时,它不会运行。请注意,在我的个人笔记本电脑上,OpenSSL平均略优于scicrypt,因此结果可能因硬件而异。

即将推出的功能

以下是即将推出的小版本和它们将添加的功能。

易用性更新

功能完成
有符号整数的编码
离散对数查找表
调试工具

秘密共享更新

功能完成
加法秘密共享
乘法秘密共享
Shamir的秘密共享

不可知传输更新

功能完成
OT 及扩展
OPRF
OPPRF

基于RLWE的加密

功能完成
多项式算术
BGV (无需引导)

依赖关系

~23MB
~550K SLoC