私人網站能看到用戶的密碼嗎?

我在一些網站的密碼是一樣的,一些小眾網站也是,請問網站的管理者能看到我註冊的密碼嗎? 現在註冊用的都是郵箱,這樣安全嗎?


不確定。
這取決於網站存儲驗證信息的方式。

1、早期的網站大多以明文存儲密碼,所謂明文就是,就是存儲密碼本身。用戶登錄時,伺服器用資料庫中的密碼和用戶輸入的密碼進行比對,完全相同則登陸成功。這是最簡單的一種存儲方式,其優點是:實現簡單,且用戶可以「找回密碼」。但致命的缺點是,一旦密碼資料庫泄露,幾乎無可挽回。當然,網站所有者可以看到密碼。
經典案例:CSDN詳解600萬用戶密碼泄露始末:暫關閉登錄
註:CSDN的主站程序寫於1999年

2、發現這一問題之後,程序員想到了一個新主意:用Hash的方式存儲密碼。所謂Hash,可以簡單地理解為一個幾乎不可逆的函數Y=H(X),X是原字串,Y是Hash後的字串,想從Y逆推X是非常困難的(所謂hard problem)!此外,任取兩個X,幾乎不可能得到同一個Y,這意味著X1 X2哪怕有微小的不同,Y1≠Y2.
以最流行的MD5演算法為例,密碼「password」的hash值是:

5f4dcc3b5aa765d61d8327deb882cf99

用戶輸入一個密碼後,同樣,用MD5計算它的Hash值,通過比較二者的Hash值是否相同,間接的確定密碼是否與真正的密碼匹配。的確,有可能兩個不同的字串的Hash值相同,但這一事件的概率太低了:1/(2^256)=8.6e-78
顯而易見,該方式的好處是:即使資料庫泄露,黑客也無法直接看到密碼原文
同樣的,網站管理者也無法獲得密碼的原文。

================ 2014/1/14 補充 ==================
嚴格的說,Hash不是一種加密方式!
所謂加密,是把明文變成密碼,言下之意,密碼還是可以解密為明文的
而Hash的初衷就是找不到「解密」方法(逆函數)
但是!!Hash常常和公私鑰演算法共同用於現代網路通訊,例如SSL

感興趣的同學請看這篇博文:
數字簽名是什麼?- 阮一峰的網路日誌
===============================================

3、Hash看似不可逆,但俗話說,大力出奇蹟,暴力破解是永遠擋不住的。試想用窮舉的方式計算各種可能字元串的MD5,並將結果存入一個資料庫中,下次破解只需查表即可。但正如之前所說的,這也是一項極為艱苦的工作。但隨著計算機算力的發展,資料庫越來越大,這正慢慢變得可行。
比如這個網站:MD5 Online | MD5 Decrypter
輸入之前的那個Hash值,解密,

Found : password

截止回答時,該網站已經收錄了349,984,899,628個MD5,這離MD5的總量2^128還差很遠很遠。但考慮到很多用戶都在使用較短的、只含數字和字母的密碼,這樣的破解的確奏效。

改進方案有很多,這裡給出兩個栗子:
方案1:Hash兩次,比如Y=MD5(MD5(X))。第二次的加密是對Hash值的加密,由於Hash值有32個字元,查表解密的方法成功率大大降低了。
事實證明,該方案還是有致命的弱點:二次MD5表。不信的可以看這個網站:變異MD5二次MD5加密解密|md5(md5($pass))|XMD5

方案2:將字串X加上一個鹽值(salt),再進行Hash。事實證明:隨機性是抵擋邪惡攻擊者的最好手段之一。

所謂加Salt方法,就是加點「佐料」。其基本想法是這樣的:當用戶首次提供密碼時(通常是註冊時),由系統自動往這個密碼里撒一些「佐料」,然後再散列。而當用戶登錄時,系統為用戶提供的代碼撒上同樣的「佐料」,然後散列,再比較散列值,已確定密碼是否正確。
這裡的「佐料」被稱作「Salt值」,這個值是由系統隨機生成的,並且只有系統知道。這樣,即便兩個用戶使用了同一個密碼,由於系統為它們生成的salt值不同,他們的散列值也是不同的。即便黑客可以通過自己的密碼和自己生成的散列值來找具有特定密碼的用戶,但這個幾率太小了(密碼和salt值都得和黑客使用的一樣才行)。

這一方法使用很廣泛。目前最流行的博客CMS:WordPress,就採用了這種加密方式。

參考資料:
1 MD5 - Wikipedia
2 淺談MD5加密演算法中的加鹽值(SALT) - blade2001的專欄
3 PHP: Password Hashing


完全取決於網站管理者的節操


年底除妖。

首先,按照公安部令33號第7款,如若網站經營者不能保護用戶的通信自由和通信秘密,是違法行為[1]。(密碼屬於敏感信息)所以,從法律和道德上,網站不僅自己不能看用戶的明文密碼,還要能保證他人也看不到。

其次,由於此違法行為造成的損失難以估量,所以被發現了有可能只是在公安的指導下【限期整改】,而已(也有可能關停整頓等,但是整改的案例較常見)。

第三,就算網站按照規定,給用戶密碼來個哈希演算法密文存儲,「達標」了,又如何?
在當今的社會工程學及其利用的彩虹表技術面前,簡單密碼的一次md5值在他們眼裡和明文沒區別,掩耳盜鈴自欺欺人耳

結論:不論網站管理者能不能看用戶的密碼,題主都該有信息安全意識,至少將密碼分級管理,對於核心、關鍵、商務網站使用特有的、複雜的密碼,並採取雙重認證(如手機OTP)。
密碼管理方法在知乎中已有多個解答,這裡不再贅述。

[1]計算機信息網路國際聯網安全保護管理辦法(公安部令第33號)

添加了下劃線部分的描述,就說我不符合社區規範,@李奇@Rio 給瞅瞅?


沒節操的網站就不說了,說一種特例:
需要從第三方登錄的,比如QQ/微博/豆瓣登錄,只要確認不是釣魚網站,就不可能會拿人密碼。
但有可能發生更嚴重的事,就是網站方用你的社交帳戶亂髮內容 =. =


這個取決於各個網站設計者和開發者對密碼的保存方式,還有資料庫的訪問許可權。
如果他們保存的是明文,而且伺服器隨便上,資料庫隨便查,那當然是可以看得到的。
如果他們保存的是密文,還要看加密/編碼方式。單以 MD5 來舉例,不加鹽/加鹽(參考:鹽 (密碼學))得出來的密文有差異。不加鹽的 MD5 相較於加鹽的 MD5 ,被人用彩虹表(參考:什麼是彩虹表?)逆向破解的機率要相對大些。所以密文也不是萬能的,只是在一定程度上提高了破解成本。

更多的時候是看人品,網站的人品。


密碼,分為明文密碼和加密密碼
明文密碼就是你輸入什麼,在後台資料庫里存的就是什麼,比如你密碼是12345,那後台資料庫里和你用戶名對應的密碼數據也是12345
加密密碼是經過特定規則轉換的,例如MD5加密,它就是按照MD5的規則把你的密碼轉換為一串其他的字母和數字,比如你的密碼是12345,轉換為16位MD5值就是ea8a706c4c34a168,當你登陸,輸入密碼的時候,網站後台會先把你的密碼轉換成MD5值,然後再和資料庫里保存的密碼比對,如果一樣,就視為密碼輸入正確,不同就視為錯誤

當然我上面只是簡單舉例,實際情況可能更複雜也可能更簡單

所以,能否看到你的密碼取決於網站後台是明文密碼還是加密密碼,不過大部分都是加密的,除非是賬號不可能進行任何金融操作的才可能用明文

破解密碼是需要時間的,你密碼很簡單,就很容易破解,密碼越長越複雜,例如大小寫混合+數字+符號

所以,能不能看到你的密碼,取決於網站管理員想不想看,還有值不值得在破解你密碼上耗費時間
但是大部分都沒問題,用戶多了去了,拿你密碼要是得不到什麼利益的話誰也不會花時間去破解

個人認為,如果你的賬號絕對沒有任何方法和錢聯繫上的話,就沒必要去擔心密碼是否會被網站所有者看到,沒人會那麼蛋疼的看密碼玩的


推薦閱讀:

黑客在攻擊前會做哪些準備?
什麼樣的品牌/產品的粉絲令人討厭?
BT下載會損壞硬碟嗎?
有哪些適合金融人士使用的電腦?為什麼?都有哪些優缺點?
圖片應該怎樣搜索?

TAG:互聯網 | 數據安全 | 網路安全 | 計算機 | 密碼 |