crypto調查

cryptographic hash function

是散列函數
cryptographic hash function 被廣泛應用於信息完整校驗,數字簽名,認證以及其他信息安全領域。
接收不定長字符串作爲輸入,給出定長字符串作爲輸出(輸出有校驗和,哈希值等稱謂)

  • 與加密的區別:加密後可以解密;而cryptographic hash function 無法解密,只是提取特徵。
  • 碰撞:由於散列是多對少的映射,所以存在不同數據對應同一個校驗和的情況,這就是碰撞。
  • 特點:
    1. 易於計算
    2. 反解十分困難
    3. 略有不同的輸入可以產生十分不同的輸出
SHA

SHA,secure hash algorithm —— SHA 是cryptographic hash function的一種。
大多由NSA組織開發,由NIST組織發佈。

  • SHA-0是第一個版本,生成的hash value有160-bit,共40-digit
  • SHA-1是用於替代SHA-0的第二個版本,hash value 仍然是160-bit,不過比上一版本安全一些
  • SHA-2替代SHA-2,針對SHA-2的攻擊在當前算力下不可能完成。SHA-2包括6中hash函數,每種的digit數量都不同
    • SHA-244、SHA-256、SHA-384、SHA-512(128個字符)、SHA-512/224、SHA-512/256
  • SHA-3不是用來替代SHA-2的,而僅僅是SHA-0、SHA-1、MD5的另一種替代方案
  • 計算過程
    • 填充佔位和長度信息,使報文長度值可以被某個值整除
    • 將報文等分爲每段固定長度的切片
    • 初始化一個緩存區域
    • 使用緩存區和當前處理的報文進行計算,使用結果來更新緩存區
    • 如上計算,直到所有切片都處理完畢了。
    • 可以看出,計算複雜度是O(n)(待訂正)
MD5

Message digest algorithm —— MD 是 cryptographic hash function 的一種。
MD5有一些瑕疵,所以它只被用於檢測文件是否發生更改,而不用於加密。
發展歷史爲:MD2 -> MD4 -> MD5
校驗和:長度爲128-bit,即32-digit的十六進制數字

應用
  • 密碼保護:網站後臺通過比較<輸入密碼的SHA-1的校驗和>和<數據庫中密碼的SHA-1的校驗和>來驗證身份。
  • 文件驗證:通過比較<官方提供的文件SHA-1校驗和>和<已下載文件的SHA-1校驗和>來確定下載的文件是否完整。
  • 彩虹表:用於破解哈希算法加密的密碼。由於hash不可逆,所以思路是存下對應校驗和的原文本。彩虹表在時間和空間上進行了平衡。
  • 加鹽:複雜密碼總是難以記住,可以考慮向用戶的簡單密碼中加入複雜的唯一值來增加密碼的複雜性(相當於多重密碼什麼的。應該有一個對應的salt-table)

加密解密

加密解密如RSA,AES等在算法前後信息是不會丟失的。不是hash function,被廣泛用於數據傳輸。
加密算法的一個重要問題是,密鑰分發問題。因此有了對稱加密和非對稱加密。
對稱加密是:加密解密使用同一個密鑰。常見的有:DES,AES,3DES等
非對稱:加密和解密使用不同的密鑰。公鑰加密,只有私鑰能解開;私鑰加密,只有公鑰能解開。常見的有:RSA,ECC,DSA等

RSA

RSA不是 cryptographic hash function ,是非對稱加密系統。
RSA是三個人的名字縮寫
RSA的安全性來源於:大素數乘積因式分解計算困難。
加密解密過程

  • 加密:密文 = encry(明文,私鑰/公鑰)
  • 解密:明文 = decry(密文,公鑰/私鑰)

RSA算法非常慢,一般不用於直接加密信息,而是加密用於對稱加密的密鑰。
密鑰生成過程(原理涉及到數論,不表):基於同餘定理,大質數分解難題。

n = p * q;(p,q是大質數)
φ(n) = (p - 1)(q - 1);
e與φ(n)互質(這是同餘倒數存在的條件);s是e關於模數φ(n)的倒數;
公鑰是:(e, n);私鑰是:(s, n);
DSA

DSA基於離散對數難題

AES

AES,Advanced Encryption Standard,高級加密標準。AES是對稱加密。
AES有多種加密模式,如CFB等
加密解密過程

  • 密文 = encry(明文,密鑰)
  • 明文 = decry(密文,密鑰)

以AES-128爲例。加密過程爲:首先對明文進行切分,切分結果是每組16字節。然後將16字節排列爲方陣,進行子節代換,行位移,列混淆等操作。解密過程是逆操作。

同餘定理

  • 同餘定理:兩個正數除以另一個正整數得到的餘數相同。
有:a, b, m 都是正整數
若:a mod m = b mod m
則稱:a與b關於模m同餘
記爲:a ≡ b (mod m)
  • 同餘-倒數
有:a, x, m 是正整數
若:(a * x) ≡ 1 (mod m)
則稱:x是a關於模m的同餘倒數

x存在的條件是:a要與m互質

  • 同餘-相反數
有:a, x, m 是正整數
若:(a + x) ≡ 0 (mod m)
則稱:x是a關於模m的同餘相反數
且:x = m - a
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章