Thursday, September 4, 2014

大密碼時代 (中)

一般網站蒐集到密碼後, 通常都會先利用某些複雜的運算式來算出一串編碼, 比方說

p@ssword 這個密碼經過 SHA-1 計算會變成
36e618512a68721f032470bb0891adef3362cfa9
然後網站再把編碼儲存起來, 並且把原來的密碼丟棄. 這種編碼一般來說是"不可逆"的, 也就是說沒有辦法從編碼反推回去原本密碼.

等下次你登入的時候, 網站會再做同樣的運算, 並且把這次算過的編碼跟你註冊時存的編碼做比對, 如果一致就代表密碼正確, 反之代表密碼錯誤. 這也就是為什麼忘記密碼的時候網站就算想直接告訴你密碼也沒辦法, 因為他們也不知道, 他們只知道計算過的編碼.

所以, 絕大部分網站的密碼被盜時, 都是這種編碼過的資料, 乍看似乎很安全, 因為盜走資料庫的人也不知道真正密碼是甚麼. 如果你這麼想那麼就錯了.

盜走密碼的人, 要破解密碼主要是用"猜"的, 最笨的方法就是窮舉法. 假定密碼只有一個小寫英文字母的話, 那麼駭客最多只要試
26^1 (26 的 1 次方)
就猜出來了. 兩個小寫英文字母的話就是26^2 = 676 次,
三個則是 26^3 = 17576,
以此類推. 如果加上大寫英文字母還有數字的話, 一個字元的密碼最多猜
26+26+10 = 62 次 (小寫 26, 大寫 26, 數字 0~9),
兩個字元變成 62^2 = 3844,
三個字元變成 238328.

以現在一般網站都要求至少五字元以上的密碼為例, 就是最多有 62^5 = 916,132,832 種組合, 九億多分之一耶! 這樣不是很安全嗎?

 並沒有.

以 SHA-1 這種演算法來說, 駭客只要花大概兩百塊美金左右的硬體設備就可以在 1/15 秒全部算完五個字元密碼的全部排列組合, 這還是慢的, 如果你的密碼是全數字, 就算有十幾個數字也是直接秒殺.

用 2012 年的資料, 當時的紀錄一秒可以跑完三千五百億個 NTML 編碼, 換算是大約十五億個 SHA-1 編碼, 也就是說就算你的密碼是八個字元, 大概一個小時左右就可以猜出來.

更糟糕的是, 駭客並沒有那麼笨一個一個算, 他們會先去拿所謂的"字典檔"來猜,這個字典檔裏面包含了一般常用的單字或是密碼, 所以像是 12345, password, Password 這種類型的密碼馬上就會被猜中. 上一篇有提到 RockYou 這個網站有三千萬個沒加密過的密碼被偷, 你最好祈禱你的密碼沒有在這三千萬密碼裡面, 因為這些密碼肯定早就被加到他們的字典檔裡了. 當然, 一個夠格的駭客字典檔裡絕對不只有三千萬個排列組合.

一小時算出八個字元的速度其實還不夠快, 駭客們還用一種工具叫做"Rainbow Table", 基本上你可以想像這是個對照表, 駭客們事先算出某個密碼的編碼, 然後拿偷過來的編碼直接去對照, 連算都不用算. Linked-In 幾百萬密碼被快速破解, 除了他們是用這種簡單的 SHA-1 編碼以外, 不安全的編碼方式很容易用 Rainbow Table 直接找出原本密碼.

下一篇我們會來討論好的密碼該怎麼設計.

Wednesday, September 3, 2014

大密碼時代 (上)


網路已經是我們生活中密不可分的一部分, 但是似乎絕大多數的人對於資訊安全卻沒有相對應該有的觀念. 尤其當我們許多資料都放在雲端的時, 除了我們常常聽到預防病毒, 木馬甚麼的, 另外很重要的是對於自己每天使用密碼的觀念更該加強,

在現在電腦計算能力這麼強的時候, 過去許多密碼保護的觀念已經需要改變了. 從 2010 年開始, 幾乎每年都可以聽到某些站成千上萬幾百幾千萬密碼被偷:
2010 年
2011 年
2012 年
2013 年

你以為這樣就結束了嗎? 今年四月 heartbleed 漏洞之後有駭客組織聲稱掌握了十二億個帳號密碼, 五億個 email 信箱.

開始緊張了嗎? 先來解釋一般儲存密碼的原理吧.

一般來說當使用者到一個網站/app註冊後, 使用者資料包含密碼會被存起來, 有少數網站會將密碼不加密直接存到資料庫, 所以任何人只要能夠看到資料庫 (包含工程師, 客服等等內部人員)就會知道密碼是甚麼. 為什麼有人會這麼設計呢?

原因不外是
  1. 腦殘
  2. 詐騙集團
  3. 偷懶
  4. 腦殘
腦殘要提兩次因為真的是很腦殘. 所以, 如果下次在有些網站用 "忘記密碼" 功能的時候, 他直接告訴你的你密碼是多少而不是給你一個連結要你重設, 或是給你一個暫時密碼, 你應該要馬上做的事就是將所有資料清空, 密碼換掉, 刪除帳號, 然後不再用那個網站.

將密碼不經過處理而直接存到資料庫的畢竟是少數, 下一篇我們再來看看一般網站是怎麼做的, 而且會解釋為什麼你的密碼太短了.

Saturday, January 7, 2012

9 - 兵役體檢

自從送了陳情書以後, 能做的事除了等待外, 同時也要查查自己是否有符合替代役的體位. 在查了體位標準表後, 沒想到真的讓我找到一項: 臀大肌攣縮.

Thursday, January 5, 2012

8 - 要去高雄 (下)

這下子沒轍了, 繼續留在區公所盧也不是辦法, 解鈴還須繫鈴人, 我看就再去出入國移民署問問好了. 中午吃完了飯, 我就跑去中正路底的內政部南區行政大樓. 說起來真是有夠悲哀, 在台北的出入國移民署有夠大, 很氣派, 但是高雄的卻是小到跟個普通銀行沒兩樣..

Tuesday, December 27, 2011

7 - 要去高雄 (上)

我從小就在高雄出生長大, 高雄到現在為止還是我住過最久的地方, 直到移民之前, 我在高雄住了 17 年, 完成了小學, 國中, 與兩年的高中, 高雄不只是我的故鄉, 也是有滿滿的回憶. 雖然說自從移民後, 我在高雄的戶籍就因為出國太久被除籍, 但是高雄市政府還是硬把我的戶籍認為在高雄, 所以限制出境的通知也寄回了高雄的老家.

Friday, December 23, 2011

6 - 出入國移民署

聽到限制出境的消息時, 當下的心情真的不是言語可以形容. 昨天才為了要合法的留在台灣而遠走香港, 沒想到今天才剛回來就被限制出境, 才差一天就有這麼大的轉變!

Thursday, December 22, 2011

5 - 香港行 (下)

在機場裡睡是沒有可能能夠睡好的, 當我在清晨五點左右迷迷糊糊被周邊的吵雜聲吵醒之後, 香港的入境櫃台已經開始在排隊了. 匆匆整理一下, 馬上跑去排隊等入境.

香港之前已經來過好幾次了, 每次來的時候幾乎都是坐機場快線進入市區. 但是在這次身上沒有甚麼錢的狀況下, 我只好選擇一個最便宜的方式: 公車