2个版本
新 0.1.1 | 2024年8月19日 |
---|---|
0.1.0 | 2024年8月13日 |
#432 在 密码学
每月 231 下载
35KB
347 行
Rust中的线性同态时间锁谜题(LHTLP)实现
这个LHTLP实现完全用Rust编写,基于num-bigint
和num-primes
包。
它实现了2019年Malavolta和Thyagarajan在《同态时间锁谜题及其应用》中描述的协议,第4.1节。
什么是LHTLP?
LHTLP是一种线性同态时间锁谜题。时间锁谜题是一种加密原语,允许在谜题中加密一个秘密,该谜题只能在执行一定数量的本质上顺序操作(在RSA群中的平方)后才能恢复。线性同态性质意味着一组谜题可以同态评估,即一组谜题可以捆绑在一起或作为一个单独的谜题与电路一起评估。有关更多详情,请参阅https://eprint.iacr.org/2019/635.pdf。
用法
设置、生成和解决谜题
设置LHTLP需要两个参数
- lambda:安全参数,用于设置随机生成的安全素数位数
- difficulty:执行次数,当使用
solve
检索秘密时,线性增加计算时间
use lhltp::LHTLP;
const difficulty: u64 = 100000000;
const lambda: u64 = 64;
let lhtlp = LHTLP::setup(lambda, BigUint::from(difficulty));
let secret = 42;
let puzzle = lhtlp.generate(secret);
let solution = lhtlp:solve(puzzle);
多个谜题的同态评估
let first = lhtlp.generate(42);
let second = lhtlp.generate(13);
let bundle = lhtlp.eval(vec![first, second]);
let solution = lhtlp:solve(puzzle);
assert!(BigUint::from(55u32), solution);
依赖关系
~1MB
~17K SLoC