【密碼篇】白盒加密基本思想
白盒與黑盒
軟體保護技術和密碼學有著緊密的聯繫,無論是加殼技術還是反調試技術往往都需要通過加密將敏感數據隱藏起來,加密想必大家不會陌生,那麼什麼是白盒加密呢?
要解釋白盒加密首先需要了解什麼是「白盒」什麼是「黑盒」
黑盒:傳統的加密技術是默認假定處於黑盒中的,也就是假定攻擊者無法獲得密鑰。具體而言,認為攻擊者並未實質性地接觸到密鑰(執行加密或者解密的演算法)或者任何內部操作,僅僅能觀察到一些外部信息或者操作,這些信息包括系統內的明文(輸入)或者密文(輸出),並且認為代碼執行以及動態加密不可被觀察。
灰盒:灰盒認為攻擊者可以實質性地接觸到部分密鑰或者泄露的信息(也就是所謂的邊信道信息)。邊信道分析攻擊(Side Channel Analysis, SCA)利用了從密碼系統運行過程中泄露的信息。泄露信息是通過被動觀察時間信息、功率消耗、電磁輻射等而獲得的。
白盒:白盒即攻擊者已經完全控制了整個操作過程且對此完全可見,攻擊者可以自如地觀察動態密碼運行過程,並且內部演算法的詳細內容完全可見,可隨意更改。舉例而言,只要軟體是在本地運行的,攻擊者就可以通過調試器運行程序,並觀察軟體運行的過程。所有涉及解密部分的代碼也就一覽無餘了。定義如下:
- 攻擊者對主機和軟體具有完全控制權
- 軟體動態執行過程是可見的
- 加密演算法內部細節完全可見、可修改
白盒加密基本思想
白盒加密屬於對稱加密,是指能夠在白盒環境下抵禦攻擊的一種特殊的加密方法。首先舉個例子幫助理解,這裡引用最早提出白盒加密實現方法的大牛Chow在論文《White-Box Cryptography and an AES》中所說的,「舉一個極端的例子,就是將AES加密用一個簡單的查表來表示,那麼AES128可以用一個bytes的表格替換,這樣一來,AES就變成了一個完全的黑盒。」聽起來很簡單吧,但是這是極端情況,一個如此大的表,沒有硬碟能夠裝得下,所以在具體演算法實現的時候必須有針對性的進行優化。
下面具體闡釋白盒加密基本思想:
1、核心思想:
核心思想是混淆,混淆的意思就是讓人看不懂,如果說加密是隱藏信息,混淆就是是擾亂信息。它們之間的最大區別是,加密就是信息放進了保險箱,但是一旦我有了鑰匙,我就能打開這個保險箱。而混淆則是讓信息以一種完全無法理解的形式存在,盡量讓人無法理解中間的過程(也就是只能看到輸入和輸出,但無法理解結果是如何得到的),但不影響信息本身發揮作用(一個加了密的程序,在源碼未解密前是無法執行的,但是經過混淆的程序,可以正確執行)。
2、特點
傳統的加密演算法中演算法和密鑰是完全獨立的,也就是說演算法相同密鑰不同則可以得到不同的加密結果,但白盒加密將演算法和密鑰緊密捆綁在了一起,由演算法和密鑰生成一個加密表和一個解密表,然後可以獨立用查找加密表來加密,用解密表解密,不再依賴於原來的加解密演算法和密鑰。
3、優勢:
正是由於演算法和密鑰的合併,所有可以有效隱藏密鑰,與此同時也混淆了加密邏輯。具體而言白盒加密的一種實現思路就是將演算法完全用查表來替代,因為演算法已知,加密的密鑰已知。所以將演算法和密鑰固化成查表表示,這就是白盒密鑰的實現過程。
4、缺點
有利必有弊,白盒加密由於需要將加密和解密的演算法固化到表格中,勢必要增加空間開銷,因為要保存這一系列的表。具體在實現的過程中,大部分情況需要用時間換空間,需要對具體的實現演算法進行優化,也就是樣將大表分解成若干個小表,增加了查表的次數即時間開銷但是減少了表佔用的空間。
版權聲明:允許轉載,須全文轉載並註明原文鏈接
推薦閱讀: