ABSynthe : 侧信道攻击加密函数窃取密钥
0x00 前言
這篇文章是發(fā)表在NDSS2020上,有關(guān)于微架構(gòu)側(cè)信道攻擊的一篇文章。一作來自于英特爾公司,先前在硬件和底層上有比較多的研究。文章標(biāo)題中的幾個(gè)關(guān)鍵詞,也在文章中有一定的體現(xiàn),比如自動(dòng)化、黑盒,合成等,這些都與一些現(xiàn)有的工作有比較大的差異。
0x01?背景知識(shí)
CPU組件存在大量的側(cè)信道攻擊,但現(xiàn)有的每一種側(cè)信道攻擊方式,幾乎都基于白盒分析的方法。通常情況下,需要3步來完成:
·?首先需要能夠識(shí)別出這一特定的CPU組件。
·?然后需要在特定的微架構(gòu)上對(duì)其做逆向分析。
·?最后通過逆向分析得到的內(nèi)容,人工構(gòu)造指令序列,用以側(cè)信道泄露信息。
但這些方法通常都存在一些弊端,由于現(xiàn)有的側(cè)信道攻擊需要人工構(gòu)造指令序列,而CPU會(huì)使用微架構(gòu)組件來實(shí)現(xiàn)其指令集,并且這些微架構(gòu)組件的底層細(xì)節(jié)不可見,因此需要逆向工程進(jìn)行分析。隨著CPU的更新?lián)Q代,這些組件的數(shù)量,大小,復(fù)雜性都在增加,同時(shí)這些組件的屬性可以在CPU版本之間發(fā)生變化,因此會(huì)對(duì)側(cè)信道研究人員帶來新的且冗長(zhǎng)的逆向工作。
同時(shí),除去對(duì)于逆向工程的復(fù)雜性,當(dāng)想要對(duì)目標(biāo)程序進(jìn)行側(cè)信道攻擊時(shí),還需要對(duì)該軟件有比較好的了解,清楚感興趣的內(nèi)容,其代碼執(zhí)行路徑在何處。這一切都對(duì)攻擊者有比較高的要求。除此之外,由于這些方法基于已有信息,那么對(duì)于那些未知的共享資源或者信息,則無法進(jìn)行攻擊。
在此基礎(chǔ)上,作者提出了黑盒分析的思路,他們將CPU組件當(dāng)做黑盒,無需進(jìn)行逆向分析。并且可以自動(dòng)的找到目標(biāo)軟件可能感興趣的內(nèi)容的代碼執(zhí)行路徑。文章的核心思路利用了共享資源被爭(zhēng)用和不被爭(zhēng)用時(shí),會(huì)存在可測(cè)量的性能差異這一現(xiàn)象進(jìn)行側(cè)信道分析。
同時(shí)本篇文章的工作可以自動(dòng)的優(yōu)化出在側(cè)信道獲取信息時(shí),性能表現(xiàn)最好的指令序列,無需人工參與構(gòu)造指令序列,并可以利用神經(jīng)網(wǎng)絡(luò)從側(cè)信道攻擊的結(jié)果中恢復(fù)密鑰。
0x02?工具設(shè)計(jì)
作者以從受害者進(jìn)程或者虛擬機(jī)中泄露諸如密鑰等敏感數(shù)據(jù)為目的,提出了這樣一種威脅模型:
·?攻擊者可以在受害者的機(jī)器上執(zhí)行代碼
·?攻擊者和受害者位于同一CPU核心上執(zhí)行代碼
·?所有最先進(jìn)的側(cè)信道保護(hù)都已啟用
·?目標(biāo)軟件存在側(cè)信道攻擊的威脅
由于作者提出的側(cè)信道攻擊的核心思路是利用共享資源在被爭(zhēng)用和不被爭(zhēng)用時(shí),會(huì)存在可測(cè)量的性能差異。
對(duì)于2條可能存在資源爭(zhēng)用的指令,作者將寫指令稱為A指令,讀指令稱為B指令,通過使用A指令來嘗試引起B(yǎng)指令的延遲變化,用以判斷是否存在資源爭(zhēng)用的情況。
如下圖,在writer指令執(zhí)行時(shí)和不執(zhí)行時(shí),reader指令信號(hào)會(huì)存在明顯的差異性。
這里作者嘗試找出2條存在可觀察的資源爭(zhēng)用信號(hào)的指令,與以往工作中人工精心挑選指令不同,這里作者通過遍歷X86_64指令集來尋找最合適用于側(cè)信道攻擊的指令。這里的指令集來自于uops.info的項(xiàng)目。
為了評(píng)估結(jié)果,作者建立了一個(gè)矩陣,用來反應(yīng)指令B在指令A(yù)的影響下所出現(xiàn)的延遲相較于指令B在空指令下的延遲比例。如果延遲比大于1,那么說明指令A(yù)和B會(huì)存在資源爭(zhēng)用的情況。
作者對(duì)指令列表中的指令進(jìn)行了一次二層嵌套for循環(huán),用以尋找所有指令兩兩之間延遲比大于1的情況,從而找到所有存在資源競(jìng)爭(zhēng)的指令對(duì)。
為了將結(jié)果可視化的展現(xiàn),作者將指令按照其使用的執(zhí)行端口進(jìn)行分組。按照?qǐng)?zhí)行端口分組的原因有2點(diǎn):
1. 執(zhí)行端口本身就是一種被爭(zhēng)用的資源
2. 可以將相似功能的指令組合在一起
從實(shí)驗(yàn)結(jié)果我們可以發(fā)現(xiàn):
1. 共享執(zhí)行端口的指令不一定都是高爭(zhēng)用,也可能是無爭(zhēng)用的。例如skylake中P1端口。
2. 不共享執(zhí)行端口的指令一般顯示低爭(zhēng)用,但也有存在高爭(zhēng)用的,這意味著共享資源不僅只有執(zhí)行端口,可能還有其他資源。例如Xeon的P1和P5,P0和P5。
通過比對(duì)在3種不同微架構(gòu)上指令對(duì)在執(zhí)行端口爭(zhēng)用上的表現(xiàn),作者總結(jié)出3個(gè)結(jié)論:
1. 可能存在多個(gè)資源有爭(zhēng)用問題,并非只有執(zhí)行端口
2. 在某個(gè)微架構(gòu)上表現(xiàn)較好的基于資源爭(zhēng)用的側(cè)信道攻擊,可能在其他微架構(gòu)上不一定有效
3. 性能表現(xiàn)最好的基于資源爭(zhēng)用的側(cè)信道攻擊可能需要多個(gè)指令來引起資源爭(zhēng)用
在可以找到引起資源爭(zhēng)用的指令對(duì)后,下面來介紹一下工具設(shè)計(jì)的架構(gòu)。
工具可以分為2個(gè)部分,一個(gè)是分析階段,一個(gè)是攻擊階段。
在分析階段,將微架構(gòu)和目標(biāo)軟件作為輸入,通過Ground Truth引擎自動(dòng)對(duì)其插入指令,每當(dāng)其進(jìn)行密鑰操作時(shí),就會(huì)與側(cè)信道監(jiān)聽程序同步,發(fā)送與密鑰相關(guān)的信號(hào)數(shù)據(jù)。
側(cè)信道攻擊的代碼Spy code最初來自于微架構(gòu)的leakage map,對(duì)于leakage map每一個(gè)性能表現(xiàn)比較好的指令,側(cè)信道監(jiān)聽程序會(huì)將它們資源爭(zhēng)用的度量發(fā)送給合成引擎。而合成引擎則通過評(píng)估指令產(chǎn)生的資源爭(zhēng)用信號(hào),來生成可以觸發(fā)更高信號(hào)質(zhì)量的指令序列,循環(huán)往復(fù),直到合成引擎生成的指令序列可以以足夠高的可信度探測(cè)到密鑰信息。
在攻擊階段,利用分析階段得到的優(yōu)化后的指令序列進(jìn)行側(cè)信道攻擊,并將獲取的信息傳遞給密鑰恢復(fù)引擎,用以恢復(fù)目標(biāo)程序密鑰。
在進(jìn)行上述方法實(shí)現(xiàn)時(shí),會(huì)遇到3個(gè)挑戰(zhàn):
1. 在分析階段時(shí),工具需要自動(dòng)對(duì)目標(biāo)軟件進(jìn)行指令插入,用以和側(cè)信道攻擊代碼同步測(cè)量,收集密鑰相關(guān)的真實(shí)數(shù)據(jù),那么如何自動(dòng)化的找到密鑰相關(guān)的控制流分支是一個(gè)難點(diǎn)。
2. 在分析階段時(shí),如何自動(dòng)的優(yōu)化側(cè)信道攻擊代碼
3. 在攻擊階段時(shí),如何通過側(cè)信道攻擊的結(jié)果去恢復(fù)密鑰信息
那么對(duì)于第一點(diǎn)如何自動(dòng)化插入指令的難題,作者使用了污點(diǎn)分析與火焰圖的技術(shù)。對(duì)于第二點(diǎn)如何自動(dòng)化優(yōu)化攻擊代碼的難題,作者采用基于高斯樸素貝葉斯分類器的差分進(jìn)化遺傳算法來作為評(píng)估方法用以自動(dòng)化優(yōu)化指令序列。對(duì)于第三點(diǎn)如何恢復(fù)密鑰,作者使用了RNN分類器。具體內(nèi)容我們將在下一節(jié)展開。
0x03?工具實(shí)現(xiàn)
前面有提到,第一個(gè)難題就是如何自動(dòng)化的進(jìn)行指令插入,那么指令插入肯定不能隨意亂做,我們需要找到感興趣的代碼路徑,在其前后插入相應(yīng)指令。而本文的針對(duì)攻擊目標(biāo)是加密函數(shù),因此如何自動(dòng)化的找到密鑰相關(guān)的代碼分支,就是一個(gè)難題。
這里作者選擇使用污點(diǎn)分析來找到這些指令的插入位置,而后結(jié)合火焰圖來自動(dòng)的找出密鑰相關(guān)的分支。
首先簡(jiǎn)單介紹一下火焰圖的概念:
假設(shè)我們程序中需要執(zhí)行main函數(shù),main函數(shù)自身的CPU執(zhí)行時(shí)間為2秒,而main函數(shù)中又調(diào)用了foo1和foo2函數(shù),因此我們需要去計(jì)算foo1和foo2的執(zhí)行時(shí)間,才能得到main的完整執(zhí)行時(shí)間。
此時(shí)我們會(huì)去看foo1和foo2函數(shù)的調(diào)用時(shí)間,首先foo1函數(shù)自身的cpu執(zhí)行時(shí)間為1.5秒,但由于其調(diào)用了bar函數(shù),我們又需要再去看bar函數(shù),才能計(jì)算出foo1的完整cpu執(zhí)行時(shí)間。
此時(shí)看到bar函數(shù),發(fā)現(xiàn)bar函數(shù)不再調(diào)用其他函數(shù),其自身的cpu執(zhí)行時(shí)間為2.5秒,因此我們可以算出foo1的完整cpu執(zhí)行時(shí)間為其本身的1.5和bar函數(shù)的2.5之和,就是4秒。
那么同理,我們也可以算出foo2函數(shù)的完整執(zhí)行時(shí)間為3秒,因此main函數(shù)的完整執(zhí)行時(shí)間為自身的執(zhí)行時(shí)間,加上foo1的時(shí)間,再加上foo2的時(shí)間,即9秒。
這一函數(shù)調(diào)用過程我們將其畫成火焰圖,如下圖所示。
回到工具中,這里工具ABSynthe首先會(huì)將密鑰文件中的所有數(shù)據(jù)標(biāo)注為污點(diǎn),進(jìn)行污點(diǎn)分析。然后使用perf record來獲取目標(biāo)程序所有函數(shù)的火焰圖,找到其中具有顯著執(zhí)行時(shí)間的函數(shù),看其是否被我們的污點(diǎn)標(biāo)注過,如果標(biāo)注過,則在這些函數(shù)位置插入指令。
如下圖中:
其中scalar是被標(biāo)注成污點(diǎn)的密鑰變量,第4行為密鑰相關(guān)分支。第2和5行為我們嵌入的指令。
每當(dāng)該分支被執(zhí)行時(shí),CRYPTLOOP_VALUE會(huì)發(fā)出信號(hào),往共享內(nèi)存中寫入一個(gè)值,然后側(cè)信道程序除了搜集側(cè)信號(hào)信號(hào)以外,還會(huì)讀取該值,用于后續(xù)的訓(xùn)練。
在搜集信息時(shí),同樣會(huì)存在難點(diǎn),由于同步傳輸數(shù)據(jù),本身就會(huì)產(chǎn)生噪音,影響側(cè)信道的測(cè)量。
這里為了避免這一問題,作者使用了軟同步策略,利用一個(gè)內(nèi)存共享頁(yè)來實(shí)現(xiàn)共享內(nèi)存通道。同時(shí)讓spy code持續(xù)監(jiān)視目標(biāo)共享內(nèi)存位置,并將每個(gè)延遲測(cè)量值標(biāo)記為樣本值。
那么對(duì)于第2個(gè)難題,如果想造成一次效果較好的側(cè)信道攻擊,那么執(zhí)行的指令序列的構(gòu)造非常重要,之前的工作這一構(gòu)造通常由人工完成。而在本篇文章里,作者使用差分進(jìn)化算法來自動(dòng)化的優(yōu)化構(gòu)造指令序列,該算法的輸入為可以在微架構(gòu)組件上產(chǎn)生資源爭(zhēng)用的指令,這里作者選擇了性能表現(xiàn)最好的指令作為種子。
同時(shí)作者希望算法可以自由的選擇最終的指令序列,但又希望其生成的指令序列是有效的,因此作者提前設(shè)計(jì)了一種配方,讓算法在尋找性能最好的指令序列時(shí),對(duì)這些配方進(jìn)行mutate。
首先我們來看一下配方的構(gòu)成,第一個(gè)參數(shù)是Repeat number,這一參數(shù)用來定義指令序列需要執(zhí)行的次數(shù),范圍為1~20次。指令序列的執(zhí)行時(shí)間可以作為探測(cè)目標(biāo)程序密鑰操作的一種信號(hào),執(zhí)行時(shí)間需要在可觀測(cè)和高分辨率中做一個(gè)衡量,因此指令序列執(zhí)行次數(shù)非常重要。
第2、3參數(shù)代表是否在執(zhí)行指令序列前或執(zhí)行指令序列后存在內(nèi)存屏障。如果存在內(nèi)存屏障,可以保證內(nèi)存通信時(shí),不會(huì)因?yàn)閬y序執(zhí)行而使測(cè)量時(shí)間的指令出現(xiàn)噪音。但相應(yīng)的,也可能會(huì)降低指令序列執(zhí)行時(shí)間的分辨率。因此需要將這一參數(shù)保留,讓算法來選擇是否要其存在。
第4、5、6、7參數(shù)是用于來創(chuàng)建資源爭(zhēng)用的。每個(gè)參數(shù)定義了特定信道所需的指令數(shù)量。
最后位置的參數(shù)用來規(guī)定使用哪種方式將指令塊合并到一起。這里作者提出了3種合并方式:
1. 串聯(lián),即將簡(jiǎn)單的將配方中的指令塊連接在一起。
2. 交錯(cuò),即將來自不同塊的指令交錯(cuò)連接在一起。
3. 串聯(lián)后的隨機(jī)洗牌,即將配方中的指令塊簡(jiǎn)單連接在一起后,再進(jìn)行隨機(jī)洗牌
同時(shí)差分進(jìn)化遺傳算法需要一個(gè)適應(yīng)度函數(shù)來進(jìn)行評(píng)估當(dāng)前指令序列的質(zhì)量,看該指令序列是否能夠產(chǎn)生可區(qū)分目標(biāo)程序執(zhí)行到不同代碼路徑的度量信號(hào)。
這里作者使用了高斯樸素貝葉斯分類器來進(jìn)行評(píng)估。原因是該分類器在不需要調(diào)參的情況下表現(xiàn)良好,同時(shí)其在training和evaluation時(shí)具有線性的時(shí)間復(fù)雜度,可以保證差分進(jìn)化遺傳算法能夠快速進(jìn)行。
然后作者使用信號(hào)值來訓(xùn)練該分類器,這些信號(hào)值來自于目標(biāo)程序執(zhí)行到某個(gè)代碼路徑時(shí),我們的指令序列產(chǎn)生的信號(hào),我們根據(jù)我們之前對(duì)目標(biāo)程序插入的指令,來標(biāo)記其對(duì)應(yīng)是否執(zhí)行的該代碼路徑,例如0和1。
同時(shí)作者為了證明優(yōu)化指令序列的重要性,在目標(biāo)程序Broadwell-NIST-P256上進(jìn)行了對(duì)比實(shí)驗(yàn)。
優(yōu)化前:
優(yōu)化后:
我們可以看到,在僅使用性能最好的單一指令時(shí),PCA圖分界不夠明顯,特征不夠明顯。而在使用算法優(yōu)化后的指令序列時(shí),PCA圖分界比較明顯,因此說明這樣的指令序列獲取的信號(hào)度量更加具有特征性。
第3個(gè)難題是在之前的訓(xùn)練中,由于數(shù)據(jù)的搜集一直是保持同步的,因此我們可以容易知道程序開始的起點(diǎn)位置和長(zhǎng)度,因此分類器可以簡(jiǎn)單的得到相關(guān)的密鑰值。但是在真實(shí)世界的攻擊中,我們獲取的信號(hào)很可能是多個(gè)從未知位置開始的連續(xù)信號(hào),這就比較困難。同時(shí)在長(zhǎng)時(shí)間捕獲信號(hào)的過程中,很容易失去同步。因此之前標(biāo)記對(duì)應(yīng)代碼執(zhí)行路徑和延遲時(shí)間的方式在這里不可行。
為了解決這一問題,作者使用時(shí)間序列為向量,選擇了一種專門針對(duì)時(shí)間序列數(shù)據(jù)的LSTM RNN算法,該算法在不完全同步的情況下具有魯棒性,在信號(hào)發(fā)生微小時(shí)間偏移時(shí),允許非同步的恢復(fù)密鑰。
作者同時(shí)提到,可以有方法驗(yàn)證恢復(fù)密鑰的正確性,例如目標(biāo)程序在簽名操作時(shí),會(huì)使用密鑰。那么作者也將恢復(fù)的密鑰用于一次簽名操作,如果簽名相同,則說明密鑰正確,否則則說明密鑰錯(cuò)誤。然后作者發(fā)現(xiàn),恢復(fù)的密鑰往往都是不正確的??赡苁敲荑€某bit位丟失,或者是恢復(fù)錯(cuò)誤。
但是每次密鑰恢復(fù)錯(cuò)誤時(shí),可能都需要對(duì)上百個(gè)bit位進(jìn)行爆破,以找到正確的密鑰,但這樣的操作顯然不可取,例如一個(gè)384bit的密鑰,如果有n個(gè)bit猜測(cè)錯(cuò)誤或者丟失,那么需要進(jìn)行384^n次爆破,這顯然不可行。
但這里作者提到,由于考慮了時(shí)間序列問題,現(xiàn)在的算法的返回值是(time, secret),因此可以容易知道哪一位可能存在丟失或錯(cuò)誤。因?yàn)閬G失的時(shí)候,2個(gè)bit位之間會(huì)形成較大的時(shí)間間隙,而錯(cuò)誤的時(shí)候,2個(gè)bit位之間會(huì)出現(xiàn)很窄的時(shí)間間隙。對(duì)于每一個(gè)可能出問題的bit位,一共只有3種情況,第一種是該位正常,忽略,第二種是該位丟失或錯(cuò)誤應(yīng)該改為0,第3種是該位丟失或錯(cuò)誤,應(yīng)該改為1。因此在密鑰恢復(fù)錯(cuò)誤的情況下,如果有n個(gè)位置錯(cuò)誤,那么只需要進(jìn)行3^n次爆破來恢復(fù)密鑰。
考慮到上述原因,作者為了解決這一問題,使用了2個(gè)LSTM模型,在恢復(fù)密鑰時(shí),如果2個(gè)模型預(yù)測(cè)值相同,那么才會(huì)接受。
這兩個(gè)模型,第一個(gè)是三層LSTM嵌套的模型,第二個(gè)模型是LSTM接一個(gè)激活函數(shù)RELU的全連接層*3的模型。這兩個(gè)模型都用0.2的 dropout 來緩解過擬合問題 并且由于是個(gè)多分類任務(wù),輸出都用的softmax layer。然后它使用集成學(xué)習(xí)(Ensemble)的方式把兩個(gè)模型組合在一起,以獲得更好的效果。
這里的訓(xùn)練數(shù)據(jù)特征是延遲值,訓(xùn)練集的樣本分為兩類,奇熱一類是從程序已知的開始位置開始,另一類是從程序未知的開始位置開始。
0x04?實(shí)驗(yàn)評(píng)估
作者使用了libgcrypt 1.6.3和libgcrypt 1.8.5中的加密函數(shù)EdDSA 25519、EdDSA 25519-hardened、EdDSA 25519-secure (1.8.5 only)、RSA、ECDSA P-256作為攻擊目標(biāo)進(jìn)行實(shí)現(xiàn)評(píng)估。值得注意的是,EdDSA 25519-hardened中已經(jīng)對(duì)側(cè)信道攻擊有了基本的防御機(jī)制,而EdDSA 25519-secure對(duì)于側(cè)信道的防御機(jī)制被認(rèn)為是最先進(jìn)的。
作者在4個(gè)不同的微架構(gòu)上進(jìn)行了測(cè)試,使用F1分?jǐn)?shù)來評(píng)估工具的性能。
這里值得注意的是,在ARM上,作者是人工編寫的指令序列。這里原因是,對(duì)于ARM沒有完整的leakage map,無法遍歷測(cè)試。而另外3個(gè)x86微架構(gòu),作者測(cè)試了所有可能的指令,并使用了4條最好的指令序列。這也體現(xiàn)出,作者的工具要比人工編寫指令序列性能高的多。
同時(shí)注意到紅框部分,由于這一條表現(xiàn)的性能非常好,作者選用其進(jìn)行測(cè)試,看其在信息不同步的情況下,對(duì)密鑰的恢復(fù)能力如何。
作者對(duì)這些目標(biāo)在信息不同步的情況下,進(jìn)行了7次測(cè)試??梢园l(fā)現(xiàn)不基于GPG加密軟件的情況下,正確恢復(fù)密鑰的準(zhǔn)確率在100%,而在GPG加密軟件下有一定錯(cuò)誤。原因是在無外部提示或者分析人員設(shè)置的情況下,密鑰相關(guān)分支完全由工具自動(dòng)的進(jìn)行識(shí)別。
同時(shí)作者將自己工具優(yōu)化生成的指令序列與其他工作人工構(gòu)造的指令序列進(jìn)行了性能比對(duì)。
可以發(fā)現(xiàn)工具自動(dòng)優(yōu)化得到的指令序列,性能高于其他人工構(gòu)造的指令序列。
同時(shí)從兩個(gè)維度來驗(yàn)證工具的魯棒性。首先是能否自動(dòng)的找到我們感興趣的分支,即密鑰相關(guān)的內(nèi)容。
這里作者選擇在完全無側(cè)信道防御的EdDSA 25519算法上進(jìn)行了7次測(cè)試,可以發(fā)現(xiàn)在密鑰相關(guān)程序開始時(shí)和其他時(shí)候有顯著的差異。說明工具在我們感興趣的區(qū)域預(yù)測(cè)密度顯著較高,證明了工具的可靠性。
第二個(gè)維度,作者從被干擾的情況下,測(cè)試工具的魯棒性。這里作者使用usleep函數(shù),來干擾cpu的執(zhí)行時(shí)間,干擾量為0.1%~30.6%。
這里我們可以發(fā)現(xiàn)2個(gè)點(diǎn),第一點(diǎn)是即使目標(biāo)程序存在噪音,密鑰恢復(fù)的準(zhǔn)確度都不會(huì)有太多變化,這是因?yàn)槲覀兦懊娼榻B過,密鑰的恢復(fù)算法具有魯棒性,可以抵御干擾。第二點(diǎn)是,我們的側(cè)信道程序上如果出現(xiàn)噪音,則會(huì)受到影響,因?yàn)檫@涉及到了信號(hào)采集問題,如果信號(hào)不能準(zhǔn)確采集,那么則無法進(jìn)行密鑰的恢復(fù)。
當(dāng)然工具也有一些局限性。
首先工具要求目標(biāo)軟件會(huì)在加密運(yùn)行時(shí)花費(fèi)較長(zhǎng)時(shí)間。同時(shí)密鑰需要從文件系統(tǒng)中進(jìn)行加載,否則無法進(jìn)行自動(dòng)污點(diǎn)分析。
第二點(diǎn)是工具需要目標(biāo)微架構(gòu)的指令集定義格式易于創(chuàng)建leakage map,才能使用工具的方法自動(dòng)生成并優(yōu)化指令序列。這一點(diǎn)在x86上比較容易獲得,但是對(duì)于ARM還不行。
第三點(diǎn)是工具在后續(xù)的處理階段,可以有更為自動(dòng)化的方式,通過暴力破解啟發(fā)式的方法來應(yīng)用于各種程序。
0x05?后記
本篇文章第一個(gè)創(chuàng)建了在x86微架構(gòu)上完整的leakage maps,并實(shí)現(xiàn)了一個(gè)全自動(dòng)的側(cè)信道攻擊,其可以利用資源競(jìng)爭(zhēng)的方式,對(duì)各種平臺(tái),各種環(huán)境上的加密程序來進(jìn)行側(cè)信道攻擊。對(duì)于前人工作具有比較高的創(chuàng)新性,同時(shí)為后續(xù)側(cè)信道攻擊測(cè)試提供了便捷性。
總結(jié)
以上是生活随笔為你收集整理的ABSynthe : 侧信道攻击加密函数窃取密钥的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python win32com 字体选择
- 下一篇: 功率放大器ADS仿真实例