@ChingHanHo

I Build Stuff.

每個人都應該有一套自己的密碼演算法

the-matrix

最近有位朋友的 Facebook 帳號第二次被盜,然後一堆人被他加進一些討厭又奇怪的團購社團,那位朋友也是尷尬又無奈,所以我就教他一些我設定密碼的「演算法」,聊天內容很多,我就順便整理到部落格來分享,希望對其他人有用。

在設定密碼前應該要有個基本認識,就是這個密碼可能對於你媽而言是保密的,但是在室友駭客面前、或是網站管理員面前,它是透明毫無隱藏的,所以在這前提下就不應該把每個網站全部設同個密碼,因為駭客可以拿這套帳號密碼去登入其他網站。

密碼演算法

但是每個網站密碼都不一樣怎麼記得住?所以需要一套「演算法」,以後只需要記憶這套算法,而不是去記密碼。「演算法」聽起來好像很神奇,其實只是一套組合的方法,隨便舉例:

網站分級變數 + 常數 + 網站辨識代號 = 密碼

以下來分別說明這些東西是什麼。

網站分級變數

網站分級是指依照網站的重要性分類,並且替每個級別設定不同的密碼。最核心的網站通常是信箱服務,例如 Google、Yahoo,你應該替他們設定一個獨立的密碼,與那些亂七八糟的小網站區隔開來。

那應該拿什麼來當變數?我的建議是,你可以選你最愛顏色的 16 進位色碼(如果你偏愛 HSL 也行…… :p),或是圓周率小數點後的第 108 位數到 116 位數(前提是你得背起來 XDD),又或者是一句名言每個字的開頭第一個字母,例如「Why join the navy if you can be a pirate」變成「Wjtniycbap」。

將網站依照重要性分成三種等級,並且每種等級分配一種變數:

  • 核心(Google…):Wjtniycbap
  • 次等(Evernote…):bion
  • 下等(亂七八糟論壇…):wwantm

太多不好記?寫下來也沒關係,反正別人猜不到你的算法,給他看也沒關係,只要別在紙上寫「這是密碼」就好了。不過,用不著分類太多,三種級別其實也不難記。

常數

這是一組夾雜在密碼裡不會改變的常數,主要目的是增加密碼整體的複雜度。最好是數字跟英文的混合,甚至大小寫混合都可以。綜合上一個變數,現在密碼變成了:

  • 核心(Google…):Wjtniycbap + 0rz
  • 次等(Evernote…):bion + 0rz
  • 下等(亂七八糟論壇…):wwantm + 0rz

網站辨識代號

這是這個網站的獨有特徵,可以是這個網站 domain 名稱的變體,例如 Google 的偶數字母:oge;或是該字母在 26 個字母當中的索引位置,o 是第 15 個字母、g 是第 7 個、e 是第 5 個,合起來就是 1575。

最後,我們的密碼就變成了這樣:

  • 核心(Google…):Wjtniycbap0rz + oge
  • 次等(Evernote…):bion0rz + vro
  • 下等(亂七八糟論壇…):wwantm0rz + xxx

這樣就能產生每個網站都不一樣的密碼,而且不同級別的網站也不會彼此影響到。密碼不是背起來的,而是推理出來的。很酷!也很宅,對吧?

還有些事情必須知道

  • 正妹說會經常換密碼的男人最性感,你可以定期更改「網站分級變數」這個部分,或是修改整套算法。
  • 網站分級不是依你常去的網站來劃分(我知道你常去那種網站,但你也要知道那種網站一定會偷你的密碼),而是這個網站不可被攻破的重要性來區別。
  • 越重要的核心服務建議啟用多一點的認證機制,例如 Google、Facebook 都有提供手機簡訊的登入認證機制,請一定要啟用它。
  • 可以變化的不是只有密碼,不同網站當然也可以使用不同的帳號。如果有些網站是「只使用一次」性質的網站,可以多多利用 10 Minute Mail 這個服務。
  • 依賴算法其實也有些缺點,例如網路銀行的密碼通常會硬性規定要 8 個字元,迫使我必須要另外想一個特例的密碼給網路銀行,下場就是我從來記不住我網路銀行的密碼是什麼。:p

關於密碼管理工具

儘管現在很多人喜歡用 KeePassLastPass 這類的軟體,但我始終不是很信任這類軟體,也不喜歡用。況且……人類發明了機器,並且替機器上了鎖,卻又用了另外一台機器來管理這把鎖,然後又替這台機器上了另外一把鎖,還真是有趣?要是這把鎖掉了,那就真的全面失控了啊!

再說……連駭客都說不敢用了,你敢用嗎?XDD

Comments