我們在一些網站、APP上註冊時必然涉及到密碼,一些網站要求使用密碼強度要高,比如騰訊的QQ,有些人不理解為什麼密碼要那麼複雜,如果該被盜號一樣被盜,和密碼複雜不複雜一點關係都沒有。針對這一點我們來說說針對用戶密碼的安全問題。

先說一下程序密碼設計的規則:

1、後臺資料庫直接保存明文(現在基本上不存在了),這樣的公司後臺資料庫一旦被黑,那麼所有的密碼都會外泄,損失非常大(例如中國最大IT社區CSDN 600W用戶密碼外泄,明文保存密碼導致的嚴重後果),咱們用戶無論把密碼設置的多麼複雜都沒用,人家能實實在在的拿到你的密碼,這就是大多數人不理解密碼為什麼要設置那麼複雜了。

2、後臺資料庫使用直接使用的MD5、SHA-256、SHA-512等哈希加密演算法。這樣即使資料庫被黑,攻擊者拿到密碼也無法知道你的密碼是什麼。但是也不是絕對安全的,比如彩虹表,一些簡單的密碼還是會被破解。

3、在上列演算法中採用固定字元串加鹽,這種使用的比較多md5(password+salt),但是這樣依然沒什麼用,攻擊者都可以拿到資料庫,同樣可以拿到源代碼,根據源代碼攻擊者很輕鬆的就可以構造新的彩虹表出來逆推密碼。

4、在上述演算法中採用隨機字元加密、動態加密,保證每個人的加鹽都不同,讓攻擊者沒辦法製作彩虹表,比如Math.random()方法隨機生成的小數,或者使用UUID,將鹽保存到數據表中,這樣即使兩個用戶設置的密碼都是1,後臺存儲的值也是天壤之別。

在瞭解程序的密碼設計規則之後我們來看看我們用戶改如何設置密碼來保證相對安全:

1、設置的相對簡單,比如數字、英文單詞,出生年月等,如果該網站使用的只是MD5加密,使用密文直接在百度上直接解密,一般也就破解了,根本用不上彩虹表出場你的密碼就被破解。採用隨機字元串加密會好很多,但是抵擋不住暴力破解(窮舉破解密碼,可自行百度)。

2、密碼設置的比較複雜,根據上面的加密規則來看就相對安全的很多,彩虹表雖然大可以按TB計算,但是如果很複雜還是跑不了那麼多。如果密碼+數字+標點組合十個長度的密碼絕大多數的彩虹表就破解不了了。所以密碼長度、複雜度能很大程度的影響攻擊者的破解難度。

3、不同網站盡量不要使用同一個密碼。這個比較著名的就是12306密碼泄漏事件,2014年12月份12306上大量用戶密碼外泄,一時間部分用戶的火車票被退,導致人心惶惶,最後查明是攻擊者使用網路遊戲和多個網站泄漏的密碼進行撞庫導致。同樣遭受撞庫影響比較大的是2016年的百度雲盤,50W網友的百度雲盤被塞滿小黃片,黑客用來倒賣帳號牟利。這麼多事件告訴我們多個平臺不要使用同一個密碼,尤其是一些小平臺、小公司上,它們的信息最容易泄漏,一旦泄漏就表示使用同樣密碼的其他平臺同樣承受著風險。

4、如果你怕密碼忘記而會找個地方存儲下來,記得密碼多盡量使用物理備份,不要使用雲盤、網路日記等備份,同樣很容易被泄漏。

密碼安全是開發者們不斷致力於追求的目標,同時用戶也要注意保存自己的密碼,盡量使密碼複雜化、分離化,密碼複雜有很大好處,對於破解者有很大難度。

推薦閱讀:

相关文章