聚焦安全:互聯網場景的身份認證方法分析

jopen 12年前發布 | 11K 次閱讀 身份認證

        文 / 肖新光

        2011年末多家國內網站用戶信息泄露,讓許多人意識到安全不再是與自己無關的話題。2012年 3 月《程序員》封面報道,我們分別從身份認證、數據庫安全、中間平臺、終端用戶、云計算等幾個角度為大家剖析安全所涉的方方面面。

        互聯網之前的身份認證

        身份認證是一個古老的話題,從最早的戶籍造冊,到今天的 2 代身份證或社會保險號碼,“我是誰”或“他是誰”的問題貫穿著人類社會的發展。

        身份認證的歷史,是辨識方式演進的歷史。辨識可能是基于個體,如懸賞緝拿畫影圖形,也可能是針對群體,比如兩軍對壘,要身著不同的盔甲以做混戰 中的辨識。身份認證的歷史,也是與仿冒和竊取對抗的歷史,從兵符形狀相合到蓋在圣旨上的“皇帝之寶”圖章,都是在與詐符矯詔進行著斗爭。因此,互聯網身份 認證,并不是孤立新生的技術,它具有傳統的特點,也具有新生的便利性,同時也帶來了新的困難與挑戰。

        如果說網絡對身份識別方式的最大挑戰是身份與物理實體的脫離,那么,一個開放的互聯網所帶來的最大挑戰就是身份的虛擬化一般來說,在現實社會 中,一個合法公民的身份是唯一的、終身的,但在網絡上并非如此。對于大多數網絡應用,用戶都可以自由擁有多個身份,并可以隨時新建或廢止它們,當然也包括 一不小心遺失它們。

        用戶名/口令

        最原始的用戶名/口令安全模式,據說出現在 1962 年 MIT 的 CTSS 計算機之上。其中用戶名用來保證虛擬身份唯一,口令則用于保證虛擬身份安全。用戶名一經建立不可改變,而密碼則可以隨時更改。

        沒有人發現這其中的革命性意義嗎?身份和憑證被區分開了,因為與現實世界一樣,身份是不變的,但憑證則可以更新。互聯網身份認證的威脅也與傳統安全要素一脈相承,包括驗證場景的安全性、傳遞通道的安全性、憑據的質量等。

        第一波威脅

        傳統的用戶名/口令機制遇到的威脅,多來自其圍繞著早期 UNIX 系統那種非常明顯的君子時代的痕跡,但回頭來看,這些威脅實際一直演化至今。

        口令猜測:早期系統可以在低權限條件下實現用戶名列表的獲取,而同時還有默認用戶名和內建賬戶的存在(默認 口令可能為空),這就使口令猜測成為可能。依托某些信息,進行單點的密碼猜解是一直存在的安全威脅,并逐漸推演出,單用戶大密碼檔猜測、多用戶常見密碼猜 測和今天的拖庫后的撞庫攻擊。

        登錄過程嗅探:對于 Telnet 、FTP 這些非常原始的遠程行命令工具來說,其連接場景都不是基于加密協議的。而 HUB 設備本身卻基于廣播,Sniffer 是非常容易的事情。而今天基于主機在 TDI、NDIS 等層次的本機 Sniffer,基于 ARP 欺騙的監聽,和針對無線信號的各種威脅都顯得更加普遍。

        口令文件的抓取:盡管早期的 UNIX 系統進行了基于 MD5 或 DES 的加密,但其權限配置經常相對薄弱,其 Shadow 文件易于抓取,之后就可以進行從容地猜測或者暴力破解,這也可以視為“拖庫攻擊”的雛形。

        但在 1998-2000年,隨著 Switch 取代 HUB 提升了 Sniffer 的實施成本,隨著 Server 系統的安全性普遍提高,隨著 SSL 的逐步廣泛應用,安全威脅呈現出走向桌面的趨勢,圍繞著登錄場景的安全構成了對口令安全的第一輪攻擊。

        登錄場景的安全

        登錄場景的安全,焦點在于攻擊者通過木馬等手段,對系統輸入和輸出信息的獲取。其中包括 KeyLog(鍵盤記錄)、錄屏、遠程控制等手段。攻擊者利用這些手段截取用戶名和口令的輸入過程,從而可以在另一地點冒用身份進行登錄,或者在用戶本機進行非用戶本人的操作。

        而隨著主流桌面系統日趨復雜,更容易遭到相關手段的威脅,根據不完全整理,上述威脅點如表 1 所示。

聚焦安全:互聯網場景的身份認證方法分析

表 1 常見登錄場景威脅

        從場景安全的角度出發,安全工作者和應用開發者想到了很多方法來改善場景安全,除了主機檢查、主機加固和反病毒軟件外,也對登錄過程的安全做了有針對性的嘗試。

        軟鍵盤:用以對抗 Keylog,通過鼠標點擊進行密碼輸入,其主要問題是不能抵御遠程錄屏。

        加擾:在輸入過程加入擾動和解碼兩部分內容,使原始的 Keylog 獲取不到真正的鍵盤記錄信息,其主要問題在于擾動和解碼代碼本身難以有效對抗逆向分析,同時攻擊者總能實現更底層的獲取,實現在加擾前或者解碼后獲得真實的信息。

        前置檢查:用以在登錄過程之間進行安全檢查,包括環境檢查(一般是針對 Keylog 的各個掛接點)和病毒檢查兩部分。而病毒檢查有獨立檢查和外調反病毒軟件兩種。對于獨立檢查,由于不能掛載完整的反病毒引擎和庫,一般都采用的是有針對性的小規則集或者采用云檢測技術。

        盡管有很多產品,聲稱已經徹底解決了登錄過程的安全問題,但多數安全研究者依然傾向認為,在主機環境安全無法有得到效保障的前提下,很難實現這樣一種安全登錄方案—其過程是高安全等級的,并能與其他應用良好的兼容。

        因此,安全工作者開始尋找其他方法,從雙因數的思想出發,尋覓不依賴于主機場景的安全機制。

        密保卡/矩陣卡

        密保卡/矩陣卡作為一度在網游保護中普遍應用的產品,顯然是受到了傳統密碼本思路的啟發。

        其基本思想是,服務商建立若干組不同的位置+信息數據,每組數據對應唯一 ID,這個 ID 與位置+信息的數據以印刷的方式制成物理介質分發給用戶,用戶將相關 ID 與自身賬號建立關聯綁定。之后,服務商則不僅要求用戶登錄過程中輸入用戶名和密碼,亦會要求用戶輸入在該介質上的一些位置信息。

        這是一種典型的雙因數安全思想。其密鑰分發通過傳統的銷售渠道來進行,從而不具備在網絡上監聽的可能。而其自身又通過了刮刮卡等方式保護 ID 信息,來避免在分發渠道中遭遇翻拍記錄等威脅。

        但該機制很快遭遇到了安全挑戰,那就是所謂的位置累計攻擊。由于用戶登錄場景安全難以保證,每次位置詢問的信息均難以避免不被獲取,特別是為了 避免對單個位置信息的猜測式破解,一般該機制都是同時生成多個位置,要求用戶輸入對應信息。因此,攻擊者可以對相關位置信息進行累計。當信息累計到一定程 度,攻擊者就可能進行多次登錄試探,當全部位置都落入攻擊者之手,攻擊者就進入系統,取消用戶賬戶與密保/矩陣卡的關聯。

        這其實反映出了矩陣卡面臨的主要問題,就是其口令空間明顯受到了“工藝”和紙張大小的約束,使其為有限集。為了對抗這種攻擊,服務商只能通過增加張數的方式來增加密碼本的厚度,比如每月一張甚至每周一張。

        如果我們從傳統密碼學的角度看待這種問題,亦能找到原因。目前只有一種密碼機制具備者理論證明級的安全,那就是一次一密。但這一機制由于受到密碼空間的限制,因此顯然是“偽一次一密”。完全是民用級別的安全性。當然由于成本、易于攜帶等因素,其應用依然十分廣泛。

        有人認為由于矩陣卡基于印刷技術,因而成本低廉,但實際并非完全如此。與一般印刷不同,任何兩張密保卡的內容都不同,同時還需要在印刷后準確切 割。因此密保卡都需要特制設備印刷。在密保卡剛剛興起的時期,相關印刷設備均價值百萬。只有在印量足夠大的情況下,相對電子令牌才有成本優勢。

        當然,作為一種頻繁更換的產品,它也為網游廠商創造了一種增值服務的形式。

        手機動態口令

        對采用一次一密思路的體系來說,最大的困難不只在于大量密鑰的生成和管理,如何低成本安全地傳遞密鑰也是關鍵。

        在 PKI 體系中,公鑰算法被作為在同一個信道下可以實施安全會話密鑰傳遞的方案。但落實到目前的節點安全場景來看,無論是 Private Key 本身,還是用以保護它的 Passphrase,都可能被入侵者非常容易地獲取。因此,PKI 除非依托專用硬件,保證 Private Key 不被獲取,否則在解決登錄場景不安全條件下的登錄安全的問題方面,并無優勢可言。

        由于手機的普及,使用文字短信作為動態口令分發的方法,成為一種可行的方案。它的優點是不需要增加其他動態口令設備的成本,而只依托現有電信服務就可以解決問題。

        但這樣的問題,也是明顯的:

  • 第一,如果短信有一定滯后,用戶等待的體驗并不理想,開玩笑地說,手機動態口令最普遍的場景是運營商的網上營業廳,因為只有運營商能保證自己的短信及時到達;
  • 第二,對 GSM 網絡來說,其監聽成本日趨低廉,在定向攻擊中,采用 GSM 動態口令的安全性,可能反而不如 PC+ 靜態口令安全。
  • 第三,相對更大而更尷尬的問題出在手機上,傳統手機的安全性在一定程度上來自于其簡單。當它不再是那個只能進行語音通話和文字短信的無線終端,而 變成一個掌上平臺,當各種木馬開始捆綁進入官方和非官方的 App Store 或電子市場,當越來越多的預裝和復制的應用難以確定其安全性和真實來源時,手機安全性已經明顯呈現出比 PC 更差的趨勢。

        動態口令卡/令牌/電子密保

        能否建立一種機制,既能保證動態口令的一次性,同時又不產生密鑰傳遞的成本呢?如果動態口令的體驗能不依賴于第二信道的實時性,就更為理想。這就要求,在服務器和登錄者之間或者存在一個巨大的共有碼表,或者擁有一個具有隨時一致的元素。顯然,后者最理想的,就是時間。

        為此,基于隨機數種子+時間的動態口令/令牌機制產生了,其工作機理為,服務商為用戶分發一個帶有口令生成機制+顯示屏的電子設備。該設備在交 付給用戶時完成初始化,生成用于與時間結合生成動態口令的唯一參數,該參數在服務端保存,從而完成一個依賴于時鐘的動態口令機制。

        有趣的是,這樣一個動態口令機制在歷史上依然出現過問題。由于考慮到時鐘誤差、用戶操作時間等因素,這個機制必須能保證在一個較短時差之內(默 認一般為五分鐘)的登錄有效,而攻擊者則利用某廠商設計上的疏漏,即允許五分鐘之內采用相同憑據重復登錄,來獲取用戶輸入內容,之后登錄進去取消與動態口 令卡的關聯,或者竊取用戶虛擬物品、修改密碼等。

        這是一個有趣的違反基本原則的設計案例,動態口令卡的設計初衷是保證登錄憑據向一次一密的思想靠攏,具有一次性,但這種問題卻明顯違背了這一原則。

        動態口令卡的安全性遇到的最大危機是 2011 年 RSA 公司被入侵后,計劃召回全球超過 3000 萬個電子令牌。

        USB KEY

        USB KEY 顯然是從加強場景安全的角度來入手的。它利用了 USB 接口設備內置的算法芯片,實現對數字的加密和簽名,通過電路控制,確保憑證不可被遠程獲取。

        攻擊者即使獲得了用戶名和密碼,也無法在其他位置登錄。USB KEY 目前的主要問題是,攻擊者可能是通過遠程控制在被害者主機上進行操作的,而此時對于 USB KEY 體系來說,則無能為力。

        這一問題不僅對 USB KEY 存在,在用戶已經完成登錄過程的情況下,遠端系統都無法識別出操作來自用戶還是來自 Backdoor。

        而我們必須嚴肅指出的是,目前最大的風險是一部分 USB KEY 并不是真正的帶有加密芯片的設備,而是所謂的隱藏數據U盤,但這種偽安全沒有得到足夠的揭露和警示。

        生物識別

        在傳統的物理安全領域,無論我們是否情愿,都不得不遇到一些生物識別的場景。比如我們在辦理某些國家簽證時,必須留下掌紋;有很多單位使用指紋打卡;電影里那些要害部門更是使用虹膜作為入門憑證。

        生物識別的最大意義,在于其與實體身份先天具備的不可脫離的對應關系。從這個意義上,生物識別與互聯網基本匿名原則存在某些對立。但包括 Fackbook 等互聯網巨頭在內,也莫不對臉部識別興趣十足。對生物識別的崇尚和批判,在安全領域一直都沒有停止過。一些反對者認為,至少對于臉部識別和指紋識別來說, 這是更容易在完全無知覺、也無法追溯條件下套取的憑據。這比傳統口令只在輸入過程中才有被 Keylog 或者 Sniffer 的風險相比,要高得多。當然,復制這些憑據的成本自然也高得多,無論是制作指模,還是對面部的 3D 打印。

        而我認為,生物識別技術不適用于互聯網場景的最關鍵原因,在于它是一種可能被獲取,但卻不可廢止的憑據。我們只有兩個虹膜、兩個掌紋和十個指紋,而這使生物識別與上述任何一種安全機制相比,都處于明顯的劣勢。

        傳統的物理安全場景,基本保證了我們的指紋打卡機、虹膜檢驗儀是可靠的(即使只生成簽名數據,不保留原始數據)的,但如果這些手段泛化到一般性 的應用,則這種保障就不復存在。而同時,由于生物識別是在高等級的安全部門普遍采用的,如果互聯網普遍使用,也就加大了敏感人員的個人生物信息被通過釣魚 等方式獲取的風險。當然,虹膜、骨像等認證基本不太可能出現在互聯網的日常應用中,而盡管一些筆記本本身已經默認帶有指紋識別,但攝像頭肯定是最普適的生 物識別設備。因此,臉部識別的爭論和博弈,就會成為焦點。

        但實際上,露一面就上網,或者像刷一下指紋就進電腦一樣,其實就是一個登錄過程的 Agent,充其量是解決了方便性問題而已。如果真的采用這個信息完成登錄過程,那么無疑還是要生成相關的簽名數據傳遞過去,只要有這個生成和傳遞過程, 就有被獲取的可能,因此并不需要用 3D 打印再造一張臉,只要實現一個簽名數據的重放即可。

        巨頭們真正對臉部識別感興趣的原因,絕不是其安全性,而是其巨大商業圖謀。當圖像識別出登錄者臉上的雀斑時,就能定向投放祛斑霜的廣告,這是多么精準的投放!

        尾聲

        安全威脅就像一個永遠不能被抓獲的流竄犯,只能被我們趕來趕去,當我們認為隨著動態口令卡、USB KEY 等的廣泛使用,基于 PC 的關鍵性互聯網業務安全開始獲得一定保障時,安全威脅仿佛又轉入到了對 Server 端的威脅。

        而同時在終端上我們亦無法解決一切問題,盡管登錄過程已經有了保護,但信息交互的全程并不是僅靠加密就能保護的。五年前,當我們分析一個并不盜 號的網銀木馬時,驚詫地發現,它就是截獲用戶轉款操作,把目標賬戶改為預設的賬戶。顯然這是上述任何機制都不能絕對解決的問題,即使 USB KEY 是基于公鑰簽名算法的,也無法判定讓其簽名的數據是否合法。因此,我們當時提出,帶有顯示屏幕并能進行確認操作的“專用安全交易終端”才是終極解決方案。

        五年過去了,盡管類似設備多次曇花一現,但終未能形成氣候,因為這是對應用和便利性的反動,同時,也不可能有絕對的安全端點。如果設備的一點有 Bug,其修補顯然比在 PC 上更困難。安全界與應用界的差距就是這樣拉開的,而當算法界正在零知識和同態加密中鉆之彌堅時,卻發現整個應用領域,還處在是否加密,以及如何正確使用散 列算法的原始困擾之中。而對攻擊陣營,當然也包括白帽研究者,其研究資源和能力卻在不斷地增長,他們安享算法分析領域的最新成果,他們從軟件到硬件的縱 深,都在我們這些純種的防御者之上。

        安全存在的價值不是為了給應用的發展設置這樣或者那樣的屏障,因為我們完全無力約束應用的野蠻生長。安全的價值更不是為了讓用戶穿著 50 斤重的盔甲和防毒面具去上班和晨練,因為 99% 的用戶都拒絕為應對小概率威脅,卻受到持續的困擾。這就是互聯網場景的安全特點。

        作者肖新光,網名江海客,安天實驗室首席技術架構師,研究方向為反病毒和計算機犯罪取證等。微博:weibo.com/seak

來自: www.programmer.com.cn

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!