從12306帳號洩漏談使用者密碼安全

2021-06-27 21:37:17 字數 3251 閱讀 7496

12月25日聖誕節,據漏洞反饋平台烏雲網顯示,大量12306使用者資料在網際網路瘋傳。本次洩露的使用者資料報括使用者帳號、明文密碼、身份證、郵箱等。

隨後,12306官方發表公告,稱經過認真核查,此洩露資訊全部含有使用者的明文密碼。12306**資料庫所有使用者密碼均為非明文轉換碼,網上洩露的使用者資訊係經其他**或渠道流出。

12月26日,中國鐵路官方微博發訊息,鐵路公安機關將涉嫌竊取並洩露12306**電子資訊的兩名犯罪嫌疑人抓獲,並指出此次使用者資訊洩漏事件是犯罪嫌疑人「撞庫」來完成資訊的竊取。

好了,這個事件到此估計就沒什麼下文了,因為在中國使用者隱私資料洩漏彷彿不是一天兩天的了,從你每天能接到幾個詐騙、銷售**就能感受到。那麼,作為普通使用者,怎樣最大限度地保護我們的隱私呢?接下來你可以看下面的文字,我試圖以簡單明瞭的語言(注:不一定非常專業)解釋一下**如何儲存使用者密碼,以及給大家在今後如何保護自己資訊保安方面上一些建議。

當你在乙個**註冊成為其使用者時,大多**需要你提供賬戶名、郵箱、密碼等,甚至有些**還會讓你填手機號、身份證號等更為敏感的資訊。而如何儲存這些資訊將成為乙個重大的問題,因為任何**都存在被攻擊的風險,一旦資料庫被盜將會造成不可彌補的損失。我們下面只討論**一般如何來儲存密碼資料的,這是我們最為關心的。

目前最普遍的做法是——將使用者密碼加密儲存。所謂的加密就是採用一種演算法將明文對映為密文,我們稱為 hash(雜湊),而加密演算法有很多種,這裡就不詳細介紹,只要明白一點,這種加密演算法是不可逆的,即不存在一種解密演算法將密文又一一轉化為明文。

在使用者註冊時,**對使用者填寫的密碼進行加密,**資料庫中只儲存加密之後的密碼,而在任何地方都不會儲存密碼的明文。當使用者登入該**是,填寫使用者名稱和密碼,**會將該密碼通過同樣的加密演算法進行轉換,與資料庫中儲存的該使用者名稱對應的加密的密碼進行比較,如果相等,表示密碼正確。

這裡要指出兩點:

密碼在經過加密時,不再在任何地方儲存明文密碼,因為一旦儲存了明文密碼,就會存在被盜的風險。幾年前報道的 csdn **伺服器被入侵,600萬使用者帳號及明文密碼洩露,當時被廣為吐槽的是 csdn 竟然儲存明文密碼。這就是我們在上面新聞中看到12306官方的公告中特別指出的,「我**資料庫所有使用者密碼均為多次加密的非明文轉換碼」。當然目前這是一種普遍的做法了,這也是為什麼我們登入某個**忘記密碼時,該**給你發乙個重置密碼的鏈結,而不是告訴你原來的密碼(因為他們也不知道),當然不排除有些小**仍然採取明文儲存密碼的做法。

正因為加密是不可逆的,即使因為安全原因資料庫被盜,黑客有了加密之後的密碼,它也不能通過一種解密演算法將密文轉化為明文。這就加大了我們的密碼資訊的安全。但是不是拿到這些密文就沒有辦法破解了呢?非也!

如果黑客入侵**的資料庫,拿到加密之後的密碼,如何找到明文呢?由於目前加密演算法比較經典的就那幾種,md5、sha1 等等,而使用者在選用自己的密碼時,很多使用的是一種「弱密碼」,即簡單的數字和字母的組合,例如 "iloveyou123"、"123456" 等等, splashdata 公布2013 年最常用的 25 個密碼,你就可以看出排名靠前的都是積弱的密碼。那麼黑客只需要列舉出所有的單詞和各種數字等的組合,例如使用 md5 演算法進行加密,構造出一張大表(我們稱為「彩虹表」),將這張表的加密之後的密文與盜取的資料庫中密文進行比較,如果有匹配的,那麼就找到了明文,即可用來登入的密碼。

解決方法之一就是**在儲存密碼時,對密碼進行鹽化(salted),即在使用者的密碼之上加上一串特殊字母之後再進行加密,例如加上f#@v)hu^%hgfds這樣的字串,那麼即使你密碼是 "123456",加上之後就成為了 "f#@v)hu^%hgfds123456",這無疑就是乙個「強密碼」了。

解決方法之二就是有些**在你註冊時對你輸入的密碼進行各種限制,例如至少有數字、字母、特殊字母的組合,甚至有要求至少乙個大寫字母,就是為了減少能列舉出來的概率,也其實也是一種鹽化策略,只不過讓使用者來做。

但是不是**對密碼進行鹽化之後就安全了呢?更多關於 hash 對**加密可以參看我的一篇文章:hash 函式及其重要性,更偏向於技術的介紹。

而此次12306**使用者資訊洩露並不是**被入侵匯入資料庫被盜,我們注意到開頭的新聞回顧中中國鐵路官微中提到乙個詞「撞庫」,這又是什麼意思呢?

在黑客術語裡面,「拖庫」是指黑客入侵有價值的網路站點,把註冊使用者的資料資料庫全部盜走的行為,因為諧音,也經常被稱作「脫褲」,360的庫帶計畫,獎勵提交漏洞的白帽子,也是因此而得名。在取得大量的使用者資料之後,黑客會通過一系列的技術手段和黑色產業鏈將有價值的使用者資料變現,這通常也被稱作「洗庫」。最後黑客將得到的資料在其它**上進行嘗試登陸,叫做「撞庫」,因為很多使用者喜歡使用統一的使用者名稱密碼。

以上解釋**於文章:《撞庫攻擊:一場需要使用者參與的持久戰》。

想想你自己,你有自己的 qq、微博、**、各種bbs、郵箱、網銀等等賬號,而賬號和密碼是否都不一樣呢?而如果都一樣,那麼你就有很大風險了!你註冊的**其中的有乙個被入侵導致資訊洩露,那麼用著同樣的賬號和密碼來試圖登陸你註冊的其它**,很大可能就登陸成功了,從而盜取你在上面的資訊。這次12306事件目前來看就是這樣來做的,犯罪嫌疑人利用已經洩漏的使用者資訊來登入12306,登入成功之後就可以獲取使用者的手機號、郵箱、身份證號等有價值的隱私資料了。

我個人覺得這是目前危害使用者資訊保安的最重要的途徑之一,往往我們不經意之間註冊了乙個釣魚**或者註冊的某個**資料庫被盜,這就危害到我們註冊的所有**的資訊保安。

好了,說了這麼多,其實就談了兩點:一是通過解釋**密碼加密演算法來告訴你設定複雜的密碼,而是通過解釋「撞庫」這種盜取使用者資訊的技術手段來告訴你密碼不要設定為同乙個。其實,我們可以完全在設定密碼的時候可以將兩者統一了——為每個**密碼設定不同的複雜的密碼。也許有些人就會站出來反駁我,你真是站著說話不腰疼,我註冊的**幾十個,每個**設定不同的密碼,而且還是那種複雜的密碼,我怎麼記得住!這也是我之前非常頭疼的事,但好在有比較好的解決方法:

這是關於管理設定密碼的建議,更多其它建議我想大家都知道,只是執行力的問題了,例如盡量不要用自己的主郵箱、常用密碼來註冊不健康**(哪些是不健康***:-))等等。網際網路、大資料時代下,使用者隱私越來越暴露在大庭廣眾之下,我想這不僅僅是使用者個人注意就能解決的事,更多的是需要從事的企業對使用者隱私資料的保護意識、國家相關法律法規的健全,才能讓使用者少接一次詐騙**、少洩露一些隱私。

MongoDB中帳號管理(使用者名稱密碼設定)

mongodb中帳號管理 使用者名稱密碼設定 預設不需要帳號密碼,在 etc mongodb.conf中設定auth true後重啟開啟帳號許可權功能。1,建立admin的超級許可權 mongo www.2cto.com use admin db.adduser root sa 增加了root帳號,...

從使用者感知談軟體效能測試

今天有乙個同學問 乙個小的系統,使用者併發數為 20個,那事務平均響應時間大概在什麼範圍內?怕麻煩直接告訴他 2 5 8 原則,鑽牛角尖的話,需要進一步確認什麼樣的小系統?提供的什麼型別的業務?使用者行為是什麼樣的?使用者對系統的使用頻率?就算同響應時時間一樣,前端通過不同展現方法,使用者的感知可能...

從使用者感知談軟體效能測試

乙個小系統,使用者數是20個,那事務的平均響應時間大概在什麼範圍內?怕麻煩可以直接告訴他2 5 8原則,鑽牛角尖的話,需要進一步確認是什麼樣的系統?提供的是什麼型別的業務?使用者行為是什麼樣的?使用者對系統的使用頻率?就算同響應時間一樣,前端通過不同展現方式,使用者的感知可能完全不一樣。下面就針對這...