你的密碼到底有多「祕」?了解「駭客產業鍊」,可能會讓你大吃一驚!
相信你大概也有這種經驗:上網開帳號,密碼規定一定要 16 碼,還要混合數字、符號和大小寫⋯⋯然後你罵:「煩死了,搞那麼複雜幹嘛?我都不在乎了,你那麼在乎幹嘛?其他網站就沒有這麼囉嗦。」──這是因為你不知道 8 碼和 16 碼在安全上的差別有多大,你也不知道駭客可以從這個你不在乎的網站, 一路破解到一個你在乎的網站。
曾經收到過一封某知名電商寄來的 Email,通知我有人用我的帳號在網站上出售高清電視被抓包,要我趕快更改密碼。當然誰也不知道這封 Email 是真的還是假的,保險起見我直接打電話到客服詢問,確認 Email 是真的,客服說有人盗用我的帳號在羅馬尼亞上架 10 台高清電視被 AI 抓包。
我想會被抓包是根據兩個模式: 一是地區,二是行為。一個在美國活躍的帳號突然在羅馬尼亞出現,不合常情;一個從來沒有賣過高清電視的帳號突然上架 10 台電視,也不合常情。好在網站反應快先發制人,但是我一直好奇為什麼有人會知道我的密碼,而且是一個遠在羅馬尼亞的混蛋。
這一類的帳號盜用我相信很多人都經歷過,只是很少有人知道一個遠在天邊的人是怎麼知道密碼的。背後原因有點複雜而且牽扯到好幾個層次,下面一個一個拿出來討論。先從使用者的層次來談。
你的密碼到底有多隱密?
我的密碼被破解的第一個原因,很可能是因為僅採用 8 碼小寫字母。電商帳號是 20 年前開的,那個時代網站密碼管理很鬆懈,只要 8 個字母就 OK,沒有必須混合符號的繁文縟節;如果是今天就會碰上一些煩死人的要求。
破解密碼是一場或然率與運算力的戰爭。密碼安全的關鍵不在你自認字母組合多「密」,而在多長。
假如 8 碼都是小寫字母,那是 2 千億種組合──這個數字聽起來已經大到沒人能破解了?錯!以今天的電腦運算能力,猜猜看大概要多少時間就能破解?
答案是:只要 5 秒鐘!
那還是最「好」的情況,也就是「最多」得花 5 秒鐘。複雜度難不倒電腦,電腦最擅長的就是比字串,它們天生就是靠這行吃飯的。破解密碼沒有秘訣,只需要耐心和速度。電腦做的只不過是一個一個從頭試到尾。所以對抗壞人手中電腦最好的方法,就是把組合弄得更大,大到連電腦都受不了。假如你的密碼連 8 碼都不到,駭客和電腦都在偷笑──對他們來說你根本沒有密碼。
如果 8 個字母只要 5 秒鐘破解,那密碼要長到什麼程度才能讓電腦放棄?不用多,兩倍就好──16個字母就行。從 8 個字母擴張到 16 個字母,背後的複雜度並不是兩倍,而是天文數字,因為一切都以等比級數向上擴張。如果 16 碼都是小寫字母,猜猜看大概要多少時間才能破解?3 萬 4 千年!換句話說,8 碼都是小寫字母,其他通通不變,只是加倍改成 16 碼,破解時間就從 5 秒鐘升級到 3 萬 4 千年。
如果再混入大小寫、數字,那就要 370 億年才能破解。如果你有哪些網站密碼是只有 8 碼,或 8 碼都不到的,勸你新年新希望,趕快去改成 16 碼,讓駭客的電腦累死。或至少把 8 碼加入數字與大小寫──就這麼簡單的改變,就需要一小時才能破解。
你是不是使用了「笨蛋密碼」?
不過密碼夠長了,切記也不能太「笨」。不要以為 16 碼夠長就安全,駭客都有「密碼字典」,世界上常用的笨蛋密碼他都有。他會先從字典下手,根本不必等到海枯石爛。如果你美麗又安全的 16 碼是:12345678abcdefgh,他和電腦又是一陣偷笑。這要花多長時間?答案是:立即破解。只要上了字典,一切完全是免費。順便告訴你一個秘密,世界排名第一的電腦密碼是:password(密碼) ;第二名是:1234⋯⋯這一份愚蠢名單很長,趕快上去看一看,不要被人駭了還感謝你替他省了一筆電費。
可是 16 碼也很討厭,長度剛好就讓你記不住,如果中間又有數字跟符號真的就只能死記。有時候被強迫更換密碼又不能重複以前用過的,只好白紙黑字寫下來,反而適得其反。如果不想這樣折磨自己,那就取個中間點也可以,上述 5 秒就可以破解的 8 碼,只是換湯不換藥增加到 12 碼,就可以把破解時間增加到 3 個禮拜,這樣的小改變卻有高回收值。
當然,大家還是必須理解:把自己的部分做好,只是降低被盜的機率;但帳號無論如何都還是可能被盜用,因為不管怎麼防,這些防範措施都只限於使用者端,你無法掌控網站。如果碰到一個爛網站,駭客可以跳過使用者,從後端直接探囊取物,像跳進魚池裡撈魚。 無論密碼多長、多複雜或多盡責任, 一旦駭客得以直接進到後端,一切都任之擺布、形同沒有密碼。這事雖然由不了你,但至少你可以把破壞力減到最低。
你的密碼存在什麼樣的網站?
所謂「爛網站」是什麼?就是那些該做、該防的都沒有做到的網站。除了歐盟國家,就我所知的多數國家法律,對於網站應該如何保護使用者並沒有詳細規範,開帳戶的時候我們多少都得碰運氣。再解釋得更詳細一點,一個完善的網站應該要把帳號、密碼,以及個資三者完全分開儲存。暫時拋開個資不談,我相信你我最關心的就是密碼如何儲存。
密碼儲存大概可以分 3 種方式, 採用哪一種完全看網站願意花多少心思:
一、明碼(Clear Text):這是最糟糕也最不負責任的儲存法。不但帳號與密碼不分離,密碼還是以原字串儲存。任何幸運的駭客入侵此類網站就可以拿到所有用戶的帳號和密碼,替他省了破解的麻煩。早期的網站都是這樣。現在美國 30% 的網站仍舊是用明碼儲存。歐盟 GDPR(《一般資料保護法》)限定密碼不能以明碼儲存,不過這只及於網站内的歐盟使用戶,對於大型跨國網站歐盟已經開始監督,但對小網站卻是鞭長莫及。
二、加密(Encryption):這個好一點,應該也是最普遍的做法;也就是將密碼加密,讓肉眼看起來只是一大堆亂碼。但問題是加密和解密都需要代碼,所有客戶的代碼又都一樣,一旦代碼被駭,又全部功虧一簣。
三、單向加密(Hashing):這個作法比較完善。因為是單向加密,無法逆向解密。這是一種單向演算法,把密碼變成一串數字(或字母),無法逆轉還原。資料庫甚至不需儲存原始密碼,只需儲存加密後的數值就可以;也就是全世界除了使用者,沒有人知道密碼。對網站而言密碼可以根本不存在,資料庫的功能只是比對打入密碼後產生的數字。即使整個資料庫完全被駭客拷貝,也無法得知客戶原始密碼。
從以上說明可以看出:網站負不負責任,對密碼安全影響非常大。
只是,單向加密還是可以破解,比較難,也得花些本錢。花這麼大的成本,駭客對你的個人帳號並沒興趣,他們意在大規模破解後拿到黑市販售。這是另一個層次企業化的駭客,至於他們為什麼神通廣大能夠破解,暫時留到後面談。
那該怎麼防駭?
總之駭客如果幸運入侵明碼儲存的網站,就等於撿了大紅包,不管密碼有多周全也是一目了然。也許你在爛網站裡沒有任何資料,只不過是一個帳號讓你登入而已,你認為駭客騙不到錢或任何資料⋯⋯問題就出在這裡, 他的目標未必是在那個網站──他們也知道爛網站裡可能並沒有好料,他只是要拿你的密碼去打開其他更有料的網站。這又牽扯到下一個問題:你終於創造出一個 370 億年才能破解的密碼,所以每一個網站都採用那個好得不得了的密碼。但一個不負責任的爛網站,讓那個 370 億年變成以肉眼可讀的明碼攤在陽光下,然後你所有的網站帳號都被一一盗用。我的電商帳號被駭可能就是因為一套密碼走天下。
所以要防駭,就不要所有的網站都用同一個密碼。42% 的美國人在不同網站上用同一個密碼, 這些人大概不知道世界上有這麼多爛網站,讓密碼攤在陽光下等駭客來。這些網站通常完全没有安全措施,常常成為被駭的對象。假如都用同一個密碼,一個破口就會讓安全密碼形同虛設。一般美國人平均有 100 個帳號,照上面 30% 的明碼率,就大約有 30 個安全缺口──只要其中任何一個淪陷,100 個帳號就都會淪陷。你能說這不是個大紅包嗎?所以勸你新年第二個新希望,趕緊把不同的網站改成不同的密碼。
最重要的是 Email 密碼一定要分開獨立,任何人一旦有了你的 Email 密碼,就可以到所有網站說密碼忘記,請把臨時密碼 Email 給我──那是入門的總鑰匙。
碰上企業化駭客入侵怎麼辦?
以上討論的都是對個人帳號有興趣,想盜用你的帳號,這是混混的做法。然而上游的大盤是把你的密碼當作商品放在網路黑市販賣,他們是密碼供應鏈的龍頭。這些犯罪組織有資本、有人力、 有技術也有耐心,連不可能破解的單向加密,在他們手裡也可以破解。這些組織大部分在東歐或蘇俄,這或許也回答了為什麼我的電商帳號是由羅馬尼亞登入,畢竟羅馬尼亞除了吸血鬼還盛產駭客。
他們駭入知名大網站,把資料整個拷貝出來,用雲端電腦機群日以繼夜地測試每一個客戶不同的排列組合,比對加密數值。只要中了一個,所有相同的數值同時都破解,因為同樣的密碼產生的數值也一樣。所以這裡再扔出一個建議:密碼要獨特,不要用「菜市密碼」幫駭客投資一分回收百倍。
單向加密數值除了使用者本人沒有人知道密碼,一切都得靠系統化地用排列組合比對。只要有足夠的時間和資源,沒有無法破解的密碼──但這也得講求投資效益,大部分密碼可能幾秒鐘就破解,一定時間內無法破解就放棄,他們不會為了一個「釘子戶」花上幾萬年,使用長字串密碼就成為他們恨得牙癢癢的釘子戶。所以勸你趕快成為那個釘子戶,名單裡有上億頭笨肥羊,少你一個對他們沒差。
大型駭客入侵盜取的帳號都是以「億」起跳──有史以來最大的前十名駭客入侵事件, 第一名是 Yahoo! 的 30 億個帳號,第二名是萬豪酒店集團的 5 億;2023 年剛出爐的「頭香」是推特的 2.2 億,所以才會說密碼是否被駭並不完全操之於我們自己。
有時候 Google 瀏覽器會通知你,某一個儲存密碼的網站最近被駭──不要不理會這些警告,最好立刻修改其他網站密碼,因為駭客很可能正在雲端試圖破解你使用的所有其他網站。
駭你最簡單的方式是⋯⋯釣魚
不論是小混混還是「駭界大亨」,最常用也最有效的方法就是用 Email 釣魚(phishing)。美國 91% 的駭客事件都是經由釣魚得逞。我們都收到過 Email 說包裹被退回,電商付款失敗,或美國總統急著想見你⋯⋯要你趕快登入 Email 的連結跟他們聯絡。不要小看這個老掉牙的小騙術,到今天我都還會接到這樣的 Email,他們會這樣做是因為還是有人會上當。這是騙密碼最快、最直接也最有效的方式。當然偶爾也會有真的,就像我收到的電商 Email 一樣。如果實在分不出真假,不妨自己到那個網站去查證──當然不是點信件提供的連結,而是自己上 Google 搜尋網址設法查證。
最近矽谷大裁員又加上遠端面試,順勢造就了駭客以假網站、假工作、假面試、「假聘書」(fake offer)騙個資。最脆弱的時候也是最容易上鈎的時候,即使陷於危難也得提防被釣。記得,駭客一直在你身邊無時無刻不關懷著你。
那麼多帳號我哪記得住?
說了這麼多,回到我們被駭最根本的問題:「那麼多帳號,密碼都得又長又不同,哪記得住?」我們重複使用同一個密碼正是因為沒人記得住那麼多帳號。近幾年流行「句碼」(passphrase),讓你用一句完整的英文句子做密碼,中間准許空白。這種密碼長到令電腦抓狂,但內容卻較有人性不必死記。
也有越來越多網站問你願不願意加入兩階段輔助認證(2FA)。認證方式可以用 Email 或是手機簡訊(現在你更應該知道為什麼 Email 密碼絕對不能走露了)。兩階段認證通常用於跟金錢有關的帳戶,或是當網站發現登入過程有違常態。比方有人用你的帳號和密碼從羅馬尼亞登入,Device ID 又不同(不同的手機或筆電), 輔助認證就會啟動。如果網站有兩階段認證措施,建議你一定要加入──這是目前最保險的方法,只可惜不夠普及。
無密碼時代 ?
我在科技業的第一份工作是系統管理員,記得當時系統密碼是 Letmein(即 Let me in,讓我進來)──這個密碼現在已經在笨蛋字典上可笑度的名列前茅,那個時代作業系統帳號最多就只准許 8 碼。電腦密碼從 1960 年代到現在使用了 70 年,全球絕大部人仍舊靠密碼登入。雖然指紋、聲紋及臉孔辨識已經非常普遍,但仍限於輔助認證──不是新科技尚未成熟無法普及,而是千萬的網站都已根深蒂固使用密碼登入。即使全世界每一台電腦都準備好可以辨識指紋,那也只會是輔助,而不是取代,因為網站內部程式修改是大工程。如果全美國仍有 30% 的網站用明碼儲存密碼,不難想像改用指紋辨識對他們的優先順序。這不是科技問題,而是成本問題。
我相信總有一天「無密碼時代」一定會來臨,但不會在短時間內就有革命性改變。在過渡期間,我們會看到輔助認證越來越普遍⋯⋯不過別忘了,一個 8 碼的密碼仍舊幾秒就可以破解,網路上也仍舊有一大堆把密碼攤在陽光下的網站,你也會繼續收到釣魚的 Email、駭客永遠關懷著你。
所以最後再次強調:簡單的改變可以省掉很多麻煩。趁著新年許下新希望,修補一下幾秒鐘就可以破解的密碼,快把那 5 秒變成 3 萬 4 千年吧。