搜索
Table_bottom

标签云
Table_bottom

分类
Table_bottom

声明
文章若未特別註明,皆採用 知识共享许可协议 請自覺遵守
Table_bottom

鏈。。。
Table_bottom

存档
Table_bottom

匆匆过客
88840
Table_bottom

功能
Table_bottom

從何而來的安全

先說引子:

某日在fuubo中轉發微博,提示出錯。反復多次,皆是如此,於是上網頁版的排查。然而打開之後提示“系统检测到您的微博帐号近期存在异常,已锁定部分功能。为保障帐号安全,请立即修改密码。”如圖:

我心想:應該是因爲我在新移動設備的網頁端登錄微博,並且轉發了一個,所以說我有安全風險。那麼既然這樣,就改吧。

然後點擊了修改密碼,然而跳轉到的頁面並不是修改密碼的頁面,而是:https://security.weibo.com/rmabnormal/verifyadd

WTF!

先觀察網址:這是一個通用的頁面,而不是和我賬號直接相關的頁面。(而且其路徑也昭示了其作用。)

然後,看其中的文辭:“请填写一个有效的手机号用于验证您的身份”。

什麼叫“有效的手機號”?由上一個步驟我們知道這並不是我賬號相關的頁面,所以說並不是新浪數據庫中存儲的和我賬號相關的某個手機號。退一步說,即使這個步驟是想要依靠手機號來索引(查明)賬號,那麼也是不可能的。爲什麼?因爲我從來都沒有給新浪過我的任何手機號!我的新浪微博是使用新浪郵箱註冊的,新浪郵箱的安全通知機制是安全郵箱而並不是手機;而除了微博中公開的信息以外,我沒有在其中增加任何和我個人隱私相關的信息。

綜合下來,這個“有效的手機號”只能有一個解釋:任何人的手機號!

重新看看標題和副標題:“解除帐号异常——您的帐号存在安全风险,请按照如下流程解除异常”。莫大的諷刺:我的賬號有安全風險於是受到限制,而解除該限制的方法是使用任何一個人的手機號。換句話說:任何人都可以用這個頁面填寫手機號,然後通過驗證!

所以這究竟是爲了我賬號更安全,還是不在乎我賬號的安全?

 

這只是某風氣的一個體現而已,其所反映的是網絡上很多企業/公司在推行的一種方案:收集用戶手機號。名義上,這些公司收集用戶手機號號稱是“爲了用戶賬號安全着想”。然而是否有人想過,該做法保證的是什麼安全呢?

首先通過觀察我們可以發現,獲得用戶手機號之後,服務提供方所採取的方案分爲三種:1、在登錄時就要求手機獲取驗證碼,不正確則無法登錄(或者說兩步驗證);2、在異常時給用戶發送通知;3、在某些特定情況下(如用戶想要修改密碼時)發送驗證碼用以鑑別身份。

當然,還有第四種:只收集手機號,之後什麼功能都不提供。不過由於這種情況顯然並沒有提高安全性,所以就不討論了。

網絡賬戶涉及到的可能不安全之處有這些:1、服務提供者本身泄密;2、用戶將密碼告知並不足夠可信的他人;3、用戶在不可信之處填寫自己的賬號密碼;4、用戶所用設備有惡意軟件;5、用戶密碼過弱導致被暴力破解;6、通信鏈路中數據明文傳輸且受到截獲。

其中第一點要看服務提供方自己的能力以及素質,這點我們作爲用戶只有兩個選擇:1、相信提供商;2、不使用其服務。而受制於很多因素,一些服務我們不得不使用(如教育部將某些學生必需的服務交與一些第三方企業提供),這種情況下我們就沒有選擇了。對於這種,一個手機號(無論採取哪種方案)無能爲力。

第二點其核心問題在於用戶本身:爲什麼要將密碼告知於一個不可信的人?互聯網上的例子可能感覺不明顯,我來舉個生活中的例子:我們應該經常見到新聞中報導某人受某些因素影響(謊稱中獎、公安等)將自己銀行卡中的資金轉到騙子處。對於這種情況,即使加入手機驗證(無論1/2/3)這一步驟,用戶依然會將驗證碼交給那個人,並不能保證安全。

第三點涉及兩方:1、用戶;2、盜取信息的網站。(順便一提:在我看來,在這種途徑中用戶泄漏賬號密碼,用戶的責任至少有一半。)在用戶這邊,所看到的是一個(無論是否貌似正常的)登錄區域,於是信手將賬號密碼填入;在網站那邊,它可以獲得所有人輸入的賬號密碼,不論是否正確。看起來這時候方案1可以有效解決問題——驗證碼是一次性的,即使對方獲取到了你的賬號密碼,沒有驗證碼也無法登錄你的賬戶。然而這種想法中有一個重大漏洞:假站點如果也要求輸入驗證碼呢?假站點可以通過你給它的真實驗證碼登錄你的賬戶,然後做出一些動作(例如給其他人發消息騙取錢財之類)。而方案2對此束手無策,最多只能事後告知,之後用戶去避免損失擴大(然而需要用戶“主動”,這種“主動”對許多用戶來說是堅決不可接受的);方案3面臨的問題和1類似,甚至還不如1的效果——直到修改密碼前都可以隨意登錄。服務商要求手機在這點中起到的唯一作用(而且需要方案1)就是:提高騙子行騙的技術門檻。

第四點中惡意軟件不包含虛假登錄框(因爲這樣和第三點就一樣了),而是指那些可能竊取用戶賬號密碼的軟件。這樣的話,方案1確實可以有效解決問題(參考第三點中的分析);而方案2/3則只能事後補救,且一些用戶堅決不願意如此做。

第五點則是(無論國內國外)許多人很容易犯的一種錯誤,而且這些人無論其他人怎麼呼籲,他們都不願意去修改自己的做法,於是導致這麼多年過去依舊大有人在。在該問題中,方案1可以有效解決;方案2/3只能事後補救。(然而如果用戶不願意爲自己的賬戶安全着想而設置較複雜的密碼,那麼爲何還依然要他設置靜態密碼而不直接完全使用動態密碼呢?)

第六點問題關鍵不在用戶,而在服務提供商——明知網絡鏈路不安全,仍然明文傳輸緊要信息。(而這樣不負責人的服務商,如何能讓人相信他會爲用戶的隱私負責?如何放心將手機號交與他?)是的,方案1對此有作用,然而依靠這種方案來掩蓋自己提供服務本身的不安全實在是令人不齒,也令人心驚。方案2/3無用,無須多議。

 

綜上:方案2和方案3對於防止非法獲得賬號信息沒有幫助;方案1在3/6的情況下可以解決該安全問題。而在方案1起作用的事件中,第六點並不是應該放任不管事情,所以該狀況不應當作爲增加手機可以防止賬號信息泄漏的支持,所以實際上只有2/5的情況下可以解決問題。而第四點隨着時代(技術)發展越來越少,早已不復當年之多;第五點所涉及的那些人,指望他們意識到安全問題實在是天方夜譚,其爲了安全而主動增加手機兩步驗證也實在是難以想像的事情。所以說是2/5的情況,其實際效果遠遠比狀況比例要低。

這就完了麼?並不是。我們可以注意到:第四點談論的是惡意軟件的問題,也就是病毒、木馬等東西的問題。一個正常的計算機(是的我已經限定到windows上了)上是沒有這些惡意軟件的,而惡意軟件(在windows vista以後)在用戶合理使用計算機的情況下(保持UAC的默認開啓,不下載不受信軟件,不允許非主動開啓的軟件通過UAC權限請求)是很難存在的。我無意在這指責這些人——因爲指責也沒用——而是想到了另一個問題:他們的智能手機也可以(而且是非常可能)感染惡意軟件!是的,我們到這之前討論的都是電腦的情況,而從來沒有考慮過手機假如不安全會如何!於是我們可以想象這種情況:一個人的手機上有一個可以讀取手機號碼、讀取短信(或是僅僅接收新短信)、連接網絡、開機啓動的惡意軟件(只要這四個權限即可),而同樣是這個人在自以爲安全的情況下放心大膽地在某個地方填寫了自己的賬號密碼,而恰好這兩處惡意都是來自同一方(某甲)!於是乎,這個人的賬號密碼被某甲知道了,而且他每次收到的驗證碼某甲也都知道,於是他的賬號安全在似乎是十分安全的情況下片甲不存。

也許有人會問了:“智能手機上惡意軟件哪那麼容易感染?軟件都是系統進行調控的,有沒有都是可以看出來的。”是的軟件是系統調控的,但是你去檢查一下,看看有多少軟件一次性要許許多多權限(手機識別碼、短信、網絡、自啓動只是基礎,相當多的國產軟件都是幾乎要了一切權限)?它們有的是“大公司”產品,有的只是不明作坊的產品,而其核心問題是:源代碼都不開放,作爲用戶無人能知其究竟做了什麼。更何況,由於我朝沒有官方市場(play store),普遍使用的軟件市場中軟件來路均不明,你怎麼保證自己下載到的都是官方所發佈的版本而不是第三方修改過後僞裝的版本?你怎麼知道自己以爲無害的程序不會在後面偷偷做小動作?

不知在考慮過這種情況後是否會覺得觸目驚心呢?自以爲的安全其實根本無法保證安全,它只是把風險從一個地方移到了另一個地方而已。而不巧的是,該風險是否會存在,其僅僅視乎用戶是否有一個良好的使用習慣——其保證者之前是用戶自己,現在仍然是用戶自己!

保護自己賬號安全永遠只能靠自己:不要輕信任何人、使用更安全的密碼、不亂登錄、儘可能使用受信的軟件/服務(開源軟件)。

 

那羣公司們不可能都想不到(加入手機號能提供的安全十分有限),但一個個仍然採取各種手段或勸或騙地收集用戶的手機號,還給通信公司資金以便能夠給你發短信,其目的何在?真的只是“爲了用戶賬戶的安全”嗎?別忘了,相當多的人可是沒有給他們錢的,他們——作爲以盈利爲目的的公司——憑什麼給你投入啊。

現在人們都很喜歡談論一個說法叫大數據,而且一些(不知道資金從何而來的)媒體煽風點火說“大數據時代用戶將沒有隱私”。這種說法背後的道理在哪?就是因爲一些用戶會在各種地方留下許多自己的敏感信息,而計算機軟件可以將這些信息綜合起來,將一個人在各個地方的信息連接起來。該做法的核心在於:有共同項。如果沒有共同項,任憑現在的軟件如何收集信息,也無法將一個人在不同平臺上的信息聯繫起來。聯繫起來之後,會發生什麼就不好說了,例如將你的信息再賣給其他願意出錢買的組織啊什麼的。

這就是爲什麼一個個公司都在收集用戶的各種信息。而爲什麼手機號這麼突出?原因有兩點:1、除了身份證和姓名以外,手機號可以說是一個人最不容易變的地方了;2、用戶往往並不在意自己的手機號,覺得這是“公開”的信息。於是,這些貢獻了手機號的用戶就這麼不知不覺地把自己賣給了那些公司。典型的被賣了還幫着數錢。

 

可以展望一下,當發現現有的收集方法效果不明顯以後,各個公司們還會宣稱:爲了保護用戶賬號安全,全面啓用短信動態密碼,都去提交手機號。是的動態密碼確實有助於保護,但是如果我沒帶手機或者手機沒電的時候該怎麼登錄我的賬號?更或者手機被偷了呢?我在手機上所登錄的所有賬號怎麼辦?

再下一步,公司們應該不滿足於手機號,估計就該收集身份證號了……至於名目嘛,我也可以幫他們想好:爲了確認用戶的身份,減少詐騙現象的發生。扯淡!你作爲一個企業而不是公安部門,如何而又如何能被允許驗證我提交的身份信息是否真實?真的出於某種明目而一定要對應賬號和身份,可以,叫政府來建立和管理數據庫——我寧願相信政府(不出敗類)也不願相信這些公司(不會拿我的身份信息去做別的事情)。

 

時代變了,手段變了,而事情的本質沒變。同樣的,用戶的隱私也一直在自己手裏,只是看自己是否願意去保護。

“十目所視,十手所指,其嚴乎?”“千夫所指,無病而死。”

逸事:死鎖之銳捷與AP

本文早就想寫了,但是直到寫這篇文章時纔決定要寫下來。

 

這件事發生時,我所用的操作系統是Windows 7 64bit Home Premium。

 

我們學校的上網方案採用的是銳捷。

銳捷上網撥號要用它的客戶端,而用電腦共享有線網絡當AP這事也是完全正常的。

本來銳捷客戶端是它的客戶端,使用完全正常。我嫌每次共享網絡都要自己敲一大串命令費事,也爲了給別人設置方便,就寫了個批處理文件來解決。

問題就出在這裏:一旦在開啓銳捷客戶端的同時運行那個批處理,就會發生死鎖。(從彈出UAC提示到客戶端窗口打開,中間需要一段時間,就在那段時間/UAC提示之前運行批處理)

具體表現是:銳捷認證成功;批處理的執行窗口沒有內容,但不會自動關閉;關機永遠無法完成,除非手動斷電。

這個現象經反復測試,每次都會重現。

我猜想原因是銳捷要使用網絡設備,於是進行某種程度的加鎖;而做AP的那個腳本使用Windows(Windows Vista起)自帶的一個叫Microsoft Virtual WiFi Adapter的東西,事先也要加鎖。這兩個動作導致調度出現問題,最後鎖上釋放不掉了……

 

有更清楚者望告知,謝過。

逸事:winsock導致網絡連接異常

(本文實寫於20140701)

昨天艾寧拎着電腦說上不去網,我就順手一查,結果發現這個事。

幾個基本情況:

操作系統是Windows7 64bit Home Basic,360之類的東西在我的勸說下卸載了,殺毒/反間諜軟件用的是微軟的MSE和Windows Defender。

之所以說是異事,因爲本身它有網絡連接,甚至共享網絡(通過自帶的Microsoft Virtual Wifi Adapter)給手機當AP時,手機都可以正常上網。

在確保有網絡連接的情況下(月底了,流量還有不少,就用我的手機當熱點),測試了一些命令,可以訪問因特網:

  • ping
  • tracert
  • nslookup
  • ftp

上面幾個命令發送了ICMP、UDP、TCP數據包,均可以訪問,說明並沒有哪個地方對特定類型包進行過濾。

本來還打算試試SSH,但是沒有合適的工具。抱着碰運氣的心態裝32bit的cygwin(沒有64位的包),嘗試ssh說無法解析,百思不得其解,於是又給刪掉了。

這裏有一個好玩的事:在*nix下,traceroute/tracepath使用的是UDP,而windows的tracert命令發送的是ICMP包。

但是當使用網絡瀏覽器時,不論是HTTP還是FTP都會出問題。

 

最後上網搜查一番,查到了一條命令:

netsh winsock reset

本來衹是抱着試試看的心態,結果還真就有用……

再細查,這條命令的作用是重置winsock。所以我就奇怪:winsock是何方神聖,會引起這麼大的問題?繼續翻閱資料,發現這貨其實就是windows的套接口API,原來叫Windows Sockets API,後來嫌長就給縮短了……

修復了這個問題之後,我仔細問她究竟做了些什麼。結果發現:她什麼都沒做……且網上搜到的那些文章也都說是莫名其妙就出了問題。

所以……原因完全找不到,也不知道這個問題下次什麼時候會發作……

再加上windows經常出現的奇怪死鎖現象(見這篇文章)……

 

三分慶幸:幸好不用windows多年了……

七分憂慮:windows上究竟有多少預料外的事會發生……

 

參考資料:

http://en.wikipedia.org/wiki/Winsock

http://my.oschina.net/u/246088/blog/71531

http://biaobiaoqi.me/blog/2013/04/23/winsock-kills-internet/

 

 

另,如有哪位知道原因,煩請賜教,在此謝過。