Pasta:HHE Optimized Stream Cipher

参考文献:

  1. [Dae95] Daemen J .Cipher and hash function design strategies based on linear and differential cryptanalysis[J].Doctoral Dissertation K.u.leuven, 1995.
  2. [GPP11] Guo J, Peyrin T, Poschmann A. The PHOTON family of lightweight hash functions[C]//Advances in Cryptology–CRYPTO 2011: 31st Annual Cryptology Conference, Santa Barbara, CA, USA, August 14-18, 2011. Proceedings 31. Springer Berlin Heidelberg, 2011: 222-239.
  3. [DGH+23] Dobraunig C, Grassi L, Helminger L, et al. Pasta: A Case for Hybrid Homomorphic Encryption[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2023, 2023(3): 30-73.

文章目录

[DGH+23] 给出了 HHE 的形式化定义,设计了一个通用的 HHE 测试框架,并评估了目前已有的 HHE 方案的执行效率。他们发现即使是很小的用例(use case)它们也都是不实用的。然后它们提出了 Pasta 方案,专门对 Leveled FHE 支持的 F p t \mathbb F_p^t Fpt 明文空间做了优化。对于 Leveled FHE,优化准则是最小化 SE 的乘法深度;对于 Pure FHE,优化准则应该修改为最小化 SE 的乘法数量。[DGH+23] 很早就在 eprint 上可用了,后续有多种 HHE 使用了 Pasta 的构造模块,例如 Rubato

HHE Benchmarking Framework

[DGH+23] 选择了如下的基准测试用例(Benchmarking a Generic Use Case),以反映真实世界中的 HHE 效率

  1. 三个仿射变换 x i ′ = M i ⋅ x i + b i x_i' = M_i \cdot x_i + b_i xi=Mixi+bi,其中 x i , x i ′ , b i ∈ F p 200 x_i,x_i',b_i \in \mathbb F_p^{200} xi,xi,biFp200 以及 M i ∈ F p 200 × 200 M_i \in \mathbb F_p^{200 \times 200} MiFp200×200,素数 p p p 的规模是 60 60 60 比特
  2. 给定某个(加密的)向量 x 0 x_0 x0,依次执行三个仿射变换,在它们之间插入了两个平方函数
  3. 这被视为是三层神经网络,使用的平方激活函数

[DGH+23] 使用 SEAL(明文空间 F p \mathbb F_p Fp)测试了:BFV 本身,对 F p \mathbb F_p Fp 优化的 Pasta,对 F 2 \mathbb F_2 F2 优化的 Agrasta,AES 加密,以及 LWE-Native 加密。基准测试的结果如下,

在这里插入图片描述

可以观察到:HE 需要大量的随机性,并且通信开销很大。LWE 对随机性的需要以及通信开销都大幅降低了,但依旧不算好。使用 Z 2 \mathbb Z_2 Z2 上的 SE 方案,由于 FHE 支持的明文空间是 Z p \mathbb Z_p Zp,布尔电路在这上面的深度很大,导致 Server 无法同态解密。[DGH+23] 所设计的 Pasta over F p \mathbb F_p Fp 做到了 Client 和 Server 之间的很好平衡。三种 HHE 在客户端的表现相似,但是在服务器上的差异巨大,主要就是因为 SE 是否设计在了 F p \mathbb F_p Fp 算术运算上,而非布尔电路。

考虑通信带宽的影响,Client 的时间开销为:

在这里插入图片描述

Inefficiency of Z 2 \mathbb Z_2 Z2 Ciphers

[DGH+23] 还展示了布尔电路上设计的 SE 应用到 HHE 时的低效。在这里,他们使用了很小的用例 r = M ⋅ x + b r=M \cdot x+b r=Mx+b,其中 r , x , b ∈ Z 65536 5 r,x,b \in \mathbb Z_{65536}^5 r,x,bZ655365 以及 M ∈ Z 65536 5 × 5 M \in \mathbb Z_{65536}^{5 \times 5} MZ655365×5,去执行完整的 HHE 计算流程。可以发现即使是这么小的用例,这些 SE 的效率也会非常的低。

[DGH+23] 测试了如下的 Ciphers(它们的设计细节请看原文),

在这里插入图片描述

在 SEAL 下的测试结果为:

在这里插入图片描述

他们把 SE 的解密称之为 decompressing the HHE ciphertext。在小用例的计算中,由于 SEAL 不支持 Z 2 \mathbb Z_2 Z2 上的打包,因此他们将单个 bit 加密在单个 BFV 密文的 coeff 常数项(好傻啊)

Efficient Cipher for HHE over F p \mathbb F_p Fp

在 Pasta 之前,已经存在了一些针对 F p \mathbb F_p Fp 而设计的 SE 方案,其中 2 12 < p < 2 60 2^{12}<p<2^{60} 212<p<260 是 SEAL 所支持的可打包的素数范围。

  • Masta:它是把 Rasta 简单地从 Z 2 \mathbb Z_2 Z2 扩展到了 F p \mathbb F_p Fp 上,使用了 randomized linear layers 策略
  • Hera:它被用于 RtF Framework,使用了 randomized key schedule 策略

SEAL 不支持自举,因此计算代价的度量应该首选为乘法深度,当然 ct-ct 甚至 pt-ct 乘法的数量也不可忽视。[DGH+23] 也遵循 Rasta 的设计,将它扩展到 F p \mathbb F_p Fp 上。为了降低乘法深度,采取的措施有:最小化轮数,低次数的 S-box(代价是更大的状态,但设计 packing-friendly cipher),平衡乘法深度和运算时间。

S-Box

[DGH+23] 考虑了多种 S-boxes 的计算代价和限制,

χ \chi χ-S-box:原始的 Rasta 使用了 [Dae95] 的 χ \chi χ-transformation over Z 2 t \mathbb Z_2^t Z2t 作为非线性层,但是它在一般的 F p t \mathbb F_p^t Fpt 中不再是一个置换。不过 Rasta 使用了随机化的线性层(已经抵御了统计攻击),因此它的非线性层只需要求逆的次数很高即可(抵御代数攻击)。定义
[ χ ( x ) ] i = x i + x i + 2 ⋅ ( 1 + x i + 1 ) ( m o d p ) [\chi(x)]_i = x_i+x_{i+2}\cdot(1+x_{i+1}) \pmod{p} [χ(x)]i=xi+xi+2(1+xi+1)(modp)
其中的 indices 都是 ( m o d t ) \pmod{t} (modt) 循环的。在 BFV 的打包技术下,上述运算只需要使用 2 次旋转和 1 次乘法(如果 t ≠ N t \neq N t=N,还需要使用 masking vectors 模拟)。

Cube S-box:假如 gcd ⁡ ( p − 1 , 3 ) = 1 \gcd(p-1,3)=1 gcd(p1,3)=1,那么存在 3 − 1 ∈ F p ∗ 3^{-1} \in \mathbb F_p^* 31Fp,从而 x 3 x^3 x3 是双射。定义:
[ S ( x ) ] i = x i 3 [S(x)]_i = x_i^3 [S(x)]i=xi3
在打包技术下,它只需两次阿达玛乘法,不需要 Rotate 运算。

Feistel-Like S-Box(via a Quadratic Function):定义一个使用 x 2 x^2 x2 函数的 Feistel 网络,
[ S ′ ( x ) ] i = { x i , i = 0 x i + x i − 1 2 , otherwise [S'(x)]_i = \left\{\begin{aligned} x_i, && i=0\\ x_i + x_{i-1}^2, && \text{otherwise} \end{aligned}\right. [S(x)]i={xi,xi+xi12,i=0otherwise
使用 [ 0 , 1 , 1 , ⋯ ] [0,1,1,\cdots] [0,1,1,] 作为 masking vector,容易实现它的 SIMD 运算。

Alternative Feistel-Like S-Box(via the χ \chi χ-Function):定义一个使用 χ \chi χ 函数的 Feistel 网络,
[ S ′ ′ ( x ) ] i = { x i , i ∈ { 0 , 1 } x i + x i − 1 ⋅ x i − 2 otherwise [S''(x)]_i = \left\{\begin{aligned} x_i, && i \in \{0,1\}\\ x_i + x_{i-1}\cdot x_{i-2} && \text{otherwise} \end{aligned}\right. [S′′(x)]i={xi,xi+xi1xi2i{0,1}otherwise
使用 [ 0 , 0 , 1 , 1 , ⋯ ] [0,0,1,1,\cdots] [0,0,1,1,] 作为 masking vector,也容易实现它的 SIMD 运算。

上述四种 S-boxes 的计算开销为:

在这里插入图片描述

综合考虑乘法深度以及 KS 的开销,最终 Pasta 选取 Feistel 作为 main S-box。但同时也使用了 Cube 作为补充,去提升 Cipher 的次数(从而抵御线性分析,降低状态规模)。

Linear Layer

[DGH+23] 使用的是随机化线性层的策略,但是 F p \mathbb F_p Fp 上的矩阵可逆性的检查是昂贵的(在明文下生成随机矩阵,而非在同态下)。[DGH+23] 采用了 [GPP11] 提出的 sequential matrix 生成方式,直接随机生成一个必然可逆的矩阵。对于 d d d 阶矩阵,随机采样 α 1 , ⋯ , α d ∈ F p \ { 0 } \alpha_1,\cdots, \alpha_d \in \mathbb F_p\backslash\{0\} α1,,αdFp\{0},首先构造
A = S e r i a l ( α 1 , ⋯ , α d ) : = [ 0 1 0 ⋯ 0 0 0 1 ⋯ 0 ⋮ ⋱ ⋮ 0 0 0 ⋯ 1 α 1 α 2 α 3 ⋯ α d ] ∈ F p d × d A = Serial(\alpha_1,\cdots,\alpha_d) := \begin{bmatrix} 0 & 1 & 0 & \cdots & 0\\ 0 & 0 & 1 & \cdots & 0\\ \vdots & & & \ddots & \vdots\\ 0 & 0 & 0 & \cdots & 1\\ \alpha_1 & \alpha_2 & \alpha_3 & \cdots & \alpha_d \end{bmatrix} \in \mathbb F_p^{d \times d} A=Serial(α1,,αd):= 000α1100α2010α3001αd Fpd×d
然后计算 M = A d M = A^d M=Ad 作为随机的可逆矩阵。由于 A A A 是具有特殊结构的稀疏矩阵,计算 M M M 只需要 d ( d − 1 ) d(d-1) d(d1) 次乘法以及 ( d − 1 ) 2 (d-1)^2 (d1)2 次加法(怎么快速计算的?)。

如果采用的分圆环维度 N N N 是二的幂次,那么 Z 2 N ∗ = { 1 , 3 , ⋯ , 2 N − 1 } = ⟨ − 1 , 3 ⟩ \mathbb Z_{2N}^* = \{1,3,\cdots,2N-1\} = \langle-1,3\rangle Z2N={1,3,,2N1}=1,3,其中 o r d ( − 1 ) = 2 , o r d ( 3 ) = N / 2 ord(-1)=2, ord(3)=N/2 ord(1)=2,ord(3)=N/2,因此明文槽组成了形状是 F p 2 × N / 2 \mathbb F_p^{2 \times N/2} Fp2×N/2 的立方。为了使得 babystep-giantstep optimized diagonal method 中使用的旋转操作的开销更小,[DGH+23] 使用了 Rotate1D 而非 Rotate,并行地执行两个 t ∣ ( N / 2 ) t \mid (N/2) t(N/2) 阶线性变换,然后再组合它们。

确切地,假设 x = [ x L , x R ] ∈ F p 2 t x = [x_L,x_R] \in \mathbb F_p^{2t} x=[xL,xR]Fp2t,那么仿射层的运算如下:
[ 2 I I I 2 I ] ⋅ ( [ M L O O M R ] ⋅ [ x L x R ] + [ c L c R ] ) \begin{bmatrix} 2I & I\\ I & 2I \end{bmatrix} \cdot \left( \begin{bmatrix} M_L & O\\ O & M_R \end{bmatrix} \cdot \begin{bmatrix} x_L\\ x_R \end{bmatrix} + \begin{bmatrix} c_L\\ c_R \end{bmatrix} \right) [2III2I]([MLOOMR][xLxR]+[cLcR])
这里的 M L , M R M_L, M_R ML,MR 都是 t t t 阶矩阵, O O O I I I 分别是零矩阵和单位阵。首先使用自同构 τ 3 i \tau_{3^i} τ3i 执行两个并行的 BSGS 矩阵乘法,然后再使用自同构 τ − 1 \tau_{-1} τ1 实现这两个仿射变换的结果混合

Pasta

现在我们描述 Pasta 方案。选择 t = t 1 ⋅ t 2 t=t_1 \cdot t_2 t=t1t2 是两个大小接近的整数的乘积,选择满足 gcd ⁡ ( p − 1 , 3 ) = 1 \gcd(p-1,3)=1 gcd(p1,3)=1 的一个 NTT 友好的大素数。它同时使用了 Feistel 和 Cube 两种 S-boxes,

在这里插入图片描述

对于第 i i i 个消息分组,使用 XOF 来产生随机化的仿射层(在明文下),对主密钥 K K K(在密文下)执行 AES-like 轮函数迭代(状态大小为 2 t 2t 2t),最后截断长度为 t t t 的密钥流,加到消息分组上。

在这里插入图片描述

经过不同攻击的分析,[DGH+23] 给出了推荐的参数集。用例为 Z 65536 5 × 5 \mathbb Z_{65536}^{5 \times 5} Z655365×5 上仿射变换,Pasta 的计算效率:

在这里插入图片描述

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

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

相关文章

数据转换 | Matlab基于RP递归图一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 Matlab基于RP递归图一维数据转二维图像方法 基于RP&#xff08;Recurrence Plot&#xff09;递归图的方法可以将一维数据转换为二维图像&#xff0c;以可视化数据的动态特征。RP递归图是一种表示时间序列相…

【数据结构3-栈和队列】

数据结构3-栈和队列 1 栈-特殊的线性表-先进后出1.1 栈的三个案例 2 队列-与栈相反-先进先出2.1 队列的案例 3 用C实现栈的代码&#xff1a;4 用C实现队列的代码 1 栈-特殊的线性表-先进后出 1.1 栈的三个案例 2 队列-与栈相反-先进先出 2.1 队列的案例 3 用C实现栈的代码&…

c++ 二分查找

二分查找&#xff08;Binary Search&#xff09;是一种在有序数组中查找特定元素的高效算法。它通过不断将搜索范围减半来查找目标元素。其时间复杂度为 O(log n)&#xff0c;这是因为每一步都将搜索范围减半&#xff0c;因此算法的性能非常高。 二分查找的基本思想是&#xf…

如何在TestNG中忽略测试用例

在这篇文章中&#xff0c;我们将讨论如何在TestNG中忽略测试用例。TestNG帮助我们忽略使用Test注释的情况&#xff0c;我们可以在不同的级别上忽略这些情况。 首先&#xff0c;只忽略一个测试方法或测试用例。第二&#xff0c;忽略一个类及其子类中的所有情况。第三个是&#…

C语言实现双人贪吃蛇项目(基于控制台界面)

一.贪吃蛇 贪吃蛇是一款简单而富有乐趣的游戏&#xff0c;它的规则易于理解&#xff0c;但挑战性也很高。它已经成为经典的游戏之一&#xff0c;并且在不同的平台上一直受到人们的喜爱和回忆。 二.贪吃蛇的功能 游戏控制&#xff1a;玩家可以使用键盘输入设备来控制蛇的移动方…

【软件安装】(十六)双系统Ubuntu22.04引导启动菜单的默认项

一个愿意伫立在巨人肩膀上的农民...... 好学的人总是喜欢在电脑上安装双系统&#xff0c;可是安装好系统之后&#xff0c;就会出现默认启动优先级的苦恼&#xff0c;如果在Bios中设置Windows引导启动为优先启动&#xff0c;那么每次想要进如Ubuntu系统就都需要重新设置Bios。如…

[Vue warn]: useModel() called with prop “xxx“ which is not declared

我们在使用vue3里面的defineModel的时候可能会出现这个问题&#xff0c;原因是我们使用的 kebab-case 形式的属性名&#xff0c;我也不知道是不是vue3设定这个api的时候设置的不支持&#xff0c;我没找到相关文档&#xff0c;不过我们把 kebab-case 的形式改为 驼峰命名法 或者…

YOLOv8 训练自己的数据集(20240423)

环境搭建请参考&#xff1a;Win10 搭建 YOLOv8 运行环境&#xff08;20240423&#xff09;-CSDN博客 环境测试请参考&#xff1a;本地运行测试 YOLOv8&#xff08;20240423&#xff09;-CSDN博客 一、使用 YOLOv8 的 coco128 数据集熟悉一下如何训练和预测 1.1、在项目根目录…

ClickHouse用UDF解析XML字符串和XML文件

一.如果是读取xml文件的时候&#xff0c;文件入库需要使用文件读取UDF 创建了1个测试文件 wsdFileRead()&#xff1a; 直接读取文件内容 SELECT wsdFileRead(/home/temp/wsd_test.xml)Query id: 09b6e5fe-7169-43f7-b001-90e2eeabb8da┌─wsdFileRead(/home/temp/wsd_test.xm…

串口服务器和光纤交换机的区别

串口服务器与光纤交换机在功能和应用上存在显著区别。串口服务器主要实现串口设备与以太网设备之间的数据转换与传输&#xff0c;适用于远程监控、数据采集等场景&#xff1b;而光纤交换机则专注于高速光纤网络中的数据交换&#xff0c;为大型企业或数据中心提供稳定、高效的数…

基于SpringBoot的合家云社区物业管理平台 - 权限管理模块开发

合家云社区物业管理平台 4.权限管理模块开发 4.1 权限管理概述 4.1.1 权限管理的意义 后台管理系统中&#xff0c;通常需要控制不同的登录用户可以操作的内容。权限管理用于管理系统资源&#xff0c;分配用户菜单、资源权限&#xff0c;以及验证用户是否有访问资源权限。 …

开源模型应用落地-chatglm3-6b-集成langchain(十)

一、前言 langchain框架调用本地模型&#xff0c;使得用户可以直接提出问题或发送指令&#xff0c;而无需担心具体的步骤或流程。通过LangChain和chatglm3-6b模型的整合&#xff0c;可以更好地处理对话&#xff0c;提供更智能、更准确的响应&#xff0c;从而提高对话系统的性能…

构建企业信息安全防护体系:以电子文档安全为核心

随着信息社会的飞速发展与企业信息化建设的深入&#xff0c;企业的商业机密已从传统的纸质文件转向各类电子文档&#xff0c;如CAD图纸、Office文档等。这些数字化的信息载体在提升工作效率、便捷信息流转的同时&#xff0c;也成为了企业内部数据安全面临的主要挑战。如何有效地…

基于springboot实现中药实验管理系统设计项目【项目源码+论文说明】

基于springboot实现中药实验管理系统设计演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了中药实验管理系统的开发全过程。通过分析中药实验管理系统管理的不足&#xff0c;创建了一个计算机管理中药实验管…

LeetCode-2385. 感染二叉树需要的总时间【树 深度优先搜索 广度优先搜索 二叉树】

LeetCode-2385. 感染二叉树需要的总时间【树 深度优先搜索 广度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;记录父节点 DFS解题思路二&#xff1a;解题思路三&#xff1a;深度优先搜索建图 广度优先搜索求感染时间【最容易理解】 题目描述&#xff1a; 给…

实现Spring底层机制(三)

文章目录 阶段4—实现BeanPostProcessor机制1.文件目录2.初始化方法实现1.编写初始化接口InitializingBean.java2.MonsterService.java实现初始化接口3.容器中的createBean方法增加初始化逻辑&#xff0c;判断对象类型是否是InitializingBean的子类型&#xff0c;如果是&#x…

FRP远程连接

前言 通过frp和跳板机完成局域网服务器访问。工具地址&#xff1a;https://github.com/fatedier/frp 配置frp过程 下载frp工具&#xff0c;下载地址如下&#xff1a; https://github.com/fatedier/frp/releases 这里我选择了v0.57.0 解压到本地路径 tar -zxvf xxxxxx.tar.gz配…

python爬虫学习第二十八天-------了解scrapy(二十八天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

接口测试和Mock学习路线(中)

1.什么是 swagger Swagger 是一个用于生成、描述和调用 RESTful 接口的 WEB 服务。 通俗的来讲&#xff0c;Swagger 就是将项目中所有想要暴露的接口展现在页面上&#xff0c;并且可以进行接口调用和测试的服务。 现在大部分的项目都使用了 swagger&#xff0c;因为这样后端…

fakak详解(2)

Kafka和Flume整合 Kafka与flume整合流程 Kafka整合flume流程图 flume主要是做日志数据(离线或实时)地采集。 图-21 数据处理 图-21显示的是flume采集完毕数据之后&#xff0c;进行的离线处理和实时处理两条业务线&#xff0c;现在再来学习flume和kafka的整合处理。 配置fl…