【科普】白盒密碼技術
0x00 背景知識
- 白盒密碼技術是一項能夠抵抗白盒攻擊的密碼技術。
- 白盒攻擊是指攻擊者對設備終端擁有完全的控制能力,能夠觀測和更改程序運行時的內部數據。這種攻擊環境稱為白盒攻擊環境。大多智能終端環境(Android、iOS等)在很多情況下就是一個白盒攻擊環境。
- 保護密鑰安全是白盒密碼技術的一個基本訴求。
與白盒攻擊平行的概念是黑盒攻擊和灰盒攻擊。
黑盒攻擊是指攻擊者只能獲取到程序的輸入和輸出,不能實質性地接觸到任何內部操作和數據;對密碼演算法來說就是,攻擊者可以獲取明文和密文,但觀測不到演算法運行時的內部數據。
灰盒攻擊,又稱側信道攻擊,通過程序運行時泄露的物理信息(如時間信息、功率消耗、電磁輻射等)可以實質性的部分或完全獲取程序運行的內部數據,從而完成對程序的破解或數據(密鑰)的竊取。
0x01 密碼學簡介
- 密碼演算法
用於解決複雜問題的步驟,通常稱為演算法(algorithm)。從明文生成密文的步驟,也就是加密的步驟,稱為加密演算法,而解密的步驟則稱為解密演算法。加密、解密的演算法合在一起統稱為密碼演算法。
- 密鑰
密碼演算法中需要密鑰(key)。根據柯克霍夫原則,密碼演算法是標準的,而密鑰是需要保密的,因此密鑰的安全對密碼系統至關重要。
- 對稱密碼演算法
通信雙方共享一個密鑰,用於加密任意大小的數據塊或數據流的內容,包括消息、文件、加密密鑰和口令。常用對稱密碼演算法有DES、AES。
- 非對稱密碼演算法
非對稱密碼又稱公鑰密碼,加密和解密分別使用不同的密鑰,即私鑰和公鑰。公鑰密碼演算法多用於加密小的數據塊,如加密密鑰或者數字簽名中使用的Hash函數值。常用公鑰密碼演算法包括RSA、ECC。
- 密碼協議
密碼協議是指針對密碼演算法的應用。常見協議有SSL/TLS、Https。
- 其它密碼技術
hash函數、MAC、數字簽名、數字證書、隨機數生成器。
0x02 白盒密碼技術
- 方法論
白盒密碼需要抵抗白盒攻擊,構造白盒密碼演算法有兩種策略,標準密碼演算法白盒化和構造全新密碼演算法。
標準密碼演算法白盒化,在標準密碼演算法安全理論的基礎上和不改變原演算法功能的前提下,將原有密碼演算法通過白盒密碼技術進行設計,在白盒攻擊環境下能夠有效保證其密鑰安全。
構造全新密碼演算法,新演算法密碼分析結果不能弱於標準密碼演算法同時具備抵抗白盒攻擊的能力。
- 文獻進展
查找表技術:2002年,Chow等人首先提出了白盒攻擊的概念,並先後給出了AES、DES的白盒化實現。2009年,Xiao-Lai給出了Chow白盒AES的一個改進方案和國密SM4演算法的白盒化實現。
其他技術:2006年Bringer等人提出一個採用了插入擾亂項技術新的AES白盒實現方法。2014年, Alex Biryukov等人提出了一種基於 ASASA(Affine-Sbox)結構的白盒密碼設計方法。
- 白盒分類
白盒密碼技術從實現方式上可以分為兩類:靜態白盒和動態白盒。
靜態白盒是指密碼演算法結合特定的密鑰經過白盒密碼技術處理後形成特定的密碼演算法庫,稱為白盒庫,白盒庫具備特定的密碼功能(加密、解密以及加解密),並能在白盒攻擊環境下有效保護原有密鑰的安全。靜態白盒更新密鑰,需要重新生成白盒庫。
動態白盒是指白盒庫生成後就不需要再更新,原始密鑰經過同樣的白盒密碼技術轉化為白盒密鑰。白盒密鑰傳入相匹配的白盒庫可以進行正常的加密或解密功能。白盒密鑰是安全的,攻擊者不能通過分析白盒密鑰得到任何關於原始密鑰的信息。
0x03 應用場景
動態白盒從功能上可以兼容靜態白盒,動態白盒的應用場景可以抽象為下圖。
0x04 總結
白盒密碼是一種高強度的密碼演算法,需要抵抗目前所已知的最強攻擊方式。目前,白盒密碼演算法的性能表現(主要指加解密速度和白盒庫大小)相對於原有密碼演算法還是有差距,優化白盒密碼演算法的性能和構建全新白盒密碼演算法應該是今後的主要研究方向。
推薦閱讀:
※為什麼CTR模式不是CCA安全的?
※存不存在一種匿名投票方式(計算機實現),滿足以下條件?
※西電只是211,為什麼密碼學排第一?