• 2

用語言學的方式進行加密

密碼破解,大致有兩種方法:

● 查字典法

有些人為了方便記憶,會用現成的單字當作密碼,比方 apple 蘋果。查字典法就是有一本字典(牛津字典什麼的),套裡面的單字,去試密碼。

這種方法通常只針對英文字典,所以如果密碼用中文的(轉成英文變亂碼),字典破解就沒用了。

比方樓主說的:道可道非常道

注音拼法:2l4 dk3 2l4 zo t;6 2l4

當然密碼不能空格:2l4dk32l4zot;62l4

就變成一串亂碼,關鍵在這詞是有中文意思的,可以記憶。表面看起來是一串亂碼,實際是中文詞彙的注音拼法。

使用者是去記中文意思,而不是那串亂碼,那中文的意思,按照鍵盤上注音拼法,打出來就是那一串亂碼,方便記憶,並且密碼不弱。


● 暴力破解法




一個典型的密碼鎖,假設不用漏洞(直接撬開簧片什麼的),這種三位數的密碼鎖,窮舉可能性,只有 000~999,共 1千種組合。

暴力破解,就是窮舉可能性,從最小的試到最大,因為電腦在 try 的速度很快,一秒就可以嘗試成千上萬種可能性。

密碼一定是鍵盤可以打出來的,也就 a-z A-Z 0-9 幾個標點符號....等等。

它的可能性是有限的。只要窮舉(暴力破解),就一定會被試出來。


應付這種暴力破解,常見方法有:

-增加位數
比方 1024位 加密,就算可能性是有限的,普通電腦想破解都得上百年。

當然這種 1024位 的密碼,人類不可能記住的,這種的都是 "金鑰",把高位數的密碼儲存在一個檔案或晶片。

-限制輸入次數,限制允許登入的時段
比方連續三次輸入錯誤,帳號鎖定拒絕登入,之後不管如何試都沒用了。要找管理員把帳號解鎖。

-禁止 root(Administrator)登入
電腦的登入,分成:帳號 / 密碼

要先知道帳號名稱,才能去試密碼,而如果帳號名稱都不知道,要同時試出帳號名稱與密碼,可能性是無限大的,無法窮舉。

每種作業系統,都有一個預設的超級管理員帳號,名稱是固定,比如 root 或 Administrator。這種帳號要禁止遠端登入,因為它名稱固定,根本不用猜。


*************************************

有一種高端的方法:可變密碼

密碼能夠被暴力破解,是因為它固定。

假如密碼是會變化的呢?



假設有這麼一個密碼鎖,它的密碼是 每小時、每日,都會自動更換。

前一小時密碼是 789,後一小時又變成 087

當有人試到 788 的時候,密碼突然變換了,變成 087。繼續試下去也無法破解了。


作業系統有一種排程機制,比如 Linux 有 cron,windows 也有排程,能排某個時間,或每隔幾分鐘、每隔幾小時,每隔幾日,自動運行一項任務(執行檔、批次檔、腳本)

然後改密碼,其實可以用指令的方法去改,就是可以寫一個腳本檔(批次檔),去改密碼。

讓作業系統,排程每隔一小時,或每日,運行那個改密碼的腳本,就能使密碼一直變換。

然而:使用的人要知道如何算出密碼啊,否則使用者自己都登不進,還有什麼意義。

套公式,設計一個公式可以和時間扯上關係的:
比方密碼基底是:PassWorld
然後現在是 22點
組合起來的密碼是:PassWorld22

當然這只是舉例啦,要這麼簡單立馬就被破解了。公式可以設計複雜一點,變化大一點的。

使用者自己都不知道密碼(但知道公式),還要算的,才知道這個小時,或今天這個日期的密碼是什麼。

這種密碼不適合用在常常要登入的東西,因為還要花時間去算出密碼。但可以用在需要高度安全性的場合。


*******************************

還有一種是:外部輔助登入法

比方說:SSH 直接去登,是登不進的

得先進去一個隱密網站的網頁(網站可以架設在主機中,或別處),輸入一些東西,會聯動主機去重設 SSH 可登入。

就是有程序步驟的,直接去登是無法登的,根本不接受(拒絕該使用者帳號 SSH 登入),要先別的地方,開啟祕密機關,讓主機可以接受遠端登入,才能去登。

然後這個機關也有限時自動復位的,幾分鐘後就會復位失效。要再登,要再去開啟。

雙重保障的意思。

類似有的線上遊戲,有 簡訊鎖,直接去登是無法登的,要先用手機傳一個簡訊給專屬號碼,開啟登入機關,才能去登入。


在 Linux 中,大致思路是:
設計一個網頁,PHP 網頁什麼的,開啟機關後,會改寫一個純文字檔案,值:0 或 1。0不允許登入,1允許登入。

然後 SSH 登入,第一步驟是會運行 bash 初始化腳本,在腳本中寫 shell script 程式,檢查那個文字檔的值,0 的話直接 exit (logout 登出),1跳過。

如此就可以實現外部輔助登入。
任何有辦法用人工解密的加密方式,在電腦時代都沒意義,因為那代表複雜度太低。

現代的加密方式,你就算知道怎麼解,要是沒電腦,也是解不出來。

電腦要比對世界上所有語言也很簡單,你所謂的語言隔閡只對人類有效。


另外,以前因為加密遲早會被破解,所以要時常更換加解密,但傳遞加密表本身就是風險所在。

而現代公鑰/私鑰的加解密方式,永遠只需要傳遞加密用的公鑰,而不需要傳遞解密用的私鑰。
我在下面依照前先的原則,做了另一個範例

我的構想很簡單,先用人工的方式填寫成所謂的"密文"

再將該密文以RSA演算法加密

所以對電腦來說他其實是個明文

可以想像縱使自己神通廣大成功破解RSA演算法

得到的卻是下面一整串楔形文字,這時會做何感想?

在成功搞清楚怎麼回事之前,基本上是很難下手的

加上明文可能是任何語言,並且可能是由任何文字系統撰寫

所以破解到最後,所的到的"明文中的明文"可能只是一串全然陌生的文字,書寫著幾種毫不相干的語言

到了這種地步已經超過演算法的要求,必須交由了解相關文字系統及語言的人才有機會破解

就如同古代的"古印度河文字"一樣,當我們對它的語言及文字系統全然不知的時候,不論用甚麼電腦或演算法也無法破解

第二條範例如下:
因為mobile01沒辦法顯示楔形文字,所以我將它截圖貼上
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?