多密钥TFHE学习笔记1-MKTFHE的整体流程

MK-TFHE 的整体流程图

MK-TFHE的整体流程从用户与服务器的角度看大致如下所示:

  1. 首先生成公共参数 CRS,将参数发送给每个参与方以及服务器(如果CRS生成不在服务器)
    MKTFHE整体流程示意图1-设置
  2. 每个参与方独立地生成自己的密钥并加密消息,发送至服务器
    MKTFHE整体流程示意图2-密钥生成与加密
  3. 服务器进行同台评估过程,将结果返回给参与方
    MKTFHE整体流程示意图3-评估
  4. (在联合解密中)所有参与计算的参与方共同解密密文,得到结果
    MKTFHE整体流程示意图4-解密

TFHE 的多密钥变体的关键步骤

首先做一些约定:

  • 除非特殊说明,否则算法以 2 为底数。
  • 向量使用加粗的字体表示,矩阵使用加粗大写的字体表示。
  • 内积使用 < ⋅ , ⋅ > < \sdot , \sdot> <,> 表示。
  • 对于实数 r r r ,使用 ⌊ r ⌉ \lfloor r \rceil r 表示取整(取距离 r r r 最近的整数,相等时向上舍入)。
  • 使用 x ← D x \leftarrow D xD 表示从分布 D D D 中取样 (sample) x x x
  • 对于有限集合 S S S ,使用 U ( S ) U(S) U(S) 表示集合 S S S 上的均匀分布。
  • 使用 D α D_{\alpha} Dα 表示方差为 α 2 \alpha^{2} α2 的高斯分布。
  • 使用 λ \lambda λ 表示安全参数。
  • 所有已知的对该密码方案的攻击需要 Ω ( 2 λ ) \Omega(2^{\lambda}) Ω(2λ) 比特的操作。
  • 对于正整数 k k k ,使用 [ k ] [k] [k] 表示其索引集合 { 1 , 2 , . . . , k } \{1, 2, ... ,k\} { 1,2,...,k}

以下为多密钥 TFHE (MKTFHE) 的重要步骤:

1. 设置 - MKHE.Setup( 1 λ 1^{\lambda} 1λ )

  1. 调用 LWE.Setup ( 1 λ 1^\lambda 1λ ) 来生成 LWE 的参数 p p L W E = ( n , χ , α , B ′ , d ′ ) pp^{LWE} = (n, \chi, \alpha, B', d') ppLWE=(n,χ,α,B,d) 。其中 n n n 为 LWE 的维度, χ \chi χ 为 LWE 密钥的分布, α \alpha α 为错误率, B ′ B' B 为分解基, d ′ d' d 为密钥转换 gadget 向量的维度。密钥转换 gadget 向量: g ′ = ( B ′ − 1 , . . . , B ′ − d ′ ) g' = (B'^{-1}, ... , B'^{-d'}) g=(B1,...,Bd)
  2. 调用 RLWE.Setup ( 1 λ 1^\lambda 1λ ) 来生成 RLWE 的参数 p p R L W E = ( N , ψ , β , B , d , a ) pp^{RLWE} = (N, \psi, \beta, B, d,\pmb{a}) ppRLWE=(N,ψ,β,B,d,aaa) 。其中 N N N 为 RLWE 的维度(2的幂), ψ \psi ψ 为 RLWE 密钥在 R R R 上的分布,并且错误率为 α \alpha α B ≥ 2 B \geq 2 B2 是整数基,分解维度为 d d d , gadget 向量为 g = ( B − 1 , . . . , B − d ) g = (B^{-1}, ... , B^{-d}) g=(B1,...,Bd) a \pmb{a} aaa 为分布 T d T^d Td 上的均匀分布的采样。
  3. 返回生成的公共参数 p p M K H E = ( p p L W E , p p R L W E ) pp^{MKHE} = (pp^{LWE}, pp^{RLWE}) ppMKHE=(ppLWE,ppRLWE)

MKTFHE整体流程1-设置
*假设 MKHE 的算法都默认将 p p M K H E pp^{MKHE} ppMKHE 作为输入。公共参数为 CRS ,可以理解为是所有人都知道的信息。

2. 密钥生成 - MKHE.KeyGen()

  1. 生成 LWE 密钥 s i ← L W E . K e y G e n ( ) s_i \leftarrow LWE.KeyGen() siLWE.KeyGen() 。这一步仅为从分布 χ \chi χ 中采样密钥。
  2. 运行 ( z i , b i ) ← R L W E . K e y G e n ( ) (z_i, \pmb{b}_i) \leftarrow RLWE.KeyGen() (zi,bbbi)RLWE.KeyGen() 并且设置公钥为 P K i = b i PK_i = \pmb{b}_i PKi=bbbi 。从分布 ψ \psi ψ 中采样 z z z ,设 z = ( 1 , z ) \pmb{z} = (1, z) zzz=(1,z) 。从 D α d D_{\alpha}^d Dαd 中取一个误差向量 e \pmb{e} eee ,计算公钥 b = − z ⋅ a + e \pmb{b} = -z \sdot \pmb{a} + \pmb{e} bbb=zaaa+eee (mod 1) 。对于 z i = z 1 , 0 + z i , 1 X + . . . + z i , N − 1 X N − 1 z_i = z_{1,0} + z_{i,1}X + ... + z_{i,N-1}X^{N-1} zi=z1,0+zi,1X+...+zi,N1XN1 ,记 z i ∗ = ( z i , 0 , − z i , N − 1 , . . . , − z i , 1 ) ∈ Z N
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值