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

news2024/11/25 5:23:29

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.coloradmin.cn/o/1879352.html

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

相关文章

linux ls文件排序

linux可以使用ls命令结合一些选项来按照文件大小对文件和目录进行排序。以下是一些常用的方法: 1、这里,-l 选项表示长格式输出(包括文件权限、所有者、大小等),-S 选项表示按照文件大小排序,-h 选项表示以…

机器学习Python代码实战(一)线性回归算法

一.简单线性回归算法 简单线性回归算法的函数表达式一般为ykxb,需要拟合的变量是k和b。 1.导入库和数据集 2.读入数据集并以图表形式展示 分别为x轴和y轴设定标签值为area和price,其中读入的数据集csv文件是在项目的根目录下的文件夹dataset里。打印如图示。 至于…

昇思25天学习打卡营第5天|GAN图像生成

文章目录 昇思MindSpore应用实践基于MindSpore的生成对抗网络图像生成1、生成对抗网络简介零和博弈 vs 极大极小博弈GAN的生成对抗损失: 2、基于MindSpore的 Vanilla GAN3、基于MindSpore的手写数字图像生成导入数据数据可视化模型训练 Reference 昇思MindSpore应用…

【单片机毕业设计选题24034】-基于STM32的手机智能充电系统

系统功能: 系统可以设置充电时长,启动充电后按设置的充电时长充电,充电时间到后自动 停止充电,中途检测到温度过高也会结束充电并开启风扇和蜂鸣器报警。 系统上电后,OLED显示“欢迎使用智能充电系统请稍后”,两秒钟…

《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch8 值函数拟合 【基于近似函数的 TD 算法:Sarsa、Q-leaning、DQN】

PPT 截取有用信息。 课程网站做习题。总体 MOOC 过一遍 1、学堂在线 视频 习题 2、相应章节 过电子书 复习 【下载: 本章 PDF GitHub 页面链接】 3、 MOOC 习题 跳过的 PDF 内容 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链接 PPT和书籍下载网址…

大厂面试官问我:哨兵怎么实现的,Redis 主节点挂了,获取锁时会有什么问题?【后端八股文六:Redis集群八股文合集】

往期内容: 大厂面试官问我:Redis处理点赞,如果瞬时涌入大量用户点赞(千万级),应当如何进行处理?【后端八股文一:Redis点赞八股文合集】-CSDN博客 大厂面试官问我:布隆过滤…

Shell 脚本编程保姆级教程(下)

七、Shell 流程控制 7.1 if #!/bin/bash num1100 if test $[num1] 100 thenecho num1 是 100 fi 7.2 if else #!/bin/bash num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等! elseecho 两个数不相等! fi 7.3 if else-if else #!/…

深度学习 - Transformer 组成详解

整体结构 1. 嵌入层(Embedding Layer) 生活中的例子:字典查找 想象你在读一本书,你不认识某个单词,于是你查阅字典。字典为每个单词提供了一个解释,帮助你理解这个单词的意思。嵌入层就像这个字典&#xf…

代码随想录-二叉搜索树(1)

目录 二叉搜索树的定义 700. 二叉搜索树中的搜索 题目描述: 输入输出示例: 思路和想法: 98. 验证二叉搜索树 题目描述: 输入输出示例: 思路和想法: 530. 二叉搜索树的最小绝对差 题目描述&#x…

IOS Swift 从入门到精通:ios 连接数据库 安装 Firebase 和 Firestore

创建 Firebase 项目 导航到Firebase 控制台并创建一个新项目。为项目指定任意名称。 在这里插入图片描述 下一步,启用 Google Analytics,因为我们稍后会用到它来发送推送通知。 在这里插入图片描述 在下一个屏幕上,选择您的 Google Analytics 帐户(如果已创建)。如果没…

java第三十课 —— 面向对象练习题

面向对象编程练习题 第一题 定义一个 Person 类 {name, age, job},初始化 Person 对象数组,有 3 个 person 对象,并按照 age 从大到小进行排序,提示,使用冒泡排序。 package com.hspedu.homework;import java.util.…

使用slenium对不同元素进行定位实战篇~

单选框Radio定位: 单选框只能点击一个,并且点击之后并不会被取消,而多选框,能够点击多个,并且点击之后可以取消 import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; imp…

基于python和opencv实现边缘检测程序

引言 图像处理是计算机视觉中的一个重要领域,它在许多应用中扮演着关键角色,如自动驾驶、医疗图像分析和人脸识别等。边缘检测是图像处理中的基本任务之一,它用于识别图像中的显著边界。本文将通过一个基于 Python 和 OpenCV 的示例程序&…

intellij idea安装R包ggplot2报错问题求解

1、intellij idea安装R包ggplot2问题 在我上次解决图形显示问题后,发现安装ggplot2包时出现了问题,这在之前高版本中并没有出现问题, install.packages(ggplot2) ERROR: lazy loading failed for package lifecycle * removing C:/Users/V…

Android 10.0 关于定制自适应AdaptiveIconDrawable类型的动态时钟图标的功能实现系列二(拖动到文件夹部分功能实现)

1.前言 在10.0的系统rom定制化开发中,在关于定制动态时钟图标中,原系统是不支持动态时钟图标的功能,所以就需要从新 定制动态时钟图标关于自适应AdaptiveIconDrawable类型的样式,就是可以支持当改变系统图标样式变化时,动态时钟 图标的背景图形也跟着改变,本篇实现在拖…

HBuilder X 小白日记02-布局和网页背景颜色

html&#xff1a; 例子1&#xff1a; 整个&#xff1a; css案例&#xff1a; 1.首先右键&#xff0c;创建css文件 2.在html文件的头部分&#xff0c;引用css&#xff0c;快捷方式&#xff1a;linkTab键 <link rel"stylesheet" href" "> 3.先在css…

操作系统精选题(二)(综合模拟题一)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;操作系统 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 简答题 一、进程由计算和IO操作组…

论文阅读之旋转目标检测ARC:《Adaptive Rotated Convolution for Rotated Object Detection》

论文link&#xff1a;link code&#xff1a;code ARC是一个改进的backbone&#xff0c;相比于ResNet&#xff0c;最后的几层有一些改变。 Introduction ARC自适应地旋转以调整每个输入的条件参数&#xff0c;其中旋转角度由路由函数以数据相关的方式预测。此外&#xff0c;还采…

【Unity】Timeline的倒播和修改速度(无需协程)

unity timeline倒播 一、核心&#xff1a; 通过playableDirector.playableGraph.GetRootPlayable(i).SetSpeed(speed)接口&#xff0c;设置PlayableDirector的速度。 二、playableGraph报空 若playableDirector不勾选Play On Awake&#xff0c;则默认没有PlayableGraph&…

Redis基础教程(三):redis命令

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…