60ad030a186faffea51ebf39f6328d8b Google在今年稍早的時候發表了支援Chrome的密碼檢查擴充功能,它能將使用者的密碼與40億組已知遭到入侵的登入憑證進行比對,讓使用者瞭解自己的帳號是否安全。為了保護更多人,Google也將這個功能整合至Google帳號與Chrome瀏覽器。

自動保護帳號安全

由於許多使用者會以同1組E-Mail地址與密碼註冊多個網站的帳號,舉例來說,我們可能會使用Google帳號所屬的E-Mail地址註冊購物網站,並且使用相同的密碼。如果該購物網站的資安措施有所疏失,造成使用者的帳號資訊外流,就可能會因此影響到Google帳號的安全性。

Google提出解決方案的概念,就是會在不窺探使用者資料的前提下,自動掃瞄帳號、密碼是否與已知遭入侵的資料重疊,以發出警告提醒使用者更換密碼。要怎麼在「不知道帳號、密碼的情況下,檢查帳號、密碼」,聽起來有些弔詭吧,就讓我們來看看Google所使用的技術。

當Google發現其他網站、公司發生資料外洩事件後,就會使用只有Google知道的加密金鑰將被洩漏的資料加密,並將加密後的副本與雜湊值儲存於內部伺服器。

而使用者利用Chrome瀏覽器登入各網站的時候,Chrome也會用只有瀏覽器知道的加密金鑰(簡單地說是在使用者電腦上產生的金鑰,Google也不知道)將帳號、密碼加密,並將加密後的副本與雜湊值回傳到伺服器,如此一來伺服器握有雙方資料。

接下來的工作,就是Google的伺服器要在未解密使用者資料的情況下,核對雙方資料是否相符。為了達到這個目的,系統會使用稱為Private Set Intersection的技術,能夠在不解密資料的前提下,比對使用者的帳號與密碼是否與被洩漏的資料有所重疊。另一方面為了降低比對資料的運算需求,系統會先核對使用者帳號前3個bite的SHA256雜湊值,如此一來可以將需比對的範圍從40億筆資料減少到250筆。

Chrome密碼檢查功能的運作流程說明,各步驟說明如下。(圖片來源:Google,下同)

Google的伺服器會先將已知被洩漏的資料加密(這個資料只有Google知道),並將資料前3個bite的SHA256雜湊值標記出來。

Chrome瀏覽器則將使用者的資料加密(這個資料只有使用者知道),並一樣將資料前3個bite的SHA256雜湊值標記出來。

若標記的資料片段相同,代表這組資料有機會重疊。伺服器就會將使用者上傳的資料再次加密並回傳給使用者,接著使用者可以使用自己的金鑰解密這組經2次加密的資料。

在不公開資料的情況下完成比對

在經過上面圖片的前3個步驟後,使用者手上就會有被Google加密的「被洩漏的資料」,與自己加密的「自己的資料」,如此一來就能在自己的電腦透過Private Set Intersection比對2者是否相符,而過程都不會對外公開自己的資料。

如果2者相符,就代表自己的資料已被洩露,這時候Chrome就會警告使用者,並建議更換密碼,以確保帳號的安全。

如果比對完整資料後發現自己的帳號、密碼已被洩漏,Chrome就會建議使用者更換密碼。

基本上建議讀者維持密碼檢功能開啟,但如果想要停用的話,可以同步與Google服務選項中關閉資料同步功能。

使用者可以在Chrome的「同步與Google服務」選項中開啟或關閉這個功能,以安全的考量來說,當然是建議維持功能開啟,並在收到警告的第一時間就更換密碼。

使用 Facebook 留言

訪客
1.  訪客 (發表於 2019年12月19日 19:08)
聽起來有些「吊詭」吧   吊詭 > 弔詭
當Google(缺字)其他網站、公司發生資料外洩事件   (缺字) > 發現
「將低」比對資料的運算需求  將低 > 降低
「資料」前3個「bite」x3   資料 > 使用者名稱(帳號)  bite > byte
這個「資料」只有Google知道   資料 > 加密方式(金鑰)(?)
這個「資料」只有使用者知道   資料 > 加密方式(金鑰)(?)
建議讀者維持密碼「檢」功能開啟   檢 > 檢查
可「以」同步與Google服務選項中   以 > 在
訪客
2.  訪客 (發表於 2019年12月19日 19:09)
Q1:本文裡,「登入憑證」、「使用者資料」與「被洩漏的資料」,
   指的通通都是(而且只是)「使用者名稱(帳號)和密碼」吧?
國寶大師 李文恩
3.  國寶大師 李文恩 (發表於 2019年12月25日 18:45)
※ 引述《訪客》的留言:
> 這個「資料」只有Google知道   資料 > 加密方式(金鑰)(?)
> 這個「資料」只有使用者知道   資料 > 加密方式(金鑰)(?)
>
感謝提醒,已修正

上面2組字詞是為了在圖說中簡化用語,讓一般讀者比較容易理解而刻意使用「資料」,來稱呼以金鑰加密過的密文。
國寶大師 李文恩
4.  國寶大師 李文恩 (發表於 2019年12月25日 18:47)
※ 引述《訪客》的留言:
> Q1:本文裡,「登入憑證」、「使用者資料」與「被洩漏的資料」,
>    指的通通都是(而且只是)「使用者名稱(帳號)和密碼」吧?
>
Google官方文件中沒有說得很清楚,我覺得比較可能的是指登入的Token或帳號和密碼以明文方式洩漏
訪客
5.  訪客 (發表於 2019年12月25日 19:20)
Q2:發生使用者資料外洩事件時,只有受害網站(或公司)與駭客手中握有那些帳號密碼,
   被公開的機率並不大(兩者通常是私下與受害者聯絡)。Google要如何取得這些資料?

Q3:假設網站(或公司)在儲存使用者密碼時,是先加密之後再進行儲存,
   那麼這個機制就無法發揮用處?(因為比對永遠不會符合)

Q4:步驟3說明文字,伺服器傳給使用者的,除了自己的被加密資料,
   是否也包含所有跟自己『使用者名稱前3位元組雜湊值』比對相同的,
   且經過加密之那些被洩漏的資料?

發表回應

謹慎發言,尊重彼此。按此展開留言規則