#加密 #顺序 #零知识 #保留 #有序 #ope #顺序保留

ope-simplified

为liserk零知识数据库提供OPE(顺序保持加密)算法

1个不稳定版本

0.1.0 2023年10月13日

#2354加密学

MIT 协议

19KB
417

顺序保持加密(OPE)项目

概述

该项目是顺序保持加密(OPE)的Rust实现。OPE是一种加密技术,用于加密有序数据,使得加密后的数据仍然保持原有的顺序。这使得可以在加密数据上执行范围查询和其他基于顺序的操作,而无需先进行解密。

功能

  • 实现了OPE算法,在保持顺序的同时加密和解密数据。
  • 允许对加密数据进行范围查询。
  • 提供命令行界面,便于与库交互。
  • 安全高效,开销最小。
  • 代码库文档完善,便于理解和贡献。

先决条件

  • Rust(最新稳定版本)
  • Cargo(包含在Rust中)

安装

cargoadd ope-simplified

使用

作为库

通过在您的Rust项目中添加以下内容来包含此crate:

[dependencies]
ope-simplified: "0.1.0"

然后您可以在代码中使用OPE库,例如:

use ope_simplified::*;

fn main() {
    let key = b"test_key";
    let ope = Ope::new(key, 0, 20).unwrap();

    let plaintext = 5;
    let ciphertext = ope.encrypt(plaintext).unwrap();
    assert!(ope.out_range.contains(ciphertext));

    let decrypted = ope.decrypt(ciphertext).unwrap();
    assert_eq!(plaintext, decrypted);
}

研究致谢

该项目得益于顺序保持加密(OPE)领域的开创性研究。特别值得一提的是Boldyreva、Chenette、Lee和O’Neill发表的奠基性论文“顺序保持对称加密”,为实际OPE方案奠定了基础。该论文于2009年发表,全面考察了OPE的安全特性和用例,并自那以后成为该领域后续发展的基石。另一项重要工作是Chenette、Lewi、Weis和Wu发表的“具有有限泄漏的实际顺序揭示加密”,它提供了一种不同的OPE方法,最大限度地减少了泄漏。他们的贡献对密码学社区至关重要,并直接启发了本项目中实现的算法和方法。我们还要感谢其他各种论文和研究文章,它们共同推动了OPE技术的发展。通过他们的严谨研究,使得处理有序数据变得既安全又高效。

贡献

欢迎对此项目做出贡献。如果您发现了一个错误或想出一个新功能,请创建一个issue。如果您想贡献代码,请fork仓库并提交一个pull request。

许可证

本项目的许可证为MIT许可证 - 有关详细信息,请参阅LICENSE文件。

致谢

本项目由热衷于安全和密码学的贡献者开发和维护。特别感谢所有为使本项目成为可能做出贡献的人。

本项目基于数学文献https://eprint.iacr.org/2012/624.pdf

依赖项

~2.8–4MB
~82K SLoC