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=A?sk+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=A?r+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+c?sk
    • 若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 A?zw+c?vk

這是有效的,因為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 A?z=A?(r+c?sk)=A?r+A?c?skw+c?vk
    因為 A ? r ≈ A ? r + e ′ \mathbf{A}?r ≈ \mathbf{A} ? r+e' A?rA?r+e A ? c ? s k ≈ v k ? c \mathbf{A} ? c ? sk ≈ vk? c A?c?skvk?c

為了不泄露計算結果,可掩蓋該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=A?sk+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=A?r+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+c?sk
    y = c ? e + e ′ y = c?e + e' y=c?e+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=A?z+y?c?vk
    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=A?z+y?c?vk?A?(c?sk+r)+c?e+e+c?(A?sk+e)=A?c?sk+A?r+c?e+e?c?A?sk?c?e=A?r+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.pswp.cn/diannao/38293.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38293.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38293.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2029年AI服務器出貨量將突破450萬臺,AI推理服務器即將爆發式增長

在2020年,新冠疫情與遠程辦公模式的興起推動了所有類型服務器的出貨量達到峰值,隨后幾年里,除了AI服務器之外的所有類別都回歸到了正常水平。 根據Omdia的研究數據,AI服務器的出貨量在2020年急劇上升,并且至今未顯示出…

瀏覽器中如何獲取用戶網絡狀態

網頁開發中存在需要獲取用戶是否在線的場景及用戶網絡狀態,瀏覽器提了navigator.onLine和navigator.connection可以實現這一需求。 獲取在線狀態 if (navigator.onLine) {console.log("online"); } else {console.log("offline"); }監聽網絡狀…

日志的介紹

知識鋪墊:在我們日常開發中,其實日志是和我們息息相關的。但可能平常都沒怎么注意到日志相關的知識點,也不怎么關注日志,然后,在生產環境中,日志是必不可少的存在,項目出現問題了都是通過日志來…

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;算法專題 ?詩詞歌…

緩存穿透、雪崩與擊穿

緩存穿透、雪崩、擊穿 1、緩存穿透強調都沒有數據并發訪問布隆過濾器緩存NULL值 2、緩存雪崩強調批量Key過期并發訪問 3、緩存擊穿強調單個Key過期并發訪問互斥鎖邏輯過期 分布式并發控制 1、緩存穿透 緩存穿透是指數據庫和緩存都沒有的數據&#xff0c;這樣緩存永遠不會生效&…

圖形化用戶界面-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…

ISA95-標準2-數據字典部分的解析與設計指南

在 MES/MOM 系統中,ISA-95 第二部分的數據字典扮演著至關重要的角色,它確保了數據的一致性和準確性,為不同系統間的數據交換提供了標準化的術語和定義。以下是 MES/MOM 系統實現 ISA-95 第二部分數據字典的具體概念、功能模塊以及應用場景: 一、概念、功能模塊以及應用場景…

numpy - array(4)

arr1 np.array([[1, 2], [3, 4], [5, 6]]) &#xff08;1&#xff09;def insert(arr, obj, values, axisNone) 向array指定位置插入指定值 axis為默認值None時&#xff0c;如果array是多維數據,則先將array轉化成向量obj&#xff1a;插入的索引&#xff0c;接受int或者多…

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守護進程生命周期管理-supervisord

簡介 supervisor是一個client/server系統,允許用戶控制多個類unix系統的進程,擺脫rc.d腳本的不方便性.supervisor具有簡單,集中化管理,搞笑,可擴展性,高兼容. 整套軟件包含:supervisord(守護進程),supervisorctl(命令行工具),web server(一個web交互界面),XML-RPC 交互 安裝 …

git回退commit的方式

在Git中&#xff0c;回退commit&#xff08;即撤銷之前的提交&#xff09;可以通過多種方式來實現。以下是一些常見的方法&#xff0c;以及它們的詳細步驟和注意事項&#xff1a; ### 1. 使用git revert命令 git revert命令用于撤銷某次commit&#xff0c;但它并不會刪除該comm…

FFmpeg 硬件編碼加速文檔介紹

介紹 硬件訪問:許多平臺提供了對專用硬件的訪問,這些硬件可以用于執行解碼、編碼或過濾等視頻相關操作。 性能與資源使用:使用硬件可以加快某些操作的速度或減少其他資源(特別是CPU)的使用,但可能會產生不同的結果或質量較低,或帶來在使用純軟件時不存在的額外限制。 硬…

公爹公婆出首付買房,離婚的兒媳婦能分嗎?

小兩口結婚后為了更好地生活打算購房&#xff0c;男方父母幫助支付首付款&#xff0c;后房屋登記在夫妻名下。后兩人因感情不和打算離婚&#xff0c;女方要求按照房屋的現行價值進行分割&#xff0c;能否得到支持&#xff1f;近日&#xff0c;江蘇省南通市中級人民法院對這起離…

【Postman學習】

Postman是一個非常流行的API開發和測試工具&#xff0c;廣泛用于Web服務的開發、測試和調試。它提供了一個圖形界面&#xff0c;允許用戶輕松地構建、發送和管理HTTP(S)請求&#xff0c;同時查看和分析響應。下面是對Postman接口測試工具的詳細解釋&#xff1a; 1. Postman簡介…

Linux安裝Node-RED并實現后臺運行及開機啟動

首先確保系統中已近成功安裝Node.js&#xff0c;并保證需要的合適版本&#xff1a; 關于node.js的安裝可以參考我的另一篇博文:《AliyunOS安裝Node.js》。 然后就可以使用npm工具安裝Node-RED了&#xff0c;很簡單使用如下命令&#xff1a; sudo npm install -g --unsafe-per…

【代碼隨想錄算法訓練Day53】LeetCode 739.每日溫度、LeetCode 496.下一個更大元素、LeetCode 503. 下一個更大元素 II

Day53 單調棧 LeetCode 739.每日溫度 經典的單調棧題目&#xff0c;確實的感受到了單調棧的強大之處。 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int> st;vector<int> res(temperatures.size…

php+redis 生成二維碼庫

項目場景&#xff1a; 活動報名二維碼&#xff0c;生成 30W 的二維碼量存放到 redis 中&#xff0c;并通過 redis 讀取&#xff0c;以減輕 mysql 數據庫的壓力。 實現很簡單&#xff0c;分為兩步&#xff1a; 1、生成&#xff1a;通過 for 循環&#xff0c;以集合方式插入到…

MATLAB使用系統辨識工具箱建立PID水溫的傳遞函數系數

概述 利用PID控制水溫&#xff0c;由于實際在工程項目中&#xff0c;手動調節PID參數比較耗費時間&#xff0c;所以可以先利用MATLAB中的Simulink軟件建立模型&#xff0c;先在仿真軟件上調節大概的PID參數&#xff0c;再利用此PID參數為基礎在實際的工程項目中手動調節PID參數…