一般密碼10個數字和26個字母組合如果我或有關重要部門造了50新字母,黑客鍵盤上沒有這些字母如何破解?
比如一個非常有實力的公司的絕密專利技術內部存儲的話,,,能不能自己造伺服器,使用新造的字母加密
結論:
採用自定義的字符集作為密碼的明文,對提高系統抗破解的能力理論上會有提升,但效果不明顯,實際操作的時候對系統強度反而會可能削弱。歷史:
類似的腦洞在歷史上曾經出現過:二戰時期,美軍在太平洋戰場上,啟用納瓦霍族人作為通訊員,利用他們獨特而罕見的方言,給通訊進行第二層加密。由於納瓦霍族的語言沒有外人能懂,因此即使通信內容被日本人截獲解密,也不會泄露。這個史實後來被吳宇森拍攝成電影《風語者》
據說中越自衛反擊戰中也曾用溫州話進行類似的加密防護。
現實:
既然過去的戰爭中多次採用類似的辦法進行通訊加密,那自定義「明文字元/語音集」是很有效的辦法嗎?很可惜,隨著密碼技術的進步,這種辦法被證明是低效且不安全的。自定義明文集或者自定義加密演算法是加密理論和技術不成熟年代的產物,其中的核心思想是:如果我的明文集和加密演算法攻擊者不知道,那麼破解難度就會非常大。
這個假設有幾個問題:
1.攻擊者不會永遠不知道,甚至可以說遲早會知道。
2.即使攻擊者不知道,也不代表不能破解。3.做安全設計的時候如果假設攻擊者不知道,會導致整個設計出現更多的疏忽,此時一旦攻擊者真的知道了,破解起來就勢如破竹。之所以說攻擊者遲早會知道,是由於:我們不能保證攻擊者拿不到加密演算法和明文集,我方可能有叛徒或內奸、傳送加密演算法和字符集的時候可能被竊聽、包含加密演算法和字符集的機器/軟體可能被竊取和破解等等。電影《模擬遊戲》中,圖靈用來破解德國加密演算法的英格瑪樣機,和《獵殺U-571》里被美國海軍搶走的德軍密碼機,都是前車之鑒。
那為什麼說攻擊者在事先不知道加密演算法或者明文集的時候也可以進行破解呢?我們拿本題作為例子來試著說明下:假設題主確實發明了幾十個新字元用來作為密碼,這時候後台的加密演算法仍然使用MD5,那麼攻擊者需要知道新字符集才能破解密碼嗎?不需要,因為MD5明文和密文之間是多對一的關係,攻擊者不需要得到題主所設定的明文,只需要得到任意一個符合MD5散列的明文組(這被稱為等效明文),就可以登錄伺服器,而多個等效明文組中肯定包括了至少一組常規字元的組合。這種情況下,其實加密強度並沒有增加(然而成本卻上升了很多倍)
有人可能會說:採用私有的加密演算法,就不會出現MD5密文撞擊的問題了。那麼你需要知道一個事實:設計開發一個從理論到實踐都足夠健壯的加密演算法,是一件極具挑戰的工作,在99.99%的情況下,新設計的私有加密演算法都會嚴重降低系統的安全性。
過去的幾年中,由於採用了私有的演算法或者協議,過於自信,反而在管理或者其他方面產生疏漏,結果出現重大安全事故的例子也是屢見不鮮。看過《風語者》電影的同學也一定還記得,最後尼古拉斯凱奇對於是不是應該履行自己的職責,殺掉可能被俘的納瓦霍通訊員,而產生了猶豫,差點造成納瓦霍語加密方法被日軍獲得。而在電影《模擬遊戲》里,德軍也是因為對恩格瑪加密機的強度和私密性過於自信,在明文管理上出現了重大失誤,被盟軍牽著鼻子打。
總結以上,隨著數學和計算機學的進步,在密碼領域,腦洞可以用於一時,長期來看還是經過充分數學論證和大量實際檢驗的辦法才是更可靠的辦法。題主可以選擇任意一本計算機基礎教科書,先學習一下字元串(string)在計算機中是怎麼得到處理的,再學習一下Ascii和UTF-8等知識,相信你會有所啟發的。
目前我們大多數計算機都是二進位的,假設我的密碼是123,那計算機眼中就是0011 0000 0011 0001 0011 0010b,假設我自創一種語言,叫 語(什麼?你問我為什麼只有兩個空格,那是因為我自創的語言你們設備沒辦法顯示出來,哈哈 ),他既然是作為密碼,那肯定是最終要變成二進位的,他最後變成什麼我不管,但是說到底還是0和1的組合,所以不管我發明的語言最終表達形式是什麼,其實都無所謂啦,因為我只要向計算機發送密碼所轉換的二進位數字就行,但是這樣做有沒有意義內,我覺得有吧,畢竟誰想得到你會這麼喪心病狂
題主所謂的新字母,黑客不知道,在密碼學被定義成隱秘安全性。也就是,系統的安全性依賴於題主的這個不為人知的設計。現代密碼學認為,隱秘安全性是不可靠的。設計應該公開透明,而秘密應該被集中在密匙里。 如果題主對密碼學感興趣,又沒有求甚解的需求,可以看一看&<圖解密碼學&>這本書。
這不就簡單替代么,連頻率分析都抵抗不住。
一、破譯密碼並不需要反向解析至原文,大部分還是靠猜。大到飛機艦船的調動指令,小到日期時間戳,只要能找到規律,就可以破譯,得到解釋,是否得出真正的原文並不重要。
二、如果只是進行過簡單替換加密(甚至沒有進行過替換加密)的某種語言文字,直接通過概率計算(以及一定的猜測)就可以得出對應的信息。那如果不只是簡單替換加密呢?這個么,你當密碼學家都是吃素的嗎?
三、不過使用某種不常見的語言文字還是有一定作用的,比方說把消息中的數字全都替換成法語表示,就已經有一定的殺傷力了。所以語言是否常見不是最重要的,語法是否刁鑽才是最重要的。(此處似乎有個降臨的梗)
四、即便是某種非拉丁字母語言,為了方便加密解密及消息傳遞,也是會轉化成拉丁字母來處理的。試想如果歐美國家的決定使用日語來進行一次加密,那一定是會用日語的羅馬字表示的,否則搞一堆平假名片假名還不是自討苦吃。
五、溫州話並不是一個太好的栗子。即便不懂溫州話,我猜它和吳語區其它諸語言的語法也是比較相似的,主要也就在於發音比較奇怪、用詞比較特殊罷了,如上所述並不會對加密產生正面影響。甚至從密碼學的角度去看,溫州話和其它吳語分析起來應該差不多才對。
六、高票答主的觀點很有道理,輕敵才是最致命的。納瓦霍族語是一個不錯的案例,畢竟族人不多而且全被美軍控制了,但萬一有一些流落在外面的,或是哪天被日軍擄了一些去,那局勢可能就要發生反轉了。同樣,猜想德軍也是輸在對Enigma的盲目自信和輕敵上了吧。
瀉藥
用鍵盤手動破解的那不叫黑客那叫智障例如zanti,有個叫增量式字典選項,你想得到的機器也想得到哎呀題主不要想那麼多,什麼重要絕密專利,沒那麼麻煩,這個問題就相當於:我使用中文口令,不懂中文的美國黑客怎麼破?
題主似乎缺少基本的計算機系統知識
鍵盤?滑鼠?攝像頭?指紋?
都是輸入設備而已,最終實質還是要看進入計算機系統的數據得看你用這五十個字母幹啥了,如果還是用它表達英文的話那就沒有多大區別。比較有希望的做法是用長出來的字母做高頻字母的同義字元,這會對統計分析帶來困難。要是用這五十個符號發明了一門新的語言,那麼這個密文對於中間的人來說確實是無法破解的。
這兩種情況的問題是,即使你用五十個字元來對應字母和數字,它本質上還是英語,語言特性還沒有消除。而這樣的語言特性是十分利於我們縮小搜索空間。
要是發明新的語言,代價會很高,而且很難擴展。以及,安全性並沒有保證。因為你的安全性完全依賴於懂這門語言的人。這嚴格來講也不算是一種加密手段。加密的安全性是應該通過密碼的安全性來體現的,而不是演算法。最好的加密方式是即使演算法完全透明,但不知道密碼的情況下就是無法破解(理論上需要幾百年來破解密碼),況且目前已有的演算法足夠安全方便,完全沒必要去花這麼高的代價。鍵盤有沒有並不重要,反正都是0和1,
但是說範圍大更安全是有道理的,一個位元組能表示256個狀態,
只用數字就只用了其中十個狀態,10^3 &> 25610個位元組10個完全隨機任意字元包括無法列印字元,
並不比用30個位元組30個完全隨機任意數字要安全,除非爆破時只嘗試純數字,那前者永遠跑不出來,
同理,16位純數字比8位數字加字母安全,
不過使用任意字元的一般不是密碼,而是"密鑰",比如4096位的密鑰,保存成一個文件,人類不可能記住這4096位的密鑰,登錄時必須使用這個文件,爆破基本上不可能,如果擔心密鑰泄漏,還可以用"密碼"加密這個密鑰,並藏好不讓人知道密鑰是用在哪裡的,登錄時通過密碼解密密鑰再通過密鑰登錄,兩個缺一不可,只泄露一個趕緊換了就好,唯一的缺點就是沒有密鑰時自己也登不上,你創建的字元 這個加密軟體必須也要有!前提是系統也要有這種編碼!和鍵盤無關
一樣可以破解。題主說用鍵盤上沒有的字元,其實等同於用「代號」,不如在行動中,把「首長」叫做「山羊」,把「進攻」叫做「發行股票」,就是把一個詞語換一看似完全無關的詞語來表達。在破譯者方面,密文中「首長」和「山羊」沒有差別,都是一個標記而已,根據幾次密文和解密情報的對比,最後知道一個標記代表「首長」的含義,至於用什麼字元什麼代號不重要。
先得有一套這樣的標準才行,然後才有人研究破解。
看看羅塞塔石碑是怎麼破譯的
你這種加密方法屬於字典加密。
其實就是抗戰期間,電台的加密方法。電台只能發送類似010101這種幾個簡單的信號。
你和你朋友一人一個電台,然後一人一本「密碼本」,就實現了你說的這種加密方法。
當然,現在科技發達,不需要「密碼本」了,你和你朋友一人一台電腦,安裝一個代替密碼本的「轉化軟體」,就實現了加密。
字典加密方法很難很難破解,但是也有缺陷。就是不能長期使用相同的「字典」,必須經常更換「字典」。
因為如果黑客只抓取了幾十個字元,是無法破解的。但是如果黑客抓取了幾萬個幾十萬個字元,就可以破解字典密碼了。為了避免破解,只能不斷的更換「密碼本」,但是經常更換密碼本嚴重影響使用。血妖。
密碼是登錄伺服器的一種口令驗證,如果按照你所說的自己創造,伺服器不能識別你如何設定?反過來說,伺服器識別後會不會留存一些新符號?
我亂說的,已幫你邀請人了。第一,題主所描述的「新字符集」已經是把密碼安全性建立在了密碼體制本身的保密性上。密碼學理論有一個原則叫做Kerckhoffs原則,即密碼的安全性應建立在密鑰的保密性上而不應建立在演算法的保密性上。加密演算法本身應該是公開的。
第二,在計算機中,無論什麼字元都要經過二進位編碼才能傳輸,無論差別多麼大的字元在計算機中的表現都是二進位數。困難只是在解碼的過程上。所謂英文字母和數字在計算機中都是以asicii碼形式儲存的,而asicii碼有126個字元以8位二進位儲存,而八位二進位可以表示255個字元,理論上多出來的可以用其他字元代替吧
我覺得既然是計算機語言。那麼計算機肯定是認識的,所以任何語言都會被計算機所理解。
比如:u6bd4u5982u6211u8fd9u6bb5u6587u5b57u5c31u662fu8f6cu6362u4e3au75u7801計算機一眼就懂了。
用自己的語言加密,會提升安全性。因為其他人不知道表達的意義是什麼。但提升有限。其他答主也解釋了。
我是來湊熱鬧的,非專業。推薦閱讀:
※黑客們攻擊大型網站的用戶資料庫的目的是為了什麼?
※如何看待遠程控制軟體TeamViewer疑似被黑?
※如何在網路安全這條路上走得更遠?
※如何在被感染黑暗幽靈(DCM)木馬的電腦上安全上網通訊?
※最頂尖的黑客用什麼方法管理自己的重要密碼?