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简介

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctf web赛道基础 万字笔记

一、SQL注入(mysql): 基本语法 判断列数 order by 3 查询所有数据库: select group_concat(schema_name) from information_schema.schemata 查询当前数据库的所有表: select group_concat(table_name) from informa…

12.鸿蒙HarmonyOS App(JAVA) page的隐式跳转

跳转到指定Page的指定AbilitySlice MainAbilitySlice按钮触发事件: btn.setClickedListener(component -> { Intent _intent new Intent(); Operation operation new Intent.OperationBuilder() .withBundleName(…

关于Windows11画图板出现马赛克问题

参考博客链接: Win11新版画图板问题 一、问题描述 新版win11画图板使用橡皮擦,或者框选图片会出现这种马赛克的问题 二、问题解决 1.先点击 “层” 2.点击 “” 3.点击出现的这个层 现在就可以正常的使用画图板啦 如果想要取消右边的那一栏,…

c#生成临时文件

/// <summary> /// 生成临时文件 /// </summary> /// <param name"tmpDirectory">临时文件目录</param> /// <param name"fs">临时文件流&#xff08;该流会被关闭&#xff09;</param&…

git上传代码到新建的空白项目

git上传代码到新建的空白项目 打开命令行终端或者Git Bash 进入到项目目录 初始化一个新的git仓库&#xff1a;git init 将代码添加到git仓库 4.1 使用 git add命令将代码文件添加到暂存区: git add . (. 表示添加当前目录下的所有文件&#xff0c;也可以指定具体的文件名)4…

git集成github(二)-- 遇见的问题与解决方法

1、share project on github时&#xff0c;弹出Cannot load information for github.com/zouxiaoya:Connection reset问题。 解决方法&#xff1a;pycharm-->setting-->version control-->github中&#xff0c;删除掉当前用户&#xff0c;点击reset重置即可。 2、 pus…

JavaScript中的prototype和_proto_的关系是什么

JavaScript中的prototype和_proto_的关系是什么 __proto__ 是 JavaScript 中对象的一个内部属性&#xff0c;它指向该对象的原型。JavaScript 中每个对象都有一个 __proto__ 属性&#xff0c;通过它可以访问对象的原型。prototype 是函数对象特有的属性&#xff0c;每个函数都…

深入了解 Git 分支合并冲突解决步骤

目录 前言1 检测合并冲突2 手动解决冲突2.1 打开冲突文件2.2 手动解决冲突 3 标记解决后的文件4 完成合并5 提交合并后的内容6 验证合并结语 前言 在协作开发中&#xff0c;当不同分支对同一文件的相同位置进行修改时&#xff0c;往往会出现合并冲突。这些冲突需要开发者手动介…

使用四层for循环求得1、2、3、4组成的互不相关的三位数

一、思想 使用四层for循环进行循环遍历&#xff0c;进行判断&#xff0c;然后根据规则在最里侧的for循环输出这些三位数。 二、代码 public class ThreeDigit {public static void main(String[] args){int[] a {1,2,3,4};System.out.println("满足条件的三位数是&…

一盒晶圆只有25片吗?

没有答案&#xff0c;可能是实践的标准。后来在工作过程中发现还有13片的&#xff0c;个人认为研究这个问题不如多看看foup&#xff01; 晶圆载具用于硅片生产、晶圆制造以及工厂之间晶圆的储存、传送、运输以及防护。晶圆载具种类很多&#xff0c;如FOUP用于晶圆制造工厂中晶圆…

【MySQL】数据库索引(简单明了)

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文&#xff1a; 索引的类型 创建索引 1. 创建单列索引 2. 创建复合索引 索引的优势 索引的劣势 示例 注意…

软考高项通过人数增加70%!改为机考难度降低了?

最近&#xff0c;河北省人事考试网陆续发布了“2023年度上半年和下半年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试河北省合格人员公示名单”。从名单来看&#xff0c;2023年度下半年软考通过人数较上半年有显著增加。 一、河北软考合格人数统计 2023年上半…

mysql原理--基于成本的优化

1.什么是成本 我们之前老说 MySQL 执行一个查询可以有不同的执行方案&#xff0c;它会选择其中成本最低&#xff0c;或者说代价最低的那种方案去真正的执行查询。不过我们之前对 成本 的描述是非常模糊的&#xff0c;其实在 MySQL 中一条查询语句的执行成本是由下边这两个方面组…

SpringMVC核心处理流程梳理

1、处理流程图展示 当我拿出这张图&#xff0c;阁下又该如何应对呢&#xff1f;执行流程是不是一目了然了。 2、DispatcherServlet&#xff1a;中央处理器或者中央调度器 下图官方的解释应该最完善了。 3、SpringMVC三大核心组件 HandlerMapping 处理器映射器&#xff0c;…

BUUCTF——Reverse——内涵的软件

1、题目 2、工具 Exeinfo PE&#xff1a;查壳工具。IDA&#xff1a;是一款功能强大的反汇编工具&#xff0c;用于分析和逆向工程二进制文件。 3、方法 下载文件&#xff0c;得到一个.exe文件。 打开该文件&#xff0c;尝试输入Y和N。 用Exeinfo PE查询该文件是否加了壳。 可…

基于图搜索的自动驾驶规划算法 - BFS,Dijstra,A*

本文将讲解BFS&#xff0c;Dijstra&#xff0c;A*&#xff0c;动态规划的算法原理&#xff0c;不正之处望读者指正&#xff0c;希望有兴趣的读者能在评论区提出一些这些算法的面试考点&#xff0c;共同学习&#xff0c;一起进步 0 图论基础 图有三种&#xff1a;无向图、有向…

uni-app附件下载预览 并解决打开附件时黑屏

// 预览附件perviewFile(file) {console.log(点击附件, file)var strfile.previewUrlvar filTypestr.split(.)console.log(filType,filType)uni.downloadFile({url: success: function(res) {console.log(打开文档成功, res);if (res.statusCode 200) {uni.saveFile({tempFile…

11.Go 列表

列表是一种非连续的存储容器&#xff0c;由多个节点组成&#xff0c;节点通过一些变量记录彼此之间的关系&#xff0c;列表有多种实现方法&#xff0c;如单链表、双链表等。 在Go语言中&#xff0c;列表使用container/list包来实现&#xff0c;内部的实现原理是双链表&#xf…

物理模拟重力 斜抛运动计算 抛物线计算

物理模拟重力 斜抛运动计算 抛物线计算 一、介绍二、原理三、实现如下PhysicsUtil.cs 工具类Missile.cs 四、资源分享 一、介绍 模拟Unity原始重力系统进行重写&#xff0c;可是实现发射到指定目标位置并能继续当前力进行自身的弹力与摩擦继续运动 二、原理 将Unity原始不受控…

Linux常用命令(一):Conda、RPM、文件权限、apt-get(更新中...

文章目录 一、Conda二、RPM三、文件权限四、apt-get 一、Conda Conda是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装和管理软件包及其依赖项。它主要用于Python编程语言&#xff0c;但也可以用于其他语言的项目。Conda可以帮助用户创建不同版本的Python环境&a…