隨著電腦速度越來越快,密碼的長度以及複雜度就變得更重要。
最近正在設計新的密碼來取代原有強度不夠的密碼,以下是設計密碼時我會考量到的因素,給大家參考。
容易記憶
密碼之所以被稱作「密」碼,意思就是只有你一個人知道,其他人不應該透過任何方式,例如紙條、你的個人資料、平日對話關鍵字等方式,來得到、猜到你的密碼。
簡而言之,密碼必須記在腦裡,不應該出現在其他地方。如果密碼無法記在腦中,而必須寫在紙上,或是儲存在其他地方,這個密碼就不能算是一個安全的密碼。
長度
長度當然越長越好,因為密碼長度越長,表示要破解時猜測要花的時間也會越長。但若長度過長而導致密碼記不起來、必須透過其他方法記憶時,與前一項「容易記憶」就衝突了。
個人建議密碼盡可能超過 12 個字,而長度到多長依照個人能力而定。再透過「複雜度」讓密碼更不容易被猜到。
複雜度
可以用來當密碼的文字,可以除了數字以外,還有應無大小寫 (大寫和小寫是不同的),另外可以再加上特殊符號,如 @
、&
、!
等等,密碼中包含越多不同類型的文字,安全性越高。
目前大多數的系統僅支援基本英文文字與符號,因此使用中文文字或是全形符號、emoji (🤘) 來當作密碼,可能會遇到一些問題、導致部份系統發生錯誤。
到這邊應該會有人有疑問,長度要夠長、又需要包含數字、英文大小寫,還要加上特殊符號,這連寫下來都有困難,怎麼可能記得住?事實上,有一些方法可以幫助密碼記憶 (可以參考中文輸入法拆字根的方法):
- 使用字形來幫助記憶
- 英文的大寫
H
,可以拆成二個英文小寫l
與一個符號-
,變成l-l
- 英文
x
可以拆成><
- 中文的
丼
可以用符號#
來替代 - 數字和英文的這幾個字長得很像:
0
、o
、O
,或是拆成符號表示[]
- 當然也可以把顏文字當作密碼的一部分:
/__\==b
- 英文的大寫
- 使用文字、符號的意思來協助記憶:
- 符號
@
有英文at
(或中文在
) 的意思,所以可以「我在睡」可以用me@ZZzz..
表示 - 肯定句用
.
、疑問句用?
,有和沒有可以透過+
或-
來表示 - 常用句表示法:網路上常使用
!@#$%^&*
來代表髒話,你可以建立只有自己在使用的特殊格式
- 符號
- 使用發音協助記憶:
- 「悲劇」改為
BG
、「科科」改為kerker
- 「好酷」改為
how
、Kooool
- 「打趴」二個字分別拆成
da
和%
- 「悲劇」改為
- 用鍵盤按鍵位置記憶 (記住鍵盤按鍵位置並不是大家都做的到,但可以用):
- 「科科」的注音對應的按鍵是
dkdk
- 「啊」注音則會對應到鍵盤
*
(有個空白沒錯)
- 「科科」的注音對應的按鍵是
以上應該可以讓大家多出很多增加密碼長度又不會增加記憶難度的方法。
密碼管理工具
現在有一些密碼管理工具,像是 1Password、bitwarden、KeePass,你只需要記憶一個主要密碼用來開啟密碼管理工具,而其他網站、服務的密碼,都是由管理工具隨機產生,不需要你記憶。
這樣有一個好處,你只要花時間設計並記住一個夠安全的密碼,來開啟密碼管理工具,網站、服務登入時,只要從管理工具複製帳號、密碼再貼上就好。這樣每個網站都會有完全不同的密碼,即使其中一個網站的密碼被盜用,其他網站仍然是安全的。
但這個方式也有一個缺點,就是把雞蛋放在同一個籃子,LastPass 在 2022 年被駭客入侵成功,甚至有傳言使用者密碼資料庫也被竊。
密碼管理工具並不表示絕對的安全,使用時記得搭配 2FA 工具來多加一層保護。
另外我想提一些比較沒有人在討論的問題。
行動裝置、觸控螢幕
前段有提到可以使用鍵盤的對應位置來協助建立密碼,但在寫這篇文章的當下,鍵盤可能已經不是主流的輸入工具了,可能是觸控螢幕。而使用觸控螢幕時,輸入法 app 的排版、操作方法則會是影響密碼輸入最大的因素。
以上二張圖,可以看出不同的輸入法有不同的排版,英文按鍵的位置上大多是類似的,但遇到要輸入符號,則不同輸入法可能都有不同的版面,若輸入法沒有特別為符號輸入設計,輸入包含符號的密碼會變得很麻煩,甚至常常出錯。
若如果經常使用行動裝置,可以將符號縮限在 @
、#
、$
或 $
等一些比較常用的符號,這些符號在大多數螢幕輸入法上比較容易找到。
密碼側錄與猜測方法
一些使用者平常沒注意到的地方,以及新的技術發明,導致密碼輸入時可能更容易被辨別或猜測:
- 有些人使用的螢幕、鍵盤保護貼磨損嚴重,導致螢幕解鎖圖形、按鍵容易猜測
- 利用熱成像攝影機,可以讓被按過的按鍵、接觸過的螢幕區塊變得很明顯,可用來猜測使用者輸入的內容。或許透過重複輸入某個文字,可以來降低猜測準確度?
- 透過聲學辨識,可以準確得聽出使用者按下的是哪個按鍵,這還真的想不到要怎麼防
其他新的身份驗證方法
密碼並不是唯一可以用來辨識身份的方法,一些新的技術,可以讓你使用其他方法來做驗證:
- 生物特徵辨識:透過每個人都不同的特徵來辨別人的身份,像是指紋、虹膜、臉型等等
- FIDO:通常用做 2FA 來辨識身份,透過實體的 USB、藍芽、手機等設備,來確認使用者為本人
參考資料: