Project Icon

lattigo

基于Go语言的高性能格密码同态加密库

Lattigo是一个高性能的Go语言格密码同态加密库,提供优化的环代数算术、RLWE原语以及BFV/BGV和CKKS方案实现。支持跨平台构建和浏览器WASM编译,性能媲美顶级C++库。Lattigo专注于分布式系统和微服务架构中的同态加密应用,充分利用Go语言的并发优势和可移植性。

Lattigo: 基于格的多方同态加密Go语言库

Go测试

Lattigo是一个Go模块,实现了基于全RNS环-带误差学习(Ring-Learning-With-Errors)的同态加密原语和基于多方同态加密的安全协议。该库具有以下特点:

  • 针对2的幂次循环域的优化算术运算。
  • 先进且与方案无关的RLWE基础原语、密钥生成及其多方版本的实现。
  • BFV/BGV和CKKS方案及其多方版本的实现。
  • 支持RGSW、外部乘积和LMKCDEY盲旋转。
  • 纯Go语言实现,支持跨平台构建,包括用于浏览器客户端的WASM编译,性能可与最先进的C++库相媲美。

Lattigo旨在支持分布式系统和微服务架构中的同态加密,而Go语言因其天然的并发模型和可移植性成为这些系统的常见选择。

库概览

lattigo层次结构

Lattigo是一个严格层次化的库,其包形成了一个从低级算术功能到高级同态电路的线性依赖链。上图展示了Lattigo包的组织结构。

  • lattigo/ring:最底层是ring包,提供RNS基多项式的模运算,包括:RNS基扩展;RNS重缩放;数论变换(NTT);均匀、高斯和三元采样。

  • lattigo/core:此包实现了库的核心密码学功能,直接基于ring包提供的算术功能:

    • rlwe:通用RLWE基同态加密的公共基础。提供所有同态功能并定义了非方案特定的所有结构。包括明文、密文、密钥生成、加密、解密和密钥切换,以及其他更高级的原语,如RLWE重打包。

    • rgsw:环GSW密文和外部乘积的全RNS变体。

  • lattigo/schemes:RLWE基同态加密方案的实现位于schemes包中:

    • bfv:Brakerski-Fan-Vercauteren尺度不变同态加密方案的全RNS变体。通过bgv方案的包装器实例化。提供整数上的模运算。

    • bgv:Brakerski-Fan-Vercauteren尺度不变(BFV)和Brakerski-Gentry-Vaikuntanathan(BGV)同态加密方案的全RNS泛化。提供整数上的模运算。

    • ckks:近似数字算术同态加密(HEAAN,又称CKKS)方案的全RNS实现。在其经典变体中提供复数上的定点近似算术,在其共轭不变变体中提供实数上的定点近似算术。

  • lattigo/circuits:circuits包为bgvckks密码系统提供了一系列选定的同态电路实现:

    • bgv/lintransckks/lintransbgvckks的任意线性变换和槽置换。方案通用对象和函数位于common/lintrans中。

    • bgv/polynomialckks/polynomialbgvckks的多项式求值电路。方案通用对象和函数位于common/polynomial中。

    • ckks/minimaxckks的极小极大复合多项式求值器。

    • ckks/comparisonckks方案的基于比较的同态电路,如signmaxstep

    • ckks/inverseckks的同态逆运算电路。

    • ckks/mod1:使用ckks密码系统的mod1函数的同态电路。

    • ckks/dftckks方案的同态离散傅里叶变换电路。

    • ckks/bootstrapping:用于实数和复数上定点近似算术的引导(即ckks方案),支持共轭不变环、稀疏打包/较小环度密文的自动打包/解包的批量引导、任意精度引导,以及高级电路定制/参数化。

  • lattigo/multiparty:用于多方(又称分布式或阈值)密钥生成和基于秘密共享密钥的交互式密文引导的包。

  • mpckks:从线性秘密共享份额进行同态解密和重加密,以及用于schemes/ckks包的交互式密文引导。

  • mpbgv:从线性秘密共享份额进行同态解密和重加密,以及用于schemes/bgv包的交互式密文引导。

  • lattigo/examples:演示Lattigo库使用的可执行Go程序。每个子包都包含进一步演示Lattigo原语使用的测试文件。

  • lattigo/utils:通用工具方法。该包还包含以下子包:

    • bignum:任意精度线性代数和多项式近似。
    • buffer:高效的io.Writerio.Reader读写方法。
    • factorization:适用于中等大小整数的各种因式分解算法。
    • sampling:安全字节采样。
    • structs:用于映射、向量和矩阵的通用结构,包括序列化。

文档

可以使用官方Golang文档渲染工具pkgsite将各个包的完整文档作为网页浏览

$ go install golang.org/x/pkgsite/cmd/pkgsite@latest
$ cd lattigo
$ pkgsite -open .

版本和路线图

Lattigo库最初由EPFL数据安全实验室独家开发,直到2.4.0版本。

从3.0.0版本开始,Lattigo由Tune Insight SA维护和支持。

同样从3.0.0版本开始,模块名称已更改为github.com/tuneinsight/lattigo/v[X],官方仓库已移至https://github.com/tuneinsight/lattigo。这对依赖Lattigo的模块有以下影响:

  • 需要github.com/ldsec/lattigo/v2的模块仍可正确构建。
  • 要升级到版本X.y.z >= 3.0.0,依赖模块必须要求github.com/tuneinsight/lattigo/v[X]/, 例如通过将导入更改为github.com/tuneinsight/lattigo/v[X]/[package]并运行go mod tidy

Lattigo的当前版本(v5.x.x)正在快速发展和不断开发中。因此,在这个主要版本中仍会有向后不兼容的更改,以及许多错误修复和新功能。因此,我们鼓励所有Lattigo用户更新到最新的Lattigo版本。

有关当前和过去版本的信息,请参阅CHANGELOG.md。

稳定性

为了保持全面的历史记录,我们优先考虑对除main之外的分支进行变基而不是合并。带有dev_前缀的分支是正在积极开发的分支,将会频繁变基。因此,我们不建议依赖它们。

拉取请求

外部拉取请求只应用于提出实质性的新功能,这些功能如果由我们完成将需要相当多的工作。如果您计划打开这样的拉取请求,请在这样做之前与我们联系,以确保提议的更改与我们的开发路线图一致。

仅提出小改动或琐碎更改的外部拉取请求将被转换为问题并关闭。

外部贡献将需要签署贡献者许可协议(CLA)。 您可以使用以下电子邮件联系我们以获取CLA副本:lattigo@tuneinsight.com

错误报告

Lattigo欢迎任何符合预设模板的错误/回归报告,该模板在创建新的空白问题时自动生成。不符合规定将导致问题被关闭而不被确认。

许可证

Lattigo根据Apache 2.0许可证获得许可。请参阅LICENSE

联系方式

在直接联系我们之前,请确保您的请求无法通过问题解决。

如果您想为Lattigo做出贡献或报告安全问题,您有功能提议或请求,或者您只是想直接联系我们,请使用以下电子邮件:lattigo@tuneinsight.com

引用

请使用以下BibTex条目引用Lattigo:

@misc{lattigo,
    title = {Lattigo v5},
    howpublished = {Online: \url{https://github.com/tuneinsight/lattigo}},
    month = Nov,
    year = 2023,
    note = {EPFL-LDS, Tune Insight SA}
}

Lattigo徽标是由Renee French创作的原始Golang吉祥物的基于格的版本。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号