CWE-329: 密碼分組連結模式未使用隨機初始化向量
什麼是密碼分組連結模式未使用隨機初始化向量?
在密碼塊連結(CBC)模式下不使用隨機初始化向量(IV)會導致演算法容易受到字典攻擊。
什麼是CBC模式?
CBC模式的全稱是Cipher Block Chaining模式(密文分組連結模式),之所以叫這個名字,是因為密文分組像鏈條一樣相互連線在一起。在CBC模式中,首先將明文分組與前一個密文分組進行XOR運算,然後再進行加密。
初始化向量當加密第一個明文分組時,由於不存在“前一個密文分組”,因此需要事先準備一個長度為一個分組的位元序列來代替“前一個密文分組”,這個位元序列稱為初始化向量(Initialization Vector),通常縮寫為IV,一般來說,每次加密時都會隨機產生一個不同的位元序列來作為初始化向量。
什麼是字典攻擊?
字典攻擊發生一般都是在駭客試圖獲得一個安全的網站的密碼或地區透過使用每一個詞在字典裡(手動,這樣他們就可以猜出密碼)為了訪問機密資訊。對於分析和電腦保安、字典攻擊是一種方法來克服程式碼或確認機制,試圖解決其解密解決方案或密碼。駭客行為這種攻擊有時數以億計的機率事件,比如用從字典裡找出的單詞來破解.密碼。
密碼分組連結模式未使用隨機初始化向量漏洞的構成條件有哪些?
密碼分組連結模式使用的初始化向量不是一個隨機數。
密碼分組連結模式未使用隨機初始化向量漏洞會造成哪些後果?
攻擊者有機會透過字典式攻擊讀取加密的資料。
密碼分組連結模式未使用隨機初始化向量漏洞的防範和修補方法有哪些?
密碼分組連結模式使用隨機的初始化向量。
含有“密碼分組連結模式未使用隨機初始化向量”安全漏洞的程式碼樣例:
byte[] iv = { //設定初始化向量為固定的值0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
KeyGenerator kg = null;
try {kg = KeyGenerator.getInstance("AES");}
catch (NoSuchAlgorithmException e)
{e.printStackTrace();}
SecretKey key = kg.generateKey();
Cipher cipher = null;
try {cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");}
catch (NoSuchAlgorithmException e) {e.printStackTrace();}
catch (NoSuchPaddingException e) {e.printStackTrace();}
IvParameterSpec ips = new IvParameterSpec(iv); //使用固定的初始化向量
try {cipher.init(Cipher.ENCRYPT_MODE, key, ips);}
catch (InvalidKeyException e) {e.printStackTrace();}
catch (InvalidAlgorithmParameterException e) {e.printStackTrace();}
使用Wukong軟體靜態分析工具檢測上述程式程式碼,則可以發現程式碼中存在著密碼分組連結模式未使用隨機初始化向量的安全漏洞。請見下圖:
在這個示例中,初始化向量(IV)始終是零的塊。這使得生成的密文更容易預測,並且容易受到字典攻擊。
密碼分組連結模式未使用隨機初始化向量在CWE中被編號為CWE-329: Not Using an Unpredictable IV with CBC Mode
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2786774/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 5.7 初始化密碼或隨機密碼MySql密碼隨機
- 分組密碼的模式密碼模式
- 【密碼學系列】|| 分組密碼的工作模式詳解密碼學模式
- 商密學習-分組密碼加密模式筆記密碼加密模式筆記
- 使用js動態新增連結隨機連結JS隨機
- 序列密碼與分組密碼密碼
- 應用密碼學——分組密碼密碼學
- Linux 生成隨機密碼Linux隨機密碼
- JS生成隨機密碼JS隨機密碼
- 分組密碼(一) — 密碼學複習(四)密碼學
- 分組向量檢索
- 如何得到一個隨機密碼隨機密碼
- 案例四:Shell指令碼生成隨機密碼指令碼隨機密碼
- 隨機連結串列的複製隨機
- .NetCore 登入(密碼鹽+隨機數)NetCore密碼隨機
- UA MATH567 高維統計II 隨機向量5 亞高斯隨機向量H5隨機
- UA MATH567 高維統計II 隨機向量1 隨機向量的範數H5隨機
- 分組密碼(四)AES演算法① — 密碼學複習(七)演算法密碼學
- UA MATH567 高維統計II 隨機向量2 各向同性的隨機向量H5隨機
- 決策樹VS隨機森林——應該使用哪種演算法?(附程式碼&連結)隨機森林演算法
- 【程式碼隨想錄】二、連結串列:2、設計連結串列
- 【程式碼隨想錄】二、連結串列:1、移除連結串列元素
- 一個PHP通用隨機密碼的實現PHP隨機密碼
- Firefox 69 將加入隨機密碼生成器Firefox隨機密碼
- 鴻蒙NEXT開發案例:隨機密碼生成鴻蒙隨機密碼
- Rust中如何產生隨機數或密碼?Rust隨機密碼
- 直播商城原始碼,記一次 js隨機密碼原始碼JS隨機密碼
- 程式碼隨想錄:移除連結串列元素
- 程式碼隨想錄:設計連結串列
- 解密MSSQL連結資料庫的密碼解密SQL資料庫密碼
- 隨機森林的祕密隨機森林
- 向量(高階的隨機化應用)隨機
- Linux 系統生成隨機密碼的10種方法Linux隨機密碼
- 直播軟體開發,隨機密碼生成器隨機密碼
- win10安全模式如何跳過開機密碼_win10安全模式跳過開機密碼教程Win10模式密碼
- 共享印表機有密碼怎麼連線 win10共享印表機需要密碼密碼Win10
- Mysql修改密碼之後,Navicat依然使用舊密碼連線問題MySql密碼
- PbootCMS依次輸出指定分組的友情連結boot