密碼演算法攻擊
『壹』 生日攻擊是針對()密碼演算法的分析方法
生日攻擊是針對(MD5)密碼演算法的分析方法。生日攻擊是一種密碼學攻擊手段,所利用的是概率論中生日問題的數學原理。這種攻擊手段可用於讓殲濫用兩個或多個集團之間的通信。此攻擊依賴於在隨機攻擊中的高碰撞概率和固定置換次數。
生日攻擊是一種密碼學攻擊手段,所利用的是概率論中生日問題的數學原理。這種攻擊手段可用於濫用兩個或多個集團之間的通信。迅腔此攻擊依賴於在隨機攻擊中的高碰撞概率和固定置換次數(鴿巢原理)。使用生日攻擊,攻擊者可在中找到散列函數碰撞,為原像抗畝滑衫性安全性。
『貳』 在現代密碼學研究中什麼保護是防止密碼體被攻擊的重點
在現代密碼學研究中加解密演算法保護是防止密碼體被攻擊的重點。
AES是美國國家標准技術研究所NIST旨在取代DES的21世紀的加密標准。 AES的基局氏亂本要求是,採用對稱分組密碼體制,密鑰長度的最少支持為128、192、256,分組長度128位,演算法應易於各種硬體和軟體實現。
『叄』 計算機三級題:對密碼系統的攻擊種類
對密碼系統的攻擊種類分為以下四種:
1、惟密文攻擊
在惟密文攻擊中,密碼分析者知道密碼演算法,但僅能根據截獲的密文進行分析,以得出明文或密鑰。由於密碼分析者所能利用的數據資源僅為密文,這是對密碼分析者最不利的情況。
2、已知明文攻擊
已知明文攻擊是指密碼分析者除了有截獲的密文外,還有一些已知的「明文—密文對」來破譯密碼。密碼分析者的任務目標是推出用來加密的密鑰或某種演算法,這種演算法可以對用該密鑰加密的任何新的消息進行解密。
3、選擇明文攻擊
選擇仿乎游明文攻擊是指密碼分析者不僅可得到一些「明文—密文對」,還可以選擇被加密的明備銷文,並獲得相應的密文。這時密碼分析者能夠選擇特定的明文數據塊去加密,並比頃罩較明文和對應的密文,已分析和發現更多的與密鑰相關的信息。
密碼分析者的任務目標也是推出用來加密的密鑰或某種演算法,該演算法可以對用該密鑰加密的任何新的消息進行解密。
4、選擇密文攻擊
選擇密文攻擊是指密碼分析者可以選擇一些密文,並得到相應的明文。密碼分析者的任務目標是推出密鑰。這種密碼分析多用於攻擊公鑰密碼體制。
『肆』 區塊鏈密碼演算法是怎樣的
區塊鏈作為新興技術受到越來越廣泛的關注,是一種傳統技術在互聯網時代下的新的應用,這其中包括分布式數據存儲技術、共識機制和密碼學等。隨著各種區塊鏈研究聯盟的創建,相關研究得到了越來越多的資金和人員支持。區塊鏈使用的Hash演算法、零知識證明、環簽名等密碼演算法:
Hash演算法
哈希演算法作為區塊鏈基礎技術,Hash函數的本質是將任意長度(有限)的一組數據映射到一組已定義長度的數據流中。若此函數同時滿足:
(1)對任意輸入的一組數據Hash值的計算都特別簡單;
(2)想要找到2個不同的擁有相同Hash值的數據是計算困難的。
滿足上述兩條性質的Hash函數也被稱為加密Hash函數,不引起矛盾的情況下,Hash函數通常指的是加密Hash函數。對於Hash函數,找到使得被稱為一次碰撞。當前流行的Hash函數有MD5,SHA1,SHA2,SHA3。
比特幣使用的是SHA256,大多區塊鏈系統使用的都是SHA256演算法。所以這里先介紹一下SHA256。
1、 SHA256演算法步驟
STEP1:附加填充比特。對報文進行填充使報文長度與448模512同餘(長度=448mod512),填充的比特數范圍是1到512,填充比特串的最高位為1,其餘位為0。
STEP2:附加長度值。將用64-bit表示的初始報文(填充前)的位長度附加在步驟1的結果後(低位位元組優先)。
STEP3:初始化緩存。使用一個256-bit的緩存來存放該散列函數的中間及最終結果。
STEP4:處理512-bit(16個字)報文分組序列。該演算法使用了六種基本邏輯函數,由64 步迭代運算組成。每步都以256-bit緩存值為輸入,然後更新緩存內容。每步使用一個32-bit 常數值Kt和一個32-bit Wt。其中Wt是分組之後的報文,t=1,2,...,16 。
STEP5:所有的512-bit分組處理完畢後,對於SHA256演算法最後一個分組產生的輸出便是256-bit的報文。
2、環簽名
2001年,Rivest, shamir和Tauman三位密碼學家首次提出了環簽名。是一種簡化的群簽名,只有環成員沒有管理者,不需要環成員間的合作。環簽名方案中簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的成員可能並不知道自己被包含在其中。
環簽名方案由以下幾部分構成:
(1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)。
(2)簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為消息m生成簽名a。
(3)簽名驗證。驗證者根據環簽名和消息m,驗證簽名是否為環中成員所簽,如果有效就接收,否則丟棄。
環簽名滿足的性質:
(1)無條件匿名性:攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不超過1/n。
(2)正確性:簽名必需能被所有其他人驗證。
(3)不可偽造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為消息m偽造一個簽名。
3、環簽名和群簽名的比較
(1)匿名性。都是一種個體代表群體簽名的體制,驗證者能驗證簽名為群體中某個成員所簽,但並不能知道為哪個成員,以達到簽名者匿名的作用。
(2)可追蹤性。群簽名中,群管理員的存在保證了簽名的可追蹤性。群管理員可以撤銷簽名,揭露真正的簽名者。環簽名本身無法揭示簽名者,除非簽名者本身想暴露或者在簽名中添加額外的信息。提出了一個可驗證的環簽名方案,方案中真實簽名者希望驗證者知道自己的身份,此時真實簽名者可以通過透露自己掌握的秘密信息來證實自己的身份。
(3)管理系統。群簽名由群管理員管理,環簽名不需要管理,簽名者只有選擇一個可能的簽名者集合,獲得其公鑰,然後公布這個集合即可,所有成員平等。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
『伍』 常見密碼演算法原理
PBKDF2(Password-Based Key Derivation Function)是一個用來導出密鑰的函數,用來生成加密的密碼,增加破解的難度,類似bcrypt/scrypt等,可以用來進行密碼或者口令的加密存儲。主要是鹽值+pwd,經過多輪HMAC演算法的計算,產生的密文。
PBKDF2函數的定義
DK = PBKDF2(PRF, Password, Salt, c, dkLen)
• PRF是一個偽隨機函數,例如HASH_HMAC函數,它會輸出長度為hLen的結果。
• Password是用來生成密鑰的原文密碼。
• Salt是一個加密用的鹽值。
• c是進行重復計算的次數。
• dkLen是期望得到的密鑰的長度。
• DK是最後產生的密鑰。
https://segmentfault.com/a/1190000004261009
下面我們以Alice和Bob為例敘述Diffie-Hellman密鑰交換的原理。
1,Diffie-Hellman交換過程中涉及到的所有參與者定義一個組,在這個組中定義一個大質數p,底數g。
2,Diffie-Hellman密鑰交換是一個兩部分的過程,Alice和Bob都需要一個私有的數字a,b。
下面是DH交換的過程圖:
本圖片來自wiki
下面我們進行一個實例
1.愛麗絲與鮑伯協定使用p=23以及g=5.
2.愛麗絲選擇一個秘密整數a=6, 計算A = g^a mod p並發送給鮑伯。
A = 5^6 mod 23 = 8.
3.鮑伯選擇一個秘密整數b=15, 計算B = g^b mod p並發送給愛麗絲。
B = 5^15 mod 23 = 19.
4.愛麗絲計算s = B a mod p
19^6 mod 23 = 2.
5.鮑伯計算s = A b mod p
8^15 mod 23 = 2.
ECDH:
ECC演算法和DH結合使用,用於密鑰磋商,這個密鑰交換演算法稱為ECDH。交換雙方可以在不共享任何秘密的情況下協商出一個密鑰。ECC是建立在基於橢圓曲線的離散對數問題上的密碼體制,給定橢圓曲線上的一個點P,一個整數k,求解Q=kP很容易;給定一個點P、Q,知道Q=kP,求整數k確是一個難題。ECDH即建立在此數學難題之上。密鑰磋商過程:
假設密鑰交換雙方為Alice、Bob,其有共享曲線參數(橢圓曲線E、階N、基點G)。
來自 http://www.cnblogs.com/fishou/p/4206451.html
https://zh.wikipedia.org/wiki/SHA%E5%AE%B6%E6%97%8F
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
-----END RSA PRIVATE KEY-----
while a RSA public key contains only the following data:
-----BEGIN RSA PUBLIC KEY-----
RSAPublicKey ::= SEQUENCE {
molus INTEGER, -- n
publicExponent INTEGER -- e
}
-----END RSA PUBLIC KEY-----
and this explains why the private key block is larger.
Note that a more standard format for non-RSA public keys is
-----BEGIN PUBLIC KEY-----
PublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
PublicKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
-----END PUBLIC KEY-----
More info here.
BTW, since you just posted a screenshot of the private key I strongly hope it was just for tests :)
密鑰的長度
C:\herong>java RsaKeyGenerator 128
p: 17902136406704537069
q: 17902136406704537077
m:
Molus:
Key size: 128
Public key:
Private key:
C:\herong>java RsaKeyGenerator 256
p:
q:
m: ...
Molus: ...
Key size: 256
Public key: ...
Private key: ...
https://security.stackexchange.com/questions/90169/rsa-public-key-and-private-key-lengths
https://stackoverflow.com/questions/2921508/trying-to-understand-java-rsa-key-size >
http://www.herongyang.com/Cryptography/RSA-BigInteger-Keys-Generated-by-RsaKeyGenerator-java.html
update() adds data to the Cipher』s internal buffer, then returns all currently completely encoded blocks. If there are any encoded blocks left over, they remain in the Cipher』s buffer until the next call, or a call to doFinal(). This means that if you call update() with a four byte array to encrypt, and the buffer size is eight bytes, you will not receive encoded data on the return (you』ll get a null instead). If your next call to update() passes five bytes of data in, you will get an 8 byte (the block size) array back, containing the four bytes passed in on the previous call, the first four bytes from the current call – the remaining byte from the current call is left in the Cipher』s buffer.
doFinal() on the other hand is much simpler: it encrypts the passed data, pads it out to the necessary length, and then returns it. The Cipher is essentially stateless.
來自 https://segmentfault.com/a/1190000006931511
DH演算法的中間人攻擊
在最初的描述中,迪菲-赫爾曼密鑰交換本身並沒有提供通訊雙方的身份驗證服務,因此它很容易受到中間人攻擊。 一個中間人在信道的中央進行兩次迪菲-赫爾曼密鑰交換,一次和Alice另一次和Bob,就能夠成功的向Alice假裝自己是Bob,反之亦然。而攻擊者可以解密(讀取和存儲)任何一個人的信息並重新加密信息,然後傳遞給另一個人。因此通常都需要一個能夠驗證通訊雙方身份的機制來防止這類攻擊。
優缺點:
1、 僅當需要時才生成密鑰,減小了將密鑰存儲很長一段時間而致使遭受攻擊的機會。
2、 除對全局參數的約定外,密鑰交換不需要事先存在的基礎結構。
然而,該技術也存在許多不足:
1、 沒有提供雙方身份的任何信息。
2、 它是計算密集性的,因此容易遭受阻塞性攻擊,即對手請求大量的密鑰。受攻擊者花費了相對多的計算資源來求解無用的冪系數而不是在做真正的工作。
3、 沒辦法防止重演攻擊。
4、 容易遭受中間人的攻擊。第三方C在和A通信時扮演B;和B通信時扮演A。A和B都與C協商了一個密鑰,然後C就可以監聽和傳遞通信量。中間人的攻擊按如下進行:
(1) B在給A的報文中發送他的公開密鑰。
(2) C截獲並解析該報文。C將B的公開密鑰保存下來並給A發送報文,該報文具有B的用戶ID但使用C的公開密鑰YC,仍按照好像是來自B的樣子被發送出去。A收到C的報文後,將YC和B的用戶ID存儲在一塊。類似地,C使用YC向B發送好像來自A的報文。
(3) B基於私有密鑰XB和YC計算秘密密鑰K1。A基於私有密鑰XA和YC計算秘密密鑰K2。C使用私有密鑰XC和YB計算K1,並使用XC和YA計算K2。
(4) 從現在開始,C就可以轉發A發給B的報文或轉發B發給A的報文,在途中根據需要修改它們的密文。使得A和B都不知道他們在和C共享通信。
『陸』 什麼是密碼分析,其攻擊類型有哪些
答:密碼分析是指研漏稿究在不知道密鑰的情況下來恢復明文的科學。攻擊類型棚前有隻有密文的攻擊,已知明文的攻擊,選擇明文的攻擊,適應性選擇明文攻擊,選擇密文的攻擊,選擇密鑰的攻擊,橡皮管密碼攻擊。S盒是DES演算法的核心。其功能是把6bit數據變為4bit數據。返和孝
『柒』 對稱密鑰的攻擊我們是知道的,對公鑰密碼是否還存在攻擊
對於公鑰密碼的原理我在另外一篇答案中曾有解釋 公鑰的原理
首先我們知道公鑰密碼演算法應滿足如下要求:
- 接收方B產生密鑰對(公開鑰PKB和秘密鑰SKB)是計算上容易的。
- 發送方A用收方的公開鑰對消息m加密以產生密文c,即c=EPKB[m]在計算上是容易的。
- 接收方B用自己的秘密鑰對c解密,即m=DSKB[c]在計算上是容易的。
- 竊聽者由B的公開鑰PKB求秘密鑰SKB在計算上是不可行的。
- 敵手由密文c和B的公開鑰PKB恢復明文在計算上是不可行的。
- 加、解密次序可換嘩旁,即EPKB[DSKB[m]]= DSKB[EPKB[m]]這一點雖然非常有用,但不是對所有的演算法都有要求。
對公鑰密碼的攻擊
和單鑰密碼體制一樣,如果密鑰太短,公鑰密碼也易受窮舉搜纖寬索攻擊,因此密鑰必須足夠長才能抵抗窮舉搜索攻擊,然而又由於公鑰密碼所使用的可逆函數的計算復雜性與密鑰長度常常不是線性關系,而是增大得更快,所以密鑰長度太大又會使得加解密演算法運算太慢而不實用。因此公亂豎橡鑰密碼目前主要用於密鑰管理和數字簽名。
對公鑰密碼演算法的第二種攻擊是尋找由公開鑰計算秘密鑰的方法。目前為止,對常用公鑰演算法還都未能證明這種攻擊是不可行的。
還有一種僅適用於公鑰密碼演算法的攻擊方法,稱為可能字攻擊。例如對56比特的DES密鑰用公鑰密碼演算法加密後發送,敵手用演算法的公開鑰對所有可能的密鑰加密後與截獲的密文相比較,如果一樣,則相應的明文即DES的密鑰就被找出。因此不管公鑰演算法的密鑰多長,這種攻擊的本質是對56比特DES密鑰的窮舉攻擊。抵抗方法是在欲發送的明文消息後添加一些隨機比特。
『捌』 密碼學第一次實驗報告:DES演算法與差分攻擊
DES演算法與差分攻擊
了解DES演算法基本工作原理,體會並理解分組密碼演算法的混淆和擴散概念。了解Sbox工作原理及效果。了解DES的工作模式和填充方式。了解差分攻擊
的基本原理。
IP置換目的是將輸入的64位數據塊按位重新組合,並把輸出分為L0、R0兩部分,每部分各長32位。
表中的數字代表新數據中此位置的數據在原數據中的位置,即原數據塊的第58位放到新數據的第1位,第50位放到第2位,……依此類推,第7位放到第64位。置換後的數據分為L0和R0兩部分,L0為新數據的左32位,R0為新數據的右32位。
不考慮每個位元組的第8位,DES的密鑰由64位減至56位,每個位元組的第8位作為奇偶校驗位。產生的56位密鑰由下表生成(注意表中沒有8,16,24,32,40,48,56和64這8位):
在DES的每一輪中,從56位密鑰產生出不同的48位子密鑰,確定這些子密鑰的方式如下:
1).將56位的密鑰分成兩部分,每部分28位。
2).根據輪數,這兩部分分別循環左移1位或2位。每輪移動的位數如下表:
移動後,從56位中選出48位。這個過程中,既置換了每位的順序,又選擇了子密鑰,因此稱為壓縮置換。壓縮置換規則如下表(注意表中沒有9,18,22,25,35,38,43和54這8位):
壓縮後的密鑰與擴展分組異或以後得到48位的數據,將這個數據送人S盒,進行替代運算。替代由8個不同的S盒完成,每個S盒有6位輸入4位輸出。48位輸入分為8個6位的分組,一個分組對應一個S盒,對應的S盒對各組進行代替操作。
一個S盒就是一個4行16列的表,盒中的每一項都是一個4位的數。S盒的6個輸入確定了其對應的輸出在哪一行哪一列,輸入的高低兩位做為行數H,中間四位做為列數L,在S-BOX中查找第H行L列對應的數據(<32)。
S盒代替時DES演算法的關鍵步驟,所有的其他的運算都是線性的,易於分析,而S盒是非線性的,相比於其他步驟,提供了更好安全性
S盒代替運算的32位輸出按照P盒進行置換。該置換把輸入的每位映射到輸出位,任何一位不能被映射兩次,也不能被略去,映射規則如下表:
表中的數字代表原數據中此位置的數據在新數據中的位置,即原數據塊的第16位放到新數據的第1位,第7位放到第2位,……依此類推,第25位放到第32位。
末置換是初始置換的逆過程,DES最後一輪後,左、右兩半部分並未進行交換,而是兩部分合並形成一個分組做為末置換的輸入。末置換規則如下表:
置換方法同上
實際應用中,DES是根據其加密演算法所定義的明文分組的大小(64bits),將數據割成若干64bits的加密區塊,再以加密區塊為單位,分別進行加密處理。根據數據加密時每個加密區塊間的關聯方式,可以分為4種加密模式,包括ECB,CBC,CFB及OFB。
DES演算法其中主要起作用的演算法有:矩陣置換、擴展、左移、異或、左右互換、s盒作用 。其中對攻擊者來說最麻煩的要說s盒一步,破解des體系關鍵在s盒。
乍一看六位輸入與四位輸出貌似沒什麼關系。但事實上,對於同一個s盒具有相同輸入異或的所有輸入六比特組的輸出四比特異或值有一定規律。
具體些說,對於輸入異或相同的明文對B,B*僅有32組,而這32組輸出異或卻並不是均勻分布,而是僅分布在很少的幾個四比特值中;也可以說具有相同輸入異或且輸出四比特異或也相同的六比特輸入數量不多且分布不均勻。正是這種輸入輸出輸出異或間的不均勻性可以被攻擊者利用並破解密鑰。
結果表格:
『玖』 三次加密演算法的攻擊與破譯的方法有什麼缺憾
缺憾有二,如下:
1)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。
2)安全性,RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價,而且密碼學界多數人士傾向於因子分解不是NP問題。
密碼學中,三重數據加密演算法(英語:Triple Data Encryption Algorithm,縮寫為TDEA,Triple DEA),或稱3DES(Triple DES),是一種對稱密鑰加密塊密碼,相當於是對每個數據塊應用三次數據加密標准(DES)演算法。由於計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼演算法。
『拾』 通常攻擊密碼都有什麼方法
攻擊密碼系統的方法大概可以分為三種對密碼進行分析的嘗試稱為攻擊。Kerckhoffs最早在19世紀闡明密碼分析的一個基本假設,這個假設就是秘密必須完全寓於密鑰中。Kerckhoffs假設密碼分析者已有密碼演算法及其實現的全部詳細資料。
密碼分析者攻擊密碼系統的方法主要有以下三種。
窮舉攻擊
所謂窮舉攻擊是指密碼分析者採用依次試遍所有可能的密鑰,對所獲密文進行解密,直至得到正確的明文;或者用一個確定的密鑰對所有可能的明文進行加密,直至得到所獲得的密文。顯然,理論上對於任何實用密碼,只要有足夠的資源都可以用窮舉攻擊將其攻破。
窮舉攻擊所花費的時間等於嘗試次數乘以一次解密(加密)所需的時間。顯然可以通過增大密鑰量或者加大解密(加密)演算法的復雜性來對抗窮舉攻擊。當密鑰量增大時,嘗試的次數必然增大。當解密(加密)演算法的復雜性增大時,完成一次解密(加密)所需的時間增大,從而使窮舉攻擊在實際上不能實現。窮舉攻擊是對密碼的一種最基本的攻擊方法。
統計分析攻擊
所謂統計分析攻擊就是指密碼分析者通過分析密文和明文的統計規律來破譯密碼。統計分析攻擊在歷史上為破譯密碼做出過極大的貢獻。許多古典密碼都可以通過分析密文字母和字母組的頻率和其他統計參數而破譯。對抗統計分析攻擊的方法是設法使明文的統計特性不帶入密文。這樣密文不帶有明文的痕跡,從而使統計分析攻擊成為不可能。能夠抵抗統計分析攻擊已成為近代密碼的基本要求。
數學分析攻擊
所謂數學分析攻擊是指密碼分析者針對加解密演算法的數學基礎和某些密碼學特性,通過數學求解的方法來破譯密碼。數學分析攻擊是對基於數學難題的各種密碼的主要威脅。為了對抗這種數學分析攻擊,應當選用具有堅實數學基礎和足夠復雜的加解密演算法。