使用訊息摘要演算法提升密碼安全性
- 前言
- 訊息摘要演算法
- 摘要碰撞概率
- 訊息摘要演算法的破解
- 解決方案
前言
密碼安全往往與賬戶安全息息相關,密碼技術是保護資訊安全最基礎、最核心的手段之一,它不僅具有資訊加密功能,而且具有數字簽名、身份驗證、秘密分存、系統安全等功能,所以使用密碼技術不僅可以保證資訊的機密性,而且可以保證資訊的完整性和可用性,防止資訊被篡改、偽造和假冒,這樣也就保證了資訊的安全,(來源于百度知道,)
用戶在注冊時輸入的密碼,若以“明文”的方式存盤在資料庫中,對用戶來講十分危險,我們需要采取的做法是:用戶在注冊時將輸入的密碼“密文”處理操作,即加密,意思是更換表示密碼的字串進行資料庫存盤,將密文存入資料庫的做法,用戶的賬號安全相對更有保障,不容易被他人盜用,
而處理密碼字串更換進行加密時,不可以使用加密演算法,加密演算法一般來講保證的是傳輸程序中資料的安全性,加密演算法的特點為可逆向推導運算,對于密碼來說,逆向運算得到“加密”前的密碼的做法,失去了密碼加密的意義,所以需要存盤的資料不應該使用加密演算法,
在實際開發運用中,我們需要使用訊息摘要演算法(Message Digest Algorithm)處理密碼加密,
訊息摘要演算法
關于訊息演算法的主要特點如下:
- 使用的演算法固定時,無論訊息長度是多少,得到的摘要的長度固定不變;
- 使用相同的演算法時,對同樣的訊息進行運算,得到的摘要一定相同;
- 使用相同的演算法時,對不同的訊息進行運算,極低概率得到相同的摘要,
訊息摘要演算法有很多,主要有MD(Message Digest)演算法,例如:MD2、MD4、MD5,現主要簡介MD演算法中的MD5演算法,MD5演算法為128位演算法,顯示為32位長度的十六進制數,對應實際專案開發中跟密碼相關的資料表中設定password欄位長度為32位,另外還有SHA(Secure Hash Algorithm)演算法,例如SHA-1、SHA-256、SHA-384、SHA-512,嘗試解釋說明:SHA-256即256位的演算法,其運算結果是長達256位的二進制數,通常會轉換為十六進制來顯示,所以顯示的十六進制值是64個,
摘要碰撞概率
即使是使用演算法的位數很高,比如使用了128位的運算方法,不同的訊息對應了相同的摘要即碰撞的概率也是極低的,若在實際開發中應用在密碼加密程序,訊息的種類也是有限制的,這是由程式員來決定的,因為程式員在開發時會限制密碼長度格式等因素,這導致了碰撞概率更低甚至概率為零,
綜上所述,在進行密碼的加密處理時,一般采用的方法為訊息摘要演算法,
訊息摘要演算法的破解
有關于訊息的摘要演算法的破解作業,其主要作業是對訊息演算法的碰撞的研究,以128位的演算法舉例說明:128位演算法理論上的碰撞概率為1/2128,當然這是理想狀態,實際運用中也不會達到這個理論上的概率,說明訊息摘要演算法的不可逆運算,主要驗證在研究是否可以在運算次數達不到理論次數時發生碰撞,
需要我們注意的是,很多網站稱可“在線破解”摘要資料獲取訊息原文,“破解”一詞其實是表述錯誤的,這些破解網站的作業原理實際上是在其資料庫中記錄了大量的訊息原文與摘要資料的對應關系,當用戶希望破解時,是從資料庫中“查”出來的,并不是“算”出來的,其“查”方式相當于:
select 訊息原文 from 資料表 where 摘要資料=?
解決方案
正是因為這些網站的存在,會導致使用訊息摘要演算法處理密碼時,部分內容不能夠百分之百安全,所以,作為開發者,應該采取一些措施,來保障密碼安全,通常,可用的解決方案有:
- 在軟體中,強制要求用戶使用安全級別更高的原始密碼;
- 多重加密;
- 在處理加密程序中,對密碼加鹽(salt)
- 使用更高位數的訊息摘要演算法;
- 綜合運用以上各方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/241902.html
標籤:區塊鏈
上一篇:互聯網公司是如何變現的?
