Android靜態安全檢測 -> 初始化IvParameterSpec函數錯誤

初始化IvParameterSpec函數錯誤


一、API


1. 繼承關係


【1】java.lang.Object

【2】javax.crypto.spec.IvParameterSpec


2. 主要方法


【1】構造方法:IvParameterSpec(byte[ ] iv)     返回初始化向量 iv(Initialization Vector)


【2】構造方法:IvParameterSpec(byte[ ] iv, int offset, int len)


【3】參考鏈接


https://developer.android.com/reference/javax/crypto/spec/IvParameterSpec.html


3. 示例


【1】iv的作用主要是用於產生密文的第一個block,以使最終生成的密文產生差異(明文相同的情況下),使密碼攻擊變得更爲困難,除此之外iv並無其它用途,因此iv通過隨機方式產生,是簡便有效的途徑




【2】參考鏈接


http://m.blog.csdn.net/article/details?id=52727918


二、觸發條件


1. 定位IvParameterSpec初始化函數


【1】對應到smali語句中的特徵

Ljavax/crypto/spec/IvParameterSpec;-><init>([B)V


2. 判斷方法中是否調用String.Bytes()方法


【1】對應到smali語句中的特徵

Ljava/lang/String;->getBytes()[B


3. 判斷方法中是否存在const-string v1, "1234"


【1】對應到smali語句中的特徵

const-string.+, "[1-9]+"


三、漏洞原理


【1】使用固定初始化向量,結果密碼文本可預測性會高得多,容易受到字典式攻擊


【2】漏洞代碼示例




【3】更多內容


http://wolfeye.baidu.com/blog/weak-encryption/


四、修復建議


【1】禁止使用常量初始化矢量參數構建IvParameterSpec


【2】建議IV通過隨機方式產生




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章