對稱密碼體制(一)

對稱密碼體制基礎知識

對稱密碼模型

  • 五個基本成分
    • 明文:原始的消息或數據,既算法的輸入。
    • 加密算法:對明文進行各種代替和替換。
    • 密鑰:獨立於明文和算法,也是加密算法的輸入。算法根據所用的特定的密鑰而產生不同的輸出。
    • 密文:算法的輸出,依賴於明文和密鑰。
    • 解密算法:加密算法的逆運算,既得到明文的過程。
  • 兩個要求
    • 加密算法足夠強
    • 發送者和接受者必須在某種安全的形式下獲得密鑰並且必須保證密鑰安全
  • 安全問題
    算法不需要保密,首要的是密鑰的保密性

密碼編碼學

3個獨立特徵:

  • 轉換明文爲密文的運算類型
    • 基於兩個原理:代替和置換
  • 所用的密鑰數
    • 對稱密碼:發送方和接收方使用了相同的密鑰;
    • 非對稱密碼:發送方和接收方使用了不同的密鑰。
  • 處理明文的方法
    • 分組密碼:每次處理輸入的一組元素,相應地輸出一組元素;
    • 流密碼:連續地處理輸入元素,每次輸出一個元素。

流密碼

  • 定義:流密碼是對稱密碼算法,從明文輸入流逐位或逐字節產生密文輸出。
    流密碼的主要原理是通過隨機數發生器產生性能優良的僞隨機序列,使用該序列加密明文流(按比特位加密),得到密文流。由於每一個明文都對應一個隨機的加密密鑰,所以流密碼在絕對理想的條件下應該是算一種無條件安全的一次一密密碼。
  • RC4
    RC4算法是一個可變密鑰長度、面向字節操作的流密碼。該算法以隨機置換作爲基礎,運行速度很快。被用於爲網絡瀏覽器和服務器間通信而制定的SSL/TLS(安全套接字協議/傳輸層安全協議)標準中,以及作爲IEEE 801.11無線局域網標準一部分的WEP(Wired Equivalent Privacy)協議和新的WiFi受保護訪問協議(WAP)中
    RC4的邏輯結構圖如下:

分組密碼

  • 定義:分組密碼是將一個明文分組作爲整體加密並且通常得到的是與明文等長的密文分組,分組密碼作用在n位明文分組上,而產生n位密文分組。

  • 分組密碼的設計應滿足的要求:

    • 分組要足夠長。假設n爲分組長度,則要使分組代換字母表中的元素個數2^n足夠大,以防止明文窮舉攻擊。

    • 密鑰長度要足夠長,以防止密鑰窮舉攻擊。但密鑰又不能過長,這不利於密鑰的管理且影響加解密的速度。

    • 由密鑰確定的置換算法要足夠複雜,足以抵抗各種已知的攻擊,如查分攻擊和線性攻擊等,使攻擊者除了利用窮舉攻擊外,無其他更好的攻擊方法。

    • 加密解密運算簡單,易於軟件和硬件的快速實現。爲了便於軟件編程和通過邏輯電路實現,算法中的運算應儘量簡單,如二進制加法或移位運算,參與運算的參數長度也應選擇在8的整數倍,可以充分發揮計算機中字節運算的優勢。

    • 一般無數據擴展,即明文和密文長度相同。在採用同態置換和隨機話加密技術時可引入數據擴展。

    • 差錯傳播儘可能的小

    設計密碼時,前3點的安全性爲必要條件,同時還需考慮後3點。

  • Feistel密碼結構
    Feistel加密算法的輸入是長爲2w的明文和一個密鑰K=(K1,K2…,Kn)。將明文分組分成左右兩半L和R,然後進行n輪迭代,迭代完成後,再將左右兩半合併到一起以產生密文分組。其第i輪迭代的函數爲:



      輪函數F不一定要可逆
Feistel密碼的解密算法與加密算法是相同的,只是子密鑰的使用次序相反。此外,初始置換和最終置換是相反的。

  • Feistel網絡的安全性與以下參數有關:
    • 分組長度
    • 密鑰長度
    • 子密鑰產生算法
    • 輪數
    • 輪函數

流密碼與分組密碼的區別

  • 分組密碼每次只能處理一個固定長度的明文,不足還需要補全,分組密碼的體制一般首先將M‘進行填充得到消息M,使其長度爲固定分組長度L的整數倍。
  • 流密碼加密時不一定得到相同的密碼,因爲明文的重複部分是使用密鑰流的不同部分加密的。對於分組密碼,在一個固定的密鑰的作用下,對相同的明文加密,一定能得到相同的密文。
  • 流密碼的潛在優勢在於流密碼不使用塊密碼作爲構建塊,比分組密碼更快,代碼更短(AES減弱了這個優勢)
  • 分組密碼可以重複使用密鑰
  • 流密碼通常用於數據通信信道或者網頁瀏覽鏈接上
  • 分組密碼常用於處理成塊的數據,用於文件傳輸,e-mail, 數據庫等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章