1. 程式人生 > >關於密碼的那些事兒—淺談密碼的設計與管理

關於密碼的那些事兒—淺談密碼的設計與管理

這是整理於2011年底的一份報告材料。

2011年底,國內遭遇網路安全的“崩盤”。從CSDN使用者資料被爆庫,到天涯使用者資訊被刷庫,到眾多社交網站、論壇使用者資料被拖庫,密碼(口令)洩露成為2011年年終中文網際網路上非常熱門的話題。
在網際網路上,需要用到密碼的服務幾乎無所不在,網銀,淘寶,郵箱,人人,facebook, QQ,MSN,微博,部落格,linkedin,各種論壇……但我們輸入的口令和網站對密碼的保管是否安全?這是一個值得我們思考和亟需解決的問題。
本次報告以近期的網路使用者資料洩露事件為背景,簡要介紹身份認證與密碼的幾種形式,從普通使用者、網站建設與維護者的角度重點分析如何進行密碼的設計與管理,並對使用者

資料洩露事件表達一些看法。

(番外:2011年底的中國網際網路真是異彩紛呈,隨著CSDN明文密碼資料庫的外洩,這似乎成了一種潮流,各大網站都開始以數百萬,甚至上千萬使用者為批次,爭先恐後洩漏明文方式儲存的密碼,你要不洩露個百八十萬使用者的密碼,都不好意思說自己的網站受歡迎。)

密碼的那些事兒–淺談密碼的設計與管理(2012年1月)

1.背景

1.1  2011年年底國內密碼洩露大事記

   12月21日:CSDN 640萬用戶資訊(賬戶、密碼、郵箱)遭到洩露(番外:其實在這之前,每隔一段時間,國內很多網站的賬號資料庫就在黑客資源交流圈子內流傳、更新,我最早見到CSDN600萬資料是在11月底。CSDN資料的洩露,引發“蝴蝶效應”,國內網路安全的江湖一時腥風血雨,眾多黑客競相公佈各大網站的使用者資訊資料,當然存在炒作的情況)

12月22日:多玩、夢幻西遊、天涯、7K7K、人人網使用者資料洩露

12月24日:178淪陷、UUU9淪陷,網易土木線上淪陷,資料量驚人

12月25日:北京麒麟網資訊科技有限公司洩露百度與PPLive帳戶,並且自身帳戶資訊全部洩露

12月25日:UUU9.COM,178皆被黑客二度拖庫;天涯洩露事態升級,4000萬用戶資料外

12月25日:珍愛網5261302條帳戶資訊洩露被證實

12月26日:myspace,ispeak洩露帳戶資訊;178第3次被拖庫

12月27日:766驗證洩露資料十餘萬,ys168驗證洩露資料三十餘萬,千腦網盤使用者密碼資料洩露

12月28日:凡客20萬,噹噹10萬,卓越20萬用戶資料證實洩露

12月28日:太平洋電腦資料洩露,共293 0311使用者資料洩露

12月29日:DNSPod證實洩露,52PK洩露資料120萬

12月30日:淘寶2200萬用戶郵箱洩露

以下為這段時間賬號洩露情況的統計:

CSDN共計洩露642 8632 個賬號,洩漏資訊:賬號、明文密碼、電子郵件;

交友網站:

人人網:共計洩露476 8600 萬個賬號,洩漏資訊:密碼、電子郵件

天涯:共計洩露969 5513 萬個賬號,洩漏資訊:賬號、明文密碼、電子郵件

珍愛網:共計洩露526 1302個賬號,洩漏資訊:帳戶、明文密碼

遊戲網站:

多玩:共計洩露830 5005 個賬號,洩漏資訊:賬號、MD5加密密碼、部分明文密碼,電子郵件,多玩暱稱;

178.COM:共計洩露1100萬個賬號,洩漏資訊:賬號、MD5加密密碼、全部明文密碼、電子郵件、178暱稱

UUU9.COM:共計洩露751 3773 個賬號,洩漏資訊:賬號、MD5加密密碼、全部明文密碼、電子郵件、U9暱稱

網易土木線上:資料約3.3G,洩漏資訊:賬號、MD5加密密碼等

夢幻西遊:約1.4G,洩漏資訊:賬號、郵箱、明文密碼、角色名稱、所在伺服器、最後登陸時間、最後登陸IP

北京麒麟網資訊科技有限公司:共計洩露907 2966個賬號,洩漏資訊:帳戶、明文密碼

Ispeak.CN:共計洩露168 0271個賬號,洩漏資訊:帳戶、明文密碼、暱稱

766.COM:共計洩露約12萬賬號,洩漏資訊:帳戶、md5密碼、salt、電子郵箱、資料庫排序ID

ys168:共計洩露約30萬賬號,洩漏資訊:帳戶、明文、電子郵箱

購物網站:

噹噹:共計洩露約10萬用戶資料,洩漏資訊:真實姓名、電子郵件、家庭住址、電話

凡客:共計洩露約20萬用戶資料,洩漏資訊:真實姓名、電子郵件、家庭住址、電話

卓越:共計洩露約20萬用戶資料,洩漏資訊:真實姓名、電子郵件、家庭住址、電話

京東商城:

淘寶: 2200萬餘郵箱

      在網際網路上,需要我們輸入使用者名稱口令的地方多得都讓人記不過來,多個電子郵件賬號,QQ, MSN,校內,開心,facebook,Blog,各種論壇,網銀,淘寶,電子相簿……,而上邊這些洩露的資訊中就很有可能有自己的。比如我的CSDN,天涯的賬號資訊就在流傳的資料庫中。

1.2  密碼洩露的影響

可能有人覺得自己又不是名人,又沒什麼錢,密碼洩露沒什麼危害,但總有你想不到的資訊會因此暴露,併產生一系列麻煩。

密碼洩露產生的影響有以下幾個方面:

1)賬號曝光只是最直接、最淺層次的損害。如果是論壇、SNS賬號,可能導致身份被假冒用於釋出虛假文章;如果是遊戲網站,則遊戲裝備可能被盜取。
2)上億郵箱賬號被公開,這對某些網路營銷者、病毒集團來說無異於天上掉餡餅,對被洩露者來說則意味著,將收到更多的垃圾郵件、廣告郵件,甚至是木馬釣魚郵件。
3)同一廠商的郵箱一般與多個網路服務賬號相通,比如新浪郵箱與新浪微博、新浪部落格,Gmail與谷歌文件、Google+等,賬號和密碼都是相同的,如果郵箱和密碼被公開,網民的私信、照片、社交網路也隨之被曝光,各種“門”可能會不邀而至。
4)還有不少網民用一個郵箱註冊了多家網路服務,甚至通用一個密碼,比如用網易郵箱註冊團購、淘寶、支付寶等電子商務網站,或者用郵箱接收銀行信用卡賬單、個人理財、股票交易資訊等。由於這些均與銀行賬戶直接關聯,賬號曝光導致的危害性更高。
5)危害可能還會波及你的親友。如果惡意攻擊者盜用你的郵箱或者SNS賬號,給你的親朋好友傳送假冒欺詐資訊,比如臨時借錢或者網購東西,他們由於對你的信任極有可能上當受騙。

     上述的影響大都涉及到基於賬號盜取的隱私暴利,黑客一般能按以下步驟進行利用:

1)從賬號資訊中找到關聯的郵箱,破解郵箱的密碼。

2)搜刮郵箱裡面的重要信件和資料,如網遊賬號資訊、公司資料、個人照片
3)通過社會工程學搜尋,確認哪些郵箱與重要的人物、公司有關聯,可以用來做商業犯罪或者釋出病毒等。 
4)沒太大用處的郵箱可以用來廣發垃圾郵件和病毒,也可以用來註冊大量垃圾賬號,廣泛用於論壇刷帖等等。 
5)黑客把所有密碼編成字典,以後盜號可以更快了。

6)隱私資訊都可以用於社會工程學攻擊,用於製作釣魚郵件。

以上步驟除了能榨取使用者賬戶內的有限財富外,使用者本身的隱私和資料也具有很大的利用價值。下邊,我進行上述過程的理想重現(番外:僅為理想再現,並非本人的實際操作,當然其根據來自於本人使用的網路服務實際情況):

1)在獲取某人A的天涯賬戶後,黑客首先嚐試關聯的網易郵箱,由於A的網易郵箱密碼與天涯賬戶相同,黑客毫不費力進入了郵箱。

2)進入郵箱後,黑客獲得A歷年來註冊人人網、開心網、智聯招聘、中華英才網、前程無憂、快錢、百度、百付寶、、京東、新浪微博的確認郵件。其中智聯招聘、中華英才網、前程無憂、京東的註冊確認郵件中直接顯示會員名及密碼。其餘幾個網站除開心網及快錢外均與天涯賬戶密碼相同。但因開心網及快錢密碼與京東密碼相同,也被猜中,至此以上網站密碼全被攻破。

3)通過前程無憂,獲知A的QQ號碼,真實姓名,身份證資訊,收入情況和生日等重要資訊。

4)嘗試破解QQ號碼,儘管A的QQ密碼與以上各網站密碼完全不同,但黑客依據真實姓名全拼、生日、手機和之前各類密碼的組合方式,迅速暴力破解成功。進入QQ郵箱,獲得A在豆瓣、淘寶、網易戰網的註冊確認郵件,暴力破解淘寶及支付寶密碼成功。

至此,一個天涯賬號的洩密變成了一個自然人從虛擬到現實全方位的洩密,黑客已經從A身上獲得的資訊可以反覆銷售數次:虛擬貨幣的賬戶賣給專人直接變現;網路遊戲的賬號賣給專人將虛擬物品變現;個人資料賣給各個推廣公司、調研機構(根據性別、年齡、收入、地域可賣給不同行業);私密關係賬戶可賣給騙子集團牟利(QQ、人人網或朋友網);天涯及微博早年註冊的ID可賣給網路水軍公司……

1.3 相關詞彙解釋

1.3.1 身份認證

    身份認證是在計算機網路中確認操作者身份的過程。

 (1) 根據你所知道的資訊來證明你的身份 (What you know ,你知道什麼 ) ,比如密碼。

 (2) 根據你所擁有的東西來證明你的身份 (What you have ,你有什麼 ),比如銀行卡。 

  (3) 直接根據獨一無二的身體特徵來證明你的身份 (Who you are ,你是誰 ) ,比如指紋、面貌等。  

    在網路世界為了達到更高的身份認證安全性,某些場景會將上面3種挑選2種混合使用,即所謂的雙因素認證。 例如,ATM取錢是使用了1與2的你有銀行卡,並且你知道密碼的雙因素認證。

1.3.2 爆庫、拖庫、刷庫、字典、社工庫

爆庫,通過一些技術手段或者程式漏洞得到目標網站資料庫的地址,之後將資料非法下載到本地,並進行(暴力)破解,得到密碼明文資料的過程。

      拖庫:從資料庫非法匯出資料。很多時候資料庫的資料需要匯出來在別的地方使用,並且資料庫資料可以匯出好幾種格式。

      所謂“刷庫”,就是指黑客入侵網站伺服器後竊取使用者資料庫,和爆庫、拖庫含義差不多。

字典,全稱是口令字典,黑客認為網路使用者經常使用的一些密碼,以及以前通過各種手段所獲取的密碼,放到一起的集合,破解密碼時會自動逐一使用集合中的密碼進行探測。

社工庫是從網站使用者洩露資訊整理出來的海量資料庫,其當前的賬號數量在數億級別,也就是說有數億個使用者賬號在黑客手上,這算是一個新詞彙,見下圖:

1.3.3 密碼

密碼,英文Password,或稱為口令,是指認證用途的字串,可用來驗證身份或檢查一項操作的許可,達到保護隱私以及防止未經授權的操作目的。常見於網站登入、對資料資料的存取、自動取款機的驗證。

     它使用身份認證中的 what you know機制。

2.密碼的設計與管理

密碼的設計與管理既是使用者個人的事情,也與網站的建設和維護者有很大關係。下邊就從個人與網站兩個角度來談談密碼的設計與管理。

2.1 個人的密碼設計與管理

對於個人而言,密碼的設計主要是解決弱口令問題(防止被人惡意猜解),密碼管理是在一定程度上消除密碼洩露。

對密碼的設計和管理要從安全性和方便操作性兩方面來看“密碼簡單的話雖然方便但不安全,太複雜的密碼又使用麻煩。事實上,即使是普通青年,也未必能像某些“裝逼青年”一樣對自己的每個賬號都生成一個複雜度夠高而且不重複的密碼並且使用各種匪夷所思的辦法記住它們,更別說普通的大眾使用者了,所以,需要在密碼安全和使用方便之間找到一個合理的平衡點。

2.1.1 主要步驟

首先,(對密碼重要程度分級)對需要使用密碼的服務進行安全需求的分級,級別越高的應該使用越複雜的密碼。(政策或法規在密碼分級方面的要求:資訊系統安全等級保護,或者是分級保護都涉及到密碼分級-其主要是從密碼的位數(8位到10位),字元組合複雜度(大小寫字母,數字和可見特殊字元組成),密碼更換週期(一星期,半個月,一個月)方面來分級的)

其次,根據得出的密碼安全需求級別,設計只有自己才清楚的“演算法”。

《逍遙法外》中的Frank  Abagnale 推薦說喜歡用街道地址做密碼,選對自己特別有意義但一般人很難知曉的事件發生地,比如初次約會的地方。每個人都應該有自己的一套密碼設計演算法,大家不應雷同,不然社會工程學黑客就可用大家通用的演算法去破解密碼了。

然後,對產生的多個密碼進行管理。對複雜密碼的設計與管理有兩種方式,一種是對密碼進行某種規律的編碼,只需在大腦中儲存密碼。另一種是用軟體或者硬體幫助記憶。

我目前的做法是,把複雜的密碼儲存在一個電子文件中,該文件加密儲存在本地,同時上傳到google文件伺服器中加密。就算有黑客破解密碼進入這個文件,也看不懂表示的是什麼。因為是使用了“隱語”來表示密碼。

2.1.2 密碼分級與設計

絕密級別:

     銀行密碼,線上支付如網銀、支付寶、Paypal等涉及財產的賬號資訊。

     這個級別的密碼,除非有限制,不然最小要有11位,不包含賬戶名、真實姓名或公司名稱(特別是那些自己容易在網上洩露的實際資訊),不包含完整單詞,由大小寫字母,數字,特殊符號兩種以上的組合。我實際使用中的密碼位數下限是15位,一個最複雜的密碼使用了17位。

     這個級別的儘量使用二次驗證,例如繫結工行的U盾,或者使用手機。每次登入都要驗證其它的一個,,這就從物理層面切掉被盜用的可能。

    絕密級密碼儘量做到三個月換一次。

機密級別:

     工作郵箱,關係鏈賬號(親朋好友或同事最認可的賬號如QQ,MSN,飛信或微信,人人,開心網,linkdedin的賬號資訊)。這個級別的密碼,肯定有密保問題,一種做法是對密保問題使用亂碼回答,截圖加密儲存到gmail中,以防止黑客使用社會工程學的方法破解。

祕密級別:

非工作郵箱,豆瓣、BBS、微博,知乎、技術論壇之類賬號。這個級別最少要8位以上,以實現抗窮舉式的密碼破解。

普通級別:

臨時使用的網路賬號,如為了下載一個附件而註冊的論壇賬號。這可以使用一個非常容易記憶的弱口令,如prettygood, 可以是萬年不換的。但這個級別的使用者名稱絕不能與上邊三個級別的相同。

2.1.3 一個“演算法”例子

(大家可以自己用筆寫一下,用類似的演算法設計出一個較複雜的密碼)

1)取一個8字母的英文單詞,比如 CONGRATS(關鍵詞)

2)將第一次出現的下述字母進行替換

i – !

[email protected]

s – 5

u – 1_1

S-$

A-4

I-1

E-3

O-0

因此, CONGRATS變為  C0NGR4T$

3)加上根據網站名生成的密文:比如sina的母音字母在2、4位,得到24 ,然後子音在1、3位,得到13 。將其中的奇數轉為該數字在鍵盤上對應的符號,得到!2#3.

此時密碼變成了 C0NGR4T$!2#4

4)奇數位小寫,偶數位大寫:c0nGr4t$!2#4

   其中根據網站名生成的密文,可以有很多種變通,如取網站域名部分第1,3個和末尾的字元(不足以0代替);或者把網站的一句宣傳語加入,如天涯的“全球華人網上家園”:(Qqhrwsjy),有些網友更搞笑:

“’ppnn13%dkstFeb.1st’就是表示‘娉娉嫋嫋十三餘,豆蔻梢頭二月初’,Tree_0f0=sprintf(“2_Bird_ff0/a”)這個密碼錶示‘兩個黃鸝鳴翠柳’,‘池上碧苔三四點,葉底黃鸝一兩聲’對應的密碼是‘csbt33.ydhl12s ’”

     不過,這種基於自己演算法生成的密碼有一個問題是,當多個網站密碼洩漏後,通過對比不同網站的密碼很可能反推出演算法。因此要保證即使別人得到你一個地方的密碼,也猜不出其它地方的密碼。

2.1.4 基於軟體的密碼生成與管理

這種做法的主要思想是:為每個不同的服務使用不同的隨機密碼,個人只需記住密碼管理器的主密碼,其它工作由本地機器或伺服器完成。下邊推薦兩款密碼管理工具。

本地密碼管理器Keep Pass :

其優點是:免費開源軟體,綠色無需安裝。支援高階加密標準(AES,Rijndael演算法)和Two fish的加密演算法。內建強大的密碼生成器,可以方便地生成一些高複雜度的密碼。支援多平臺和密碼資料同步:例如LinuxMac、iPhone、Android等。

類似的本地密碼管理軟體還有RoboForm

基於網路的密碼管理器Lastpass:

其優點是:免費使用。提供強大的生成隨機密碼的功能。提供多種多因素身份驗證方法的支援,如USBkey,快閃記憶體盤指紋識別裝置。 只需記住1個主密碼,就可以登入所有的使用服務的網站。跨平臺、跨瀏覽器。

    但Last Pass的伺服器被入侵過,它與keep pass都使用同步工具把密碼資訊放到雲中,受攻擊的目標明顯,同步伺服器均很可能被黑客集中的攻擊。

國內類似的密碼管理器有花密網站(見下圖):

其原理是javascript在本地瀏覽器根據使用者輸入的關鍵密碼與代號計算出密碼,這些資訊不會在網路上傳輸。但其伺服器同樣易受入侵,可能會被植入竊取資訊的木馬。前幾天使用時,就報過毒。

2.1.5 密碼設計與管理的幾大補充原則:

1.不使用常見的禁用口令:

上圖是西方版的“弱密碼”,通過分析2011年底國內洩露的資料庫資訊,安全專家發現其中“弱密碼”重複率高達93%,進而得到中國版的“弱密碼”(圖):

 

我們可以從洩露的CSDN使用者密碼設計得到借鑑(可以肯定的是會有黑客從洩露的密碼中進行統計,製作口令字典,所以我們儘量不用這裡邊的高頻率口令。)

對洩露的CSDN使用者密碼設計的統計:

1)有近45萬的使用者使用 123456789 和 12345678 做口令。

2)有近40萬的使用者使用自己的生日做口令。(形如19771019)

3)有近15萬的使用者使用自己的手機號做口令。

4)有近25萬的使用者使用自己的QQ號做口令。

5)設定成弱口令的使用者佔了590萬,也就是那種就算用MD5或是SHA雜湊成雜湊也能很快就被暴力破解出來的口令。

6)只有8000多個使用者的口令裡在8個長度以上,並有大寫字母,小寫字母,數字,並不在常見的口令字典表裡。

2.從黑客的口令破解字典設計來看口令的幾個禁用原則:

密碼為使用者名稱中的某幾個鄰近的數字或字母,密碼為連續或相同的數字或字母,使用生日作密碼,使用常用英文單詞作為密碼,使用8位以下的數字作為密碼。

(例子:23456789、1111111、abcdefg、jjjjjjj;考慮到年月日共有六種排列順序,一共也只有74400×6=446400種;由於數字只有10個,8位數字組成方式只有10的8次方=100,000,000種)

3.不要使用同樣的使用者名稱去在不同網站註冊,並做到密碼各不相同。很多網站支援郵箱登入,而且並不會在網站上顯示你的郵箱地址,所以使用同一郵箱,但絕不使用同一賬戶名稱。

4.及時對作業系統進行安全查殺,防止被木馬竊取密碼。

5.防止社會工程學攻擊:防止偷窺,警惕釣魚網站,嚴禁把密碼寫在顯眼的地方。

7.密碼中不要使用任何社會工程學資訊:如家庭成員的姓名、汽車牌照、電話號碼、QQ號、生日、身份證號、地址。

附一個檢視密碼複雜度的網站:

注:1,000,000,000,000,000 (one quadrillion) (1千萬億,或1千兆,或0.1京)

2.2 網站(網路服務提供商)對使用者的密碼管理

個人的密碼設計與管理只能解決弱口令和一定程度上的密碼保管問題,但若網站對使用者的密碼管理不安全,也是白搭。下邊是對於網站建設與維護者的密碼管理建議:

2.2.1. 限制使用者輸入易被破解的口令即使用口令黑名單

(圖:twitter的口令黑名單),通過正則表示式限制使用者口令的長度,字元組合的複雜度。(當然還要保持使用者的適度體驗度,以免使用者反感)

2.2.2. 絕對不儲存使用者的明文口令

明文儲存的話,萬一密碼資料被竊取或失誤外傳,使用者隱私等資訊暴露無遺。所以儲存下來的一定是加密後的口令,使用不可逆的雜湊加密,推薦使用SHA512+SALT,以防止利用彩虹表之類技術的破解。

SHA512+SALT加密的說明:要安全,加點鹽——不是碘鹽,而是隨機鹽。 當用戶首次提供密碼時(通常是註冊時),由系統自動往這個密碼裡撒一些“佐料”,然後再雜湊,把密碼處理成512位的字串。而當用戶登入時,系統為使用者提供的密碼撒上同樣的“佐料”,然後雜湊,再比較雜湊值,以確定密碼是否正確。這裡邊的“撒鹽”salting機制,可以自己定義,新增append或異或xor,只要能改變輸入值就可以 。 例子:

使用者名稱:zane    密碼:20120110

明文密碼進行第一次 SHA512計算,得到:

42010242e8ea0b639f45ef961805403fb46e675f3a91dae09cd534b8368ecc30dcff30157a6f3f1c72e04f80f63473ea387182b3e3e6371cad7e49af7b0d114b

指定兩個 salt: salt1 = @#$%   salt2 = ^&*()

salt1+使用者名稱+salt2+SHA512,得到:

@#$%zane^&*()42010242e8ea0b639f45ef961805403fb46e675f3a91dae09cd534b8368ecc30dcff30157a6f3f1c72e04f80f63473ea387182b3e3e6371cad7e49af7b0d114b

對新字串再計算一次 SHA512計算,得到最終的加密串:

9001fa70c68bad9b7c863cff4013be58dea2ca26e1ba8b5c0be503d225719c969779560c119259620567afc16666c87d83d6aece31d8ec9aab730100ff4b85e9

該加密串儲存在資料庫中,最開始的20120110密碼則不儲存

但事實上,目前網際網路上的站點存在以下四種存放使用者名稱和密碼的方式:

1)明文存放。這種網站的使用者資料特別危險,網站被黑客拿下,使用者資料直接拿走。
2)可逆加密存放。使用者的密碼會被可逆的加密一次後存放在網站的資料庫中,可逆加密也是非常危險的。
3)不可逆加密。例如密碼通過MD5等不可逆加密演算法加密後存放在網站資料庫中,比上述兩種密碼加密方式安全。(如果md5加密後的密碼洩漏,明文密碼仍有通過後邊介紹的彩虹表技術查出來的可能)。

4)明文新增隨機值後的不可逆加密。例子是上述的 SHA512+salt,這種加密的安全性比第3種又提高了很多。
    最近很火的使用者訪問量最大的“官方電商”鐵道部訂票網站12306.cn的伺服器是明文儲存語音查詢密碼的(圖):

CSDN、人人網洩露的資料表明其儲存明文密碼的(至少在資料洩露之前是),最近又暴出新浪微博也儲存明文(見圖),2011年底洩露了密碼資料的178,多玩則並未儲存明文密碼,而是黑客獲取雜湊後用彩虹表之類的技術破解出來的,因為洩露的資料中存在不少未被破解的雜湊字串。

2.2.3 根據服務的安全要求決定是否在瀏覽器中儲存口令

建議是不要在瀏覽器中儲存使用者密碼明文也不要在cookie中儲存加密後的密碼,因為這些資訊容易被黑客通過網頁木馬之類獲取進行離線破解。可以在網站顯眼位置提醒使用者。

2.2.4對口令進行加密傳輸

1)使用專用的登入加密演算法:

例如新浪微博的登入就使用了加密,在網路上傳輸的口令與從新浪伺服器獲取的伺服器時間servertime及隨機字串nonce有關,使用特定的登入加密函式(如下圖):

2)使用HTTPS協議,而不是HTTP這樣的明文協議進行網站資料傳送,雖然會增加伺服器的負載。

現在(2012年初),還有些大型網站登入過程非常不專業,密碼在網上是明文傳輸。

例如人人網(renren.com,20111230測試結果),CSDN,12306火車訂票網:

        

國內外一些著名網站的密碼傳輸方式統計:

某些研究所的郵箱登入時有SSL登入的選項,但卻不是預設的,也不是https加密傳輸,這也帶來了安全隱患。

2.2.5對使用者忘記密碼的處理

不要提供找回原來的密碼功能,使用者一旦忘記密碼後,提供的應該是密碼重置服務,使用者申請找回口令時,系統生成一個雜湊值唯一的隨機字串,然後給使用者傳送包含該雜湊字串的連結,使用者在指定的時間期限內點選它以重設新口令。此外,可以使用多重認證形式以找回或重設密碼:手機+郵件,U盾,動態口令牌等。

(“找回密碼”是一個關鍵的郵箱安全設定,很多黑客破解郵箱是通過“找回密碼”進行破解的,因此如何設定“找回密碼”的安全問題是一個很重要的環節。)

禁用找回密碼的不安全提問甚至不提供通過提問的方式來找回密碼:

“找回密碼”中不安全的問題,主要有“你的生日?”(使用者會在其他社交網站錄入自己的生日);“你的姓名?”(熟悉使用者的人都知道其姓名);“你的出生地?”(通過身份證號碼可以算出出生地);“你的手機號碼?”(太多的地方容易洩漏手機號碼)等等。

2.2.6密碼探測防護

對可疑登入要求填寫驗證碼(CAPTCHA,“Completely Automated Public Turing test to tell Computers and Humans Apart”,全自動區分計算機和人類的圖靈測試),驗證碼是計算機很難識別內容的圖片。這種方式能比較好的防止以程式的方式來自動嘗試使用者的口令。限制口令失敗次數,比如密碼錯誤三次後禁止登入一小時。

2.2.7 防止內部員工直接接觸密碼資料庫

開發團隊不允許直接操作使用者資料庫,只允許通過安全的介面來驗證使用者,應該對操作者有審計功能等等。

2.2.8 使用成熟的第三方賬戶管理機制

例如如OAuth,OpenID:使用者不需要自己維護和管理一個新的賬號,中小網站的使用者登入時,接入大平臺的使用者認證,這樣就減少了許多不必要的密碼。當然,前提是這個大平臺自身對密碼的管理足夠安全。

OpenID是使用者認證(即使用者是誰,誰發的貼子和評論),OAuth是授權認證(使用者能做什麼,比OpenID給予的資源更多)。目前Google,Microsoft,Facebook,Yahoo,Flickr,AOL等都支援OpenID與OAuth服務。國內很多網站都混用了這兩種機制,比如新浪。由於時間關係,這裡不再詳細介紹。

2.2.9. 其它(不專用於密碼管理防護的技術)

對網站資料庫加密保護;及時對網站進行漏洞檢測, 包括後門和注入類的掃描;對網站掛馬進行實時監控

(CSDN建立人蔣濤在1月6日公佈的第三方安全公司的審計結果:CSDN密碼洩漏的原因主要有三點:“開源CMS系統等第三方系統存在漏洞,導致CSDN系統存在安全風險;應用程式存在跨站指令碼漏洞;網站存在大量系統後臺認證漏洞,如弱口令及暴露的後臺等;CSDN已經停用但還在線上的老系統。”前兩點就屬於這一方面。)

3.其它

3.1對網站為什麼儲存明文的猜測

應付網際網路審查與監管;

系統開發前期為減少工作量而使用明文密碼;

升級系統時為相容考慮未解決明文問題;

收集使用者隱私的需要(灰色途徑)

3.2對網路實名制的啟示

在世界上唯一實行“網際網路實名制”的韓國,所有大網站都要求使用者用真實姓名和身份證號碼進行註冊。2011年7月,韓國三大入口網站之一Nate和社交網站賽我網遭到黑客攻擊,約3500萬名使用者資訊外洩。此次個人資訊洩露案件遠超過2008年電子商務網站Auction的1800萬名使用者資訊外洩,成為韓國IT史上最大規模的黑客攻擊。此後,為了減少在因特網上非法蒐集個人資訊的行為,韓國政府決定分階段廢除因特網實名制。同年11月,韓國NEXON旗下網路遊戲“冒險島”的1320萬用戶資料遭黑客攻擊,洩露資料包括玩家註冊號、密碼、真實姓名和身份證號碼。自“網際網路實名制”實行到2011年為止,韓國網站的個人資訊外洩事件涉及到的使用者數量約為1.2億,而韓國網際網路使用者只有3800萬人,可以說幾乎所有韓國網際網路使用者的個人資訊都被外洩過。這些事件更加強了民眾反對網際網路實名制的呼聲。

陰謀論:2009年11月,包括賽門鐵克在內的國際知名安全廠商的使用者明文密碼資料被洩露,之後國內安全廠商開始只儲存加密的密碼,但此前的密碼機制仍有遺留。2011年底洩露的資料可能在2009年底就在安全的圈子內流傳了,並且在地下有所交易,現在放出,是為了抵制網路實名制。

這次洩露,讓人對網路實名制產生了有依據的懷疑,抵制。以微博為例,如果實行實名制,一旦發生客戶資料洩露,特別是認證使用者中的政界商界人士及明星們的損失不是運營商們隨便賠得起的。若堅持實行實名制,部分認證使用者考慮到資料洩密的後果可能退出,現階段微博靠名人吸引使用者的戰略將無法再實行下去。

在一定程度上說,只有網站不儲存像身份證號等能吸引黑客的重要資訊,才能減少由黑客引起的個人資訊外洩事件。而目前的網路實名制是需要提供這些重要資訊的,所以,從資訊保安的角度來看,個人不贊同網路實名制。

3.3密碼的破解

1)彩虹表技術:

目前流行的密碼破解都使用了彩虹表技術,彩虹表的全稱是彩虹雜湊表 ,其根本原理是通過龐大的、針對各種可能的字母組合預先計算出雜湊值,組合暴力法和查表法,在這兩者之中取得一個折中,用可以承受的時間和儲存空間查詢要破解的口令雜湊對應的密碼。

我使用的一個彩虹表(tables_xp_fast)可以在11分鐘內破解所有可能14位數字字母密碼組合中的99.9%,這還是用了最小的彩虹表。表越大、越全,攻擊破解能力越強。而且,目前使用不同雜湊演算法(MD5, SHA1, SHA256, SHA512, SHA-3)的彩虹表還處於不斷的增長與優化中。

  網上有CMD5碰撞庫,就是從密碼雜湊後的值反查原文:

2)對加鹽值的雜湊破解

像windows hash(未進行syskey加密)、非加鹽值MD5等都可以通過大型的密碼錶(如彩虹表)進行對比解密,所以相對而言相當的輕鬆,而帶有加鹽值的密文就相對而言複雜的多,現在的MD5表大小達上百G,而如何加鹽值的可能性有10000個,那麼密碼錶的應該是MD5 size*10000,就可以解密出原MD5表能夠解密的密碼了,一些網站也提供了對應的salt解密,但是測試以後效果並不是非常好,如上述的CMD5網站。

3.4 密碼的未來進化

密碼的未來進化趨勢是核心授權體系。使用者向某個網站驗證身份,只需要向身份驗證商驗證,剩下自動完成。現在的OpenID就是一種解決方案。同時,實體互動和授權的精細劃分也是一個趨勢。某個網站訪問別的網站的資料的時候,會形成一個訪問令牌。這個令牌對需要訪問的內容詳細寫明,並且需要使用者授權。OAuth,openID是這個趨勢的代表。

另外一個趨勢是利用某個足夠安全的裝置作為以上兩者的終端載體。目前這個裝置用的是手機,但手機不是一個足夠安全的裝置。也許這會是下一個XX門的隱患吧。

3.5開放思考

CSDN密碼洩露事件之後,雲儲存的賬號和資料是否會遭受更多的懷疑?這個供大家討論。

4.結語

    (淘寶體)當你暢遊在網路世界,是密碼,為你遮風擋雨、為你捍衛隱私、為你默默付出從不言悔。你真的瞭解自己的密碼麼?當你用暗戀的菇涼男紙的姓名來規範它的時候、當你隨隨便便用123456789來敷衍它的時候,有考慮過密碼的感受麼?!不要在失去以後才知道後悔,趁現在還來得及,愛惜它、保護它,正視你對密碼的情意吧!親!

(詩句仿用)問世間情為何物,只讓人想改密碼;兩情若是久長時,又豈在一段密碼;借問酒家何處有,遙看密碼掛前端;西湖柳,西湖柳,沒有密碼怎麼走。

5.參考文獻

[1] Atul Kahate,邱仲潘等譯.密碼學與網路安全[M].北京:清華大學出版社, 2006

[2]Mark Burnett . Perfect password: selection, protection, authentication. Syngress,2005

[3]Joey_in . 普通青年網際網路賬號密碼設定不完全指南

[4]stackexchange . 密碼設定討論.

[6]知乎.如何管理好自己的密碼?[EB/OL].http://www.zhihu.com/question/19695004

本文基於 署名 3.0 中國大陸

本報告PPT可於 http://1.johnhome.sinaapp.com/?p=458 下載

相關推薦

關於密碼那些事兒密碼設計管理

這是整理於2011年底的一份報告材料。 2011年底,國內遭遇網路安全的“崩盤”。從CSDN使用者資料被爆庫,到天涯使用者資訊被刷庫,到眾多社交網站、論壇使用者資料被拖庫,密碼(口令)洩露成為2011年年終中文網際網路上非常熱門的話題。在網際網路上,需要用到密碼的服務幾

密碼加SALT原理

是否 get 註冊 我們 隨機 blank ref .com 使用 我們知道,如果直接對密碼進行散列,那麽黑客可以對通過獲得這個密碼散列值,然後通過查散列值字典(例如MD5密碼破解網站),得到某用戶的密碼。   加Salt可以一定程度上解決這一問題。所謂加Salt方法,就是

密碼學(二)Merkle(默克爾)樹

Merkle Tree多數是用來進行比對和驗證處理,一般意義上來講,它是雜湊大量聚集資料“塊”的一種方式,它依賴於將這些資料“塊”分裂成較小單位 的資料塊。每一個小單位資料塊僅包含幾個資料“塊”,然後取

機器學習深度學習的模型設計

今天我們來聊一聊,機器學習與深度學習的模型設計。 運用機器學習演算法進行研究,其實就是尋找目標函式的過程。通過構建機器學習模型(形成函式集),用訓練資料做驅動,尋找與訓練資料匹配,並且在測試資料中表現優異的函式。所以構建機器學習模型就顯得十分的重要了。以線性迴

密碼學(一)基礎知識

說到密碼想必大家都不陌生,其實世界上有兩種密碼,通俗的說:一種是防止小孩偷看你的檔案;另一種是防止當局閱讀你的檔案。 那麼現在我們來說說專業術語 - 傳送者和接收者 傳送者和接收者就不必多說了,一方傳送訊息,另一方接收訊息,以至於第三方(竊聽者)

HTTP請求響應

tcp 方法 刪除 請求 連接 客戶機 cin tex 文件 HTTP協議用於客戶端和服務器之間的通信,請求訪問的一段是客戶端,提供資源響應的一段是服務器端。 HTTP通信是采用請求應答的方式來進行的,客戶端發出請求,服務器響應。如果沒有客戶端的請求,服務器端是不進行任

分布式系統的那些事兒(三) - 系統系統之間的調用

數據格式 轉換 處理 分布 互調 圖片處理 動作 人性 並且 系統與系統之間的調用通俗來講,分為本地同一臺服務器上的服務相互調用與遠程服務調用,這個都可以稱之為RPC通信。淺白點講,客戶訪問服務器A,此時服務器要完成某個動作必須訪問服務器B,服務器A與B互相通信,相互調用,

JS基礎內置對象

null ngs 但是 了解 ray 修改 創建 ror 嚴格 第一篇js文章,今天我將從基礎部分,以及三座大山開始淺談一下自己對js的理解,有不對的地方,請大神們告知修改 我們先來了解一下js的一些基礎, 首先是數據類型,JS有兩種數據類型,原始類型和引用類型,我們用ty

js設計模式之發布 — 命令模式

刪除 常見 設計程序 體會 span 一個 發送 正在 是什麽 命令模式最常見的應用場景是:有時候需要向某些對象發送請求,但是並不知道請求的接收者是誰,也不知道被請求的操作是什麽。此時希望用一種松耦合的方式來設計程序,使得請求發送者和請求接收者能夠消除彼此之間的耦合關系。

js設計模式 — 享元模式

func 參數 如何 del 如果 性能優化 情況 under 核心 享元(flyweight)模式是一種用於性能優化的模式,“fly”在這裏是蒼蠅的意思,意為蠅量級。享元模式的核心是運用共享技術來有效支持大量細粒度的對象。 假設有個內衣工廠,目前的產品有 50種男式內衣和

VI設計和畫冊需考慮的三大塊

VI設計產品的VI設計和畫冊設計該要怎麽做?想要做好VI設計或畫冊設計只需從以下這些方面的。 1、做VI設計和畫冊設計的時候要註意設計的層次感,什麽信息該放在前面,什麽信息該要放在最後,這都需要事先考慮做好準備工作。此外VI和畫冊的設計中有兩個方面的設計,一是觀看,二是閱讀。同時要考慮顧客們的視覺、閱讀習慣來

API測試UI Auomation一點心得

API測試 自動化測試 background:最近兩個月被分配做UI automation,原因是換了一套平臺,需要重新部署,有些業務需求改了case都跑不過了,我的任務是debug case,把case都跑通。工具是Robot Framework。當時感覺task相對輕松,因為業務相對簡單,只是Ca

開源Kafka騰訊雲cKafka

升級 容錯 無奈 資源利用率 傳統 功能 group 會計 如何選擇 今天下午參加了騰訊雲+社區組織的kafka公開課,收獲良多。正巧在工作中也遇到過kafka的問題,今天聽完之後產生了非常多的感想。無奈篇幅有限,本人又文筆愚鈍,所以今天的分享主要提及對我感觸最深的內容。分

代理 模式java中的動態代理

特殊 加工 依賴 mage 應用 主題 額外 我們 動態代理 代理模式的定義: 代理模式是一個使用律非常高的模式,定義如下: 為其他對象提供一種代理,以控制對這個對象的訪問。 類圖: 簡單的靜態代理: public interface IRunner{ //這是一個

【轉】init-paramcontext-param區別

原文地址:https://blog.csdn.net/fengshoudong/article/details/78884349 近日檢視init-param與context-param區別,費了很大勁才弄懂,分享一下:  init-param與context-param都是在web.

Python設計模式 - 代理模式

    宣告:本系列文章主要參考《精通Python設計模式》一書,並且參考一些資料,結合自己的一些看法來總結而來。   一、在某些應用中,我們想要在訪問某個物件之前執行一個或者多個重要的操作,例如,訪問敏感資訊 -- 在允許使用者訪問敏感資訊之前,我們希望確保使用者具備足夠的去許可權。同時

for...infor....of

     for...in:       for...in語句以任意順序遍歷一個物件的可列舉屬性。對於每個不同的屬性,語句都會被執行。       語法: for (variable in object)

Java NIO/BIO 同步/非同步阻塞/非阻塞

在我們瞭解Java NIO/BIO的網路通訊之前,我們先了解一下常用的阻塞/非阻塞模型以及同步/非同步的概念 一、阻塞和非阻塞 從簡單的開始,我們以經典的讀取檔案的模型舉例。(對作業系統而言,所有的輸入輸出裝置都被抽象成檔案。)在發起讀取檔案的請求時,應用層會呼叫系統核心的I/O介面。

hdfs架構資料流

概述   隨著資料量越來越大,在一個作業系統管轄的範圍內存不下了,那麼就分配到更多的作業系統管理的磁碟中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的檔案,這就是分散式檔案管理系統。HDFS只是分散式檔案管理系統中的一種。   HDFS,它是一個檔案系統,用於儲存檔案,通過目錄樹來定位檔案;其

PCB設計中的焊盤設計標準

隨著資訊科技的發展,對於一個電子工程師設計電路PCB設計中的焊盤設計標準,在確定pcb電路板時需要提前對其進行打樣,以確定是否符合要求,那麼捷配pcb打樣時應該注意些什麼呢,下面捷配小編就來為大家進行介紹。抗干擾設計的基本任務是系統或裝置既不因外界電磁干擾影響而誤動作或喪失功能,也不向外界傳送過大的噪聲干擾,