如何設計100%安全的密碼/解聰文
這個題材或許是非常基本的知識,很多老手可能會嗤之以鼻;但不久之前才有某位超大公司執行長告訴筆者,他是用「自己的英文名字+生日」來當作在整個網路上活動的唯一密碼。
所以,讓大家複習一下好的密碼設計方式似乎還是有需要的。現在就讓我來告訴您,如何幫自己設計出不容易弄錯、不容易忘記、但也不容易破解的密碼。
編按:以下的介紹以英語或羅馬語系的語言為主;最後會另外加上中文環境適用的介紹。
1. 想個短句
想個生活中常會用到的短句,其中必須包含至少一個數字、以及一個字首大寫的單字。例如:
My husband was born 1957 in Denver I live in Europe, 15 km east of Amsterdam I always buy milk from K-Mart on 7th Street
像這樣的常用句,幾乎不會忘記,而且不看鍵盤也很容易打得出來,一輩子都可以用;這個句子的長度最好有7個單字,因為現在的系統大多不接受太短的密碼。
2. 利用縮寫
用想出來的句子,抓出每個單字的字首,然後再加上號碼:
「My husband was born 1957 in Denver」就是「Mhwb57iD」 「I live in Europe, 15 km east of Amsterdam」就是「 IliE15kmeoA」 「I always buy milk from K-Mart on 7th Street」就是「IabmfK7s」
所以,雖然「I live in Europe, 15 km east of Amsterdam」是個對您有意義的句子,但轉換出來的「IliE15eoA」這個密碼對不知情的人來說,卻是似乎完全沒有意義的組合。這個密碼非常難猜,即使是頂級的演算法也得花上一千年才解得出來。
更棒的是,您還可以再動點手腳,讓它更加難解。
3. 後面加點好料
在剛想出來的密碼後面,再加個特殊符號,例如「-」或「+」。所以:
「Mhwb57iD」變成「Mhwb57iD+」 「IliE15kmeoA」變成「IliE15kmeoA-」
4. 再多加點好料
最後,在密碼後面再加上代表使用網站的兩個縮寫字母。例如:
在Amazon上就是「Mhwb57iD+am」 在Facebook上就是「Mhwb57iD+FB」 在Twitter上就是「Mhwb57iD+Tw」
依此類推。
我自己用的原則是,如果網站的名稱聽起來像是兩個單字,就用這兩個字的字首大寫;例如「FaceBook」就是「FB」,而不是「Fa」;如果是一個單字,就用前兩個字母小寫,例如「Amazon」就是「am」,這樣比較好記。
當然,您可以根據自己的需要改變這些規則,但基本上這樣想出來的密碼一來好記、二來在99%的網站或程式上都適用,最重要的是,真的很難破解,對吧?
編按:由於編輯在收到作者來稿之後,發現這樣的作法在中文環境下必須有些調整(如果是不熟悉英文的人,可能難以將自己的常用句先翻成英文、再用文中的原則設計密碼);所以在與作者討論、並且徵得同意之後,在文末補上由編輯撰寫、適合中文環境的設計原則。
中文環境下的密碼設計
在中文環境下的狀況,又可以分成兩種:
中國用戶
先說簡單的。由於中國推行漢語拼音已經很久,大多數人都熟悉這種用英文字母「組字」和「拆字」的方式,所以要用來設計密碼比較容易;只要刻意在句子裡加入數字,並且在大小寫上動點腦筋就行了。
例如:
「今天3月3日天氣很好」(jintian3yue3ritianqihenhao)可以變成「jt3y3rtqhh」 「我的體重高達100公斤」(wodetizhonggaoda100gongjin)可以變成「wdtzgd100gj」
接下來只要照原文的方式,選擇自己好記的方式將部分字母改成大寫、再加上符號和網站名稱就行了。
台灣用戶
在台灣,多數人使用的是注音和倉頡,再加上許氏、行列、嘸蝦米等輸入法;這些輸入法多半不像漢語拼音一樣,是以字母本身的發音為基礎,所以要轉換成使用者自己好記的字串比較困難。
不過長久以來,也有人想出了不少的變通辦法;其中最簡單(但也有點難度)的方式是,先切回英文輸入法,然後以中文輸入法的按鍵順序,輸入自己常用的句子;例如「今天3月3日天氣很好」:
用注音輸入法就成了「rupwu03m,43b4wu0fu4cp3cl3」 用倉頡輸入法就成了「oinmk3b3amkonfdhoavvnd」
如果再加上符號、大小寫、以及網站名稱的加料和變化,應該會比英文版更難破解。
不過由於中文輸入法多半會用到空白鍵,所以在輸入的時候必須記得省略空白鍵、或是用不需要空白鍵的字來設計密碼(例如在注音輸入法之下要避開一聲字)。
當然,越少人用的輸入法設計出來的密碼,就越難以破解。
雖然本文的原題是「如何設計100%安全的密碼」,但其實並沒有絕對安全的設計;但如果難度夠高,讓試圖破解的人無法在有生之年暴力破解、或是讓用於破解的時間不符成本效益,那麼目的也就算是達到了。
(寫到這裡,忽然想到描述二次大戰時美國以原住民語言當做「密碼」的電影「獵風行動」。)
您有其他更簡單、或是更有效的中文環境密碼設計方式嗎?歡迎留言告訴大家!