Packed Ciphertexts in LWE-based Homomorphic Encryption:解读

本文深入解析Regev基于LWE的同态加密方案,涵盖打包思想、加解密过程、同态计算、密钥交换和打包明文的计算。重点讨论了如何通过打包技术提高计算效率,并探讨了密文维度在乘法操作后的指数增长及如何使用重线性化技术解决。同时,文章提到了基于整数环和多项式环的对比,指出各自的优势和应用场景。
摘要由CSDN通过智能技术生成

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

本节内容记录阅读该论文的笔记

介绍

首先,介绍了两种明文“打包”的方法:PVW和SV
image

PVW:对应论文(PVW:A framework for efficient and composable oblivious transfer),打包思想就是,将多个bit明文是为一个明文向量。

SV:对应论文(SV11:Fully homomorphic SIMD operations),打包思想:将多个明文通过“编码”插入到一个多项式上,转换成多项式的计算相当于这么多明文计算。多用于基于RLWE方案的。

Regev简介

原paper:On lattices, learning with errors, random linear codes, and cryptography

加密单比特数据:系统参数q∈Zq∈Zq\in Z,明文比特b∈(0,1)b∈(0,1)b\in (0,1),私钥sss和密文ccc都是向量ZnZnZ^n,

加解密

具体加解密参考:密码算法汇总

将明文bbb加密,密文是个向量,解密的私钥sss也是向量,解密框架为:
z=<c,s>(modq)=k.q+b.q/2+e(modq)z=<c,s>(modq)=k.q+b.q/2+e(modq)z=<c,s>(mod q)=k.q+b.q/2+e(mod q),其中e,ke,ke,k是小整数,zzz的范围为[−q/2,q/2][−q/2,q/2][-q/2,q/2],若|z|<q/4|z|<q/4|z|<q/4,则解密为0,否则为1。

同态计算

(1)加法
Regev本身支持同态加法计算,即E(b1+b2)=c1+c2(modq)E(b1+b2)=c1+c2(modq)E(b_1+b_2)=c_1+c_2(mod q)。
(2)乘法
在该paper:(BV11a:Efficient fully homomorphic encryption from (standard) LWE)中给出同态乘法运算:
这里的“乘法”是张量积,满足:E(b1.b2)=(c1⨂c2E(b1.b2)=(c1⨂c2E(b_1.b_2)=(c_1\bigotimes c_2),并满足<s1,c2>.<s2,c2>=<s1⨂s2,c1⨂c2><s1,c2>.<s2,c2>=<s1⨂s2,c1⨂c2><s_1,c_2>.<s_2,c_2>=<s_1\bigotimes s_2,c_1\bigotimes c_2>

张量积:参考(点积、张量积和范数
image

下面就是如何构造乘法后的正确解密:
c∗=⌈2/q.(c1⨂c2)⌋c∗=⌈2/q.(c1⨂c2)⌋c^=\left \lceil 2/q.(c_1\bigotimes c_2)\right \rfloor
则:z∗=<s⨂s.c∗>=k∗.q+b1b2.q/2+e∗(modq)z∗=<s⨂s.c∗>=k∗.q+b1b2.q/2+e∗(modq)z^
=<s\bigotimes s.c*>=k.q+b_1b_2.q/2+e^(mod q),其中k∗,e∗k∗,e∗k*,e*也是相对较小的,所以参数选取适当的情况下,乘法后能正常解密!

可以看出,如果c1,c2c1,c2c_1,c_2是一个nnn维的向量的话,则c1⨂c2c1⨂c2c_1\bigotimes c_2是一个n2n2n2维的矩阵,若在此基础上再进行一次乘法,则新密文的维数为n4n4n4,可见存在一个问题:密文维数随着乘法次数而变大(指数级)。

所以需要一种方法去“降维”,即(BV11a)中给出的**重线性化技术(re-linearization)**将密文维数n2n2n^2将为nnn。

重线性化,实质上就是密钥交换技术(Key Switching),即给出两个密钥s,s′s,s′s,s’,使用密钥交换技术将密钥s′s′s’对应的密文转换为sss对应的密文。密钥交换矩阵实际上包含用s′s′s’加密的sss,这是一个矩阵(密钥交换矩阵),其实也是将s⨂ss⨂ss\bigotimes s转换为sss

打包“压缩”明文

前面提到原始的Regev方案是加密单bit明文,密文和密钥都是向量,这样效率较低。

可以将多个密钥sisis_i按行组成一个矩阵SSS,可以加密一个明文向量bbb,解密时:z=S.c=k.q+b.q/2+ez=S.c=k.q+b.q/2+ez=S.c=k.q+b.q/2+e,其中k,ek,ek,e是小向量。(这里的密钥有多种

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[虚幻私塾】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值