如何管理好自己的密碼?

目前使用了微博、人人、郵箱、網銀、支付寶總數不下十種,密碼現在是一鍋粥了。如果有不良網站獲取了一個密碼,可以推測出使用其他服務的密碼,使用完全不同的密碼,記憶難度相當大。

相關問題:用什麼方式記密碼最好?


這裡介紹一種由「基礎密碼 + 網站名稱 + 一套密碼變化規則」組合成的密碼設置方法。

簡單來說就是創建一個只有自己知道的密碼生成規則,使用該規則基於同一個基礎密碼為不同網站生成不同的密碼。這樣只需記住一個基礎密碼,就能輕鬆記住所有網站密碼,而且不易被黑客破解。

1、選取一個基礎密碼。

可以是一個成語,一句詩句,家人生日,寵物名字…一定是自己熟悉的東西。這裡以「beauty2017!」舉例。

2、疊加網站名稱進行混合。

比如京東(JD)或QQ郵箱(qqmail),混合疊加到基礎密碼中,京東的生成密碼是「Jbeauty2017!D」,QQ郵箱密碼是「qqbeauty2017!mail」,以此類推。

3、添加一套密碼變化規則。

為了繼續提升安全度,還需給密碼添加一套變化規則。同樣記住,一定是只有你才能看懂的規則,這裡簡單介紹幾種方法:

1)Shift鍵符號替代法。

選取基礎密碼「beauty2017!」中的「17」字元,輸入時同時按住shift鍵。京東密碼變成了「Jbeauty20!!D」,QQ郵箱密碼是「qqbeauty20!!mail」。密碼沒變,但是安全性卻大大提升。

2)插入特殊符號。

在固定位置插入一些特殊符號,如頭尾都加入「#」,京東網密碼變成「#Jbeauty2017!D#」,QQ郵箱密碼是「#qqbeauty2017!mail#」。

3)同音或同型字元替換。

例如可以將英文字母e替換成同音的阿拉伯數字1,京東密碼則變成「Jb1auty2017!D」,QQ郵箱密碼則是「qqb1auty2017!mail」。同理的,還可以將字母o改成阿拉伯數字0。

還可以選定某個字元,輸入時將手指在鍵盤對應按鍵向上移一格等等。總之,制定一個自己能記住的規則,這樣就再也不用為忘記密碼而煩惱啦。


By QQ安全中心微信公眾號。


二〇?一一年十二月二十八日就評論中的呻吟作出更新:

  • 覺得複雜就別用
  • 覺 得 復 雜 就 別 用
  • 覺。得。復。雜。就。別。用。
  • 長度很重要,八位不夠。我知道你數學好,會算排列組合有多少,但世界上的彩虹表是在不斷增長的。
  • 最簡單的腦兼容演算法如下:
  1. 四個詞和一個數字用hyphen連起來,第一個單詞全大寫
  2. 沒有第二步了。
  • 例子:
    • CORRECT-horse-battery-staple-4
    • I-can-remember-this-I-must-be-god-3
    • NI-ta-ma-de-cai-che-dan-9
  • 這種辦法的安全程度和下文提供的方法並無太多實際差別[a],但是更好記也更易於輸入。額外的數字和大寫是為了滿足某些網站的密碼組合要求。
  • 但是碰到限制密碼長度的二逼網站你就沒轍了,雖然這樣的網站其實不註冊也罷。
  • [a] http://security.stackexchange.com/questions/6095/xkcd-936-short-complex-password-or-long-dictionary-passphrase

    原文:

    提醒各位如果要採取 Rio 的辦法,必須有 all or none 的決心。最好只用 Mac,只用固定的幾台電腦。對於不能全情投入的非 geek 或不可知論者(讀作「非蘋果教徒」),我來介紹一種比較人性化的三層密碼體系:

    1. 核心密碼。對我來說這包括郵箱,銀行,PayPal,VPS。每個都不一樣,共同點是至少十六位,有數字、大小寫字母和特殊符號,與自己的任何實際信息都無關,至少半年換一次。建議採取特定的腦兼容演算法來生成它,比如我曾經使用的演算法是:
      1. 取一個八字母的英文單詞,比如 insanity
      2. 將第一次出現的 S A E I O 替換為 $ 4 3 1 0,比如 insanity 變為 1n$4nity [1]
      3. 將最後一個不是數字的英文字母變為大寫,比如 1n$4nity 變為 1n$4nitY
      4. 將這個英文單詞映射為手機按鍵,比如 insanity 映射為 46726489
      5. 將第 4 步得到的數字接在第 3 部後面,最後得到 1n$4nitY46726489
    2. 一般密碼。對我來說這包括各種 IM 和比較重要的社交站。採用核心密碼演算法的簡化版本。可以用一個單詞加上該服務的域名或服務商,套用演算法的前三步,比如 QQ 就是 1n$4nitYt3ncenT (pun intended)。
    3. 可棄密碼。比如註冊各種需要登錄才能下載或者閱讀的論壇,就是一個弱口令,萬年不換。這裡重要的是用戶名最好與上述兩層級都不同。如果這個服務用過一段時間之後覺得不錯,重新註冊一個帳號,升級為一般密碼。

    我傾向於把密碼的辭彙和演算法用隱語方式寫在實體記事本和一個文本文件放在郵箱(現在是dropbox)里,比如有一陣子我用 Pi 做密碼,就寫「山巔一寺,一壺酒」,演算法只寫關鍵字,比如「 l33T 接 t9 映射」。重要的是寫下密碼的更改日期,自己有個查對,而且 Google 找回密碼時會問到(還會問到比如常用的幾個 tag 之類)。解讀的方法我會寫在遺囑里(我每年都寫遺囑。如果你想嘗試,記得舊版本一定要毀掉)。

    [1] 參見 http://en.wikipedia.org/wiki/Leet 。採用 SAEIO 幾個字母是因為它們的頻率高,變種還包括

    • i - !
    • t - 7
    • s - 5
    • u - 1_1

    等。


    之前我所有的賬號都用的同一個密碼,lucky dog1010。後來總有人玩我的遊戲賬號,我一般會改一個臨時的密碼然後給他們,但是改來改去太麻煩了。

    於是,我找了一首詩。比如:《木蘭詩》

    第一句是唧唧復唧唧,那麼扣扣密碼就是,qqjjfjj。

    嫌短?沒關係,qqjjfjjmldhzbwjzswwntx,反正一直往下背,背到你覺得夠長了為止。郵箱密碼就是yxjjfjj,知乎密碼zhjjfjj。

    這樣,每個賬號的密碼都不一樣,又都一樣。

    如果你怕別人看出你密碼的規律,可以這樣設:扣扣用qqjjfjj,知乎用zhmldhz(木蘭當戶織)。

    加強版——

    如果你覺得這樣還是太有規律性,那就加數字。

    扣扣密碼qq13jjfjjbwjzs,意思是qq密碼用了這首詩的第一、三句。還可以是qq31bwjzsjjfjj,表示這首詩的第三、一句(順序不同)。

    加上下劃線也可以qq1_3jjfjjmldhzbwjzs,意思是這首詩的第一到第三句。

    最後,連環密碼:qq13jjfjjbwjzs1_3jjfjjmldhzbwjzs.....

    如果擔心記不住,可以記在小本本上,你寫完可以拍照備份,就算丟了別人也看不懂你寫的什麼。。。


    好多答案怎麼寫這麼複雜

    推薦三個密碼管理工具1Password,LastPass,keepass

    這三個各有優劣,主流都是 AES-256 加密,有的本地加密本地儲存,有的是在雲端還備份一份。這裡不過多不贅述

    這裡主要說1Password

    實際上免費版已經能滿足日常的需求

    支持macOS,Windows,iOS,Android,還有部分主流瀏覽器插件

    怎麼使用?

    以iOS端為例

    • 創建登錄信息

    • 選擇網站(列表裡沒有也可以創建)

    • 創建用戶名

    • 生成密碼

    • 這裡可以自定義密碼公式

    • 保存後直接複製就能用了

    不過,不推薦把過於敏感的密碼放在這裡,比如支付寶密碼

    如果十分介意安全性,只把1Password用在本地就行了

    如果你只在少數幾個可控的安全設備上使用1Password,安全性基本上沒多大問題。

    畢竟安全和方便往往不能兩得

    作為普通用戶的密碼管理工具足夠了,根據自己的實際情況,覺得有必要的話隔段時間換個密碼就行.

    至於密碼管理工具的選擇,可以看知乎的討論:

    1Password 和 LastPass 該選哪個?

    1Password 和 LastPass 在原理上來說誰更安全?


    關於密碼安全:
    1.再複雜,再難記的密碼,你用到了一個不安全的網站,一樣是浮雲。比如你使用一個16+以上包含所謂的大小寫英文字母/還有數字特殊字元,用到一個沒有加密的網站,網站被黑客黑了,你的密碼也就泄露了。
    2.對於國內的網站的安全現狀,不是密碼的複雜度的問題,而是如何保證你重要密碼,比如銀行密碼,在線支付密碼,重要的IM工具密碼,比如qq、msn等,提供商不會被黑泄露你的密碼。
    3.現在國內黑客常用手段之一,獲取一個id的密碼後,到各大網站嘗試是否能登錄,所以還是要保證重要帳號密碼不一樣就ok了。
    4.密碼複雜度並不能保證你帳號安全,好的密碼使用習慣才是帳號安全的根本。



    說說我一位朋友的」陳氏密碼"。每個網站密碼都不一樣,又方便記憶。
    1、網站或APP名稱漢語拼音首字母,然後根據首字母從T9鍵盤上取相應數字


    2、用數字加上一個數字密鑰(比如自己的生日,不帶年份)得到新的數字串
    3、從電腦鍵盤上,取第一位數字的特殊字元(按shift),其餘不變


    組合在一起就是密碼。

    舉例
    58同城
    1)取漢語拼音首字母,wbtc(五八同城)
    2)T9鍵盤取數字9282。生日是10月19,9282+1019=10301
    3)電腦鍵盤上取第一位數字1對應的特殊字元!,得到 !0301
    最後密碼就是 wbtc!0301
    注意:
    1)數字密鑰可以簡單些,比如就兩位數字
    2)電腦鍵盤上取特殊字元可以多位,比如上面的10301可以取103對應的特殊字元 !)#,也可以取301對應的特殊字元 #)!,除了這些還有很多取法
    3)加密演算法不僅可以加,也可以乘
    4)如果網站名稱是」英文+中文「組合,那麼可以忽略掉英文。
    5)如果網站名稱完全英文,那就取單數位字母即可,也可以自己定規則
    這個方法可以簡化一些環節,甚至去掉一些環節,使用方便;也可複雜一些環節,難以破解
    這樣每個網站的密碼都不一樣,並且方便記憶,一個網站密碼丟失後,不至於其他網站賬號被盜,更不需要著急去修改其他網站密碼。
    -------------------------------------------------------------

    喜歡就點贊,討厭就吐槽。
    關注蔣校長,乾貨不斷!


    安利一下一個小工具 dopass 只是一個從php里扒竊的異或加密演算法 但是結合lastpass 變成了放心的信息記錄工具
    演算法源碼
    splot/dopass
    這是lastpass版本的
    splot/dopassGitHub - del-xiong/dopass
    之所以做這個工具是因為作為一個有強迫症的程序員,不太放心把數據放到別人的伺服器,就算是他們說加了密的也不行,所以只有自己手動加密了。
    我把lastpass裡面的密碼和筆記欄位都加了密處理,實際效果如圖

    改進之後,使用lastpass更放心了,也不怕信息被別人看到,畢竟每次登錄網站要手動輸入密碼(不過現在還需要進入賬號管理界面輸入解密key然後把密碼複製過來,計劃以後改為直接登錄時輸入key直接填寫)

    改進之後,使用lastpass更放心了,也不怕信息被別人看到,畢竟每次登錄網站要手動輸入密碼(不過現在還需要進入賬號管理界面輸入解密key然後把密碼複製過來,計劃以後改為直接登錄時輸入key直接填寫)

    現在不但用lastpass存儲網站密碼,還用來記錄各種個人信息,比如社保賬號 銀行卡賬號 信用卡密碼等等,也從來不擔心,反正加了密之後是這樣的


    目前的問題是手機端的問題,由於自己加了密,就算購買了lastpass的付費版也需要手動解密,所以自己寫了個腳本把lastpass的密碼庫導出後生成加密文件,然後手機端就可以使用dopass直接解密了,也不用購買lastpass,但需要手動更新還有一些坑所以沒有發布源碼


    用密碼管理器,為每個不同的服務使用不同的隨機密碼。自己只記住密碼管理器的主密碼,剩下的事情交給機器去做。

    比如我在 OS X 上用系統自帶的 Keychain Access 來生成混合字母、數字、符號,長度至少18位的隨機密碼,然後存在 Keychain Access 中。通常瀏覽器會從 Keychain Access 根據你在網頁上填的用戶名自動從 Keychain Access 裡面填充密碼。如果因為網頁的登陸地址每次不同無法自動填充,可以手動打開 Keychain Access 來複制粘貼。Keychain Access 本身則是用我的登陸密碼加密的。

    OS X 上也可以用付費的密碼管理軟體 1Password,但 1Password 只能默認保存網頁密碼,其他如應用程序密碼(QQ)、WiFi 密碼、SSH 密碼系統默認保存在 Keychain Access 里。

    密碼管理軟體依賴於本地存儲的資料庫,這個資料庫必須要做好備份,否則一旦丟失,所有密碼都不見了。我用 Dropbox 同步的我的 Keychain Access 的密碼資料庫,因此我只需要記住我的登陸密碼、Dropbox 密碼、郵箱密碼,就能保證萬無一失了。


    設置密碼的正確姿勢提示信息 - 安全盒子論壇

    1、碼農文藝到鬧心且騙稿費的密碼:

    密碼:ppnn13%dkstFsteb.1st
    密碼來源:「娉娉裊裊十三餘,豆蔻梢頭二月初」
    密碼設計思路:
    ppnn=娉娉裊裊
    13=十三
    %=余(學過C/C++/Java的都該懂得)
    dkst=豆蔻梢頭
    Feb.1st=二月初
    我勒個去,這也太非主流了好么
    類似思路,還有幾組密碼,怎麼個翻譯法?自己想去吧!
    「飛流直下三千尺,疑似銀河下九天」直譯成FLZX3000cY4yhx9day
    「停車坐愛楓林晚,霜葉紅於二月花」是一個公式[tcmlflw,syred&>Febhua]
    「平生不看武騰蘭,便稱男人也枉然」竟也能解成ps!see(5tl)shit!say(man)

    2、心機婊到沒朋友的密碼「姿勢」:

    賬號是admin,密碼是 adm ** 。
    倆星加一個空格,這個密碼曾經把一個職業hacker都愁了三天。。。
    這讓我想起有一次在酒店吃飯問老闆WIFI密碼,老闆說LYP82NLF,我說這好難記,老闆笑答:來一瓶82年拉菲,好記!我一邊念一邊輸密碼,剛輸入完,只聽「嘭」的一聲,服務員遞過來一瓶酒……

    3、失敗到家的「小聰明」密碼:

    又比如,妻管炎告訴老婆密碼是「nishengri」,妻屢試自己的生日不爽,後來妻暴躁了;
    之前,也有人把密碼設成了「buzhidao」,後來女朋友和他分手了。
    大牛最喜歡的是下面這個
    傳說中我寫出來你也看不明白,且記不住的密碼:
    據說一隻處女座程序猿之前用的密碼「0oo00OOO0o0o0OO0」
    處女座,你們都是怎麼記的,難道是唱「噢嘞噢嘞噢嘞……」?
    還有個好不嚴肅認真的密碼,cptbtptpbcptdtptp,記憶訣竅是 「吃葡萄不吐葡萄皮不吃葡萄倒吐葡萄皮「!

    我只能說:變態


    我的方式是:我喜歡看紅樓夢,我的密碼所有規律都在這本書里。

    比如:知乎相對來說有些姿勢,那紅樓夢裡誰的氣質類似呢?

    把這人的名字與口頭禪或某習慣拿出來 + 某個變形 == 最終密碼。

    這樣就很難忘記,忘記了做個推理就好。

    那,那些完全無所謂的網站就隨意了,愛黑你就黑,別被我發現你的行蹤就好。比如某大網站你用我泄露的密碼去登錄,恭喜你,你的痕迹自動會被這個網站的風控機制記錄下來:D


    簡明扼要的回答下:

    1. 密碼的設置方式,和黑客的攻擊方式

    2. 密碼的保存方式,和黑客的攻擊方式


    一、密碼的設置方式

    建議用任意一句話,譬如"我操今天下雨啊",取首字母wcjtxya, 完全隨機而且還好記。然後對密碼進行簡單變化"我操!今天下雨啊,555" == wc!jtxya555。字母、字元、數字全部都有了。

    為什麼不用自己的手機、生日呢?因為黑客早就想明白了,密碼會改變,但人們設置密碼的習慣不會變

    黑客在生成字典的時候,會根據你的情況,生成特殊的字典,比如會提前收集你的名字、你女友的名字,你的生日,你老婆的生日,你的手機號,車牌號碼等等,然後去組合這些。

    比如:

    有人喜歡字母+手機號

    有人喜歡女友名字縮寫+520

    有人是自己名字縮寫+520+女友名字

    諸如此類的種種,字典製作工具里,黑客都已經想到了,並且窮盡排列。你是不是還以為黑客蠢到字母排列組合呢?那多累啊!

    黑客甚至會去用你在A網站的密碼賬戶,去撞你其他網站的密碼賬號。所以基本套路是,網上查找你的信息,看你在哪些網站註冊過,找一個最好搞定的搞定,用這個密碼去撞其他網站的密碼。

    所以盡量不要讓你重要站點的密碼,和別的密碼相同。養成這個好習慣。那下一個問題就來了,怎麼保存以讓自己不忘記。

    二、密碼的保存方式

    有幾個工具:

      KeePass Password Safe

    • onepassword

    那麼多密碼你肯定記不住,可以放在這裡,以密碼加秘鑰的方式,秘鑰放在U盤裡,需要查詢的時候插上U盤。

    為什麼不能記在本子上?

    A: 丟了怎麼辦?

    為什麼不能記在txt本里?

    A: 你電腦被人搞了,人家先search文本收集有用的信息,好不好。某公司內部運維喜歡用txt記錄密碼,電腦被人黑了後,IDC的所有機器都丟了。


    曾經在效率天階上看過一篇關於如何設置密碼的文章,很具有可操作性,自己實踐了幾個月,感覺還不錯。這套方法的核心在於「關鍵字」+「演算法」,具體方法摘錄見下:

    1. 定義一個「關鍵碼」:這是只有你自己知道的密碼核心,你只需要一個關鍵碼,它將與其他內容一起組成密碼;
      例如:你名字的漢語拼音縮寫+生日日期的最後一位+門牌號的上一位——比如tht51;
    2. 根據網站,取特徵碼:比如取網站地址的一些關鍵字,具體規則也是隨你來定,但要確保這個規則在所有網站上是一致的;
      舉例1:你要註冊的網站的域名部分的第1、3個和末尾的字元,不足的用0代替——yahoo的話就是yho,sohu就是shu,163是133...以此類推。
      舉例2:網站域名的頭2個和最後2個字元,中間加上域名結尾的字元數——http://elcorp.com.cn就是el5rp,http://lenovo.com就是le3vo...以此類推
    3. 把上述兩個關鍵字用你覺得最順手的方法組合在一起,要點與之前兩個一樣:「規則一致」
      例如:以yahoo為例,你可以組合出yho51tht,thtyho51或者tht51yho,只是一旦確定了規則,你就應該把它用在所有的網站賬號中。

    原文地址 http://www.elcorp.com.cn/content.asp?id=350

    ============UPDATE=============
    2011.12.24:這只是提供了一種產生和記憶密碼的方法,從全局來說,還是要針對賬號的重要性採用不同的密碼生成模式。極重要的密碼可以相當複雜,一般重要的密碼可以採用本答案介紹的方法,至於不重要的賬號(只是為了下載或瀏覽),那就用最簡單的密碼(123456之類的)。


    我的做法是: 不同種類的服務使用不同的密碼
    1、一些不太重要的內容,不能確定其安全性(不知道其是否明文存儲)的時候, 使用一套密碼,丟了就丟了。

    2、網銀類, 支付寶,域名、和財產有關的這些, 密碼使用相同前綴,但後綴和對應的網銀有些關係但又不容易被猜到(即使別人得到你一個地方的密碼,也猜不出其他地方的)。

    3、聊天、社交、生活 例如知乎、豆瓣、微博等,共有差不多10套密碼,每個網站盡量不同,但不排除有些網站的有些帳號密碼全部一樣的情況。

    4、郵箱類, 上面的10套密碼 + 不同的前綴後綴或特殊字元。

    最後, 就是防忘的方法了: 家裡某些本子上會記錄密碼的部分組成,另一些本子上會記錄一些提示,電子產品上會記錄部分組成, 不同的網路磁碟里會記錄一些提示或者部分組成
    還有,每種產品的提示問題一定要設置好,這個不用多, 有5、6種即可,但這個要牢牢記住。

    我是不太相信所謂的 密碼管理軟體的,這樣就太「單點」了,萬一忘記了密碼管理軟體的密碼,或者丟失了,就麻煩了。。。

    其實密碼多不可怕。。 輸入次數多了。。 就記住了。。。


    不靠譜的密碼

    我們要明白一點,任何靠我們的腦子想出來的密碼,無論多複雜,都沒有辦法完全隨機,它多多少少來自於你的生活經驗,那就不保險了。

    比如一個8位數字、字母混合密碼,你用上你媽生日的年份頭兩位,接上你奶奶的名字拼音字母,再接上你女兒生日的月份,最後是初戀情人的英文拼音字母。

    你覺得這樣夠複雜夠保險了吧?其實在黑客面前,這幾乎就是透明的。組成密碼的這些信息來源,黑客只要有心,就都不難找到,它們能夠組成的排列組合對於計算機程序的運算速度來說其實少得可憐。三兩下就被破解了。

    這方面最典型的反面教材就是《神探夏洛克》里的Irene Adler,她把自己安身立命的那些情報都鎖在一個手機里,然後花樣作死,非要在解鎖密碼里向Sherlock示愛,結果就被Sherlock順著她的心思把密碼給破解了。

    隨機密碼大法

    那麼,真正保險的方法是什麼呢?

    有很多程序或者網站,可以幫你生成一個隨機字元串,你就直接把這個隨機字元串背下來,當做你的密碼。

    這串密碼與你的生活徹底無關,黑客就完全沒辦法縮小猜測的範圍,想要攻破,就只能靠硬算了。

    52個分大小寫的英文字母,加上10個阿拉伯數字,密碼可用的字元一共有62個。

    如果拿它們來組成一個8位數的密碼,大概有218萬億種組合。最強大的計算機也要算到天荒地老才能把這些排列組合全都試一遍。

    這樣一來,靠強攻,就很難攻破了。

    網站泄露密碼

    但是,強攻不成,還可以偷得到。

    這是因為很多不太正規的網站,在安全性保障上很有問題。

    像前幾年國內就發生過幾次惡性密碼泄漏事件。有幾個國內大型網站,居然是明碼存儲密碼的,也就是說網站後台可以原原本本看得見你的密碼是什麼。

    這就特別危險了,一旦網站後台被黑客入侵,所有會員的密碼就都被黑客掌握了。

    兩套基礎密碼

    那怎麼辦呢?

    首先你至少得有兩套隨機生成的密碼

    其中一套,只用在那些安全性最靠譜的幾個網站上,比如國內外幾個互聯網巨頭,他們在安全保障方面一般都相當重視,投入巨大,基本可以放心。

    剩下來的另一個密碼,用在其他網站上。

    無限密碼

    然後呢,你再把這兩套密碼變化成每一個網站都不同,即每一個網站都有一個不同的密碼。

    怎麼變化呢?

    很簡單,把那個網站的英文名稱最後一個字母加到密碼後面。比如,你的那個強密碼是12345,你現在要把它用在google上面,google最後一個字母是e,那你就把密碼變成12345e

    這樣一來,每個網站就都有一個不同的密碼了。

    即便黑客破解了其中一個網站的密碼,一般來說他接下來要做的只是去找到裡面那些不加修改就能應用到其他網站上的密碼,而不會在乎我們這種改變了一個字母的密碼。

    這樣一套密碼體系,是不是相對來說就更安全了點兒?

    本文節選自心理黑魔法之「大腦封閉術」|心理朋克 No.016


    定期修改吧 再就是不要用相同的秘密


    好的密碼應該做到:

    1 保證強度。(至少比較長的數字,標點,字母)
    2 不在不同的地方使用相同的密碼。
    3 不依賴工具。(工具被破掉呢?密碼管理工具等於一種把雞蛋集中到籃子里的玩法,算算概率的確安全,但是其複雜性帶來更多風險。)
    4 便於記憶。

    滿足以上要求的答案是:記憶一個生成密碼的演算法。其中,輸入密碼的位置作為參數之一。

    這樣,你需要記憶一次,就可以有很多高安全性的密碼了。

    最簡單的例子是你可以在所有網站的網址後面加生日。那麼在知乎的密碼就可以是 www.zhihu.com19781120 。當然,這不是個好例子。一旦破掉這個,別的也很容易猜測到。

    所以,動動腦筋,再改進下演算法。


    之前用的是花密管理密碼(當然寫在這裡之後就不會用了),現在改成用自己寫的代碼生成密碼:

    代碼的基本思路就是用幾個關鍵字生成MD2碼,作為隨機數種子,然後再{0~1, A~Z, a~z}之間偽隨機地選取字元作為密碼。

    GetPassword[key1_, key2_] :=
    Module[{},
    SeedRandom[Hash[{StringJoin[{key1, key2}], "Naive"}, "MD2"]];
    StringJoin[RandomChoice[BaseChar, 16]]]

    其中的"Naive"可以改成任何東西,比如照片,作為這個演算法的內部密鑰,而key1、key2作為記憶密碼和網站標識,從而生成密碼。

    就可以這樣用:


    作為一名文藝青年,又要簡單好記的密碼,當然是用音樂啦。譬如說國歌的簡譜就是51111567113135533135322652353532313551133552221251133513556531555315131555315151511夠長了吧,知道的人就好記,不知道的人,會認為記憶我的密碼是種折磨吧……你嫌不夠長嗎?當然,國歌才不到90秒,要不要來首4分鐘的?或者直接來首悲愴?要字母也好辦,前面加上guoge就行了。
    如果說如果密碼有限制,那我就採用幾句就好,也不用記憶密碼有幾位,因為音樂是有節拍的,譬如51111567113135這是不合理的,因為「把我們的血」就停了沒有「肉」。
    而對於一個對音樂有基本的入門了解的人來說,輸入再長也不會輸錯,也不會記錯。因為這是可以一邊內心哼,一邊輸入的。
    同時,歌曲有很多,我就算要設置多少個密碼也沒問題,不用怕重複。而這種密碼也可以告訴別人,不用怕告訴別人編碼規則之後,其他密碼就要改變規則了。譬如說有事不能上qq,要讓朋友幫我上q,告訴她「國歌」就行了。就算她知道了編碼規則,知道了a網站的密碼,也不會知道b網站的密碼。而一個人要記憶十個不同密碼是有困難的,要記憶十首不同的歌曲其實還是很容易的。
    什麼,她不懂音樂。嗯,我是文青欸,這不是文青要考慮的問題。


    關於什麼叫「安全」,@張雲聰前輩說得已經很好了。我copy了一下放在本文末尾處了。

    樓上很多高票答案的那些類型轉化理論聽起來很厲害,但是本質上無非是強行使用自己的記憶力和想像力來對抗社會工程學的破解。

    這些辦法有兩個重大缺陷。

    第一是費腦,一堆什麼轉化啊分類啊的麻煩死了,用密碼的時候還得進行回憶和計算。當你有幾十幾百個密碼需要管理的時候,光是需要記憶的信息就一大堆了。

    第二,密碼方案是否安全從來都不是一個比誰的腦洞更有意思的事情,密碼安全不安全從來都是靠力量說話的。樓上一堆用古詩的用什麼組合的,聽起來很厲害的樣子,但事實上,在數個密碼泄漏後,這些方法在社會工程學方法面前將不堪一擊。科技發展到現在,人類破解密碼的智慧根本就不是簡單用個什麼古詩的拼音第一個字母所能難倒的了。

    (題外話:人類智慧的對抗到底到了什麼程度?感興趣的可以去看一下這個這個文章。)

    就拿當前最高票回答來舉例子吧。

    1)Shift鍵符號替代法。
    選取基礎密碼「beauty2017!」中的「17」字元,輸入時同時按住shift鍵。京東密碼變成了「Jbeauty20!!D」,QQ郵箱密碼是「qqbeauty20!!mail」。密碼沒變,但是安全性卻大大提升。

    這個看起來是不是很厲害?那我問你,如果有一天你的京東密碼和QQ密碼都泄漏掉了,請問你的微信密碼還安全嗎?我都不需要上什麼高端的方法,直接根據上面這段話就可以猜得八九不離十了。(我猜「Webeauty20!!Chat」)

    而且,這種方法依然很費腦。每次輸qq郵箱密碼時你都會問自己一個問題,這密碼到底是「qqbeauty20!!mail」,還是「QQbeauty20!!Mail」,還是「Qqbeauty20!!mail」?有人說沒關係,我都用小寫,這個問題不存在的。好,我覺得確實好,但是黑客拿到你的泄漏密碼後分析出你密碼的這個特點後也會大聲叫好的。因為破解難度又減小了。


    看懂了的同學會發現,其實這個事情本質上不是什麼方法的問題,這是一個信息量的問題。我們自己簡單設計的演算法,要麼難記,要麼很容易被猜出來。

    那難道就不存在安全好用的密碼管理方案了嗎?答案是,如果你自己想靠簡單的奇思妙想來得到這樣一個方案的話,確實不存在。

    不是因為你不聰明,而是因為別人也很聰明,專門搞密碼破解的人不僅聰明,還有他們聰明的前輩大師們留下來的系統經驗。


    那是不是這樣的方法就絕對不存在呢?還真不是。借用剛才推薦的文章里的一句話:機器創造出來的怪獸,只有機器才能戰勝。

    雖然我們普通人想出來的方法都很容易被猜出來,但是學術界和工業界專門有人研究難以被猜出來的函數啊。

    事實上已經存在經過學術界工業界廣泛驗證的安全hash函數。給定一句話,可以很容易計算出它的hash,但是哪怕我連很相似的一百個(不常見的)句子的hash都一起給你,你也極其難猜出來這句話是啥。

    基於這些hash函數可以很容易寫出安全性極高的密碼生成器。

    我自己在2015年4月初(long long ago)開始憂慮自己密碼管理的問題,還寫了個人人日誌展示自己的機智(《我的密碼就是這樣的》)。後來知道了安全hash函數之後發現自己之前想得太簡單了,於是基於sha256構造出了一個安全的演算法。

    然後又經過了很長時間的拖延,到今天,app發布了2.1版。

    使用這個app可以做到,只需要記憶一個難以被別人猜到的句子,即可安全管理你的所有密碼

    使用了之後效果是什麼樣的呢?有一天網站1的密碼泄漏了,於是你的密碼泄漏了,是【xeb,]0IC8Tm@q6】;又有一天網站2的密碼泄漏了,於是你的密碼泄漏了,是【6ioh8e623n1】;又有一天網站3的密碼泄漏了,於是你的密碼泄漏了,是【O44HIQoe5p3】。有一天一個壞人喜歡上了你,去查了一下社工庫想破解一下你的微信密碼。

    壞人卒。而你依然能隨時方便準確地拿到自己的密碼。

    我們的app目前免費並且沒有廣告沒有內購項目,完全不用聯網即可使用。歡迎大家下載,也歡迎大神幫我檢查一下演算法有沒有安全問題。


    廣告詞:Password app是一款優雅且強大的app。它採用了基於SHA256的演算法確保您密碼的安全性。另外,它好用到不行。

    官網是:Password app

    app store鏈接:Password - by Lei Zhang on the App Store

    Python3版源代碼:https://github.com/zhoilet/Password/blob/master/password.py


    以下內容引用自 如何管理好自己的密碼? - 張雲聰的回答:

    之前csdn、天涯密碼泄漏之後,我就在思考如何保證密碼安全,一個安全的密碼要保證以下條件:

    1. 密碼要相對複雜,不容易被md5反解。
    這樣在一個md5加密的網站即使被拖庫時,也能避免你的該網站賬號受害。
    2. 不能通過一個網站的密碼推算出其它網站的密碼。
    這樣即使一個網站是明文存儲密碼,丟的密碼也只有這一個網站。
    3. 不需要增加額外記憶工作,使用上要較為方便。
    4. 必須有個必要的口令在我的腦子裡,且該口令不能通過任何方法任何其它信息反推出來。
    這一條是我不推薦 lastPass之類的原因,之前就有過泄漏,而且是一泄漏泄漏一堆,這顯然是給黑客製造了個好靶子,這種理論上不安全的東西,被泄露只是時間問題


    2011-7-29 19:07 補充:
    突然想起來一點東西,就是「對你重要的不一定對別人重要」

    如果你並非名人,那麼社交帳號、IM帳號就並不是非常重要(某些人的話可能QQ會比較特殊),因為盜過來除了發廣告基本沒用,也無法形成太大的破壞。這類帳號只要不是弱口令,基本就不會有什麼風險。沒有人會做吃力不討好的事兒。

    真正重要的是:

    1. 有可能讓自己被請去喝茶的帳號,這個不多說
    2. 涉及到金錢的帳號,支付寶、網銀
    3. 你的親朋好友最認可的帳號(例:QQ詐騙)

    ——————————原回答————————————

    看了上面幾位的答案,深感IT黨的強大。
    不過個人傾向於認為密碼是人用的,不應當過於麻煩,起到該起到的作用就可以了。

    由於不可能所有網站都用統一的密碼,也不可能每一個都是獨立的,所以我的做法是根據重要程度來對密碼進行分配。

    以我自己為例,我常用的密碼有4個,分別是:
    6位數字密碼,7位數字密碼,7位字母密碼,9位數字字母混合密碼。

    6位數字密碼非常簡單,主要用來註冊各種非常駐網站,這些網站往往是為了下載東西或者看帖子臨時註冊的,同時還用來體驗一些不著名的網站的服務,避免將來密碼泄漏威脅到其它帳號,與此相對應的還有一個用戶名,純粹用來進行試驗的。

    7位數字密碼,用於能標記我身份,但又不很重要的帳號,例如我在學校論壇的帳號,我的人人帳號,還有一部分馬甲帳號,由於這些帳號價值不高,被惡意盜取的可能性非常小,這些帳號還有一個特點是都有綁定郵箱或者手機,所以並不擔心被盜,除此之外,純數字密碼在手機上輸入起來也比較方便。

    7位字母密碼,用於部分較為隱私的馬甲帳號,也就是不想讓別人知道是我的馬甲帳號,因為我的7位數字密碼有部分好友是知道的,故需要專門一個密碼進行區別,與此對應的還有幾個相關用戶名。

    9位數字字母混合密碼,用於Gmail,以及比較重要的服務,包括支付寶等,只有非常重要的帳號才會使用這個密碼,因為它曝光的越多,我的其它重要帳號就越危險。

    除此之外還有兩個不在此列的密碼:
    我的QQ密碼是10位數字密碼,是唯一的單獨的密碼,這個是歷史原因了,而且騰訊老不讓我改,後來想想,為了自己其它帳號的安全,不改是正確的決定。
    我的貼吧帳號和微博帳號密碼是16位數字+大小寫字母+符號,因為這兩個帳號已經棄用了,但是為了穩妥起見還是改成了最大強度的密碼,同時自己這裡並沒有存根,所以自己也不會再打開它。

    另外現在很多網站都使用郵箱註冊,存在猜解密碼的隱患,所以平時註冊的時使用的密碼和對應郵箱不要相同。

    我註冊網站時常用的郵箱有3個,視我對該網站的信任程度使用163、QQ、Gamil郵箱註冊。
    163郵箱本身密碼是7位數字密碼,用於註冊使用6位數字密碼的那一類網站。
    QQ郵箱使用QQ的密碼,用於註冊使用7位數字密碼的網站。
    Gmail郵箱使用9位數字字母混合密碼,用於註冊非常信任的網站或部分國際網站,配合的密碼為7位數字密碼。

    這樣一來,就基本不會出現通過一個密碼猜解出郵箱密碼的情況了。

    順便廢話兩句:
    我的支付寶密碼、淘寶密碼、支付密碼是一樣的,因為我平時並不在支付寶內充錢,充錢後也會在3、4小時內使用,所以並不擔心支付寶賬戶被盜的問題。
    而我的銀行卡密碼是圖形化的(可以想像一下在取款機鍵盤上畫出一個圖形),這樣的密碼我平時根本不會去記(也就不可能說夢話說出來),只有在見到取款機的鍵盤時,我才能按出自己的密碼。

    通過這幾類密碼,我平時並不用記太多的東西,還能很好的保證自己的帳號安全。

    低級帳號密碼簡單但沒價值,
    中級帳號密碼較為簡單,但有保護,
    隱私帳號有專用密碼,
    重要帳號有複雜密碼,
    廢棄帳號有骨灰級密碼。


    推薦閱讀:

    為什麼密碼的驗證方式一直沒有得到突破?
    攜程信用卡信息被泄露,除了更換信用卡還有什麼別的好方法處理么?

    TAG:網路安全 | 密碼 | 密碼管理 |