Raccon:更好防侧信道攻击的后量子签名方案

1. 引言

安全社区已经开发出了一些出色的加密算法,这些算法非常安全,但最终,所有的数据都会被存储在硅和金属中,而入侵者越来越多地会在那里放置监视器来破解密钥。

破解加密密钥通常涉及暴力破解方法或利用实施过程中的缺陷。然而,人们对物理侧信道攻击的兴趣日益浓厚。
侧信道攻击是指:

  • 无意中泄露加密信息,如电磁辐射、功耗、电压波动,甚至声音和热量变化。

目前很少有公司保护其设备免受侧信道攻击,尤其是因为这种攻击成本高昂,需要使用复杂的设备进行大量测试。

随着设备的速度越来越快,可能会发射越来越多的无线电和电磁 (electromagnetic,EM) 辐射。如:

  • 2GHz 处理器的运行频率与 Wi-Fi 信号 (2.4 GHz) 相同,且芯片通常不受无线电波发射保护,这是设备快速运行的自然副产品。由于这些高频,通常很难阻止电磁辐射耦合到附近的电线和其他电路中:
    在这里插入图片描述
    本文重点关注后量子签名方案,如:Dilithium、SPHINCS+ 、FALCON和Raccoon的侧信道攻击问题。
    所谓Raccoon:
  • 为由PQShied开发的,基于Lattice的后量子签名方案。
  • 已作为额外签名,提交到NIST PQC竞赛。
  • 使用无aborts的Fiat-Shamir方法。而Dilithium则使用的是有aborts的Fiat-Shamir方法。
  • 所谓无aborts的Fiat-Shamir方法,是指:支持分布式门限签名,且对侧信道攻击进行了改进。
  • 开源代码实现见:https://asecuritysite.com/pqc/raccoon

2. PQC 中的侧通道

在这里插入图片描述

在PQShield团队 Masking-Friendly Signatures and the Design of Raccoon 的精彩演讲中,作者概述了 PQC 签名的三种主要方法(Dilithium、SPHINCS+ 和 FALCON)容易受到侧信道攻击:
在这里插入图片描述

在这里插入图片描述
在 FALCON 中,Karabulut 和 Aysu 表明,功耗主要源自签名和私钥(sk)的点积,甚至纯粹是私钥的点积:
在这里插入图片描述
Masking-Friendly Signatures and the Design of Raccoon 作者随后展示了 Dilithium 如何存在侧信道问题,并使用了经典的过河难题:
在这里插入图片描述

3. Dilithium后量子签名方案

Dilithium keygen为:

  • 从密钥 ( s k sk sk)和误差矩阵 ( e e e ) 中推导出公钥 ( v k vk vk ) ,采用经典的 LWE (learning with errors) 方法:
    v k = A ⋅ s k + e ​​ vk = \mathbf{A}⋅sk + e​​ vk=Ask+e​​
    其中:
    • A \mathbf{A} A k × l k\times l k×l矩阵, t t t k k k 个元素的向量。
    • 这些都取 ( m o d q \mod q modq ),其中 q q q是素数。
    • 验签密钥将是 ( A , v k ) ( \mathbf{A} , vk ) (A,vk),签名密钥是 s k sk sk

Dilithium签名过程为:

  • 采用一个简短的随机秘密( r r r)和消息( m s g msg msg),并创建一个挑战承诺(其中 e ′ e' e e e e的一个样本),计算:
    w = A ⋅ r + e ′ w = \mathbf{A}⋅r + e' w=Ar+e​​
    c = H a s h ( v k , m s g , w ) c =Hash(vk,msg,w) c=Hash(vkmsgw)
    然后计算:
    z = r + c ⋅ s k z = r + c ⋅ sk z=r+csk
    • 若z太大,则重试以上计算流程。
  • 最后返回 ( w , z ) ( w,z ) (w,z) 作为签名。

这是一个经典的带有aborts的 Fiat-Shamir sigma 方法。该abort用于阻止签名密钥被泄露。

Dilithium验签过程为:

  • 首先检查z是否很小。
  • 然后计算:
    c ′ = H a s h ( v k , m s g , w ) c'=Hash(vk,msg,w) c=Hash(vkmsgw)
  • 然后检查: A ⋅ z ≈ w + c ⋅ v k \mathbf{A} ⋅ z ≈ w + c ⋅ vk Azw+cvk

这是有效的,因为error值相对较小:

  • A ⋅ z = A ⋅ ( r + c ⋅ s k ) = A ⋅ r + A ⋅ c ⋅ s k ≈ w + c ⋅ v k \mathbf{A} ⋅ z =\mathbf{ A} ⋅ ( r + c ⋅ sk ) = \mathbf{A} ⋅ r + \mathbf{A} ⋅ c ⋅ sk ≈ w + c ⋅ vk Az=A(r+csk)=Ar+Acskw+cvk
    因为 A ⋅ r ≈ A ⋅ r + e ′ \mathbf{A}⋅r ≈ \mathbf{A} ⋅ r+e' ArAr+e A ⋅ c ⋅ s k ≈ v k ⋅ c \mathbf{A} ⋅ c ⋅ sk ≈ vk⋅ c Acskvkc

为了不泄露计算结果,可掩盖该error值或 r。这是通过对均匀分布的error值进行采样来完成的,这可能是一项相当耗时的任务。除此之外,aborts也会减慢签名的生成速度:
在这里插入图片描述

4. Raccoon后量子签名方案

Raccoon后量子签名方案:

  • 利用了 Lyubashevsky 的签名方法(见Lyubashevsky 2009年论文《Fiat-Shamir with aborts: Applications to lattice and factoring-based signatures》,以及2012年论文《Lattice signatures without trapdoors》),但没有aborts。

Raccoon keygen为:

  • 从密钥 ( s k sk sk)和经典 LWE(learning with errors)方法的error 矩阵 e e e中得出公钥 ( v k vk vk ):
    v k = A ⋅ s k + e vk = \mathbf{A}⋅sk + e vk=Ask+e​​
    其中:
    • A \mathbf{A} A k × l k\times l k×l矩阵, t t t k k k 个元素的向量。
    • 这些都取 ( m o d q \mod q modq ),其中 q q q是素数。
    • 验签密钥为 ( A , v k ) ( A , vk ) (A,vk),签名密钥为 s k sk sk

Raccoon签名过程为:

  • 采用一个简短的随机秘密( r r r)和消息( m s g msg msg),并创建一个挑战承诺(其中 e ′ e' e e e e的一个样本):
    w = A ⋅ r + e ′ w = \mathbf{A}⋅r + e' w=Ar+e​​
    c = H a s h ( v k , m s g , w ) c = Hash(vk,msg,w) c=Hash(vkmsgw)
  • 接下来计算:
    z = r + c ⋅ s k z = r + c ⋅ sk z=r+csk
    y = c ⋅ e + e ′ y = c⋅e + e' y=ce+e​​
  • 那么签名就是 c , z , y c , z , y c,z,y

Raccoon验签过程为:

  • 计算:
    w ′ = A ⋅ z + y − c ⋅ v k w'= \mathbf{A} ⋅ z + y − c ⋅ vk w=Az+ycvk
    c ′ = H a s h ( v k , m s g , w ′ ) c'=Hash( vk , msg , w') c=Hash(vk,msg,w)
  • 然后检查 c = c ′ c = c' c=c是否成立,若成立则验签通过。
    • 这是因为:
      w ′ = A ⋅ z + y − c ⋅ v k − A ⋅ ( c ⋅ s k + r ) + c ⋅ e + e ′ + c ⋅ ( A ⋅ s k + e ) = A ⋅ c ⋅ s k + A ⋅ r + c ⋅ e + e ′ − c ⋅ A ⋅ s k − c ⋅ e = A ⋅ r + e = w w'= \mathbf{A} ⋅ z + y − c ⋅ vk − \mathbf{A} ⋅(c ⋅ sk + r)+ c ⋅ e + e'+ c ⋅ (\mathbf{A} ⋅ sk + e)= \mathbf{A} ⋅ c ⋅ sk + \mathbf{A} ⋅ r + c ⋅ e + e'− c⋅ \mathbf{A} ⋅ sk − c ⋅ e = \mathbf{A} ⋅ r + e = w w=Az+ycvkA(csk+r)+ce+e+c(Ask+e)=Acsk+Ar+ce+ecAskce=Ar+e=w
    • 因此 H a s h ( v k , m s g , w ) Hash( vk , msg , w ) Hash(vk,msg,w) 等于 H a s h ( v k , m s g , w ′ ) Hash( vk , msg , w') Hash(vk,msg,w)

使用 Raccoon,不会在short emphemal secret(r)采样中出现延迟,也不会有aborts:
在这里插入图片描述

总体而言,将其分成了 d d d份,其中 Raccoon 在masking方面的扩展性比 Dilithium 好得多:
在这里插入图片描述

5. 结论

PQShield团队slide Masking-Friendly Signatures and the Design of Raccoon的结论部分,可看到 Raccoon 的假设与 Dilithium 类似,且更简单。Raccoon验签(公钥)密钥大小也差不多。不幸的是,签名大小是Dilithium的四倍。若使用masking,Raccoon比其他提议的标准要快得多:
在这里插入图片描述

参考资料

[1] Prof Bill Buchanan OBE FRSE 2024年6月博客 Side Channels in Post Quantum Cryptography
[2] PQShield团队slide Masking-Friendly Signatures and the Design of Raccoon
[3] Thomas Prest——PQShield首席密码学研究员博客
[4] 2023年11月20日 2nd Oxford Post-Quantum Cryptography Summit 2023 视频PQC Scheme: Raccoon(相应slide见Raccoon)

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

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

相关文章

2029年AI服务器出货量将突破450万台,AI推理服务器即将爆发式增长

在2020年,新冠疫情与远程办公模式的兴起推动了所有类型服务器的出货量达到峰值,随后几年里,除了AI服务器之外的所有类别都回归到了正常水平。 根据Omdia的研究数据,AI服务器的出货量在2020年急剧上升,并且至今未显示出…

日志的介绍

知识铺垫:在我们日常开发中,其实日志是和我们息息相关的。但可能平常都没怎么注意到日志相关的知识点,也不怎么关注日志,然后,在生产环境中,日志是必不可少的存在,项目出现问题了都是通过日志来…

cesium 添加 Echarts 图层(空气质量点图)

cesium 添加 Echarts 图层(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <html lan…

Excel 数据筛选难题解决

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

图形化用户界面-java头歌实训

图形化用户界面 import java.awt.*; import javax.swing.*; public class GraphicsTester extends JFrame { public GraphicsTester() { super("Graphics Demo"); setSize(480, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint…

服务器raid5坏盘-换盘-修复阵列过程

目录 背景原因分析解决步骤名词解释进入raid管理界面换回旧4号&#xff0c;进行import再次更换4号盘 总结 背景 服务器除尘之后文件服务器部分文件不能访问了,部分文件夹内容为空&#xff0c;起初以为是新配置的权限的问题&#xff0c;排查之后发现不仅仅是权限问题 jumpserv…

VTK学习日志:基于VTK9.3.0+Visual Studio c++实现DICOM影像MPR多平面重建+V R体绘制4个视图展示功能的实现(二)

前段时间对VTK9.3.0进行了编译&#xff0c;开发了MPRVR实现的demo,显示效果不是很理想&#xff0c;正好趁着周末有时间&#xff0c;再度对之前的程序进行优化和完善&#xff0c;先展示下效果&#xff1a; VTK实现MPRVR四视图 再次讲解下基于VTK的MPRVR实现的简单项目创建过程&a…

Linux安装Node-RED并实现后台运行及开机启动

首先确保系统中已近成功安装Node.js&#xff0c;并保证需要的合适版本&#xff1a; 关于node.js的安装可以参考我的另一篇博文:《AliyunOS安装Node.js》。 然后就可以使用npm工具安装Node-RED了&#xff0c;很简单使用如下命令&#xff1a; sudo npm install -g --unsafe-per…

MATLAB使用系统辨识工具箱建立PID水温的传递函数系数

概述 利用PID控制水温&#xff0c;由于实际在工程项目中&#xff0c;手动调节PID参数比较耗费时间&#xff0c;所以可以先利用MATLAB中的Simulink软件建立模型&#xff0c;先在仿真软件上调节大概的PID参数&#xff0c;再利用此PID参数为基础在实际的工程项目中手动调节PID参数…

这些并发编程技术你都知道吗?

与其碌碌无为&#xff0c;不如兴风作浪。 虽然不是所有的系统都需要很多的并发编程技术&#xff0c;但是掌握常见的高并发秘籍&#xff0c;便能让我们的系统快起来&#xff0c;面对访问量的剧增从容应对。 接下来&#xff0c;为我们一起来看看常见的高并发技术有哪些。总结起来…

SSH版本升级-openssh-9.7p1

SSH版本升级-openssh-9.7p1 1、查看当前版本2、安装openssl2.1、编译安装ssl 3、下载新版本SSH4、备份原有的SSH配置5、上传文件并解压6、卸载原有的openssh包7、编译安装openssh7.1、在解压后的目录&#xff0c;初始化openssh7.2、将文件拷回7.3、修改配置文件 最终实现&#…

DDD学习笔记五

模型引力场&#xff1a;聚合 强作用力体现&#xff1a; 某个领域模型是另一些模型存在的前提&#xff0c;没有前者&#xff0c;后者就失去了生存的意义。 一组领域模型之间存在关联的领域逻辑&#xff0c;任何时候都不能违反。 一组领域模型必须以一个完整的、一致的状态呈现给…

CSDN写文章时需要上、下标字号怎么输?

上标&#xff1a;​^^&#xff0c;符号中间加字 下标&#xff1a;~~&#xff0c;符号中间加字 前题是用MD编辑器&#xff0c;不然白搭&#xff1a; 我是感觉CSDN这个文本编辑比较拉&#xff0c;非常想吐槽。

dB分贝入门

主要参考资料&#xff1a; dB&#xff08;分贝&#xff09;定义及其应用: https://blog.csdn.net/u014162133/article/details/110388145 目录 dB的应用一、声音的大小二、信号强度三、增益 dB的应用 一、声音的大小 在日常生活中&#xff0c;住宅小区告知牌上面标示噪音要低…

vue2 element ui 表单 动态增加表单项 表单项值不可重复 select多选

案例 <template><el-form :model"form" ref"form" label-width"70px"><el-form-item><el-button icon"el-icon-plus" type"primary" plain click"add">新增</el-button><el-b…

VUE3-Elementplus-form表单-笔记

1. 结构相关 el-row表示一行&#xff0c;一行分成24份 el-col表示列 (1) :span"12" 代表在一行中&#xff0c;占12份 (50%) (2) :span"6" 表示在一行中&#xff0c;占6份 (25%) (3) :offset"3" 代表在一行中&#xff0c;左侧margin份数 el…

后劳动经济学(PLE):AI时代的工作未来

引言 随着人工智能&#xff08;AI&#xff09;和自动化技术的飞速发展&#xff0c;我们迎来了一个新的经济范式——后劳动经济学&#xff08;PLE&#xff09;。这一概念主要讨论在AI和自动化技术超越人类能力的关键领域后&#xff0c;机器将不可避免地在许多经济活动中取代人类…

如何玩单机版:QQ音速

前言 我是研究单机的老罗&#xff0c;今天教大家带来一款怀旧游戏QQ音速 的教程。根据我的文章&#xff0c;一步一步就可以玩了。 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; QQ音速 搭建教程 此…

vscode下无法识别node、npm的问题

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 因为node是在cmd安装的&#xff0c;是全局安装的&#xff0c;并不是在这个项目里安装的。 解决方案&#xff1a; 1.在vscode的控制台&#xff0c;针对一个项目安装特定版本的node&#xff1b; 2.已经…

C++(Python)肥皂泡沫普拉托边界膜曲面模型算法

&#x1f3af;要点 &#x1f3af;肥皂泡二维流体模拟 | &#x1f3af;泡沫普拉托边界膜曲面模型算法演化厚度变化 | &#x1f3af;螺旋曲面三周期最小结构生成 &#x1f4dc;皂膜用例&#xff1a;Python计算物理粒子及拉格朗日和哈密顿动力学 | Python和MATLAB粘性力接触力动…