查看單個文章
舊 2006-04-22, 07:27 PM   #5 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

淺談Win2000密碼的必然破解
很多人都嚮往做黑客,黑客的很多工作其實都是破解密碼,當然是別人的。本文純粹是從理論上論證任何密碼在有限時間的可破解性。如果我告訴你這樣的事實:"Win2000的任意20位以內的密碼最多也只需要2小時就可以破解",你一定驚奇地當場吐血,對我怒目相向。下面看我的論述。
任何破解密碼的行為都可以歸結到一個模型,適用於遠端破解還是本機破解。本理論關於窮解法+做任何事情都要花費時間這樣一個事實。下面建立模型:(這裡把時間放大)有一間房子,房子的門用一台電腦控制,在門外安裝類似於銀行裡面使用的密碼輸入器。因為一個密碼的正確性必須通過比較來驗證,現在假設對於每一個單個密碼(A-C和B-C所用時間相等)的比較時間相同,用s表示;置位時間也相同,用T表示。密碼由0,1,2,…,9這十個數的任意組合,假定密碼是:874936。為了使實驗具有可行性,主要是指人眼可以測定,不妨設s=5秒,T=10秒,密碼錯誤返回F,正確則把門開啟。
開始工作:讓一個實驗者站在門外,我們排除其它非主要因素。比較密碼一位一位的比較:如比較ABCD與edfc是否相同,是用A與e相比,再用B與d相比,以此類推。現在指出電腦對於密碼驗證的兩種機制:機制(1)啟始化flag=1,如果遇到有一位不等,則flag=0,一旦flag=0,則立即返回F,後面的將不再比較,否則最終開啟門;機制(2)啟始化flag=0,用所給密碼與正確密碼一位一位比較,相等則不置位,只要有一位不相等flag變成1,以後的只比較而不置位,最後看flag=1則不開門,返回F,flag=0,則開門。
如果仔細研究電腦的工作原理,或者很多程序的工作原理基本上都是以上兩種方式,而且第一種機制居多。我們還是從實際上出發研究看看其中有什麼缺限可以利用。

8-0:s;flag=0:T ;t=s+T=15秒:F
以上寫法表示用0來嘗試。8與0比較用時s,置位用時T,總用時為s+T,其值為5+10=15秒。以下寫法以此類推。

8-1:s;flag=0:T ;t=s+T=15秒:F
……(從0到7)
8-8:s;不置位; t=s=5秒:F

發現當用8來嘗試時,電腦在t=s=5秒鍾就返回F。而其它的用時都是s+t=15秒(包括用9來嘗試,在這不寫出來,只要發現用時不一樣就停止,以下同。)可以斷定正確密碼的第一位就是8,因而取定第一位為8。第二步用兩位密碼來嘗試。

8-8:s;7-0:s;flag=0:T;t=2s+t=20秒:F
……(從0到6)
8-8:s;7-7:s;不置位;t=2s=10秒:F
可以取定密碼的第二位為7。

8-8:s;7-7:s;4-0:s;flag=0:T;t=3s+T=25秒:F
……(從0到3)
8-8:s;7-7:s;4-4:s;不置位;t=3s=15秒:F
可以取定密碼的第三位為4。

8-8:s;7-7:s;4-0:s;9-0:s;flag=0:T;t=4s+T=30秒:F
……(從0到8)
8-8:s;7-7:s;4-4:s;9-9:s;不置位;t=4s=20秒:F
可以取定密碼的第四位為9。

8-8:s;7-7:s;4-0:s;9-0:s;3-0:s;flag=0:T;t=5s+T=35秒:F
……(從0到2)
8-8:s;7-7:s;4-4:s;9-9:s;3-3:s;不置位;t=5s=25秒:F
可以取定密碼的第五位為3。

8-8:s;7-7:s;4-0:s;9-0:s;3-0:s;6-0:s;flag=0:T;t=6s+T=40秒:F
……(從0到5)
8-8:s;7-7:s;4-4:s;9-9:s;3-3:s;6-6:0;不置位;t=5s=30秒:T(開門)
可以取定密碼的第六位為6。

我們再回過頭來看看整個程序用多少時間:
定8 : (8×15+5)=125 注意是8×而不是7×,因為是從0到7,是8個數,以下同。
定7 : (7×20+10)=150
定4 : (4×25+15)=115
定9 : (9×30+20)=290
定3 : (3×35+25)=130
定6 : (6×40+30)=270
總用時為:(8×15+5)+(7×20+10)+(4×25+15)+(9×30+20)+(3×35+25)+(6×40+30)=1080
即1080秒=18分
奇妙吧,只用18分鍾就破解了一位6位密碼,再看一看6位的最大用時為多少,即當密碼是999999時用時最多:(9×15+5)+(9×20+10)+(9×25+15)+(9×30+20)+(9×35+25)+(9×40+30)=(140)+(190)+(240)+(290)+(340)+(390)=1590秒=26.5分。
這只是假定的s和T比較大的情況,實際問題都是s和T是比較小的,可能就是幾個時鍾週期。我們在這把時間放大就在於使時間具有人眼可測量性,如果在電腦上能精確測量任意兩個時間的差,所有的密碼都可能在很短的時間內破解。
為什麼有人說6位以上的密碼就很難破解呢?因為他只是從窮解法上考慮的,就是說,即使只用0,1,2,…,9做密碼,6位的所有排列為10×10×10×10×10×10它是10的6次方。我們可以做一個比較直觀的比較,如果每一次密碼的嘗試用時1秒,最大用時為:10×10×10×10×10×10/3600≒277年時間,我想你一般情況下是等不了277年的時間來看密碼的結果的。而用我們以上的方法最大用時為:10+10+10+10+10+10=60秒,一分鍾搞定。我們發現居然有天壤之別,即使使用電腦鍵碟上的字串來做密碼,假定能使用300個字串(因為電腦的鍵盤只有一百多個鍵),最多用時為:300×6=30分鍾。8位密碼用時為:300×8=40分鍾。20位密碼用時為:300×20=100分鍾。
怎麼樣?Win2000如果用機制(1)比較密碼的話,是不是輕鬆搞定?
我們再看使用機制(2)能不能破解。還是以我們以上的模型來研究,我們只需比較一位密碼,看時間上有什麼區別:
因為密碼為6位(874936),所以不足6位可以假定電腦用一個NULL,即空值來比較。
8-0:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
8-1:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
8-2:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
8-3:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
8-4:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
8-5:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
8-6:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
8-7:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F

8-8:s;不置位;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s:F

8-9:s;flag=1:T;7-NULL:s;4-NULL:s;9-NULL:s;3-NULL:s;6-NULL:s;t=6s+T:F
可以看出來:用8來嘗試時,時間比其它所用的時間少。因而第一位可以斷定為8,事實上說明這種情況也是可以破解的。
事實上,電腦在比較密碼的情況基本上都是以上兩種情況。還有什麼奇偶校驗或者標誌位的奇偶校驗等,我想對於正確密碼和錯誤密碼的比較在時間都一定存在差別。就像我隨便給一個數給你8293487879(8294387879,8293487879),你從肉眼發現8293487879:8294387879比較所用時間與8293487879:8293487879比較所用時間不一樣。
因為Win2000的用戶名很容易得到,只要拿到密碼就可以完全控制win2000,本人現在只是從理論上論證了密碼的可破解性,如果從實踐上也可以實現的話,我想從此將結束win2000時代。歡迎大家從實踐上去驗證,或者對作者的論述提出疑義
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次