自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

成為“黑客”前,必學(xué)的“密碼學(xué)原理”

安全 數(shù)據(jù)安全
”密碼學(xué)“是一個(gè)高度跨學(xué)科的領(lǐng)域,包含純數(shù)學(xué)、計(jì)算機(jī)科學(xué)以及電子工程等多方面的知識(shí)。接下來(lái)我就以本篇文章給想了解密碼學(xué)的小伙伴們一點(diǎn)啟發(fā)和引導(dǎo)!

”密碼學(xué)“是一個(gè)高度跨學(xué)科的領(lǐng)域,包含純數(shù)學(xué)、計(jì)算機(jī)科學(xué)以及電子工程等多方面的知識(shí)。 "許多小白看到這里應(yīng)該頭就大了"要學(xué)這么多知識(shí)才能理解密碼學(xué)嗎?"當(dāng)然不需要"如果你的理想是成為密碼學(xué)科學(xué)的研究者或者領(lǐng)域?qū)<?,一定要掌握上述學(xué)科知識(shí)。但是對(duì)于一名"初學(xué)者黑客"我們僅需要了解密碼學(xué)的常規(guī)術(shù)語(yǔ)、密碼加密、密碼分析等密碼學(xué)基本體系就足夠了。

接下來(lái)我就以本篇文章給想了解密碼學(xué)的小伙伴們一點(diǎn)啟發(fā)和引導(dǎo)!

[[251744]]

一、 什么是密碼學(xué)

官方定義:密碼學(xué)是研究編制密碼和破譯密碼的技術(shù)科學(xué)。研究密碼變化的客觀規(guī)律,應(yīng)用于編制密碼以保守通信秘密的,稱為編碼學(xué);應(yīng)用于破譯密碼以獲取通信情報(bào)的,稱為破譯學(xué),總稱密碼學(xué)。

通俗理解:密碼學(xué)是隱藏信息的科學(xué)和藝術(shù),因此它們是保密的,然后"取消隱藏"它們,以便只有預(yù)期的接收者才能閱讀它們。基本上,我們可以說(shuō)密碼學(xué)是秘密消息傳遞的科學(xué)。

二、 密碼學(xué)里的常用術(shù)語(yǔ)解釋

 密碼學(xué)里的常用術(shù)語(yǔ)

  • 消息也成為明文。
  • 加密的消息稱為密文。
  • E(M) = C,E為加密函數(shù),M為明文,C為密文。
  • D(C) =M,D為解密函數(shù),C為密文,M為明文 。
  • 算法和密鑰:如果算法的保密性是基于保持算法的秘密,這叫受限制的算法。任何算法都是可能被人逆向分析的,顯然這樣是不安全的?,F(xiàn)代密碼學(xué)采用密鑰解決這個(gè)問(wèn)題。密鑰用K表示,k1稱為加密密鑰,k2稱為解密密鑰,如果K1=K2,或者k2能從k1推算出來(lái),反過(guò)來(lái)也成立,則這樣的算法叫對(duì)稱算法。如果k1不等于k2,并且k1與k2不能互相推導(dǎo)出來(lái),則這樣的算法叫做非對(duì)稱方法,也叫公鑰算法。
  • 密碼分析:不知道密鑰的情況下,回復(fù)出明文的科學(xué)。
  • 隱寫術(shù):將秘密消息隱藏在其它消息中。最常見(jiàn)的就是在圖像中隱藏消息,window下用copy命令直接可成功。

三、 密碼學(xué)的七個(gè)重要工具

密碼學(xué)的七個(gè)重要工具分別是:對(duì)稱密碼、公鑰密碼、單向散列函數(shù)、消息認(rèn)證碼、數(shù)字簽名、證書(shū)和偽隨機(jī)數(shù)生成器。

1. 對(duì)稱密碼

對(duì)稱密碼(symmetric cryptography)是指在加密和解密時(shí)使用同一密鑰的方式。它是最常見(jiàn)的一種加密方式,通過(guò)將信息編碼,利用公開(kāi)的加密算法和保密的密鑰完成對(duì)信息的加密和解密,其中加密過(guò)程和解密過(guò)程是對(duì)稱的,因此被稱為對(duì)稱密碼。

這里出現(xiàn)了公開(kāi)的加密算法的概念,人們通常存在一種錯(cuò)誤的觀點(diǎn),即保密的加密算法具有更高的安全性,這被現(xiàn)代密碼學(xué)稱之為"隱蔽式安全性"。因?yàn)楸C艿募用芩惴ㄖ灰皇褂?,遲早會(huì)公諸于世,想依靠對(duì)密碼算法本身進(jìn)行保密來(lái)確保機(jī)密性的密碼系統(tǒng)也就土崩瓦解了。相反,如果加密算法從一開(kāi)始就沒(méi)設(shè)想過(guò)要保密,則它會(huì)得到各種攻擊的洗禮,從而實(shí)現(xiàn)更強(qiáng)的保密性。因此現(xiàn)代密碼學(xué)的加密方式基本以"公開(kāi)加密算法+保密密鑰"組成。

  • 組成:公開(kāi)的加密算法+保密的密鑰;
  • 加密過(guò)程:A向B發(fā)送加密信息t時(shí),需要利用加密算法和密鑰對(duì)t進(jìn)行加密;
  • 解密過(guò)程:加密過(guò)程的逆過(guò)程;
  • 優(yōu)點(diǎn):巨大的密鑰空間能夠抵御暴力破解、算法上沒(méi)有弱點(diǎn)可以抵御其他類型的攻擊、加解密運(yùn)算效率高等優(yōu)點(diǎn);
  • 缺點(diǎn):密鑰配送問(wèn)題(這也是必須用到其它密碼技術(shù)的原因);
  • 常見(jiàn)密碼算法:DES、AES等;
  • 用途:加密信息;

2. 公鑰密碼

公鑰密碼(public-key cryptography)是指在加密和解密時(shí)使用不同密鑰的方式,與對(duì)稱密鑰正好相反,因此也被稱為非對(duì)稱密碼(asymmetric cryptography)。

  • 組成:公開(kāi)的加密算法+公開(kāi)密鑰(公鑰)+保密密鑰(私鑰);
  • 加密過(guò)程:A向B發(fā)送加密信息t時(shí),需要利用加密算法和B的公鑰對(duì)t進(jìn)行加密;
  • 解密過(guò)程:B需要利用解密算法(通常與加密算法相同)和B的私鑰對(duì)t進(jìn)行解密;
  • 優(yōu)點(diǎn):解決了密鑰配送的問(wèn)題;
  • 缺點(diǎn):加解密算法效率低(意味著它無(wú)法直接用于信息加密),中間人攻擊(B無(wú)法確定密文是由A發(fā)來(lái)的,因此需要引入新的安全技術(shù));
  • 常見(jiàn)密碼算法: RSA等;
  • 用途:加密對(duì)稱密鑰等;

3. 單向散列函數(shù)

首先說(shuō)明,后面這幾項(xiàng)技術(shù)都不是直接用于加密的。單向散列函數(shù)(one-way hash function)有一個(gè)輸入和一個(gè)輸出,其中輸入稱為消息,輸出稱為散列值。它通過(guò)一個(gè)不可逆的函數(shù)y=f(x)將x映射為y,通過(guò)對(duì)比傳輸前后y的變化來(lái)判斷x是否被篡改。舉個(gè)例子:假設(shè)A要傳輸t給B,并且要能夠讓B判斷傳輸過(guò)程中是否有人修改過(guò)t,那怎么做呢?A可以利用單向散列函數(shù),求出y=f(t),并將t和y一起發(fā)給B;B得到t和y后,利用f(t)=y1,判斷y和y1是否相同,不同則說(shuō)明傳輸過(guò)程中t或y出現(xiàn)了錯(cuò)誤,信息不完整,相同則說(shuō)明傳輸過(guò)程中t沒(méi)有被修改過(guò)。

  • 組成:?jiǎn)蜗蛏⒘泻瘮?shù);
  • 優(yōu)點(diǎn):算法效率高、辨別篡改;
  • 缺點(diǎn):無(wú)法辨別偽裝(這就需要新的安全技術(shù)來(lái)保證);
  • 常見(jiàn)密碼算法:MD5、SHA1等;
  • 用途:判斷篡改、基于口令的加密、消息認(rèn)證碼、數(shù)字簽名等;

4. 消息認(rèn)證碼

說(shuō)到這里,B仍然無(wú)法確定與他通信的人是A。那如何認(rèn)證A就是A呢?本節(jié)介紹的消息認(rèn)證碼(message authentication code)是一種確認(rèn)完整性并進(jìn)行認(rèn)證的技術(shù),簡(jiǎn)稱MAC。它的思想很樸素,為了確保完整性,需要MAC與信息內(nèi)容相關(guān),為了能夠認(rèn)證,可以利用公共密鑰來(lái)提供。很顯然,MAC可以用單向散列函數(shù)與密鑰的組合來(lái)實(shí)現(xiàn),這也是現(xiàn)實(shí)中MAC的一種實(shí)現(xiàn)方案。

  • 組成:完整性技術(shù)(單向散列函數(shù)等)+保密密鑰;
  • 加密過(guò)程:將密鑰作為完整性技術(shù)的種子引入,從而得到MAC;
  • 認(rèn)證過(guò)程:將信息t做相同的操作,并與傳來(lái)的MAC對(duì)比,辨別偽裝;
  • 優(yōu)點(diǎn):辨別篡改和偽裝;
  • 缺點(diǎn):存在密鑰傳遞的問(wèn)題,當(dāng)然可以引入公鑰方案解決,但又會(huì)引入中間人攻擊的問(wèn)題(這也是數(shù)字簽名的作用)。另外也存在無(wú)法防止否認(rèn)的問(wèn)題;
  • 常見(jiàn)密碼算法:HMAC等;
  • 用途:判斷篡改、認(rèn)證;

5. 數(shù)字簽名

上一節(jié)提到了一種認(rèn)證方案,但在某些場(chǎng)景下還存在諸多不足,如無(wú)法防止否認(rèn)、無(wú)法抵御中間人攻擊的問(wèn)題。無(wú)法防止否認(rèn)是因?yàn)槊荑€相同,無(wú)法判斷誰(shuí)發(fā)出了這條消息,因此將密鑰分開(kāi)為加密密鑰和解密密鑰就可以解決無(wú)法防止否認(rèn)的問(wèn)題。這是不是跟公鑰密碼很相似,可以將數(shù)字簽名看成是公鑰密碼的反過(guò)程,用私鑰加密來(lái)生成簽名,用公鑰解密來(lái)驗(yàn)證簽名(這也要求不對(duì)稱加密算法可逆,由此可是RSA多牛逼)。但前文討論過(guò)RSA算法效率不高,因此數(shù)字簽名的做法通常:?jiǎn)蜗蛏⒘泻瘮?shù)+RSA算法。

  • 組成:?jiǎn)蜗蛏⒘泻瘮?shù)+公鑰密碼算法+公鑰;
  • 加密過(guò)程:A將信息t經(jīng)過(guò)單向散列函數(shù)運(yùn)算得到h,利用A的私鑰對(duì)h加密得到數(shù)字簽名s;
  • 認(rèn)證過(guò)程:B收到t和s,利用A的公鑰對(duì)s進(jìn)行解密,再將t散列,對(duì)比兩者是否一致即可。
  • 優(yōu)點(diǎn):能夠識(shí)別篡改和偽裝,還可以防止否認(rèn);
  • 缺點(diǎn):由于用到了公鑰密碼,那仍然無(wú)法理想的解決中間人攻擊,因此提出了證書(shū)的概念;
  • 常見(jiàn)密碼算法:RSA等算法組合;
  • 用途:各種需要認(rèn)證的場(chǎng)景;

6. 證書(shū)

通過(guò)上面的講解可以看出,密碼學(xué)的基礎(chǔ)是對(duì)稱密碼+公鑰密碼,但它們?nèi)匀粺o(wú)法抵御中間人攻擊,也即M想辦法阻斷A和B的直接通信,同時(shí)偽裝成B然后與A通信,偽裝成A然后與B通信。這個(gè)問(wèn)題在密碼學(xué)看來(lái)就是個(gè)死循環(huán),因此需要引入額外的技術(shù)——社會(huì)學(xué)知識(shí):讓公鑰以及數(shù)字簽名技術(shù)成為一種社會(huì)性的基礎(chǔ)設(shè)施,即公鑰基礎(chǔ)設(shè)施(public key intrastructure),簡(jiǎn)稱PKI。而證書(shū),就是將公鑰當(dāng)作一條消息,由一個(gè)可信的第三方對(duì)其簽名后所得到的公鑰。

7. 偽隨機(jī)數(shù)生成器

前面介紹的幾項(xiàng)技術(shù)仿佛能保證信息的安全性,但其中仍然存在著坑:密鑰的由來(lái)以及各種算法參數(shù)的由來(lái)。很顯然,如果它是由特定的序列來(lái)生成的,那么攻擊者很容易就能推測(cè)出密鑰。那如何才能讓攻擊者沒(méi)法推測(cè)出來(lái)呢?那就是用隨機(jī)數(shù)??捎殖霈F(xiàn)了一個(gè)問(wèn)題,怎么得到隨機(jī)數(shù)呢?一次次的扔硬幣肯定不行,那還是需要一個(gè)算法來(lái)快速的生成類似隨機(jī)數(shù)的數(shù),這就是偽隨機(jī)數(shù)生成器。因此這個(gè)偽隨機(jī)數(shù)生成器的算法還是需要一番功夫的,這里就不再贅述。

四、 現(xiàn)代密碼學(xué)常見(jiàn)的密碼算法

1. 對(duì)稱算法

對(duì)稱密碼算法有時(shí)又叫傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中推算出來(lái),反過(guò)來(lái)也成立。在大多數(shù)對(duì)稱算法中,加密解密密鑰是相同的。這些算法也叫秘密密鑰算法或單密鑰算法,它要求發(fā)送者和接收者在安全通信之前,商定一個(gè)密鑰。對(duì)稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都能對(duì)消息進(jìn)行加密解密。只要通信需要保密,密鑰就必須保密。

(1) DES:DES算法的入口參數(shù)有三個(gè):Key、Data、Mode。其中Key為7個(gè)字節(jié)共56位,是DES算法的工作密鑰;Data為8個(gè)字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密。其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L(zhǎng)0、R0兩部分,每部分各長(zhǎng)32位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最后一位是原來(lái)的第7位。L0、R0則是換位輸出后的兩部分,L0是輸出的左32位,R0是右32位,例:設(shè)置換前的輸入值為D1D2D3……D64,則經(jīng)過(guò)初始置換后的結(jié)果為:L0=D58D50……D8;R0=D57D49……D7。

經(jīng)過(guò)16次迭代運(yùn)算后,得到L16、R16,將此作為輸入,進(jìn)行逆置換,逆置換正好是初始置換的逆運(yùn)算,由此即得到密文輸出。

此算法是對(duì)稱加密算法體系中的代表,在計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中廣泛使用。

(2) AES:高級(jí)加密標(biāo)準(zhǔn)(英語(yǔ):Advanced Encryption Standard,縮寫:AES),在密碼學(xué)中又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過(guò)五年的甄選流程,高級(jí)加密標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年,高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱密鑰加密中最流行的算法之一。

  • AddRoundKey — 矩陣中的每一個(gè)字節(jié)都與該次輪秘鑰(round key)做XOR運(yùn)算;每個(gè)子密鑰由密鑰生成方案產(chǎn)生。
  • SubBytes — 通過(guò)非線性的替換函數(shù),用查找表的方式把每個(gè)字節(jié)替換成對(duì)應(yīng)的字節(jié)。
  • ShiftRows — 將矩陣中的每個(gè)橫列進(jìn)行循環(huán)式移位。
  • MixColumns — 為了充分混合矩陣中各個(gè)直行的操作。這個(gè)步驟使用線性轉(zhuǎn)換來(lái)混合每列的四個(gè)字節(jié)。

2. 非對(duì)稱算法

非對(duì)稱密鑰也叫公開(kāi)密鑰加密,它是用兩個(gè)數(shù)學(xué)相關(guān)的密鑰對(duì)信息進(jìn)行編碼。在此系統(tǒng)中,其中一個(gè)密鑰叫公開(kāi)密鑰,可隨意發(fā)給期望同密鑰持有者進(jìn)行安全通信的人。公開(kāi)密鑰用于對(duì)信息加密。第二個(gè)密鑰是私有密鑰,屬于密鑰持有者,此人要仔細(xì)保存私有密鑰。密鑰持有者用私有密鑰對(duì)收到的信息進(jìn)行解密。

(1) RSA:RSA算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大質(zhì)數(shù)相乘十分容易,但是想要對(duì)其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開(kāi)作為加密密鑰。

因?yàn)閮蓚€(gè)大素?cái)?shù)的乘積因式分解時(shí),除了1和其本身(這兩個(gè)不在分解范圍內(nèi))外,只有這兩個(gè)大素?cái)?shù),但是分解時(shí)不知道這兩個(gè)大素?cái)?shù),只有從最小的素?cái)?shù)2開(kāi)始,逐步試除,直到這兩個(gè)大素?cái)?shù)中較小的一個(gè),當(dāng)然非常困難了。

在公開(kāi)密鑰密碼體制中,加密密鑰(即公開(kāi)密鑰)PK是公開(kāi)信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開(kāi)的。雖然解密密鑰SK是由公開(kāi)密鑰PK決定的,但卻不能根據(jù)PK計(jì)算出SK。

RSA算法是一種非對(duì)稱密碼算法,所謂非對(duì)稱,就是指該算法需要一對(duì)密鑰,使用其中一個(gè)加密,則需要用另一個(gè)才能解密。

RSA的算法涉及三個(gè)參數(shù),n、e1、e2。

  • 其中,n是兩個(gè)大質(zhì)數(shù)p、q的積,n的二進(jìn)制表示時(shí)所占用的位數(shù),就是所謂的密鑰長(zhǎng)度。
  • e1和e2是一對(duì)相關(guān)的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質(zhì);再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
  • (n,e1),(n,e2)就是密鑰對(duì)。其中(n,e1)為公鑰,(n,e2)為私鑰。

RSA加解密的算法完全相同,設(shè)A為明文,B為密文,則:A=B^e2 mod n;B=A^e1 mod n;(公鑰加密體制中,一般用公鑰加密,私鑰解密)

e1和e2可以互換使用,即:

  1. A=B^e1 mod n;B=A^e2 mod n; 

3. 哈希算法

哈希算法將任意長(zhǎng)度的二進(jìn)制值映射為較短的固定長(zhǎng)度的二進(jìn)制值,這個(gè)小的二進(jìn)制值稱為哈希值。哈希值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。如果散列一段明文而且哪怕只更改該段落的一個(gè)字母,隨后的哈希都將產(chǎn)生不同的值。要找到散列為同一個(gè)值的兩個(gè)不同的輸入,在計(jì)算上是不可能的,所以數(shù)據(jù)的哈希值可以檢驗(yàn)數(shù)據(jù)的完整性。一般用于快速查找和加密算法。簡(jiǎn)單解釋:哈希(Hash)算法,即散列函數(shù)。它是一種單向密碼體制,即它是一個(gè)從明文到密文的不可逆的映射,只有加密過(guò)程,沒(méi)有解密過(guò)程。同時(shí),哈希函數(shù)可以將任意長(zhǎng)度的輸入經(jīng)過(guò)變化以后得到固定長(zhǎng)度的輸出。哈希函數(shù)的這種單向特征和輸出數(shù)據(jù)長(zhǎng)度固定的特征使得它可以生成消息或者數(shù)據(jù)。

(1) MD5:MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于確保信息傳輸完整一致。是計(jì)算機(jī)廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語(yǔ)言普遍已有MD5實(shí)現(xiàn)。將數(shù)據(jù)(如漢字)運(yùn)算為另一固定長(zhǎng)度值,是雜湊算法的基礎(chǔ)原理,MD5的前身有MD2、MD3和MD4。

MD5算法具有以下特點(diǎn):

  • 壓縮性:任意長(zhǎng)度的數(shù)據(jù),算出的MD5值長(zhǎng)度都是固定的。
  • 容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易。
  • 抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改1個(gè)字節(jié),所得到的MD5值都有很大區(qū)別。
  • 強(qiáng)抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。

(2) 2SHA-256:安全哈希算法256位。SHA-1安全性比MD5稍高(160位VS128位),但算法需要時(shí)間SHA-1稍慢。

五、 密碼分析詳解

密碼編碼學(xué)的主要目的是保持明文(或者是密鑰)的秘密并防止竊聽(tīng)者(也可以叫對(duì)手、攻擊者、截取者、入侵者、敵人等)知曉。這里假設(shè)竊聽(tīng)者完全能夠截獲發(fā)送者和接收者之間的通信。

密碼分析學(xué)是在不知道密鑰的情況下,恢復(fù)明文的科學(xué)。成功的密碼分析可以恢復(fù)消息的明文或者密鑰。與此同時(shí),密碼分析也可以驗(yàn)證出密碼體制的弱點(diǎn),并最終恢復(fù)明文或者密鑰。

對(duì)密碼進(jìn)行分析的嘗試稱為攻擊(attack)。A.Kerckhoffs 早在19世紀(jì)就闡明了密碼分析的一個(gè)基本假設(shè),此假設(shè)就是秘密必須全寓于密鑰中。Kerckhoffs假設(shè)密碼分析者已知密碼算法以及其實(shí)現(xiàn)的全部資料。雖然在實(shí)際的密碼分析中并不總是擁有如此詳細(xì)的信息,但理應(yīng)如此假設(shè)。這樣如果不能破譯算法,那么即便了解算法是如何工作的也是徒然。當(dāng)然,如果連算法的知識(shí)和相關(guān)資料都沒(méi)有,那就肯定無(wú)法破譯。

現(xiàn)我列出常用的七類密碼分析攻擊,在此假設(shè)每一類密碼分析者都知道所用的加密算法的全部知識(shí)。

  • 唯密文攻擊(ciphertext-only attack)。密碼分析者有一些消息的密文,這些消息都用相同的加密算法進(jìn)行加密。密碼分析者的任務(wù)就是恢復(fù)盡可能多的明文,或者最好能推算出加密消息的密鑰,以便可采用相同的密鑰破解其他被加密的消息。
  • 已知明文攻擊(known-plaintext attack)。密碼分析者不僅可得到一些消息的密文,而且也知道這些消息的明文。分析者的任務(wù)就是用加密信息推出用來(lái)加密的密鑰或?qū)С鲆粋€(gè)算法,此算法可以對(duì)用相同密鑰加密的任何新消息進(jìn)行解密。
  • 選擇明文攻擊(chosen-plaintext attack)。分析者不僅可以得到一些消息的密文和相同的明文,而且還可以選擇被加密的明文。這比已知明文攻擊更加有效,因?yàn)槊艽a分析者能選擇特定的明文塊進(jìn)行加密,那些塊可能產(chǎn)生更多關(guān)于密鑰的信息。分析者的任務(wù)就是推導(dǎo)出用來(lái)加密消息的密鑰或?qū)С鲆粋€(gè)算法,此算法可以對(duì)用相同密鑰加密的任何新消息進(jìn)行解密。
  • 自適應(yīng)選擇明文攻擊(adaptive-chosen-plaintext attack)。這是選擇明文攻擊的特殊情況。密碼分析者不僅能夠選擇被加密的明文,還可以基于以前加密的結(jié)果修正這個(gè)選擇。在選擇明文攻擊中,密碼分析者還可以選擇一大塊被加密的明文。而在自適應(yīng)選擇明文攻擊中,可以選擇較小的明文塊,然后再基于第一塊的結(jié)果選擇另一個(gè)明文塊,以此類推。
  • 選擇密文攻擊(chosen-ciphertext attack)。密碼分析者能選擇不同的被加密的密文,并可得到對(duì)應(yīng)的解密的明文。例如,密碼分析者訪問(wèn)一個(gè)防篡改的自動(dòng)解密盒,密碼分析者的任務(wù)就是推導(dǎo)出密鑰。
  • 選擇密鑰攻擊(chosen-key attack)。這種攻擊并不表示密碼分析者能夠選擇密鑰,其只是表示密碼分析者具有不同密鑰之間關(guān)系的有關(guān)知識(shí)。
  • 軟磨硬泡攻擊(rubber-hose cryptanalysis)。密碼分析者威脅、勒索,或者通過(guò)折磨某人,直到其給出密鑰為止。通過(guò)行賄獲取密鑰的方法,有時(shí)稱為購(gòu)買密鑰攻擊(purchase-key attack)。這些是非常有效的攻擊,并經(jīng)常是破譯算法的最便捷途徑。

六、使用密碼學(xué)教學(xué)常用工具CrypTool完成一次實(shí)例加解密過(guò)程

在這個(gè)實(shí)際場(chǎng)景中,將使用RC4算法創(chuàng)建一個(gè)簡(jiǎn)單的密碼。然后將嘗試使用暴力攻擊解密它。在本練習(xí)中,假設(shè)我們知道加密密鑰是24位。我們將使用此信息來(lái)破解密碼。

1. 首先創(chuàng)建RC4流密碼

我們將加密以下短語(yǔ) "永遠(yuǎn)不要低估一個(gè)時(shí)間充裕且現(xiàn)金不足的孩子的決心" 我們將使用"00 00 00"作為加密密鑰。

打開(kāi)CrypTool

將文本替換為"永不低估時(shí)間充裕且現(xiàn)金不足的孩子的決心"

單擊加密/解密菜單

指向Symmetric(現(xiàn)代),然后選擇RC4,如上所示

將出現(xiàn)以下窗口

選擇24位作為加密密鑰

將值設(shè)置為00 00 00

單擊加密按鈕

您將獲得以下流密碼

2. 其次攻擊流密碼

單擊"分析"菜單

指向Symmetric Encryption(現(xiàn)代),然后選擇RC4,如上所示

您將看到以下窗口

記住假設(shè)是秘密密鑰是24位。因此,請(qǐng)確保選擇24位作為密鑰長(zhǎng)度。

單擊"開(kāi)始"按鈕。您將看到以下窗口

注意:完成暴力分析攻擊所需的時(shí)間取決于所使用機(jī)器的處理能力和密鑰長(zhǎng)度。密鑰長(zhǎng)度越長(zhǎng),完成攻擊所需的時(shí)間越長(zhǎng)。

分析完成后,您將獲得以下結(jié)果。

注意:較低的熵?cái)?shù)意味著它是最可能的正確結(jié)果。高于最低找到的熵值可能是正確的結(jié)果。

選擇最有意義的行然后在完成后單擊"接受選擇"按鈕

七、 最后推薦小伙伴們幾本不錯(cuò)的密碼學(xué)書(shū)籍

  • 《現(xiàn)代密碼學(xué)》第4版------->楊波老師編寫的,一本很薄的講解基礎(chǔ)密碼學(xué)的書(shū)籍
  • 《密碼編碼學(xué)與網(wǎng)絡(luò)安全——原理與實(shí)踐》第七版 by William Stalling ------->很多著名大學(xué)都采用它做教材
  • 《密碼學(xué)原理與實(shí)踐》第三版 Douglas R.Stinson著 馮登國(guó) 譯------->值得精讀的一本書(shū)
責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2017-06-01 09:03:51

2020-05-20 08:35:55

公鑰密碼學(xué)非對(duì)稱密碼密碼

2017-12-14 16:02:43

2020-12-19 10:38:22

量子計(jì)算密碼學(xué)加密

2020-10-07 16:44:27

量子計(jì)算

2013-04-17 15:11:08

2020-08-13 18:19:24

OpenSSL密碼學(xué)Linux

2017-01-03 16:03:56

2018-03-09 17:36:27

2015-10-08 15:07:32

2011-07-19 13:55:38

2022-06-16 14:04:14

密碼學(xué)加密后量子密碼學(xué)

2018-11-30 14:47:13

2011-07-19 13:59:59

2019-11-13 09:27:55

Web密碼學(xué)數(shù)據(jù)

2018-11-30 08:19:48

2022-06-09 08:00:00

量子密碼學(xué)安全量子計(jì)算機(jī)

2022-05-20 14:13:50

區(qū)塊鏈金融工具

2025-04-01 00:18:55

2014-09-24 09:50:05

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)