基于格的密码与SABER
基于格的密码与SABER
基于格的密码体制的优势
- 安全假设
\quad对于密码学算法而言,如果能够建立在最坏情况下的困难性之上是最好不过。这样意味着任何情况下都是困难的。
然而,一个好的密码算法,它需要困难问题是建立在平均情况下的,因为这样才能使得密钥随机选取后,所对应的密码函数不能被破解的概率为高概率。
\quad但是在平均情况困难性假设下构造安全的密码学方案,必须要找到合适分布的问题实例。 而格密码正好可以满足这个性质,平均情况的困难性并不比破解困难的实例来得简单。这是格密码具有吸引力的重要原因之一,例如:DLWE问题其实和SLWE的困难度是相同的。 - 抗量子攻击
- 加密解密速度快
- 容易实施
格密码介绍
分享我觉得不错的一句话:
Cryptography is just a bunch a problems
有密码学基础的朋友都知道,我们所学的公钥密码方案都是基于数学困难问题的,比如RSA基于整数分解问题,ElGamal基于离散对数问题。基于格的密码也是如此,目前基于格的密码体制基于的困难问题主要有两类:
- NTRU
- LWE
LWR
LWR也是属于Learning With Errors问题。
区别是LWE与LWR的添加的error不同,
- LWE:
b=As+e\mathbf {b}=\mathbf{A}\mathbf{s}+\mathbf{e}b=As+e
向量eee中的元素都是来自高斯分布。 - LWR:
b=⌊pqAs⌉\mathbf{b}=\lfloor \frac pq \mathbf{A} \mathbf{s} \rceil b=⌊qpAs⌉
q>pq>pq>p, 且⌊x⌉=⌊pq⋅x⌉\lfloor x\rceil=\lfloor \frac pq \cdot x\rceil⌊x⌉=⌊qp⋅x⌉。 所以error是通过将As\mathbf{A} \mathbf{s}As进行四舍五入而添加的。
引用 Alon Rosen的 slides 一句话区分LWE与LWR:
LWE conceals low-order bits by adding small random error.
LWR just discards those bits instead.
SABER
SABER有两个协议,Public-key encryption(PKE) 与Key Encapsulation Mechanism (KEM), 下面介绍PKE
首先介绍符号:
Zq\quad\mathbb{Z}_qZq为整数环,Rq\mathcal{R}_qRq为剩余类环Zq/(Xn+1)\mathbb{Z}_q/{(X^n+1)}Zq/(Xn+1). p, q, T为2的幂次即=p2ϵp,q=2ϵq,q=2ϵq,T=2ϵT.=p2^{\epsilon_p},q=2^{\epsilon_q},q=2^{\epsilon_q},T=2^{\epsilon _T}.=p2ϵp,q=2ϵq,q=2ϵq,T=2ϵT.
U\quad \mathcal{U}U为均匀分布,βμ\beta_\muβμ为中心二项分布,r←βμr\leftarrow \beta_\mur←βμ即多项式rrr的系数属于区间[−μ2,μ2][-\frac \mu2,\frac \mu 2][−2μ,2μ].
h1,h2,h\quad h_1,h_2,\mathbf{h}h1,h2,h是公开的常多项式。
- Key generation
seed A←U({0,1}256)\text { seed }_{\mathbf{A}} \leftarrow \mathcal{U}\left(\{0,1\}^{256}\right) seed A←U({0,1}256)
A=gen (seed)∈Rl×l\mathbf{A} = \text{gen (seed)}\in \mathcal{R}^{l\times l}A=gen (seed)∈Rl×l
r←βμ(Rql×1;r)r\leftarrow \beta_{\mu}(\mathcal{R}_q^{l\times 1};r)r←βμ(Rql×1;r)
b=(ATs+h(modq))≫(ϵq−ϵp)∈Rpl×1\mathbf{b}= (\mathbf{A}^T\mathbf{s}+\mathbf{h}\pmod q) \gg\left(\epsilon_q-\epsilon_p\right) \in R_p^{l \times 1}b=(ATs+h(modq))≫(ϵq−ϵp)∈Rpl×1
// b=⌊pq(ATs+h)⌉\mathbf{b}= \lfloor\frac pq(\mathbf{A}^T\mathbf{s}+\mathbf{h})\rceilb=⌊qp(ATs+h)⌉
returnpk=(seedA,b),sk=sreturn\ pk=(seed_\mathbf{A},\mathbf{b}), sk =\mathbf{s}return pk=(seedA,b),sk=s
// pk=(A,b),sk=spk=(\mathbf{A},\mathbf{b}),sk =\mathbf{s}pk=(A,b),sk=s - Enc((seedA,b),m;r(seed_{\mathbf{A}},\mathbf{b}),m;r(seedA,b),m;r)
A=gen(seedA)∈Rl×l\mathbf{A} = gen (seed_\mathbf{A})\in \mathcal{R}^{l\times l}A=gen(seedA)∈Rl×l
if r is not specified then:
\quad\quad r←U({0,1}256)r\leftarrow \mathcal{U}\left(\{0,1\}^{256}\right)r←U({0,1}256)
end if
s′←βμ(Rql×1;r)\mathbf{s}^\prime \leftarrow \beta_{\mu}(\mathcal{R}_q^{l\times 1};r)s′←βμ(Rql×1;r)
b′=(As′+h(modq))≫(ϵq−ϵp)∈Rpl×1\mathbf{b}^\prime= (\mathbf{A}\mathbf{s}^\prime+\mathbf{h}\pmod q) \gg\left(\epsilon_q-\epsilon_p\right) \in R_p^{l \times 1}b′=(As′+h(modq))≫(ϵq−ϵp)∈Rpl×1
v′=bT(s′(modp))∈Rpv^\prime =\mathbf{b}^T(\mathbf{s}^\prime\pmod p)\in \mathcal{R}_pv′=bT(s′(modp))∈Rp
cm=(v′+h1−2ϵp−1m(modp))≫(ϵp−ϵT)∈RTc_m = (v^\prime +h_1-2^{\epsilon_p -1}m\pmod p) \gg(\epsilon_p-\epsilon_T)\in \mathcal{R}_Tcm=(v′+h1−2ϵp−1m(modp))≫(ϵp−ϵT)∈RT.
// cm=⌊Tp(v′+h1−2ϵp−1m)⌉∈RTc_m=\lfloor \frac T p (v^\prime +h_1-2^{\epsilon_p -1}m)\rceil \in \mathcal{R}_Tcm=⌊pT(v′+h1−2ϵp−1m)⌉∈RT
returnc=(cm,b′)return\ c=(c_m,\mathbf{b}^\prime)return c=(cm,b′) - Dec(s,cm,b′\mathbf{s},c_m,\mathbf{b}^\primes,cm,b′)
v=b′s(modp)∈Rpv = \mathbf{b}^\prime \mathbf{s}\pmod p\in\mathcal{R}_pv=b′s(modp)∈Rp
m′=(v+h2−2ϵp−ϵTcm(modp))≫(ϵp−1)∈R2m^\prime=(v+h_2-2^{\epsilon_p-\epsilon_{T}}c_m\pmod p)\gg (\epsilon_p-1)\in \mathcal{R}_2m′=(v+h2−2ϵp−ϵTcm(modp))≫(ϵp−1)∈R2
// m′=⌊2p(v′+h2−pTcm)⌉m^\prime=\lfloor\frac 2p( v^\prime+h_2-\frac pTc_m)\rceilm′=⌊p2(v′+h2−Tpcm)⌉
returnm′return \ m^\primereturn m′
总结
SABER算法整体看起来很简单,但我不是很理解多项式h1,h2,hh_1,h_2,\mathbf{h}h1,h2,h 的选取,个人观点:多项式是为了实现或者是安全,但去掉并不影响理解算法的主体。
基于格的密码与SABER相关推荐
- 基于 Bitwarden 搭建密码管理器(群晖 Docker)
本文介绍如何在自己的群晖上使用 Docker 对全平台密码管理服务器 Bitwarden 进行私有部署. 目前的密码管理器方案有 1Password,Lastpass,KeePass,Bitwarde ...
- 机器人学数学理论_基于格理论的机器学习数学
机器人学数学理论 This is a third article in the series of works (see also first one and second one) describi ...
- 一种基于格网的快速等值线充填算法
摘 要:本文提出一种基于格网的等值线跟踪,适用于任意边界分割的快速充填算法,实现充填的矢量化效果.根据边界线与非封闭等值线间的关系,建立等值线间的拓扑关系,并以树结构方式存储,以准确快速地实现边界线. ...
- biba和blp安全模型都是基于格的吗
Biba 和 BLP 安全模型都是基于格的安全模型. Biba 安全模型是一种基于访问控制的安全模型,它将系统中的所有安全状态划分成若干等级,并规定了不同等级之间的访问关系.在 Biba 模型中,每个 ...
- 详解基于格网法统计平面点云面积
主函数展示: void main() {char *inputpath = "D:\\testdata.xyz";vector<pcl::PointXYZ> point ...
- 基于口令的密码(PBE)
基于口令的密码(PBE) 基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法.其中加密和解密使用的是同一个密钥. 根据用户自 ...
- vue基于 input 实现密码的显示与隐藏功能
目录 前言: 一.准备图标 二.Vue程序界面的展示 三.代码 总结: 前言: 大家都知道,一般情况下,输入框的密码我们是看不到密码的,只有当我们点击查看密码的小图标时,密码才会显现出来,实现起来也非 ...
- springboot默认数据源如何设置连接数_spring boot基于DRUID数据源密码加密及数据源监控实现...
项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...
- druid 连接池的释放 配合上spring bean销毁_spring boot基于DRUID数据源密码加密及数据源监控实现...
项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...
最新文章
- [内部项目]i前端如何增加一个页面
- java aix 移植linux,[转]程序的可移植性:window,linux,aix,solaris下程序移植体会
- Equations HDU - 1496(哈希或三层for循环)求满足公式有多少种情况
- Linux: I/O多路转接之poll(有图有代码有真相!!!)
- a = 3 中3在栈还是堆_阳台要不要装推拉门?纠结3次后还是装错了,返工中
- pythonstdin_如何在Python中执行将数据写入stdin的进程?
- 30个你必须记住的CSS选择符
- 信贷违约风险评估模型(下篇):机器学习模型
- 强烈推荐!mac超牛皮解压/压缩工具MyZip 1.1.2 mac免费版
- 96---Python 绘制费马螺旋线
- 德国精品软件 小红伞杀毒软件 AntiVir
- SeetaFace使用(问题)
- 家庭NAS服务器(3)VM测试-固态缓存盘加速机械盘
- 基于C#winform的学生信息管理与成绩评价系统
- 基于Vue项目的回到顶部插件
- 1051366-32-5,Balixafortide (POL6326),肽类 CXC chemokine receptor 4 (CXCR4) 的拮抗剂
- 大数据的变革:保险行业数据价值赋能
- oracle打开缓慢,Oracle SQL执行缓慢的原因以及解决方案
- 使用svelte+webpack 打包成umd形式的js库
- Android终端启用adb功能
热门文章
- BI大数据分析是什么,大数据bi工具有哪些
- 纽约州立大学石溪分校计算机专业排名,纽约州立大学石溪分校美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
- 常见地图坐标系以及转换方法、转换工具
- 苹果手机投影到墙上_买家用投影仪必须知道的常识(去专业、简单易懂,绝对无广告)...
- java 生僻字 问号_csv导出姓名生僻字变问号
- 【Coding】Latex添加表格注释footnote
- Simulink-模块Moudle调用回调函数步骤
- Moudle、aar新建和导入
- html href点击无效,href跳转无效 js阻止a标签href跳转
- MFC combo, radio控件使用