密碼學簡介¶
密碼學(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
注:之前在這裏曾寫過這些攻擊常見的場景,隨着不斷地學習,漸漸意識到這些攻擊類型側重描述攻擊者的能力,有可能適用於各種各樣的場景。故進行修正。
這裏推薦一些資料
- 可汗學院公開課
- 深入淺出密碼學——常用加密技術原理與應用
- https://cryptopals.com/,一堆密碼學的練習題目。
Note
推薦在看完公開課的情況下,以及簡單看看電子書的情況下在考慮是否要購買書,因爲書買回來一般都被閒置起來了。
參考¶
Info
本節大部分定義與例子參考了維基百科。