跳转至

密碼學簡介

密碼學(Cryptography)一般可分爲古典密碼學和現代密碼學。

其中,古典密碼學,作爲一種實用性藝術存在,其編碼和破譯通常依賴於設計者和敵手的創造力與技巧,並沒有對密碼學原件進行清晰的定義。古典密碼學主要包含以下幾個方面:

  • 單表替換加密(Monoalphabetic Cipher)
  • 多表替換加密(Polyalphabetic Cipher)
  • 奇奇怪怪的加密方式

而現代密碼學則起源於 20 世紀中後期出現的大量相關理論,1949 年香農(C. E. Shannon)發表了題爲《保密系統的通信理論》的經典論文標誌着現代密碼學的開始。現代密碼學主要包含以下幾個方面:

  • 對稱加密(Symmetric Cryptography),以 DES,AES,RC4 爲代表。
  • 非對稱加密(Asymmetric Cryptography),以 RSA,ElGamal,橢圓曲線加密爲代表。
  • 哈希函數(Hash Function),以 MD5,SHA-1,SHA-512 等爲代表。
  • 數字簽名(Digital Signature),以 RSA 簽名,ElGamal 簽名,DSA 簽名爲代表。

其中,對稱加密體制主要分爲兩種方式:

  • 分組密碼(Block Cipher),又稱爲塊密碼。
  • 序列密碼(Stream Cipher),又稱爲流密碼。

一般來說,密碼設計者的根本目標是保障信息及信息系統的

  • 機密性(Confidentiality)
  • 完整性(Integrity)
  • 可用性(Availability)
  • 認證性(Authentication)
  • 不可否認性(Non-repudiation)

其中,前三者被稱爲信息安全的 CIA 三要素 。

而對於密碼破解者來說,一般是要想辦法識別出密碼算法,然後進行暴力破解,或者利用密碼體制的漏洞進行破解。當然,也有可能通過構造虛假的哈希值或者數字簽名來繞過相應的檢測。

一般來說,我們都會假設攻擊者已知待破解的密碼體制,而攻擊類型通常分爲以下四種:

攻擊類型 說明
唯密文攻擊 只擁有密文
已知明文攻擊 擁有密文與對應的明文
選擇明文攻擊 擁有加密權限,能夠對明文加密後獲得相應密文
選擇密文攻擊 擁有解密權限,能夠對密文解密後獲得相應明文

Note

注:之前在這裏曾寫過這些攻擊常見的場景,隨着不斷地學習,漸漸意識到這些攻擊類型側重描述攻擊者的能力,有可能適用於各種各樣的場景。故進行修正。

這裏推薦一些資料

Note

推薦在看完公開課的情況下,以及簡單看看電子書的情況下在考慮是否要購買書,因爲書買回來一般都被閒置起來了。

參考

Info

本節大部分定義與例子參考了維基百科。