当前位置: 首页 > news >正文

Zama TFHE-rs

1. 引言

前序博客见:

  • 基于[Discretized] Torus的全同态加密指引(1)
  • 基于[Discretized] Torus的全同态加密指引(2)
  • TFHE——基于[Discretized] Torus的全同态加密 代码解析

开源代码见:

  • https://github.com/zama-ai/tfhe-rs(Rust)

TFHE-rs为:

  • 纯Rust实现的TFHE(Fully Homomorphic Encryption over Torus)。
  • 支持对已加密数据做布尔运算和整数运算。
  • 基于Learning With Errors(LWE)密码学原语——可抵抗量子计算机。
  • 提供了Rust API、C API 和 client-side WASM API。
  • 是全同态的,可处理固定精度数字的message。
  • 实现了Programmable Bootstrapping。

2. 关键密码学概念

密码学中:

  • raw value称为message,或者cleartext(原文)。
  • encoded message称为plaintext(明文)。
  • encrypted plaintext称为ciphertext(密文)。

同态加密的核心思想,是指在不知道密文中message的情况下,对密文进行计算。若某方案为全同态的,是指,可对明文 x x x的密文 e [ x ] e[x] e[x]做如下运算:

  • 1)同态单变量函数evaluation: f ( E [ x ] ) = E [ f ( x ) ] f(E[x])=E[f(x)] f(E[x])=E[f(x)]
  • 2)同态加法: E [ x ] + E [ y ] = E [ x + y ] E[x]+E[y]=E[x+y] E[x]+E[y]=E[x+y]
  • 3)同态乘法: E [ x ] ∗ E [ y ] = E [ x ∗ y ] E[x]*E[y]=E[x*y] E[x]E[y]=E[xy]

3. TFHE-rs功能

TFHE-rs基本功能流程为:

  • 1)使用安全参数来生成client key和server key。
    • client key:用于对数据加解密。client key必须保密。
    • server key:用于对密文做运算。server key可公开。server key又称为evaluation key。
  • 2)使用client key来加密明文。
  • 3)使用server key来对密文做同态运算。
  • 4)使用client key来对 resulting密文 解密,以获得result明文。

参考资料

[1] What is TFHE-rs?

FHE系列博客

  • 技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1)
  • 基于[Discretized] Torus的全同态加密指引(1)
  • 基于[Discretized] Torus的全同态加密指引(2)
  • TFHE——基于[Discretized] Torus的全同态加密 代码解析
  • 技术探秘:在RISC Zero中验证FHE——RISC Zero应用的DevOps(2)
  • FHE简介

相关文章:

  • 详解Java反射机制reflect(一学就会,通俗易懂)
  • 帕累托森林CEO李朝政博士受邀「OSS-Compass」开源年会畅谈:开源框架下的奇异竞争规则
  • creo投影的使用-如何将一个实体的轮廓曲线单独画出来
  • 一篇讲透:箭头函数、普通函数有什么区别
  • 【C++】string
  • 解决log4j多个日志都写到一个文件
  • Win11+Docker搭建CUDA开发环境
  • git命令和docker命令
  • C# SqlSugar 数据库 T4模板
  • java“贪吃蛇”小游戏
  • 基于jdk11和基于apache-httpclient的http请求工具类
  • Zookeeper-应用实战
  • SpringBoot整合Redis完整篇
  • 2023.12.15 FineBI与kettle
  • C++ Qt开发:Charts绘制各类图表详解
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【译】理解JavaScript:new 关键字
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Docker下部署自己的LNMP工作环境
  • echarts花样作死的坑
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • express.js的介绍及使用
  • Java反射-动态类加载和重新加载
  • JS实现简单的MVC模式开发小游戏
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Redis 中的布隆过滤器
  • 大整数乘法-表格法
  • 读懂package.json -- 依赖管理
  • 关于Java中分层中遇到的一些问题
  • 前端存储 - localStorage
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 数据库巡检项
  • ​卜东波研究员:高观点下的少儿计算思维
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)为什么要选择C++
  • (转)Linq学习笔记
  • (转载)hibernate缓存
  • ./configure,make,make install的作用(转)
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Framework .NET Core与 .NET 的区别
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • @TableLogic注解说明,以及对增删改查的影响
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • []error LNK2001: unresolved external symbol _m
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians