簡述白盒加密:
說到加密,自然少不了密鑰。密鑰的存儲,可以加密後寫在代碼裡,一起編譯到最後的二進制檔案中,也還可寫個函數,用代碼來生成密鑰等。這些方法,對于黑盒攻擊來說,其實都是相對來說比較安全的。但是還有另外一種攻擊叫做白盒攻擊,比黑盒攻擊更進一步,拿到了加密裝置的運作環境,包括記憶體資訊,磁盤的讀寫權限等。此類攻擊就可以dump出記憶體的資料,進而使運作在記憶體中的密鑰不再安全。
白盒加密就是為白盒攻擊而生,它的目的是不在運作環境中出現完整的密鑰。為此,首先要對密鑰本身做盡量複雜的混淆,同時提供函數來處理。舉個例子,比如明文密鑰是abcd,混淆後的密鑰變成了非常複雜的矩陣,根據算法,每次生成的4個中間密鑰,aefg,hbigk,lmcn,opqrstd,根據某個算法,用這些密鑰生成4個密文,然後在把4段密文用算法生成一段密文,如此可以不斷重複,直到最後生成密文。整個過程中最原始的密鑰一直沒有出現在記憶體中,白盒攻擊想拿到密鑰難度就大大增加了。
白盒加密原理:
什麼是“白盒”什麼是“黑盒”
黑盒:傳統的加密技術是預設假定處于黑盒中的,也就是假定攻擊者無法獲得密鑰。具體而言,認為攻擊者并未實質性地接觸到密鑰(執行加密或者解密的算法)或者任何内部操作,僅僅能觀察到一些外部資訊或者操作,這些資訊包括系統内的明文(輸入)或者密文(輸出),并且認為代碼執行以及動态加密不可被觀察。
灰盒:灰盒認為攻擊者可以實質性地接觸到部分密鑰或者洩露的資訊(也就是所謂的邊信道資訊)。邊信道分析攻擊(Side Channel Analysis, SCA)利用了從密碼系統運作過程中洩露的資訊。洩露資訊是通過被動觀察時間資訊、功率消耗、電磁輻射等而獲得的。
白盒:白盒即攻擊者已經完全控制了整個操作過程且對此完全可見,攻擊者可以自如地觀察動态密碼運作過程,并且内部算法的詳細内容完全可見,可随意更改。舉例而言,隻要軟體是在本地運作的,攻擊者就可以通過調試器運作程式,并觀察軟體運作的過程。所有涉及解密部分的代碼也就一覽無餘了。定義如下:
-
- 攻擊者對主機和軟體具有完全控制權
- 軟體動态執行過程是可見的
- 加密算法内部細節完全可見、可修改
白盒加密基本思想
白盒加密屬于對稱加密,是指能夠在白盒環境下抵禦攻擊的一種特殊的加密方法。首先舉個例子幫助了解,這裡引用最早提出白盒加密實作方法的大牛Chow在論文《White-Box Cryptography and an AES》中所說的,“舉一個極端的例子,就是将AES加密用一個簡單的查表來表示,那麼AES128可以用一個

bytes的表格替換,這樣一來,AES就變成了一個完全的黑盒。”聽起來很簡單吧,但是這是極端情況,一個如此大的表,沒有硬碟能夠裝得下,是以在具體算法實作的時候必須有針對性的進行優化。
下面具體闡釋白盒加密基本思想:
1、核心思想:
核心思想是混淆,混淆的意思就是讓人看不懂,如果說加密是隐藏資訊,混淆就是是擾亂資訊。它們之間的最大差別是,加密就是資訊放進了保險箱,但是一旦我有了鑰匙,我就能打開這個保險箱。而混淆則是讓資訊以一種完全無法了解的形式存在,盡量讓人無法了解中間的過程(也就是隻能看到輸入和輸出,但無法了解結果是如何得到的),但不影響資訊本身發揮作用(一個加了密的程式,在源碼未解密前是無法執行的,但是經過混淆的程式,可以正确執行)。
2、特點
傳統的加密算法中算法和密鑰是完全獨立的,也就是說算法相同密鑰不同則可以得到不同的加密結果,但白盒加密将算法和密鑰緊密捆綁在了一起,由算法和密鑰生成一個加密表和一個解密表,然後可以獨立用查找加密表來加密,用解密表解密,不再依賴于原來的加解密算法和密鑰。
3、優勢: