為什麼大部分網站的密碼找回設置都是直接設置新密碼,而不會給出原有密碼?

目前為止,除了某考試報名網站的「找回密碼」操作可以最終直接得到原有密碼,我用過的大部分網站都是通過直接設定新密碼來完成密碼的找回。這樣做是基於什麼原理?有什麼好處?


如果網站可以告訴你舊密碼是啥,那說明:

  1. 密碼被儲存在此網站的某個資料庫裡面,該網站管理員就有可能偷窺到你的密碼。
  2. 並且萬一存放密碼的資料庫被人爆菊了,那所有用戶的密碼就都泄露了。。。
  3. 去年CSDN社區曾發生過這樣的事情,CSDN把用戶密碼明文存在資料庫裡面,有一天資料庫被人下載了~~~

文明一點的做法是網站不存儲你的密碼:

  1. 世界上有MD5演算法這個很神奇的東東,不管你有神馬東西,MD5都能把它變成一段無規律字元串(比如0ca175b9c0f726a831d895e269332461),並且這個過程是不能逆運算的,即無法通過MD5值算出原始密碼。
  2. 那麼網站就可以僅存儲你密碼的MD5值。
  3. 你下次登錄的時候,輸入密碼後網站自動計算MD5值,如果和資料庫存儲的MD5值一樣,那說明你的密碼是正確的。
  4. 如果某天資料庫被人下載了,那後果也不算嚴重。為嘛?因為老子就沒存儲用戶密碼,你怎麼從老子這裡偷用戶密碼啊。

然後,道高一尺魔高一丈:

  • 有一天,一個無聊的宅男突然靈光一現:
  • 既然老子無法從MD5值算出密碼,那老子乾脆把所有可能密碼的MD5值都預先算出來存起來,以後弄到MD5值只要查查表就可以找到密碼了。於是彩虹表被發明了。

再然後,魔高一尺道高一丈:

  • 聰明的程序員怎麼可能束手無策呢?
  • 他們想,老子讓你搞彩虹表,那好,我把用戶密碼用MD5算1000遍,再用SHA-1算1000遍,再用自己編的演算法算1000遍然後再保存到資料庫(僅用作舉例,實際不會搞這麼複雜)。我讓你搞彩虹表,搞到吐血也搞不出來。這種行為被叫做加鹽。。

從此網站資料庫裡面的用戶密碼就安全了:

  • 於是壞銀們又想,既然老子得到了加了鹽的密碼也沒用,那老子乾脆趁密碼還沒被加鹽的時候就截下來吧。
  • 於是,就有了如下的新聞:
    • 電信運營商也參與盜號:http://zone.wooyun.org/content/2507

很同意這裡面一個童鞋的說法,覺得有必要發一個分開的答案,澄清一下概念。
根據信息安全等級的不同,有些用戶信息是hashing的,而有些是encription。

比如上面很多童鞋提到的MD5, SHA256都是hashing。hashing是不可逆的。本質上可以簡單解釋為多個輸入可以generate一個相同的輸出。所以無法知道你最初的信息是什麼。你要求要回舊密碼時,網站無法可逆找回你的舊密碼,發給你一個巨長的MD5字元串也不行,就只能讓你重置了。而且密碼選擇hashing而不是encription的原因就是,你也不想讓管理員看見你密碼對不對?很多人有習慣用一樣的用戶名,密碼在所有的社交網路,銀行賬戶上,密碼不hashing,很有可能被官方盜取你都不知道。但是有人的地方就有江湖,大家可以google下rainbow table,專門用來破解密碼hashing。

encription也就是加密,是有一個key的,只要拿到這個key就可以把原來的信息找回。密碼一般不是加密的,因為就不能有這個key留下讓它找回的可能。也許,用戶名是可以加密的,因為即使被破解出來,也沒什麼意義。

再看了上面童鞋回復補充個好玩的,不是政府網站或者老舊網站才會幹出奇葩事件。曾經有一次特別嚴重的索尼play station 7700萬用戶密碼泄露事件,泄露後發現,索尼竟然爆炸奇葩的用plain text存的密碼,讓業界的小夥伴全部震驚了。從這件事情的教訓上,教資料庫和網頁設計的教授直接出了一道題,什麼時候可以用plain text存儲用戶密碼?答案是never ever ever。。。。。數據安全的問題困擾著任何地方,講課的教授曾經在FBI,CIA等地方實習,有一段時間CIA的信息安全太壞了,資料庫弄的太爛了,沒人願意跟他們分享數據:)


如果網站能顯示你的密碼,那麼就建議你別去那家網站了。既然能顯示給你看,很明顯內部人員也看得一清二楚。


既然是密碼就只能一個人知道,任何人也就不知道了。
安全的密碼在系統裡面應該是通過不可逆的演算法計算出來的一段編碼,登陸的時候用同樣的演算法編碼,然後判斷2者是否一致;
能直接返回明文明碼的,只能說明系統部安全!


哪個網站用明文存儲密碼,哪個網站說不定下一分鐘就會重蹈CS*N的悲劇。


這個問題我覺得不應該問這樣做有什麼好處,而應該問不這樣做有什麼壞處。

如果網站明文存儲了密碼,意味著管理員可以用你的帳號在網站里做比你更多的事(臨時提權),更可怕的是很多人習慣多個網站使用同一個用戶名和密碼。。。。

大廈管理員有了你家鑰匙,進而拿了你的各種證件冒用了你的身份辦了信用卡還給你朋友借錢。。。。
更可怕的是就算管理員夠自製,鑰匙可只是放在值班室很可能被人拿走的。。。。


想知道淘寶等這些大公司是怎麼加密的,也是這種流行的MD5嗎?


一般密碼都是加密處理過的,而且都是單向不可逆的。這也是為了保證安全性。原有的密碼會在被新生成的密碼更新掉。


好像記得加密演算法有兩類,RSA與MD5是典型代表

RSA的加密演算法,利用秘鑰加密之後,存入資料庫,利用秘鑰可以將加密結果解密,得到你輸入的密碼,這種加密演算法是可逆的。

MD5的加密演算法,利用秘鑰加密之後,存入資料庫,利用秘鑰是沒法將加密結果解密,只能每次你輸入密碼後,再進行秘鑰運算,直接和資料庫的結果比較,這種加密演算法稱為不可逆的。
MD5的好處是管理員拿著資料庫,也很難得到你的密碼。

我估計就是這個原因,用MD5的比較多,所以沒法給出原密碼,只能密碼重置。


推薦閱讀:

是否有可能備份整個互聯網?
你在哪些網站會使用真實姓名?在哪些網站上只是用昵稱?
如何查看Alexa兩年以前的排名歷史數據?
個人網站怎麼應對大流量?怎麼做負載均衡?
除了 Airbnb 和 Uber 之外還有哪些領域有分享經濟的精彩案例?

TAG:互聯網 | 網路安全 | 用戶體驗設計 | 密碼 | 密碼找回 |