Chrome 瀏覽器的密碼保存為什麼顯示明文不需要驗證主密碼確認?這是安全問題嗎?

chrome://settings/passwords

在地址欄輸入上述語句,只需要簡單點擊一次便可以查看 Chrome 瀏覽器保存的密碼,並不需要像 Safari 那樣驗證系統管理員密碼也不需要驗證 Chrome 綁定的 Google 賬號密碼。如果瀏覽器所有人離開設備,那麼密碼便有可能被輕鬆盜竊。這麼大的安全問題,谷歌到底是怎麼考慮的,難道沒有注意到?畢竟增加多一步驗證,應該不算是技術困難。

Google 知錯了: Google finally hides passwords from snoopers in new builds of Chromium


這不是安全問題!

當前所有主流系統都支持多用戶。

你把電腦借給別人用不是問題,但如果你給別人用電腦的時候還讓別人用自己的帳號登錄那就是你自己的問題了。——所以這相當於說把自己脫光光送到異性面前然後還規定別人不允許有非分之想一樣搞笑。

真正的 master password 從來都有,有且只有一個,就是你的操作系統帳號密碼。即便你要借給別人用,也要給別人創建一個新帳號(這個帳號的許可權可以低一些),不能讓別人用你自己的帳號登錄系統。

當別人用一個新帳號登錄你的電腦時,是不會看到你的 chrome 保存的密碼的。操作系統級的登錄密碼,就是主密碼,你需要保管好它,而不是去讓操作系統中的每個應用軟體自己搞一套密碼。


解決這個問題就是需要一個看密碼時的密碼,即master password。
但實際上如果你的機器都讓別人使用了,即使有了這個秘碼;他仍然可以拿到你電腦保存Chrome相關信息的資料庫(sqlite)文件,進而破解得到master password。
同意@田學文 說的 「沒有物理安全就沒有任何安全可言了」。

下面是Google員工關於這個問題的答案,內容大體也是「沒有物理安全就沒有任何安全可言了」;不過我猜測如果太多用戶需要這個功能,未來可能會加進去的。

Hi everybody,

We understand that many of you want a master password for your saved passwords in Google Chrome. You』ve laid out many scenarios in which this might be useful, but the most common is that if your computer were to fall into the wrong hands, that person would then have access to your saved passwords.

While we agree that this situation would be terrible, we believe that a master password would not sufficiently protect you from danger. Someone with physical access to your computer could install a keylogger to steal your passwords or go to the sites where your passwords are stored and get them from the automatically filled-in password fields. A master password required to show saved passwords would not prevent these outcomes.

Currently, the best method for protecting your saved passwords is to lock your computer whenever you step away from it, even for a short period of time. We encrypt your saved passwords on your hard disk. To access these passwords, someone would either need to log in as you or circumvent the encryption.

We know this is a long-standing issue, and we see where you"re coming from. Please know that your security is our highest priority, and our decision not to implement the master password feature is based on our belief that it creates a false sense of security instead of actually providing a strong security benefit.

Best,
Blair

自:http://www.google.com/support/forum/p/Chrome/thread?tid=5f249c4fa04ecd17hl=en


在瀏覽器上保存的密碼必須是要被(經常)解密使用的

如果說不明文保存這些密碼的話,一般有這些辦法:

1,

如果用一個密碼來保存數據D,則需要:

使用者制定一個密碼A。

軟體使用(包括hash,加鹽,乃至非對稱加密,密鑰生成演算法等,依照具體情況有所不同的)演算法f,f是單向的,得到f(A),f(A)是實際用來加密D的金鑰。除了A以外,f()往往還有別的輸入項,如隨機數等。

實際用到的加密演算法h(x)一般是對稱密鑰演算法(如3DES,AES,blowfish,山茶花等)以節省性能開支,

加密好的密文E=D*h[f(A)]

如果是使用usb狗,指紋等附加手段,無非是再嵌套另一個不同的E=D*h[f(A)]

說到底是用使用者制定的密碼產生另一個標準化的金鑰,金鑰是加密時實際採用的密碼。

2,

在本地保存的"已保存的密碼D1"依然是以E1的形式存在,這種情況下A1,f(A1)是公開的(拋棄掉其中任意一個可能都沒有關係,實際怎麼處理我不知道,按照@鄧新 所說的,chrome保留的應該是A1,因為它不知道f1(A1)是什麼,f1()是由windows提供的CryptProtectData API 負責的)。

---------------------------------------------------
問題是,瀏覽器上保存的密碼必須是要被(經常)解密使用,也就是說保存的密碼的明文總是定要出現在內存

它不像U盾中的數字證書(起到相當於密碼的職能),是能以「不可被讀取到U盾以外」的形式存儲的。它的規則是,只能往裡面寫入,但不能讀出。這個證書只能被U盾的CPU讀取,用以計算出數字簽名。

怎麼辦?

chrome的做法一啟動就把明文恢復出來。


一個研究過chrome的密碼保存機制的人員來說一下吧:
chrome保存的密碼,實際是通過windows 的一個函數進行加密並存入sqlite3資料庫的,而這個資料庫又是可以訪問到的,至於他能顯示明文密碼,就是你點擊明文的時候,他調用了響應的解密函數。具體過程請看這個 http://securityxploded.com/chromepassworddecryptor.php
從技術上來說,chrome加密的函數調用的是 CryptprotectData 這個函數,這個函數是windows提供的。msdn的描述http://msdn.microsoft.com/ZH-CN/library/windows/desktop/aa380261(v=vs.85).aspx

The CryptProtectData function performs encryption on the data in a DATA_BLOB structure. Typically, only a user with the same logon credential as the user who encrypted the data can decrypt the data. In addition, the encryption and decryption usually must be done on the same computer. For information about exceptions, see Remarks.

也就是說,要解密這個函數,就必須以相同的用戶登陸到系統,才能解密數據chrome使用這個函數的原因,猜測有如下幾個方面
第一:chrome密碼是以當前用戶的計算機是安全的為前提,如果當前計算機不安全,那麼密碼的作用也就沒有了。
第二:簡單。這個函數是微軟提供的。
第三:簡單。


問者問的應該是 chrome://settings/passwords 這個裡面保存的 password 吧,樓上是不是理解錯了?

回到問題,似乎並不是 Chrome 一家這麼做吧,Firefox 也是一樣的,Saved password 里一樣能看到所有保存的明文密碼。

我認為這不是一個太大的問題,因為:
1. 所有安全問題的前提都是物理安全,如果你的機器物理上就是不安全的,那即使給你變成星號了你的密碼也不會安全;
2. 如果物理上是安全的,也就是說接觸你的電腦的人是可信的,那即使是明文保存的他也不會特地去看;
3. 廠商可能有一種假設:用戶需要找回密碼,因為各種密碼太多了,用戶可能會需要到保存的密碼里去看。我認為這個假設是合理的,再結合上面兩點,我認為拋棄這一點點安全性換來這一點點便利性是合理的。

總而言之,客戶端的這點防盜功能永遠是防君子不防小人,重點是物理安全。


要實現「記住密碼(口令,下文「密碼」皆指代「口令」)」的功能,通常的選擇只有存儲明文密碼或者用可逆的方式加密明文密碼,否則無法提交
對本地存儲的密碼做hash是沒有意義的,一方面大部分網站不接受這種提交方式,另一方面即使網站支持提交已經hash的密碼,黑客可以直接將hash結果盜過來寫入數據包發送過去
至於存儲然後不給看(IE的做法)……防正常用戶不防黑客的設計是想怎樣?

ps.訪問安全要求高的網站時,請不要「記住密碼」


這個問題可以從幾個角度來看:資產、風險、影響、威脅、弱點。
資產:用戶的密碼(你的密碼可能只是幾個從來不用的馬甲,但也可能是你的支付寶密碼,是不?)
風險:密碼直接被明文窺探、被木馬竊取(連暴力破解、彩虹表神馬的都可以省了)
影響:用戶去哭、去鬧、去上吊
威脅:黑客?no,no,鄰家計算機小白大哥哥就可以看到你的QQ密碼咯
弱點:明文存儲口令

以上,是不是一個安全問題,各位看官自有結論了。

補充一下,應用廠商也有TA的難處,誰能沒幾個小白用戶呢?忘了密碼,找不回來,腫么辦?和用戶去解釋加密後要查看明文需要密鑰?另外,能直接明文查看到保存的密碼並不意味著Google沒有提供加密保存密碼的機制。看看Google的賬戶同步設置里的加密密碼設置。

對了,再補充一個例子:Windows文件系統的EFS加密使用的就是密鑰文件的方式,對用戶來說,訪問加密文件似乎不需要輸入任何【訪問口令】。但事實呢?重裝系統沒有備份解密私鑰,你再試試直接訪問之前的加密文件?你更換一個用戶再去訪問其他用戶的加密文件,是不是就直接提示你無權訪問了?

最後再給一個關於安全性和易用性的經典例子:Windows 7的賬戶安全設置。游標拉到最安全,是不是很煩?幹什麼都彈框提示授權。游標拉到最不安全,是不是方便多了?這就是安全性和易用性的關係。


1.只要我離開電腦,我就會win+L
2.任何人要用我的電腦,我會給他切到guest賬號。


早就要了吧……


看了樓上的答案衝動一把補充一下.

關於物理安全的建議很有幫助但是物理安全跟這個問題是無關的. 瀏覽器(和其他的客戶端軟體)沒有什麼可靠的手段解決物理安全的風險.

任何增強安全的手段都是有勝於無, 但"方便"應該是存儲密碼這個功能的重要考量. 由於其他的瀏覽器也提供了類似的功能, 而且我覺得用戶肯定不少, Chrome要搶用戶, 最簡單的方法就是滿足用戶. 作為一個後來居上者, 轉化其他瀏覽器的用戶也是必須的.

我覺得, 樓上有位憤怒的同學雖然寫的很解氣但是有一條很想提一下:

這給天涯CSDN人人網等等網站的站長們提供了一個絕佳的文案,「密文密碼都是防君子不防小人的,黑客們如果願意,花點時間也都是能破解的,所以我們網站存儲明文密碼其實也沒有什麼問題。。。」

伺服器端的密碼存儲和瀏覽器的密碼存儲不是一回事. 作為CSDN的伺服器端, 程序需要驗證客戶端提交密碼和存儲的一致. 這意味著密碼必須被保存(這和瀏覽器用戶選擇方便讓瀏覽器保存密碼有區別). 在必須持久保存且需要驗證一致又要安全的大前提下, 保存hash後的密碼顯然是更合理的做法. 作為瀏覽器, 由於必須以明文提交給伺服器端, 只能存儲密碼明文或者可逆轉的密文. 更安全的方法是不採用密碼而是授權的形式, 但是不可能僅靠瀏覽器端實現.
作為一個網站, 必須在安全方面做最壞的打算, 大規模的泄露用戶明文密碼的危害和被暴庫但是密碼欄位都是hash危害孰輕孰重?


我的理解是: 這只是一個瀏覽器的utility。 用戶是可選擇的使用這個功能。安全性的確不高
所以有了last pass


不藉助任何工具的情況下,Chrome是目前最方便的,讓一個沒有任何背景知識的小白,能竊到其他用戶的密碼的方法。


目前最高票的幾個答案的邏輯是這樣的:這不是個安全問題,因為在理論上,對一個手上有全套工具的黑客來說,其他方法一樣可以破掉你的密碼,所以沒有更不安全。。。我對此表示無語,請問誰沒事兒會隨身帶著(或者放到網盤上)key logger,見機會就給人裝一個呢?


現在查看密碼已經需要驗證Windows系統密碼了


Safari 就簡單輕鬆地解決了這個問題。

那就是點擊顯示密碼的時候需要驗證系統管理員身份。我不明白為何 Chrome 不一樣使用類似的 master password,起碼最簡單的,增加驗證該 Chrome 綁定的 Google 賬號便好,或者直接就是系統登錄賬號。

或許是跟 Chrome 用戶數量最多的 Windows 平台,用戶並不習慣使用系統登錄密碼有關?如果確實如此,如果 Chrome 也沒有綁定 Google 賬號,那麼讓用戶使用一個單獨的 master password 的確是體驗不好的做法。

但,至少,可以讓那些使用系統登錄密碼或者綁定 Google 賬號的人一個選擇吧。我認為 Google 的做得不夠,有些不負責任。幸好我不太用 Chrome.


我去,看了這個問題才知道Chrome有這種明文密碼。。謝謝題主!

看了些已有的答案。個人觀點:一定程度上是安全問題。一定程度上反對所謂「防君子不防小人,所以反正不安全,沒事」的觀點。類比為:即使對家裡進竊賊的風險無能為力,我也會把家裡的貴重物品放進柜子,而不會擺在觸手可即的窗檯。
答完後才發現@程瀚 已給出類似觀點。稍作補充:很多人總強調「反正黑客想看就能看,沒事」,但當我把電腦借給父母、同學、同事時,絕對不想讓他們的「破解成本」這麼低呀!你們真的理解不了類似情境嗎?
真沒想到一個得票不少的合理答案會被踩到如此靠後,但願其不被「沒有幫助」。
至少我以後會注意Chrome的這個問題,既要注意防範,也要學會利用XD。

比較喜歡firefox保存明文密碼但有密碼保護信息(但因種種原因放棄了firefox);
不喜歡搜狗沒是明文的保存;
不知其他瀏覽器怎麼處理這個問題的,歡迎提供信息我來匯總一下~


很多人的concern都集中於「我父母朋友女朋友用我的電腦的時候他們有辦法知道我所有保存在瀏覽器里的密碼」這個事,其實這很容易解決,自己的系統賬戶加密碼,建一個guest賬戶專門給他們用,父母女朋友應該很小几率去專門找軟體破解你chrome profile裡邊的一個sqlite3資料庫吧,而且這也是操作系統支持多賬戶的意義。
當然,這也是防君子不防小人的辦法,但看樓上貼出來chrome開發人員的回復說的,google這麼做也是基於你自己的系統賬戶安全的前提。很多人系統不加密碼,或者不想建guest賬戶的原因,可能是因為不想給父母女朋友一種「I"m hiding something」的感覺吧。


chrome可以明文保存支付寶的支付密碼,我看到的時候趕緊刪了


這是個用戶體驗問題,不是技術問題,加一層密碼驗證沒什麼問題,但是經過綜合考量,Chrome沒有這麼做,而我支持這種做法。

丟失密碼遠比泄漏密碼要普遍的多和嚴重的多,打個比方,出門穿防彈衣比不穿要安全,但是人人都穿防彈衣造成的不便和浪費比少數人因為沒有穿防彈衣而受傷影響更大,所以人們寧可冒極小的風險也不願意付出時時穿防彈衣代價來獲得更大的安全。

對絕大多數人來說,密碼沒有那麼重要,而我多次從「顯示密碼」功能來查看記不太清的密碼,在別處使用,如果多一重密碼驗證,頻繁輸入同一個密碼安全性好像也高不到哪去,而且造成極大的不便。如果那麼在乎安全,就是加一個Windows密碼的事,又不麻煩。


現在不是都加密了嗎


方便和安全是很難兼顧的。我是這樣的:
1.重要的密碼不上網,如投資性的銀行卡。
2.金額小的借記卡,支付寶等上網但不保存密碼。還有郵箱,雲盤也是。且密碼不能都相同。
3.微博,論壇,視頻保存密碼,且密碼都相同。
谷歌可能覺得你即然保存了密碼,說明不重要,就以方便為先了。


推薦閱讀:

軟體安裝/網站註冊時的用戶協議有哪些著名的陷阱條款?
未來互聯網安全的攻防趨勢在哪裡?
目前還有哪些懸而未解或是非常棘手的互聯網安全難題?
Web 攻擊在整個網路攻擊體系中的地位和作用是怎樣的?
現在的 SSL 加密技術,預計多少年以後會被輕易破解?

TAG:Google Chrome | 網路安全 |