短信驗證碼的背后
引:短信(SMS)驗證碼已經被各種各樣的應用作為雙重認證的主要手段之一,為什么還要將生物特征識別作為作為雙重認證的趨勢之一呢?短信驗證碼是否是安全的呢?如果不安全的話,背后的機制又是什么呢?本文編譯自Roger Piqueras Jover的一篇文章https://queue.acm.org/detail.cfm?id=3425909,希望在選擇將短信作為雙重認證方式的時候,多一些考量,多一點兒思考。
早在上世紀90年代中后期,互聯網開始成為了PSTN線路繁忙的主要因素之一。在接下來的十年里,互聯網在線服務完全改變了社會與科技的互動。從電子郵件到電子商務,這些服務越來越多地將人們和互聯網聯系在一起。
雖然密碼的概念在許多技術領域中很普遍,但除了銀行卡的密碼外,一般大眾對此知之甚少,是互聯網向他們介紹了密碼安全的概念。從那時起,人們意識到他們必須記住密碼才能訪問他們的電子郵件賬戶、最喜歡的電子商務網站等等。
在那個時候,只需要一個密碼就可以解鎖一個賬戶,而且密碼要求非常寬松。網絡安全的前景遠沒有現在這么具有挑戰性,特別是在消費者賬戶的安全方面。對于某些行業也有例外,例如銀行業,密碼要求稍微嚴格一些,在成為其他網站的一種選擇之前,使用了主要基于 IP 地理位置的隱式雙因素認證。然而,普通消費者通常只需要一個簡單的密碼就可以訪問高度安全的數據存儲庫,同樣的密碼經常被多個賬戶重復使用。
如今,互聯網安全需要更多的關注。電子郵件賬戶多年來不僅成為高度敏感和私人數據的大型儲存庫,也成為了互聯網上數字足跡的單一故障點。例如,大多數在線服務都允許通過向用戶的電子郵件帳戶發送電子郵件來重置密碼。因此,如果一個電子郵件帳戶被入侵,許多其他帳戶也可能在短期內被入侵。
隨著安全威脅格局的改變,密碼的使用方式及其復雜性要求發生了變化。盡管許多在線服務并沒有真正遵循最佳實踐,但人們普遍認為,密碼應該是高度復雜的,以便最大限度地利用它們的熵,從而大大增加破解密碼所需的時間。
然而,增加密碼的復雜性不是正確的解決方案。密碼短語被證明具有更高的熵,也更容易被記住。另一方面,強制密碼輪換,再加上嚴格的密碼復雜性策略,可能會導致更弱的密碼。此外,作為一個經驗法則,現在已經認識到,如果密碼不存在于任何外泄憑證的公共存儲庫中,那么密碼可能不一定需要輪換。
隨著密碼的安全性、可用性和易于記憶性不斷面臨挑戰,安全行業認識到,網絡賬戶的安全性不應該只由用戶知道的東西(如密碼)來保護。有點類似于銀行的做法,需要用戶擁有的東西(例如銀行卡)和用戶知道的東西(例如卡密碼) ,在某些情況下還要求使用雙重認證。第二重認證必須是用戶擁有的東西,一個顯而易見的簡單選擇就是用戶的手機。
為在線帳戶啟用雙因素身份驗證對其安全性至關重要。每個人都應該在(至少)自己的電子郵件賬戶,以及存儲關鍵和敏感數據(如信用卡號碼)的其他賬戶中啟用這個功能。加密貨幣交換賬戶通常是網絡犯罪分子的目標,也應該通過多種形式的身份驗證加以保護。這些賬戶所保護的東西具有潛在的高額貨幣價值,這使它們成為一個有趣的案例,用來研究什么可能是第二種形式身份驗證的最佳選擇。例如,短消息服務(SMS)作為第二種形式的身份驗證,對于某些類型的在線賬戶是個好主意,但對于那些在網上交易中擁有大量加密貨幣的人來說,它并不是最佳選擇。
基于短信的身份驗證是保護在線賬戶安全的常用選項,而且它們肯定比單獨使用密碼更安全。然而,蜂窩網絡的安全史表明,短信并不是一種安全的通信方式。從流氓基站到更復雜的攻擊,有許多已知的方法可以在本地和遠程竊聽或者暴力破解文本信息。因此,對于存儲具有較高財務價值的資產(如加密貨幣)的賬戶,此方法不是最可靠的方法。
基于短信的多因素身份驗證的安全挑戰主要有蜂窩安全缺陷、七號信令協議的利用,以及被稱為SIM卡交換的簡單而高效的欺詐方法?;谶@些認知,我們可以判斷用戶的在線賬戶是否應該使用短信驗證。
短信 vs 一次性令牌應用
對于標準的消費者在線賬戶,提供第二重認證的兩個主要選擇通常是通過短信或利用用戶智能手機上應用程序生成的一次性令牌。后者更為安全,應用于高度安全和敏感的賬戶,但前者的使用最廣泛,在某些情況下可能是一個有效的選擇。然而,除了它們的安全性之外,這兩種選擇在便捷性性和可用性方面有著非常不同的優點和缺點——這是安全設計時需要考慮的重要因素。
應用程序生成的令牌
應用程序在用戶設備上生成的一次性令牌是對在線賬戶實現雙因素身份驗證的最安全方法,無需消費者使用非標準硬件(如 RSA 令牌等,這些在企業場景中更常見)。除此之外,還有一些優點和缺點。
無論哪種選擇的主要考慮因素之一都是網絡連接性。應用程序生成的令牌不需要網絡連接,其便利性與通過短信接收令牌的網絡連接性的嚴格要求形成對比。雖然網絡連接被認為是無處不在,但是在一些情況下,用戶可能需要在超出電信網絡的覆蓋范圍時訪問一個帳戶。
基于應用程序的令牌傳遞的另一個優點是,這些應用程序通常可以與多個在線賬戶一起注冊和使用。然而,用智能手機應用生成令牌的主要可用性挑戰在于,管理這樣一個應用程序(以及它所利用的加密資料)需要額外的努力。一般來說,將智能手機備份到云端是最常用的方法,它不會將這些加密資源保存為備份數據的一部分。這些資料也不會保存在計算機未加密的本地備份上。即使在使用密碼鎖定本地備份時,也不是所有都與密碼一起存儲。例如,如果用戶的智能手機丟失或被盜,甚至如果他們買了一部新手機,這可能會導致用戶被鎖定在他們自己的賬戶之外。在這些情況下,所謂的“備份代碼”很重要。根據經驗,在新的智能手機完全安裝完畢、雙重認證應用重置之前,用戶永遠不要擦除舊的智能手機。
短信令牌
通過短信接收的雙因素身份驗證令牌對于典型用戶來說往往工作得很好,因為它們對用戶來說很容易。不需要在用戶的設備上安裝應用程序,也不需要任何的備份代碼管理或備份計劃來處理丟失或被盜的設備。當用戶得到一個新設備時,不需要重置雙重認證系統,因為短信與電話號碼綁定在一起,而電話號碼在新設備上通常是保持不變的。
缺點是,基于短信的身份驗證需要蜂窩網絡的主動連接。盡管大多數基于短信的通信發生在 IP上,短信的第二重認證令牌通常是通過蜂窩網絡的標準短信發送的。因此,僅有 Wi-Fi 連接是不夠的,還需要有效的蜂窩連接。這在某些情況下是具有挑戰性的,在這些情況下手機服務參差不齊或者網絡不可用,或者連接受限于802.11網絡。
盡管存在安全挑戰,但基于短信的身份驗證令牌是一種廣泛使用的選擇,目前的設備制造商都支持。例如,蘋果最近在 iOS 14中宣布了一項新功能,強化了短信代碼,以防止試圖欺騙用戶的惡意應用程序利用短信代碼( https://developer.Apple.com/news/?id=z0i801mg)。
基于短信認證的安全挑戰
盡管雙重身份認證很方便,并且被大量的在線服務使用,但是通過短信進行雙重身份認證仍然面臨著巨大的安全挑戰。這些技術包括對蜂窩網絡協議的一些復雜威脅(要求對手靠近目標受害者)和SIM卡交換技術(盡管技術復雜度要低得多),這些技術沒有范圍限制,可以以接近零的成本實施。例如,移動通信系統中最大的安全威脅之一是 SIM 卡交換,這是一個系統性問題,涉及到移動運營商如何在其客戶服務平臺上驗證用戶身份。
移動電話網絡安全
第一代移動網絡(1G)缺乏對加密的支持,傳統的2G GSM網絡缺乏相互認證,采用了過時的加密算法。GSM 協議棧開放源碼實現的廣泛可用性導致了許多可能的 GSM 無線電鏈路漏洞(如圖3所示)。具體來說,部署惡意的 GSM 基站并對 GSM 連接實施全面的 MITM 攻擊所需的技術和工具都已經商品化了,盡管它們要求對手在物理上接近給定的目標。低成本的軟件無線電和 GSM 協議棧的開源實現可用于攔截移動通信,包括了 SMS 消息。在不太嚴格的近距離限制下,通過在回復針對另一用戶的尋呼信道消息時觸發競爭條件,可以攔截 SMS 的流量。
在3G 和 LTE (Long-term Evolution)移動網絡中,采用了更強大的加密算法和雙向認證標準來加強保密性和認證。正因為如此,LTE 通常被認為是安全的,因為它具有相互認證和強大的加密方案。因此,保密性和認證被錯誤地認為已經得到了充分的保證。然而,LTE 移動網絡仍然容易受到協議漏洞、位置泄露和流氓基站的攻擊。
盡管有強大的用戶通信和相互認證的加密保護,但是大量的控制平面(信令)消息通過 LTE 無線鏈路定期交換。在執行連接的認證和加密步驟之前,移動設備與任何 LTE 基站(真實的或流氓的)進行實質性的對話,這些基站用正確的廣播信息為自己做廣播。從移動設備的角度來看,來自基站消息的隱含信任造成了嚴重威脅。許多具有關鍵安全影響的操作在被這些隱式信任的消息觸發時執行,這些消息既沒有經過身份授權,也沒有經過身份驗證。
在大規模網絡攻擊的時代,最大的民用通信系統必須依賴于隱私協議,而不僅僅是基于看起來合法的基站隱式信任。反之亦然,基站隱式信任來自移動設備的所有預認證消息。
雖然一個惡意的 LTE 基站不能發動一個完整的 MITM 攻擊,但是一些技術可以悄悄地將一個現代智能手機降級為一個易受攻擊的 GSM 連接。所有這些技術的共同點是他們利用并濫用了這種預認證信息。
隨著業界準備迎接5G 時代的到來,這種下一代移動網絡的安全架構正受到嚴格審查。然而,目前大多數 LTE 中基于消息的預認證協議漏洞仍然適用于5G 網絡。因此,鑒于目前這種移動通信系統的規范,悄悄地降低智能手機成為GSM 鏈路的連接仍然是可能的。通過利用這些漏洞,對手可以成功地攔截通過短信發送的雙重認證令牌。
然而,通過攔截 GSM 流量從 SMS 消息中攔截令牌是技術上最復雜的選擇。盡管這種攻擊可以通過低成本的軟件無線電和對開源工具的小修改來實施,但絕大多數通過攔截通過SMS傳遞的身份驗證令牌進行的欺詐都利用了SS7或SIM卡交換中的漏洞。
SS7安全性
七號信令是30多年前開發的體系結構和協議。它為 PSTN 的一些功能提供帶外信令支持,即呼叫建立、計費、路由和信息交換。從1988年開始,當移動運營商開始利用它進行帶外信令時,該協議的安全性主要依賴于運營商之間的隱含信任。它被認為是一個封閉的可信網絡,并且沒有內置認證。因此,這個網絡和協議的安全特性很小,取決于全球少數國家的控制或大公司的運營商。但現在情況不同了,由于移動設備的使用量急劇增加,以及過去全球移動虛擬網絡運營商數量的增加,導致運營商的數量大大增加。
3GPP在20世紀90年代和21世紀初為 SS7增加了兩個新的協議: MAP和 CAMEL。其目的是支持移動網絡提供的一些新服務,以及為移動運營商提供的新功能。同時,MAP 提供了全局地理定位設備的服務。遺憾的是,這些新的 SS7子協議都沒有添加身份驗證或安全特性。
SS7中有一些關鍵的安全漏洞,這些漏洞可以被用來對用戶進行地理定位,并在幾乎任何地方攔截他們的通信,還可以通過黑客入侵的 femtocells 進入 SS7網絡,在一些特殊的情況下,還可以從移動運營商那里購買訪問權。更糟糕的是,利用 CAMEL 協議的漏洞可以遠程攔截電話和短信。
一旦攻擊者可以訪問 SS7網絡的入口點,就 GSM 而言,只需要一條消息就可以修改 MSC (移動交換中心)中給定目標的注冊。從那一刻開始,MSC 將與攻擊者取得聯系。
現代 LTE 網絡大部分基于 ss7的服務都遷移到 Diameter 協議。這個新協議提供了一些改進,仍然有一些漏洞,其中大部分是從 SS7 繼承的缺陷,因此,類似的遠程攔截呼叫和短信仍可能存在于 LTE 中。只要距離目標足夠近,悄悄地將智能手機降級到安全性更低的 GSM 連接是很簡單的。
利用 SS7網絡及其協議中的安全缺陷是截獲通過 SMS 傳輸的雙重身份驗證令牌的一種相當有效的方法。一般來說,這是一種被黑客團體所使用的攻擊載體,在MITRE ATT&CK的框架內已經被考慮到,并被許多技術公司廣泛采用,作為其安全體系的一部分。
SIM 卡交換
盡管短信截取技術利用了蜂窩網絡協議和遺留 SS7網絡中的缺陷,但 SIM 交換才是對短信通信的頭號安全威脅。
如圖5所示,SIM 交換攻擊包括了對移動運營商的欺騙,通常是通過與客服部門的電話通話,將賬戶移植到新的 SIM 卡上。例如,打電話者可以聲稱電話在海外丟失,需要在新購置的電話和新的 SIM 卡上盡快恢復使用權。
一旦攻擊者成功地將受害者的賬戶移植到自己 SIM 卡上,剩下的攻擊就相當簡單了。從那時起,攻擊者將成為受害者的手機號任何電話和短信的目的地。因此,攻擊者將接收到請求的任何雙重身份驗證令牌。
這種類型的攻擊實現起來很簡單,并且占據了大多數需要攔截身份驗證令牌的漏洞。鑒于 SIM 卡交換攻擊所需的低成本和低努力,欺詐和詐騙團伙正在設計更復雜的方法來擴大他們可以接管的賬戶數量。例如,SIM 交換者賄賂客服人員為他們進行交換,甚至利用惡意軟件攻擊呼叫中心使用的遠程桌面技術。
有趣的是,基于 SIM 卡交換攻擊的欺詐性網上賬戶收購并不復雜,而且難以緩解。對于網上銀行和金融服務的普通消費者而言,SIM 卡交換可以說仍是最大的安全風險之一。
結束語
盡管短信認證非常流行且易于使用,但它可以說是雙重認證中最不安全的形式之一。但是,這并不意味著它是一個保護在線帳戶的無效方法。
誠然,有一些服務不應使用通過短信發送的令牌ーー例如銀行和金融服務、加密貨幣服務,以及任何包含敏感金融信息、信用卡號碼等的服務。個人電子郵件地址也屬于這一類。如果電子郵件賬戶是用戶在線數字身份的基石,那么接管電子郵件賬戶可能會帶來毀滅性的后果。
另一方面,有許多基于短信的在線服務對普通消費者來說已經足夠了ーー例如,任何不存儲敏感或財務信息的普通賬戶,攻擊者無法輕易將其貨幣化,從而阻止他們首先嘗試接管賬戶。
在決定哪種多因素身份驗證方法是最合適的時候,其他的變量也應該考慮進來。對于一個擁有數百萬粉絲的知名個人而言,社交媒體賬戶的安全性影響與對于一個只有少數粉絲的賬戶而言是非常不同的。因此,盡管使用短信作為某些社交媒體賬戶的第二個認證因素是完全有效的,但對于名人的賬戶來說,選擇一種不同的認證方式是明智的。
目前的安全形勢與二十年前大不相同。無論在線賬戶的關鍵性質如何,無論選擇何種方法,使用雙重身份驗證都應該是默認選項。隨著大量泄密和其他入侵事件的發生,許多用戶名和密碼組合落入了不法之徒手中,使得密碼攻擊變得廉價且容易實現。