<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    對OCB算法側信道泄漏位置的細粒度分析

    VSole2023-02-07 10:09:41

    背景介紹

    在CHES 2022會議上,Berti等人對OCB3算法的側信道泄漏位置進行了細粒度分析,該算法是CAESAR競賽獲勝的算法之一。首先,作者發現可以使用DPA方法對算法中的某些密碼模塊(初始化模塊或相關數據處理)進行攻擊;接著,假設上述描述的密碼模塊受到了保護,此時仍可以對其他的分組密碼模塊進行攻擊,一種方法是使用未知輸入的DPA攻擊,更有效的方法是利用連續加密模塊之間,輸入的白化值的水平關系進行DPA攻擊;最后,作者考慮了當所有的密碼調用塊都受到了保護,但針對線性操作可以進行SPA,進而獲取白化值的信息,并證明恢復白化值會對OCB3算法的機密性和完整性造成威脅[1]

    OCB3算法

    1、OCB3算法結構

    圖1為OCB3算法的結構,算法的輸入為消息m,消息分為一些塊mi分別使用加密塊BC加密生成密文塊。這里使用AES-128初始化BC,故將消息m分為128比特的mi。

    用戶需要輸入nonce使用初始化函數,得到δ0,然后使用更新函數Inc計算其余的δi。每個消息塊mi在進入BC前,都需異或上δi,在經過BC的加密計算后,再次異或δi,生成密文塊。對于最后一個密文塊ml,若ml是128比特,則按照正常的BC加密,若ml小于128比特,則需要經過填充的ml異或BC(δl-1⊕l*),其中l*的定義見第2節。對于認證來說,需要使用消息的校驗和生成一個標簽τ,具體的計算過程見圖1中最后一個BC塊的計算。

    若對關聯數據進行處理,處理方式與消息的處理方式基本一致,用關聯數據塊代替消息塊。然而,在消息處理的情況下,δ0的初始化值取決于隨機數的加密;在關聯數據處理的情況下,δ0的初始化值始終為0。

    圖1 OCB3算法結構

    2、初始化函數更新函數

    初始化函數的主要目的是生成白化值δ0,算法的主要流程如下圖2所示。該算法主要分成兩個部分,第一部分是通過用戶輸入的nonce值,計算得到中間值top。第二部分是將top輸入到BC塊中,使用密鑰加密得到ktop。

    圖2 初始化函數(Init)流程

    更新函數的主要算法流程如下圖3所示,其中doule(x)表示在有限域上x的2倍,ntz(x)表示x的二進制表示尾部0的個數。該算法主要分為兩個部分,第一部分計算得到l0=4*BCk(0),第二部分是使用初始化函數中得到的δ0,利用公式δii-1⊕lnte(i)計算δi

    圖3 更新函數(Inc)流程

    泄漏分析

    1、對無防護的OCB3算法進行側信道攻擊

    (1)對OCB算法的初始化函數進行攻擊:

    圖2為初始化函數流程,其中ktop=BCk(top)泄漏了密鑰信息,可以用DPA進行攻擊。在這里為了計算白化值,使用用戶隨機輸入的nonce和密鑰進行加密,其中加密塊的輸入是已知可控隨機的,符合DPA攻擊的條件。

    (2)針對關聯數據處理的DPA攻擊:

    在對關聯數據處理時,δ0的初始化值始終為0,則說明第一個BC塊的輸入δ1始終為固定的數。則可以通過兩步DPA完成攻擊,第一步,攻擊BC塊加密的第一輪,可以得到δ1⊕k,第二步,攻擊BC塊加密的第二輪,得到第二輪的子密鑰,推導得到密鑰。

    2、對安全初始化的OCB3算法進行側信道攻擊

    假設在1節中描述的初始化函數中的泄漏被很好的進行了防護,作者仍找了可以進行攻擊的位置,即計算密文需要的加密塊BC,這里的攻擊難度是BC的輸入δi是未知的。

    (1)基礎的DPA攻擊

    處理這個問題最直觀的想法是將δi當作掩碼值進行處理,選擇兩處攻擊位置。第一處是BC塊的輸入值即δi⊕mi,第二處是第一輪S盒的輸出,可以得到δi⊕mi⊕k。

    (2)改進的DPA攻擊

    在基礎DPA攻擊中,需要波形條數大大增加,為了降低所需的數據復雜度,提出了改進的DPA攻擊。

    由于δii-1⊕lnet(i),故BC的輸入可以全部轉換為僅與δ0相關的輸入,下圖4為轉換結果。又因為一次加密過程中的δ0是一樣的,故可以將δ0作為密鑰的一部分,即假設h=δ0⊕k0。在將輸入轉換的過程中,會產生多余的值,該部分也應該被猜測,由于li=double(li-1),故若增加l0到ln,則時間復雜度從28增加至216+n。具體的算法流程如下圖5所示。

    圖4 BC輸入的轉換結果

    圖5 改進的DPA攻擊流程

    (3)實驗結果

    在ARM Cortex-M0上實現OCB3算法,為了更加精確,作者通過計算中間值得到信噪比SNR的值,以此確認波形中的興趣點。分別使用基礎的DPA攻擊和改進的DPA攻擊,得到如下圖6所示的實驗結果。

    其中x軸為需要的波形條數,y軸為攻擊成功的準確率。可以看出,使用基礎的DPA攻擊方法,在攻擊成功率為100%時,大約需要125條波形,而改進的DPA方法,在攻擊成功率為100%時,大約需要10條波形,改進的DPA方法使用的波形數量更少。

    圖6 兩種方法進行攻擊的實驗結果

    3、對安全加密塊的OCB3算法進行側信道攻擊

    當第1、2節所描述的泄漏位置均加以防護之后,即與密鑰相關的計算均加上了防護,此時,無法再通過側信道的方法獲取密鑰的信息。作者證明若得到OCB3算法中的l0值,會對算法的安全性和機密性造成很大的威脅,具體的證明過程見該論文的6.3、6.4節。此處不再給出詳細證明過程,下面對如何使用側信道的方法獲取l0值進行介紹。

    此時可以利用的泄漏位置是δii-1⊕lnet(i)和BCk(input)=δi⊕mi。因為ntz(x)表示x的二進制表示尾部0的個數,故假設當前加密塊為n個,則使用到l0的次數為n/2,同時利用l0、l1…的關系進行SPA,重新組合它們之間的泄漏信息,獲取更加精準的l0的值,具體的算法流程如下圖7所示。

    圖7 使用SPA猜測l0的流程

    總結

    本文作者就“OCB中的所有操作都需要保護嗎?如果需要,它們需要相同級別的保護嗎?”的問題展開討論,作者通過展示針對不同保護級別的OCB的幾次攻擊來回答這個問題。首先,作者表明,可以針對初始化函數和關聯數據的處理進行最簡單的DPA攻擊。接下來,假設第一級保護可以防止上述提到的攻擊,作者對用于生成密文塊的加密塊進行了攻擊,可以使用兩種方法,第一種是簡單的將白化值作為掩碼進行二階DPA攻擊,同時還提供了一種改進的(一階)DPA攻擊方法,以更高的(時間)密鑰猜測復雜度為代價,降低了二階攻擊的數據復雜度。最后,作者考慮了這樣一種情況,即所有的分組密碼塊都受到了強有力的保護。作者表明,使用SPA的方法可以得到白化值l0,該數值的恢復會對OCB3算法的完整性和機密性造成威脅。

    參考資料

    [1] Berti, F., S. Bhasin, J. Breier, X. Hou, R. Poussier, F.-X. Standaert, and B. Udvarhelyi. “A Finer-Grain Analysis of the Leakage (Non) Resilience of OCB”. IACR Transactions on Cryptographic Hardware and Embedded Systems, vol. 2022, no. 1, Nov. 2021, pp. 461-8, doi:10.46586/tches.v2022.i1.461-481.

    算法初始化
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    單純的通過覆蓋seh handler跳轉是不夠的,我們首先需要bypass safeseh。
    對OCB算法進行側信道分析
    請求頭的參數非常容易,接下來看看請求體的參數。在signData函數內部下一個斷點其中比較重要的是的函數,這里生成了一段字符串來計算簽名這個函數和查詢參數編碼的功能類似,除了data參數,并且在最后拼接了一個定值字符串,這里用python進行簡單的復現 復制代碼 隱藏代碼。拿到密鑰后,直接使用sm4算法加密就可以得到了,現在所有參數都已經能夠獲取了,就可以發送請求了。
    作 為 未 來 固 網、 移 動 統 一 的 核 心 網 絡 架 構 平 臺,IP 多 媒 體 子 系 統(IP Multimedia Subsystem,IMS)的安全性問題不容忽視。標識密碼技術基于雙線性對的標識密碼算法,利用用戶身份作為公鑰,實現用戶身份和公鑰的天然綁定,構建相對簡化、復雜度低的公鑰密碼體系,在數字簽名、數據加密等方面具有天然的優勢。
    歸獲取屬性對應的結構樹節點構成的集合,輸出明文,完成文件信息加密;最后在客戶端利用 NFS 實現對云存儲文件的訪問控制。對比實驗證明,新的控制方法在實際應用中提升了對不同用戶的訪問控制精度,且控制過程中時間開銷更少,有效提高了控制效率。
    定位把整個apk拖入jadx-gui后,初始化檢索之后可以直接通過網址進行定位。!看到此處,它判斷的這3個URL接口名稱,恰是支付的,估計是它排除掉不是它的接口。結果就是,該HOOK代碼并沒有觸發,也就是并沒有執行到此處,但是我們發現當前class處幾乎每個函數都是加密相關,我對他們進行了逐一HOOK,最終發現encypt函數有了反應。
    環簽名算法種類很多,大多數算法設計基于雙線性對或大素數難分解,在安全性和運算速度方面有待提高。與基于橢圓曲線離散對數相比,雙線性對的優勢并不明顯,因為它無法運用一樣長度的密鑰提供同樣的安全性能。為了能夠提升方案的安全性以及能夠保證簽名者身份的完全匿名性,基于SM2商用密碼算法設計了一個新的環簽名方案。利用單向函數設計簽名算法,并對方案的安全性進行了嚴格證明,保證了新方案的正確性、安全性與隱匿性。
    看過我另一篇文章的大家應該清楚花指令的還原,也可以用腳本,但是這里的花指令不多,故而我們直接手動來快速還原。彈出如下框,這是在IDA在質問我們人類智慧的一個警告,直接Yes就可以。至此,上述去花操作完成。然后,我們選中整個函數的部分0x401450~0x401566,然后按快捷鍵P,讓整個函數能被IDA正確識別。
    首先使用jadx對apk進行逆向。?搜索關鍵字 QDSign,可以直接找到對應的類,可以看到參數經過加密得到。??進一步跟蹤,發現了c類中有如下三個so方法,還有3個loadlibrary,分別進行了hook,發現c-lib動態注冊了sign,sos動態注冊了s,沒有發現crypto有動態注冊。
    物聯網普遍存在遭受網絡攻擊類型多樣化、沒有安全保護標準、數據極易被截獲或破解等安全風險,核心問題在于缺乏設備、服務提供者、應用、數據、交易等物的安全認證機制。 因此,有必要建立一種提供認證鑒權和數據保護的方案體系,建立物與物、物與人之間的信任。密碼技術是解決核心安全問題的基礎理論和技術,而傳統的證書體系并不適應于物聯網環境,基于商密SM9的算法才是目前物聯網安全認證的最佳選擇。 物聯網安全平臺
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类