密碼學與黑客技術有什麼關係?


----------------------------------------補充了RSA, SHA,ECC的簡單介紹--------------------------------------

這個我引用我老師的回答:「 如果密碼學協議沒有漏洞的話,那麼黑客就只能從代碼實現和其他方面進行攻擊了。」 什麼意思呢? 密碼學協議使用了密碼學的數學工具,後者是基於數學證明和可計算性的難度猜想之上,它是網路安全的基石,如果基石有問題,那麼黑客們就掌握了一種極其強大的工具。 舉個例子,如果誰能在多項式時間內因式分解大整數,那麼所有銀行的安全證書都將成為廢紙。密碼學數學工具的詳細介紹請見

RSA加密演演算法。 RSA 演算法是目前最為流行的公鑰演算法,其可靠性基於一個常見事實,因式分解一個大整數很難。這裡的大整數是指129位以上的大整數,因為RSA-129已經破解,因此實踐中往往會使用512位或者1024位的大整數。理論計算學界認為,大整數因式分解的計算難度應該在P(多項式計算時間)與NPC(NP-完全)之間。也許未來量子計算機使用shor演算法可以起到一些幫助。

另一個著名的公鑰演算法那則是橢圓曲線演算法,詳見如下。

維基百科,自由的百科全書橢圓曲線密碼學

橢圓曲線演算法的出現是為了解決RSA演算法密鑰過大導致加解密速度緩慢的問題,通常橢圓曲線加密使用160位的密鑰。根據維基百科所說

Certicom是ECC的主要商業支持者,擁有超過130項專利,並且已經以2千5百萬美元的交易獲得了國家安全機構(NSA)的技術許可。他們也已經發起了許多對ECC演算法的挑戰。已經被解決的最複雜的是109位的密鑰,是在2003年初由一個研究團隊破解的。破解密鑰的這個團隊使用了基於生日攻擊的大塊並行攻擊,用超過10,000台奔騰級的PC機連續運行了540天以上。對於ECC推薦的最小密鑰長度163位來說,當前估計需要的計算資源是109位問題的108倍。

當然除了公鑰演算法外,AES對稱密鑰演算法,SHA 哈希演算法都是屬於經過嚴格構建的密碼學演算法,在商業環境中已經得到了足夠的驗證。 值得一提的是,山東大學的王小雲教授提出了以較低代價(2^63次計算)發現SHA-1的弱碰撞,這是中國理論密碼學界的又一驕傲 :)

SHA 方面詳見 SHA家族

在密碼學工具假定安全(為什麼說假定,因為大整數因式分解等數學問題還被假定是難的,並無確切證明)的情況下,密碼學協議的構建就顯得極為重要了。一個好的協議必須考慮所有種類的攻擊,包括著名的中間人攻擊等等。黑客如果能發現協議上的漏洞,他就能操縱使用此協議進行安全協商的上層應用程序。 再舉個例子,SSL 和IPSEC 為什麼發展起來,這是因為早期IPv4上對於消息的發送和接收方根本沒有驗證的步驟,攻擊者隨時可以假冒任何一方發起通信.

在協議和演算法ok的情況下, 黑客們依然可以利用密鑰的生成機制進行攻擊。 舉兩個著名的。第一個是WIFI 的WEP 協議,現在已經被證明是一個不安全的協議,詳情可見

有線等效加密

另一個例子則比較勁爆,是有關比特幣使用的橢圓曲線加密的安全性。 橢圓曲線加密需要基於一條曲線進行計算。通常密碼學界認為國際標準所使用的橢圓曲線上是不可能找到破解方法。但是斯諾登爆出的信息是NSA特意找到了一個後門,詳見如下

引用如下:

」一般而言,曲線會被分成兩類:「偽隨機」曲線以及Koblitz曲線。在一條偽隨機曲線里,參數a和b是從某個「種子」通過一個特定的演算法(本質上是哈希運算)來選擇。對於secp256r1(這是標準256位偽隨機曲線)來說,它的「種子」是c49d360886e704936a6678e1139d26b7819f7e90,產生的參數是:

p = 115792089210356248762697446949407573530086143415290314195533631308867097853951

a = 115792089210356248762697446949407573530086143415290314195533631308867097853948

b = 41058363725152142129326129780047268409114441015993725554835256314039467401291

一個顯眼的疑問:這個種子是怎麼來的?為何這個種子不是其他某個看起來更加單純的數字,比如說15?最近揭露的關於美國國家安全局顛覆加密標準的消息中,一個很重要的點就是說這個種子是以某種方式精心選擇的,為了以某種只有國安局知道的方法來弱化這條曲線。謝天謝地,迴旋餘地不是無限的。因為哈希函數的特性,國安局不能先找到一條「弱」曲線然後再去確定種子;唯一的攻擊途徑是嘗試不同的種子,直到最後有一個種子產生了一條「弱」曲線。如果國安局知道知道一個只能影響一條特定曲線的橢圓曲線的漏洞,那麼偽隨機數參數的產生流程將阻止他們把那個漏洞標準化推廣到其他曲線。然而,如果他們發現了一個通用的漏洞,那麼那個流程也就不能提供保護了。我們都知道,c49d360886e704936a6678e1139d26b7819f7e90有可能是美國國家標準技術局嘗試過的第10億個種子。

幸運的是,比特幣使用的不是偽隨機曲線;比特幣使用了Koblitz曲線。比特幣的secp256k1的參數如下:

p = 115792089237316195423570985008687907853269984665640564039457584007908834671663

a = 0

b = 7

就是這樣。並且甚至p都是很容易得出來的;它只是2256 – 232 – 977(公平的說,p和a在secp256r1裡面也是相當簡單的;它的問題出在b)。這些參數的簡約,使得國安局和國家標準技術局沒有精心創造一條邪惡曲線的餘地。並且甚至0、7、還有977這些數值的採用都是基於安全和效率的考慮而採用的。當Dan Brown,他是高效密碼學組標準的現任主席,被問及此事時,他回復說:「我不知道比特幣正在使用secp256k1。確實,我對於有人會採用secp256k1而不是secp256r1感到驚訝。」如果secp256r1是事實上的被破解了,那麼因為比特幣是為數不多的幾個採用secp256k1而不是secp256r1的程序,比特幣真的是躲過了一顆子彈。

全文請見中本聰的天才:比特幣以意想不到的方式躲開了一些密碼學子彈

在密鑰生成用也沒有問題的情況下,黑客還可以從協議的計算機實現上進行攻擊,例如代碼的不完整和錯誤。 蘋果公司最近就給出了一個極好的例子。 他們的SSL協議實現早在IOS6之時就被發現存在有代碼問題,這直接導致了7.0.6補丁的產生。 具體可以參見最近的各大IT媒體報道。

總結一下: 密碼學數學工具,協議,密鑰演算法和具體實現都可以成為安全攻擊的對象,黑客往往選擇最容易出現問題的地方進行攻擊。 基於這些攻擊的黑客技術,可以看做是比較數學化和理論化的黑客技術。當然實際攻擊中,極少針對密碼學工具,協議,演算法和具體實現的攻擊,攻擊者們往往利用網路協議的漏洞,系統軟體的漏洞實現攻擊,甚至是社交工程等等。


密碼學是信息安全技術的子集。

「黑客技術」是一部分信息安全技術的俗稱。

人們常說的「黑客技術」,在有些場景下包含密碼學,有些場景下不包含。


學術界觀點:密碼學是信息安全的一個分支。

黑客觀點:密碼學漏洞是大boss甚至是關底,數量稀少,而且厲害,你需要練幾十級才能挑戰,但獎勵豐厚。一般人只能挑一些實現上的漏洞,也就是野怪,好在他們數量足夠多,又會定期刷新。


網路安全是一個整體的東西。安全方面的核心是信任以及關係。密碼是實現安全的一個小部分。靠攻擊密碼的黑客不是好黑客。比如XSS,RFIC,SQL注入。這個和密碼有關聯但是不是主要部分。比如用編碼加密的SQL注入代碼能夠躲過一般的SQL注入檢查。如果是使用SQL關聯語句分析能夠發現異常的SQL語句。這裡密碼無能為力。

還有比如幾個伺服器之間的關係是a-&>b,b-&>c.c-&>d。那麼b-&>d的關係是信任還是不信任?這個需要人為設計。密碼無能為力。

也有的說密碼是安全的基石。這個觀點可以這麼認為。

但是真正的基石是能否信任的問題。用什麼樣的方式信任?

這個就是密碼學真正的價值。


密碼學是理論研究,只是信息安全的一部分。雖說信息安全中很多內容基於密碼學演算法,但實際上很少有人直接攻擊演算法。畢竟達到這樣的數學水平要花很大功夫,而且通常大部分人認可的加密演算法一般理論上是沒什麼問題的。

所以一般都會攻擊某個加密/解密演算法的軟體實現。由於研究演算法確實很難,所以大部分軟體的加密/解密功能都會使用第三方庫。自己實現加密演算法的很少。如果這個模塊有問題,那麼使用它的軟體都將不安全。

有些軟體是設計上有問題。比如前段時間被破解的GNUPG,通過構造特定的文本,在解密過程中監聽CPU動作來破解密鑰。

還有些本身就是故意的,很多演算法都有這樣的問題。比如在論文或者軟體里使用了某個莫名其妙的常數,導致本身沒有問題的演算法產生可以預測到的數據。

這些都是可以被攻擊的地方。正因為一般攻擊的只可能是某些實現,演算法的正確性是由研究演算法那些密碼學領域專家保證的,所以密碼學和平時大家提到的安全領域關係不大,和你提到的「黑客技術」更沒太大關係了。

就像中國,朝鮮,古巴,越南說起來都是社會主義國家,但發展情況差距很大。大家都是基於同一種理論,但實現各有不同。所以資本主義國家一般都說你那國家怎麼樣,哪裡不好,沒人會說你的理論有什麼問題,只是實現上有問題而已。


學院派的人一提安全必然講密碼,但問題是整個安全領域那麼龐大,密碼也只不過是其中一個小環節,但是對於黑客來說,要達成自己的目的,並非一定要搞定密碼,事實上很多安全問題都無關乎密碼,或者換個說法,你們家的鎖再NB再不可破解,但是家裡的牆有了缺口,做賊的就根本沒必要從正門進去。

然後說點具體關乎安全問題的例子,早先黑客們黑站的慣用流程:找後台+找sqlinj--有了後台和sqlinj之後,得到管理密碼的散列值,去破解MD5(或者你運氣好碰到明文密碼)--進後台,通過後台各種功能試圖shell之。

但是呢,CMS多半都有上傳的吧,你敢說你上傳部分的安全做的一定到位?不到位人家直接就upload shell來了,新雲不就是個例子么。php+mysql的站,你用了root么?有file_privilege么?會被dump個shell的吧,windows主機甚至直接就是伺服器被KO。沒有文件操作許可權?沒有sqlinj?OK,代碼上都安全么?各種XSS,LFI,RFI等等都確定消除了么?既定的有問題的函數都處理的很好了?那好,邏輯漏洞確認不存在么?我曾經就讀過一份php代碼,作者有段代碼本來意圖是為了防止下載一些不希望被下載的文件,但是呢,代碼的關鍵處多敲了一個"."導致那段防止文件下載的代碼完全無用,你可以任意下載php文件,這樣呢,源碼泄露了吧?資料庫配置文件就露點了吧,然後該發生的什麼大家都懂的。

啊,天太冷了,不想打字,就廢話這麼多吧,總之一句話,安全問題要是都指望著密碼來解決,那就準備為自己的悲劇買單吧。


涉及密碼學的黑客技術,一般都是受政府武裝或情報部門專門付費研發的,並且基本都秘而不宣。相關的漏洞價值難以估量。


如果把計算機安全比作美國國家安全的話,密碼學就是美國的軍事力量,黑客就是恐怖分子,而黑客技術就是恐怖分子用來對付美國的各種手段,恐怖分子只能利用各種制度的漏洞進入美國小小地活動一下,而沒法直接從海岸線一路殺到華盛頓;但是恐怖份子任然是有機會毀滅美國的,比如生化武器之類。

由此回推:

1、密碼學是保證計算機安全的重要基礎,一旦密碼學的難題被黑客攻克,計算機安全將不復存在。


2、再強密碼學也不能保證計算機的絕對安全,因為黑客們完全可以繞過密碼去達到自己的目的,就像恐怖分子沒必要搶灘登陸去跟美國大兵死磕一樣。


密碼學是數學的一個分支,並且號稱數學王冠上的寶(diao)石(si)。是整個信息安全學科中的基礎學科。用各種演算法去保護數據本身的安全(比如A5/1,DES,AES等對稱演算法)或者數據傳輸過程的安全(RSA,ECC等非對稱演算法)或者身份的可靠性(各種簽名演算法)。

有密碼編碼學就有密碼分析學,密碼分析大部分也是通過數學的方法去降低窮舉攻擊的複雜度(不要跟我提旁路攻擊),比如差分分析,積分分析等,其實最終還是要靠窮舉~

.................懂與不懂的分割線...............

至於黑客技術,是網路安全層面,一定要和密碼學扯上關係的話…我想如果讓黑客來攻擊演算法,他們一定是直接去伺服器偷密鑰的吧~


不要忽視勒索病毒。


密碼是安全問題;密碼學是數學問題。而黑客技術既包括安全技術,也包括數學理論。


理解密碼學,至少你能做個安全方面的碼農


就是在問圖靈是不是黑客


推薦閱讀:

跪求神人解這個密碼:744x0l?
在知道某個比特幣地址的情況下,是否有可能通過破解私鑰來攻破該賬戶?
HOPE, zjo np mjoh, 19/2, never-1, enqfds是什麼意思?
解一個有趣的數學(圖論、資訊理論)問題?
用無理數加密,如何破解?

TAG:黑客Hacker | 信息安全 | 密碼學 |