題:
新的Gmail登錄系統-違反傳統觀念嗎?
ataftoti
2015-05-08 21:06:28 UTC
view on stackexchange narkive permalink

我注意到新的gmail登錄名先詢問用戶名,然後在詢問密碼輸入之前先確認該用戶名是否存在。

這是否違反了傳統的安全原則,即不洩露有關是否用戶名的存在,以阻止嘗試許多可能的用戶名的攻擊類別?

我認為Google知道他們在做什麼,這是否意味著他們有某種方式可以保護自己免受傳統上稱為漏洞的攻擊?

嘗試使用某些用戶名註冊不會顯示相同的信息嗎?
我注意到烘焙網站也這樣做。我希望這會強制執行多個請求,因此點擊千斤頂會更加困難,但是我很好奇看到有人寫下了所有好處和用例
是的,註冊確實會顯示相同的信息。但是現在我不知道為什麼總是被告知不要返回“用戶名不存在”消息以提高安全性....那隻是一個誤解嗎?
我寧願返回一條消息,說“用戶名或密碼不正確”,這樣一個人就不知道哪個是錯誤的。告訴他們用戶名不正確確實會提供更多信息
對於電子郵件提供商,我相信已經可以通過向用戶名發送電子郵件並查看發送的用戶名(即使被標記為垃圾郵件)和退回的用戶名來進行編號,因此問題不大。
通過telnet連接到gmail,然後嘗試向隨機ID發送郵件。您將輕鬆知道該ID是否存在。還有許多其他類似的方法可以知道ID的存在。
從可用性的角度來看,這種“常規智慧”完全是愚蠢的-我必須記住我使用過的4到5個電子郵件地址中的哪一個*並*嘗試十個左右的密碼的每個變體來登錄?好吧,與嘗試登錄50次相比,我有更好的事情要做,所以我只需要再次重置密碼即可...
抱歉,“烘焙網站” @amccormack?我想念的術語還是烹飪場所? :/
本來應該是銀行業務,對不起。
用戶名不必是秘密的,這就是我們擁有密碼的原因。
完全同意史蒂夫的觀點。需要更多地考慮安全性的可用性方面。沒有它,用戶將做出錯誤的安全決策,從而使他們的生活更輕鬆。我們的系統應該使他們的生活更輕鬆,以幫助他們做出良好的安全決策!我對類似這樣的系統的另一個不滿意之處在於,在登錄時沒有重複密碼規則(長度,接受的字符等)。它是公共信息(註冊時),那麼為什麼要讓用戶四處尋找呢?
傳統的安全常識是,除了安全以外,沒有其他問題。這顯然是愚蠢的。
只是注意到Adobe似乎也這樣做。登錄到Adobe Acrobat DC時輸入Adobe ID。在輸入密碼之前,用戶名/電子郵件地址似乎已驗證(顯示綠色勾號)。
@SteveDL-我同意您的意見:*“從可用性的角度出發” *。有時,我也嘗試使用不同的夫婦(用戶名;密碼),這很煩人。但是網站這樣做是有充分理由的。通常,可用性與安全性衝突。
-1
現在,我必須單擊兩個按鈕登錄。新的登錄系統不是用戶友好的。
@SteveDL不,您應該使用密碼管理器。
@SteveDL另外,您只有10個密碼?我猜您在多個站點上重複使用了相同的密碼。這是可怕的安全風險。您為什麼不只使用密碼管理器,它實際上沒有任何缺點呢?
@nyuszika7h有很多有效的原因,導致某些人不想使用密碼管理器...
但是,除了懶惰之外,沒有多次重複使用相同密碼的正當理由。另外,您不想使用密碼管理器的原因是什麼?
相關討論:[在不同頁面上使用用戶名和密碼字段更安全嗎?](https://security.stackexchange.com/q/85160/32746)
十 答案:
schroeder
2015-05-08 23:28:31 UTC
view on stackexchange narkive permalink

對於較小的站點,您不想允許黑客枚舉您的用戶列表,但是對於Google,該站點如此之大,可以假設幾乎每個人都有一個或多個帳戶。因此,在普遍存在的閾值之後,將風險最小化。

對於大多數站點來說,不公開用戶名是否存在仍然是一個好主意,但是需要權衡新用戶註冊過程的風險。您要防止的是一個自動過程來枚舉您的列表。新的用戶註冊過程應包括某種形式的延遲或限制,以使腳本無法快速嘗試使用用戶詞典。這通常是通過發送包含註冊過程不成功的電子郵件來實現的。是的,仍然可以枚舉,但是有一個延遲和一個額外的步驟。

要考慮的另一件事是公共站點和私有站點之間的區別。 Google是一項公共服務,用戶名也是公共的(在帳戶發送的每封電子郵件中均已公開)。另一方面,內部公司站點是只有私人才能訪問的內部公司站點,是私有的,並且需要更嚴格的控制以防止枚舉。

實際上,用戶名不會在電子郵件地址中披露。電子郵件地址可能顯示為joe.bloggs@gmail.com,但該用戶的用戶名可能是j.oeb.loggs@gmail.com。使用Gmail,圓點在電子郵件地址中並不重要,但對於驗證登錄ID至關重要。
如果我遺漏了點,@AndrewLeach Google可以讓我登錄,它們似乎也可以進行登錄。
@EricG然後就是...
那已經改變了;他們曾經指出差異。也許人們無法應付與眾不同的情況。在我看來,這是合理的,而且我不記得有關此更改的公告(但是我不認為他們會宣布降低安全性,即使最初只是出於默契而已。)
在處理登錄表單時,隱藏用戶的用戶名/電子郵件地址是否正確也使用戶難以想像自己在站點上使用了哪個密碼。
當然,他們也有可能(盡可能)檢查這種自動枚舉嗎?如果“用戶”嘗試使用的用戶名超過(很少)數量,則可以肯定他們不是真正的用戶。
Michael
2015-05-09 01:18:02 UTC
view on stackexchange narkive permalink

傑夫·阿特伍德(Jeff Atwood)在登錄“話語”時,對此話題說了

這是長時間討論的源頭。討論,當用戶以“忘記密碼”的形式輸入電子郵件地址時,是否有必要向用戶透露該電子郵件地址是否存檔。在許多網站上,以忘記密碼的形式輸入電子郵件地址後,您會看到以下消息:

如果帳戶與name@example.com相匹配,您應該會收到一封電子郵件,其中包含有關如何盡快重置密碼的說明。

請注意此處的“ if”,這是一個對沖工具,它可以顯示出給定電子郵件地址是否存在於所有安全隱患上。網站,只需將其輸入“忘記密碼”表單即可。

我們對選擇Discourse的安全默認設置非常重視,因此開箱即用不會受到利用,濫用或濫用垃圾郵件發送者。但是在經歷了現實世界之後,“我們又在這裡使用了哪封電子郵件?”我們自己在數十個Discourse實例上的登錄狀態,我們意識到,在這種特定情況下,用戶友好比安全更重要。

非常有趣的結論。基本上,他們寧願自動應對無法記住他們使用哪個登錄名的用戶,也不願保護其用戶列表免遭暴力破解。我不能為他們說話,但這聽起來更像是他們在說“最小化支持數量比確保安全更重要”。
降低支持量(通常)也通常對用戶更友好-難以使用,以致大量用戶需要聯繫支持,這與良好的可用性相反。
安全不是要應用任意規則和最佳實踐。它是在考慮提供實際服務的同時,了解所有控制措施和對策如何協同工作以及相對價值。如果您有緩解控件來解決了解用戶名的用處(例如,嘗試登錄的IP地址監視,失敗的嘗試鎖定,將攻擊者列入黑名單等),則用戶名枚舉的風險值將下降。
@JeffMeden參見Tom Leek的答案[here](http://security.stackexchange.com/questions/42872/user-name-enumeration)-隱藏用戶名提供的“安全性”充其量是最小的。
SilverlightFox
2015-05-09 14:21:57 UTC
view on stackexchange narkive permalink

對於Gmail,您只需通過將電子郵件發送到 @ gmail.com 地址即可確定帳戶是否存在。如果該郵件退回,則說明該帳戶不存在。

許多電子郵件提供商都是如此。在此,用戶名不被視為秘密。如果用戶的電子郵件地址為 foo@example.com ,則每個人都知道 foo example.com 上具有用戶名 foo的帳戶@ example.com

但是,對於大多數其他系統來說,洩露用戶名是違反隱私的行為。如果有人發現 bob@example.com nostringsattacheddating.example.org 上有一個帳戶,則Bob的妻子愛麗絲可以嘗試使用用戶名 bob @ example註冊。 com 並告訴他們用戶名已被使用,則這是對隱私的嚴重侵犯。

請記住,電子郵件地址的根源是電子郵件提供商。如果已知 eve@example.com example.com 擁有帳戶,則不會丟失任何隱私,因為誰是 eve @的參考點example.com 是。對於另一個使用電子郵件作為用戶名的系統,情況並非如此-非電子郵件網站上用戶名 mallory@example.com 的用戶將是相同的 mallory@example.com 在其他網站上註冊。有隱私權可以保護Mallory擁有哪些帳戶。

此外,洩露用戶名對攻擊者也很有用。這稱為用戶名枚舉漏洞。 如果攻擊者知道存在哪些用戶名,則他們可以進行密碼猜測攻擊

作為攻擊者,如果我可以使用您的登錄名或忘記密碼的頁面來縮小我的用戶名,我會列出10000個目標到1000個目標。

它還允許攻擊者通過網絡釣魚將系統用戶作為目標。

很容易設計出無法執行用戶枚舉的系統。例如,註冊過程和忘記密碼的過程是相同的。

步驟是:

  1. 系統一次詢問用戶名(電子郵件)頁面,沒有其他輸入字段。
  2. 提交表單後,系統會要求用戶檢查其電子郵件帳戶。
  3. 如果該帳戶存在,則電子郵件包含密碼重置鏈接。
  4. 如果該帳戶不存在,則電子郵件中包含註冊鏈接。
  5. ol>

    作為獎勵,您在註冊時已驗證其電子郵件地址以防他們以後需要重設密碼。任何錯字都將意味著用戶根本無法註冊-這很不錯,因為用戶不會意外使用註冊到其他電子郵件地址的帳戶。

    密碼和註冊鏈接均包含密碼安全的隨機ID,因此在未收到電子郵件的情況下無法遵循它們。只有擁有該帳戶訪問權限的人才能知道用戶名是否已註冊(Bob最好對Alice保密,以免他的電子郵件和筆記本電腦密碼-如果在Alice嘗試嘗試此過程的情況下,最好關閉任何通知聲音,對於他來說,最好將其關閉也是在同一房間)。

    請參閱我的其他一些相關主題的答案:

“對於Gmail,您可以僅通過發送電子郵件來確定帳戶是否存在”:通常情況並非如此。如果您向不存在的地址發送太多電子郵件,則會被阻止。
Jerry B
2015-05-09 03:52:41 UTC
view on stackexchange narkive permalink

我敢肯定,這條規則是在“大鐵”時代發展起來的,當時所有帳戶都在大型公司或政府系統中。由於系統分發了帳戶名,因此使用註冊頁面查找帳戶名不是問題。因此,保留帳戶名稱列表對&是可行的。

現在,我們正在處理自註冊網站,因此無法對帳戶列表保密。另外,無論如何,如今有這麼多人公開其帳戶名稱。在這種情況下,試圖隱藏事實是名稱失敗而不是密碼是沒有意義的。

Ali
2015-05-08 22:34:45 UTC
view on stackexchange narkive permalink

知道哪個用戶名不存在並不重要,因為攻擊者還可以從註冊頁面檢查它。 Google不允許攻擊者進行暴力破解之類的攻擊來獲取用戶名列表。

因此,從根本上說“登錄時不返回用戶不存在”的規則是神話嗎?它曾經帶來過安全方面的改變嗎?
確實會帶來安全差異。例如,我有一個人們登錄的Jira實例。我為我的團隊創建了帳戶,這不是自我註冊。因此,公開用戶名的唯一方法是通過註冊過程。一切都取決於可用性的權衡。在公共站點上,經常需要告訴人們用戶名是否存在,但這並不意味著公開該信息就沒有風險。設計師應了解自己所暴露的內容,並設置其他技術限制,以確保它不會導致廣氾濫用。
從登錄頁面進行檢查的功能不是通用的。最佳做法是說即使該電子郵件已經存在,它也已發送到該地址,並提醒該人某人試圖再次使用其帳戶註冊或只是不再發送該電子郵件。同樣,區分電子郵件地址和用戶帳戶也很重要。諸如Internet銀行之類的用戶帳戶通常是不公開的,因此應相對於根據定義必須是公開的內容進行保護。
這種“傳統智慧”主要是[tag:security-theater]。
user76196
2015-05-10 05:55:06 UTC
view on stackexchange narkive permalink

首先提示輸入用戶名然後提示輸入密碼的原因更為重要:它允許Google為使用無密碼驗證或其他實驗性登錄機制的帳戶提供不同的用戶界面,而無需事先透露帳戶正在使用它。

類似於在輸入密碼後才顯示Google的2Factor身份驗證用戶界面的方式:攻擊者甚至在破解第一個因素後才知道涉及第二個因素。

結合其他有關用戶名洩漏的相對無風險的答案,在我看來,這實際上是一種安全改進。

Eric G
2015-05-09 21:21:04 UTC
view on stackexchange narkive permalink

電子郵件地址與用戶名不同。用戶名是(可能是)半私人信息,但是電子郵件地址是可公開公開和可公開路由的。想一想郵政郵件,如果經常知道它的郵寄地址,但是儘管通常也可以通過多種方式在網上查找,但當前的有效收件人列表不一定要設計成公開的。對於Google之類的公司,他們擁有Google +,YouTube,Google網上論壇等,這些地址已經使許多人熟知。

查詢電子郵件服務器並確定是否給定的電子郵件也很簡單。地址存在,使用telnet許多網站都會為您完成。保護以其他方式可以輕鬆訪問的信息幾乎無濟於事。這就是為什麼某些站點將用戶名的電子郵件地址分開的原因。對於電子郵件提供商,給普通用戶使用不同的登錄名和電子郵件地址實際上沒有任何意義(也許我們當中那些對安全性更偏執的人會喜歡該功能)。

切換到兩步登錄可減少將用戶密碼輸入搜索字段或用戶名字段的可能性。這些字段通常被記錄下來,並且日誌在各地都具有關聯性,因此不太可能得到保護。因此,如果日誌受到黑客或國家/地區的攻擊,則攻擊者可能能夠將用戶的IP地址與其用戶名相關聯,然後注意到類似“ m7p @ 55w0rd !!!!”的內容。

在風險管理方面,密碼暴露的風險遠大於用戶名枚舉的風險。 Google可能具有更強大的反欺詐和異常跟踪功能,以應對與已知用戶名相關的風險。

我認為, FAIR簡介(pdf)中的Tire Swing示例是理解這一點的一種好方法。已知用戶名的風險計算會受到其他控件和因素的影響。您是否停止暴力攻擊,需要多因素身份驗證,還如何獲得此信息?在這種情況下,實際上,您可以在您可以控制的風險(監視所有登錄名)與舊表格中難以控制的風險(用戶將密碼鍵入錯誤的區域)之間權衡取捨。

andrew.carpenter
2015-05-09 05:32:51 UTC
view on stackexchange narkive permalink

我要大步走出去,說他們可能有一些機制可以確保它不是開放的用戶存儲庫。

我們在上實現了類似的系統我們的小網站使用支持redis的解決方案。

最初會向用戶顯示一個簡單的電子郵件/密碼,並帶有用於登錄和註冊的按鈕。輸入他們的電子郵件並繼續前進時,將檢查是否存在匹配項,如果匹配,則將刪除註冊按鈕。如果沒有,則將提供完整的註冊表。

在給定閾值之後,我們跟踪ip子網和黑名單的嘗試次數。黑名單不會影響他們使用該網站的能力,它只是恢復為登錄/註冊選項的標準行為。 >

想要建立帳戶列表的垃圾郵件發送者可以租用一個殭屍網絡,以繞開IP子網的阻止。
真正。話雖這麼說,但如果Google想要(儘管其他答案表明他們可能不在乎的充分理由),他們可以採用其他防止濫用機制。例如,跟踪與標準故障率的偏差並全局恢復行為
Nemo
2015-05-09 11:11:25 UTC
view on stackexchange narkive permalink

是的,他們已經建立了防止濫用的系統。 Google擁有廣泛的“異常檢測”機制,可在您的活動可疑時提供錯誤或驗證碼:最著名的例子是Google搜索和NoCaptcha ReCaptcha的阻止。

允許em>知道該帳戶是否存在並不意味著每個人都可以,也不意味著您可以實際猜測其他人的用戶名。嘗試讓我們知道您被阻止多久之前,這是一個有趣的測試。

Mark Buffalo
2016-02-08 23:57:18 UTC
view on stackexchange narkive permalink

幾乎每個人都已經已經這樣做了

我注意到,新的gmail登錄名先詢問用戶名,然後再確認該用戶名是否存在,然後再詢問密碼輸入。

Google已經具有此功能。當您嘗試註冊新的Google帳戶時,它必須檢查用戶名是否已經存在。

這是否違反傳統的安全原則,即不洩露有關用戶名是否存在的信息,以阻止嘗試許多可能的用戶名的攻擊類別?

如果他們沒有檢查,您將如何正確認證?多個具有相同用戶名的人對網站的完整性不利。當然,在許多情況下,您可以使用唯一的電子郵件地址,並允許多個人使用相同的姓名。

就像我之前說過的那樣,幾乎每個人都已經以某種方式做到了這一點。這裡沒有什麼可擔心的。如果您想降低用戶名的大量枚舉,只需在幾次嘗試後添加一個驗證碼即可。


Captchas並不能真正阻止大量郵件發送的騙局

垃圾郵件發送者經常向電子郵件地址發送大量垃圾郵件。儘管Google可能會將電子郵件推送到垃圾郵件文件夾中,但這並不能阻止通過非退回電子郵件進行枚舉。

創建一個使用數千個不同IP地址的群發郵件程序,然後嘗試通過不接收退回郵件進行枚舉是很簡單的。您甚至可以發送隨機垃圾。請記住,如果您的目標是驗證電子郵件地址是否存在,那麼幾天后就不會收到錯誤電子郵件就足夠了。

自Google成立以來,他們“已經在這樣做”。在Google之前,幾乎沒有。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...