基于格的密码与SABER

基于格的密码体制的优势

  • 安全假设
    \quad对于密码学算法而言,如果能够建立在最坏情况下的困难性之上是最好不过。这样意味着任何情况下都是困难的。
    然而,一个好的密码算法,它需要困难问题是建立在平均情况下的,因为这样才能使得密钥随机选取后,所对应的密码函数不能被破解的概率为高概率。
    \quad但是在平均情况困难性假设下构造安全的密码学方案,必须要找到合适分布的问题实例。 而格密码正好可以满足这个性质,平均情况的困难性并不比破解困难的实例来得简单。这是格密码具有吸引力的重要原因之一,例如:DLWE问题其实和SLWE的困难度是相同的。
  • 抗量子攻击
  • 加密解密速度快
  • 容易实施

格密码介绍

分享我觉得不错的一句话:

Cryptography is just a bunch a problems

有密码学基础的朋友都知道,我们所学的公钥密码方案都是基于数学困难问题的,比如RSA基于整数分解问题,ElGamal基于离散对数问题。基于格的密码也是如此,目前基于格的密码体制基于的困难问题主要有两类:

  1. NTRU
  2. 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=⌊qp​As⌉
    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是公开的常多项式。

  1. 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
  2. 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′)
  3. 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​−ϵT​cm​(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​−Tp​cm​)⌉
    returnm′return \ m^\primereturn m′

总结

SABER算法整体看起来很简单,但我不是很理解多项式h1,h2,hh_1,h_2,\mathbf{h}h1​,h2​,h 的选取,个人观点:多项式是为了实现或者是安全,但去掉并不影响理解算法的主体。

基于格的密码与SABER相关推荐

  1. 基于 Bitwarden 搭建密码管理器(群晖 Docker)

    本文介绍如何在自己的群晖上使用 Docker 对全平台密码管理服务器 Bitwarden 进行私有部署. 目前的密码管理器方案有 1Password,Lastpass,KeePass,Bitwarde ...

  2. 机器人学数学理论_基于格理论的机器学习数学

    机器人学数学理论 This is a third article in the series of works (see also first one and second one) describi ...

  3. 一种基于格网的快速等值线充填算法

    摘 要:本文提出一种基于格网的等值线跟踪,适用于任意边界分割的快速充填算法,实现充填的矢量化效果.根据边界线与非封闭等值线间的关系,建立等值线间的拓扑关系,并以树结构方式存储,以准确快速地实现边界线. ...

  4. biba和blp安全模型都是基于格的吗

    Biba 和 BLP 安全模型都是基于格的安全模型. Biba 安全模型是一种基于访问控制的安全模型,它将系统中的所有安全状态划分成若干等级,并规定了不同等级之间的访问关系.在 Biba 模型中,每个 ...

  5. 详解基于格网法统计平面点云面积

    主函数展示: void main() {char *inputpath = "D:\\testdata.xyz";vector<pcl::PointXYZ> point ...

  6. 基于口令的密码(PBE)

    基于口令的密码(PBE) 基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法.其中加密和解密使用的是同一个密钥. 根据用户自 ...

  7. vue基于 input 实现密码的显示与隐藏功能

    目录 前言: 一.准备图标 二.Vue程序界面的展示 三.代码 总结: 前言: 大家都知道,一般情况下,输入框的密码我们是看不到密码的,只有当我们点击查看密码的小图标时,密码才会显现出来,实现起来也非 ...

  8. springboot默认数据源如何设置连接数_spring boot基于DRUID数据源密码加密及数据源监控实现...

    项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...

  9. druid 连接池的释放 配合上spring bean销毁_spring boot基于DRUID数据源密码加密及数据源监控实现...

    项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...

最新文章

  1. [内部项目]i前端如何增加一个页面
  2. java aix 移植linux,[转]程序的可移植性:window,linux,aix,solaris下程序移植体会
  3. Equations HDU - 1496(哈希或三层for循环)求满足公式有多少种情况
  4. Linux: I/O多路转接之poll(有图有代码有真相!!!)
  5. a = 3 中3在栈还是堆_阳台要不要装推拉门?纠结3次后还是装错了,返工中
  6. pythonstdin_如何在Python中执行将数据写入stdin的进程?
  7. 30个你必须记住的CSS选择符
  8. 信贷违约风险评估模型(下篇):机器学习模型
  9. 强烈推荐!mac超牛皮解压/压缩工具MyZip 1.1.2 mac免费版
  10. 96---Python 绘制费马螺旋线
  11. 德国精品软件 小红伞杀毒软件 AntiVir
  12. SeetaFace使用(问题)
  13. 家庭NAS服务器(3)VM测试-固态缓存盘加速机械盘
  14. 基于C#winform的学生信息管理与成绩评价系统
  15. 基于Vue项目的回到顶部插件
  16. 1051366-32-5,Balixafortide (POL6326),肽类 CXC chemokine receptor 4 (CXCR4) 的拮抗剂
  17. 大数据的变革:保险行业数据价值赋能
  18. oracle打开缓慢,Oracle SQL执行缓慢的原因以及解决方案
  19. 使用svelte+webpack 打包成umd形式的js库
  20. Android终端启用adb功能

热门文章

  1. BI大数据分析是什么,大数据bi工具有哪些
  2. 纽约州立大学石溪分校计算机专业排名,纽约州立大学石溪分校美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
  3. 常见地图坐标系以及转换方法、转换工具
  4. 苹果手机投影到墙上_买家用投影仪必须知道的常识(去专业、简单易懂,绝对无广告)...
  5. java 生僻字 问号_csv导出姓名生僻字变问号
  6. 【Coding】Latex添加表格注释footnote
  7. Simulink-模块Moudle调用回调函数步骤
  8. Moudle、aar新建和导入
  9. html href点击无效,href跳转无效 js阻止a标签href跳转
  10. MFC combo, radio控件使用