密碼學提供以下服務:git
加密 Encryption算法
哈希 Hash functionside
訊息鑑別碼 Message Authentication codes (MAC)ui
數字簽名 Digital Signatures加密
密碼學要達成的目標是:spa
機密性 Confidentialitycode
數據完整性 Data Integrityorm
認證 Authenticationhtm
不能否認性 Non-repudiationblog
下表說明了各類服務能達成什麼樣的目標
加密 | 哈希 | 訊息鑑別碼 | 數字簽名 | |
機密性 | √ | |||
數據完整性 | 某些時候 | √ | √ | |
認證 | √ | √ | ||
不能否認性 | 某些時候 | √ |
機密性討論
咱們在構建密碼系統的時候,須要考慮可能受到的***。
從不一樣的角度又不一樣的***分類方法。
根據***者的行動(action)咱們把***分紅被動式***(passive)跟主動式***(active)
被動式***
在沒有受權的狀況下訪問信息(注意區分主動式,注意訪問,不是改變)。例如截擊跟偷聽就是被動式的***。被動式***不會影響原有的信息,也不會打擾原有的鏈接。
主動式***
這種***不一樣於被動式,它會以某種形式改變原有的信息
根據***的方法學(Methodolgy)咱們有能夠把***分爲以下的類別:
純祕文*** (Cipertext-only Attack - COA)
***者僅經過訪問祕文集就能夠獲得相應的明文。偶爾***者還能得到密鑰。
已知明文*** (Known Plaintext Attack - KPA)
***者知道一部分祕文的明文,根據這個***者破解其餘祕文。
選擇明文*** (Chosen Plaintext Attack - CPA)
***者掌握他選擇的明文/密文對,分析出密鑰。RSA就易於找到此***。
字典*** (Dictionary Attack)
***者創建明文與相應密文的字典,遇到密文就在字典中查詢。這類***有不少變種。
暴力*** (Brute Force Attack - BFA)
***者在知道算法和密文的後,嘗試各類密鑰的可能性,直至破解。
生日*** (Birthday Attack)
用於hash破解,是暴力破解的變種。
中間人*** (Man in Middle Attack -MIM)
可用於公鑰的***。A與B通訊,A向B請求公鑰,***者居中把本身的公鑰發給A再得到B的公鑰。而後居中維持通訊獲取信息。
旁路*** (Side Channel Attack - SCA)
用於獲取密鑰系統物理實現弱點,來進行***。
時序*** (Timing Attack)
旁路***的一種。試圖經過分析算法的執行時間來破解算法。
功耗分析*** (Power Analysis Attack)
經過獲取功耗數據來進行***。
故障分析*** (Fault analysis Attack)
經過分析故障進行***
現代加密技術
對稱加密技術可分爲塊加密跟流加密。
塊加密(Block Ciper)。每次對固定塊數據進行加密。不足的要進行填充(Padding)。
這些技術有:DES (Digital Encryption Standard), Triple DES, AES (Advanced Encryption Standard), IDEA, Twofish, Serpent等。
其中DES是基於Feistel Block Ciper 模型開發的。
其餘模型還有 Electronic Block Ciper Mode, Ciper Block Chaining Mode, Ciper Feedback Mode, Output Feedback Mode, Counter Mode。
非對稱加密技術有三種方案:
RSA (三做者首字母)
ElGamal
Elliptic Curve Cryptography (ECC)
數據完整性討論
一樣也面對着被動跟主動兩種***。
解決技術有 哈希功能應用。
哈希技術有: MD(Message Digest), SHA, RIPEMD, Whirlpool.
信息認證討論
信息認證使用戶能夠肯定信息的發起者。
信息鑑別碼 (Message Authenticaton Code - MAC)
MAC算法是使用對稱加密方式實現
https://www.tutorialspoint.com/cryptography/cryptography_quick_guide.htm