前言
其實感覺現在說這個太out了,我看網路上最早的文章是從2017年就開始說這個,至於為啥我現在來說?因為我也是才知道啊,畢竟,Safari對我來說只是個擺設,我的主力瀏覽器一直是chrome~。
我也是最近無意中在知乎刷到這個,因為偶爾我也會用Safari來測試,感覺和我也不是完全沒有一點關係,所以才花時間研究了一下,看看這麼久過去了情況有沒有什麼變化,隨便水一篇。
何為"欺騙性網站警告"?
先看看國銀ios上關於"欺騙性網站警告"的說明:
再看看macos上關於"欺騙性網站警告"的說明:
簡單來說,就是蘋果為了使用者的安全,在使用者使用其Safari瀏覽器瀏覽網址的時候,會使用外部安全機構提供的資料庫來驗證使用者所存取網址是否安全,如果驗證的結果是不安全,則Safari瀏覽器會封鎖該網址的載入並提示"詐騙網站警告":
當然,用戶可以自行選擇繼續點擊"訪問此不安全的網站"(不過我也有看到說點擊訪問也不行,必須關掉"欺詐性網站警告"功能才能的),但是,我相信大部分人會選擇不再繼續訪問,這是出於對蘋果的信任。
問題點在哪?
以前外部安全機構都是"谷歌安全瀏覽",但是從2019年9月(或者10月)開始,"中國大陸"被單獨拿出來(現在則變成了"中國大陸"或"香港"),由"騰訊安全瀏覽"負責。
相信大家都清楚騰訊的習慣(微信發網址,用微信內置瀏覽器經常打不開,說被舉報異常;qq發訊息,正常的網址可能也會被標紅~,但是電腦瀏覽器卻能正常打開),再加上這句話:Google(對於地區設為「中國大陸」或「香港」的用戶而言,則為騰訊)也可能會在收到相關資訊時記錄你的IP位址,這就嚇到了不少人,因為的確有人之前用Safari瀏覽器能正常訪問的、自己知道沒問題的網址,在這之後出現了被"欺詐性網站警告"阻斷訪問的事,所以造成大家紛紛關閉了"詐騙網站警告"這個功能。
"欺詐性網站警告"實現原理
問題:Safari瀏覽器和外部安全機構之間是如何驗證使用者存取的網址是否是安全的?難道Safari瀏覽器會直接把使用者造訪的url和IP位址寄給外部安全機構?
查了一下,看似早期的時候(只有"谷歌安全瀏覽"時)還真是這樣,那時候谷歌就是提供的一個API,瀏覽器會直接將用戶的URL發給谷歌提供的API進行查詢,所以那段時期,Google還真是能夠獲得用戶存取的完整URL以及用戶的IP位址,這個API現在依然存在,叫做Lookup API:
為了解決這些問題,Google很快就提出了一種更安全的"安全瀏覽"方法。這種新方法被稱為"更新API",它是這樣運作的:
1、Google首先計算資料庫中每個不安全URL 的SHA256 雜湊值,然後將每個雜湊值截斷為32 位元前綴,以節省空間。
2、Google將截斷哈希值資料庫傳送到你的瀏覽器。
3.每次存取URL 時,瀏覽器都會對其進行雜湊,並檢查其32 位元前綴是否包含在本機資料庫中。
4.如果在瀏覽器的本地副本中找到該前綴,瀏覽器就會將該前綴發送到Google 伺服器,後者會發回匹配URL 的所有完整256 位元哈希值列表,這樣瀏覽器就可以檢查是否完全匹配。
在每次請求時,Google伺服器都會看到使用者的IP 位址以及資料庫狀態等其他識別資訊。
毋庸置疑,Lookup API 是隱私的災難,而"更新API "的隱私性要好得多:原則上,谷歌應該只知道一些瀏覽請求的32 位哈希值。此外,這些被截斷的32 位元雜湊值不會精確地揭示你正在訪問的URL 位址,因為在這麼短的標識符中可能會有很多碰撞,這就提供了一種匿名形式。
這種方法的缺點是只能提供部分隱私:一般用戶不會只訪問一個URL,他們會在一段時間內瀏覽成千上萬個URL。這意味著提供者如果要想消除用戶的匿名性,就需要收集更多該用戶訪問的URL資訊。如果用戶瀏覽了許多相關網站,就會逐漸向提供者洩露其瀏覽歷史的詳細信息,而這時如果提供者是願意,其實是可以將這些請求聯繫起來推算出用戶訪問了哪些網站。
雖然上面只提到了谷歌,但是估計騰訊應該也會採用一樣的方式,所以用戶是否信任Safari瀏覽器在瀏覽網址的時候發出的"欺詐性網站警告",就要看這個用戶是否信任"安全瀏覽"的提供者了。
"詐騙網站警告"選項開啟的影響
其實在騰訊剛接手的時候,應該還沒有啥輕重,習慣性的把很多"自己定義"的不良網站加入了"欺詐性網站"的名單中,導致了很多區域是中國大陸的用戶在使用Safari訪問自己習慣造訪的網站時被"警告":
雖然我不知道上圖中他們談論的是啥站,但是這樣肯定會大大的影響蘋果的形象,所以我估計後面肯定經過了交涉,騰訊應該提供給蘋果的"安全瀏覽"庫和國內微信、qq上使用的有了相當大的差別,不會再動不動就出現"欺詐性網站警告"了。
該不該關閉"欺詐性網站警告"?
前面說了那麼多,結論是啥?到底該不該關閉"詐騙網站警告"這個功能呢?
講道理,騰訊雖然肯定會有些小動作,比如在"安全瀏覽"庫中加些佐料,但是,它的"安全瀏覽"庫中肯定絕大部分有問題的網址的內容還是真的,完全關掉也有點浪費,那我們分情況來討論:
1.如果你本身就比較專業,懂得很多,很有把握經常訪問的網站都沒有問題,更不會去訪問有問題的網站,那麼其實可以關掉,因為懂得多,顧慮也多。
2.如果你對這方面不太懂,無法分辨哪些網站有問題、哪些網站沒問題,而你也不會去訪問不該訪問的網站,那麼完全可以打開。
3.如果你又想享受平時的"欺詐網站警告",有時候又想訪問一些不可言說的網站,而你還擔心被記錄(雖然可能性很低),那麼只要你精力好,完全可以平時打開,而需要時關閉,不需要時又開啟。
4.其實還有一種,就是我這樣正直的人,完全問心無愧,會保持打開!
另:前面只是為了截圖臨時關閉,現在都打開了!
這讓我想到有一些瀏覽器有檢測你使用的密碼有沒有被洩露的功能– have i been pwned?。採用的也是類似機制,瀏覽器想知道你的密碼明文是輕鬆的,但是處於安全考量不能這麼做。先將你的密碼進行hash,截取hash值的一部分,將這部分發送給瀏覽器官方,因為收到的是hash值且一部分,所以瀏覽器官方不可能知道你的密碼具體是多少,然後在已洩漏的密碼資料庫裡找到匹配這部分hash的數據,將其返回給用戶,用戶端再將其密碼與這部分返回的數據進行比對,如果在返回的數據裡有相同的,那麼意味著用戶的密碼在洩漏的資料庫裡,表面使用者使用的是弱密碼或密碼已經外洩。
之前在某個部落格裡了解到的,但是怎麼到找不到原文了,這個機制還有個名詞叫做「k-匿名性」。