lattigo

lattigo

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

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

Lattigo同态加密Go语言密码学多方计算Github开源项目

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

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/a4f028f8-98e0-45ad-a58d-4c2b0983455f.png" /> </p>

Go测试

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

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

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

库概览

<p align="center" width="100%""> <img width=500 height=350 alt="lattigo层次结构" src="https://yellow-cdn.veclightyear.com/835a84d5/f32c93b2-eda0-4d0c-b034-c5ac817ec533.svg"> </p>

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吉祥物的基于格的版本。

编辑推荐精选

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多