網絡與系統安全筆記------密碼技術及應用
-
-
- 密碼學
-
- 密碼學分支
- 密碼編碼
- 古典加密技術
- 現代加密技術
- 加密解密
- 密碼分析
- 哈希函數
-
-
- MD族算法
- SHA族算法
- 完整性保護
- 認證
-
- 對稱密碼
-
- 國際标準
- 機密性保證
- 消息認證與完整性
- 密鑰管理
- 公鑰密碼(非對稱密碼)
-
- 加密模型(公鑰加密)(機密性)
- 認證模型(數字簽名)(真實性,不可否認性)
- 常用的加密算法
- 相應特性
-
- 機密性
- 完整性
- 可認證性與不可否認性
- 比較
- 密鑰管理
-
- 生成
- 登記
- 存儲
-
- 主密鑰
- 二級密鑰
- 初級密鑰
- 配置設定
- 協商
- 密碼學的應用
-
密碼是指使用特定變換對資訊等進行 加密保護、 安全認證的技術、 産品和服務。
密碼學
密碼學分支
密碼編碼學和密碼分析學
密碼編碼學: 研究對資訊進行變換,尋求提供資訊機密性、完整性、真實性和非否認性等的方法,以保護資訊在信道的傳遞過程中不被敵手竊取、解讀和利用的科學。
密碼分析學: 研究分析和破譯密碼方法的科學。
密碼編碼
密碼編碼技術可以分為古典加密技術和現代加密技術
古典加密技術: 位移法,替代法。
現代加密技術
- 對稱密碼算法——分組密碼和序列密碼
- 非對稱密碼算法——公鑰密碼
- 單向加密算法——哈希函數
量子密碼
古典加密技術
替代法: 按照一定的方法重新排列字元。通常可以借助幾何圖形表示,将明文按某種特定的路徑寫入,以某種路徑從圖形中取出字元構成密文。
- 簡單代替密碼: 将明文字母表中的每個字母用密文字母表中相應的字母來代替。
- 同音代替密碼: 明文字母表中的每個字母可用密文字母表中的多個字母之一來代替。
- 多表代替密碼: 對于不同位置的字母,周期使用不同的代替規則。
現代加密技術
單向加密: 哈希函數
對稱密碼
- 序列密碼(流密碼):一次隻對明文中的單個位(有時對位元組)運算。
- 分組密碼(塊密碼):對明文的一組位進行運算,這些位稱為分組。
公鑰密碼
RSA,ElGamal、Rabin…
正常密碼系統模型

加密解密
加密: C = E k ( P ) C=E_k(P) C=Ek(P)
解密: P = D k ( C ) P=D_k(C) P=Dk(C)
- 明文§: 未加密的資訊。
- 密文©: 已加密的資訊。
- 密鑰(K): 控制密碼變換的随機數序列。
- 加密(E): 将明文變換成密文的過程。
- 解密(D): 将密文變換成明文的過程。
- 密碼算法(cipher algorithm): 密碼算法是加密算法和解密算法的統稱,是密碼系統的核心
密碼分析
目的: 擷取明文,擷取密鑰。
攻擊類型
- 唯密文攻擊: 知道部分密文資訊,去擷取明文或者密鑰資訊。
- 已知明文的攻擊: 知道一些明文及對應的密文的對應關系,來擷取密文與密鑰。
- 選擇明文的攻擊: 選擇性知道一些特定明文與對應的密文,在此基礎上擷取密鑰或者密文。
- 選擇密文的攻擊: 選擇性地知道一些特定密文,并得到對應的明文,在此基礎上擷取密鑰或者密文。
- 選擇文本攻擊: 選擇明文攻擊與選擇密文攻擊的結合。
基本方法
分析法: 通過加密算法的性質與明文的一般特征進行破解。
窮舉法: 試遍所有可能的密鑰對所獲密文進行解密,直至得到正确的明文;或者用一個确定的密鑰對所有可能的明文進行加密,直至得到所獲得的密文。
社會工程法: 通過對知情者進行恐吓、敲詐、賄賂、或折磨等手段使其将密鑰洩漏出來。
哈希函數
将任意長度的封包映射成一個較短的定長輸出封包(哈希值或者消息摘要)的函數。 h = H ( M ) h=H(M) h=H(M)M是變長的封包,h是定長的哈希值。
要求:隻要改動消息M的任何一位,重新計算出的消息摘要 h ′ h' h′就會與原先消息摘要值h不符。
特性:壓縮性,易計算,單向性,弱碰撞阻止性,強碰撞阻止性
- 壓縮性:有限長的輸入M映射為一個固定長的短輸出h。
- 易計算:給出H和輸入M,容易計算出H(M)。
- 單向性:對所有确定的輸出h,推導輸入值M是計算困難的。
- 弱碰撞阻止性:對任何指定的輸入M,發現任何第二個輸入M′ ≠M,使得H(M′)=H(M)是計算困難的。
- 強碰撞阻止性:兩個任意選擇的不同的輸入M和 M′ ,計算H(M′)=H(M)是困難的。
MD族算法
- MD2:摘要值長度為128位,16位元組,32個十六進制數。
- MD4:摘要值長度為128位,16位元組,32個十六進制數。計算速度快。
- MD5:摘要值長度為128位,16位元組,32個十六進制數。計算速度比MD4慢,但是安全性高。
- MD6:2008年提出,沒有廣泛推行。
SHA族算法
- SHA-0:摘要值長度為160位,20位元組,40個十六進制數。
- SHA-1:SHA-0基礎上改進,摘要值長度為160位,20位元組,40個十六進制數。
- SHA-2:SHA-256、SHA-384和SHA-512,SHA-224;輸出摘要長度為相應數字。
- SHA-3:SHA3-224、SHA3-256、SHA3-384、SHA3-512;(輸出摘要長度為相應數字)。SHAKE128 、SHAKE256;(可輸出任意長度(2128/2256)散列值的函數)。
完整性保護
雙方摘要相同則表示消息未經篡改,真實可用。
認證
密碼認證: 檢查密碼的散列值來進行認證。
消息認證: 與公鑰密碼算法結合,生成數字簽名,或者與共享密鑰結合,生成消息驗證碼。
哈希函數反查: 窮舉法,字典法,彩虹表法
對稱密碼
- 單鑰密碼算法,加密密鑰和解密密鑰相同,或從一個易于推出另一個。
- 要求發送者和接收者在安全通信之前,商定一個共享密鑰。
- 安全性依賴于密鑰,隻要通信需要保密,密鑰就必須保密。
加解密速度很快,加密效率高,但是密鑰分發困難,管理複雜,不便用于網絡開放的環境中。
國際标準
DES:資料加密标準,56位密鑰
AES:進階加密标準,128位、192位或256位密鑰
機密性保證
加密/解密的過程保證資料的機密性。
對稱加密的安全取決于密鑰的保密性而非算法的保密性
消息認證與完整性
消息認證碼(MAC): M A C = C K ( M ) MAC=C_K(M) MAC=CK(M),M是變長消息,K是收發雙方共享的密鑰,C為MAC算法(基于對稱密鑰)。
基于分組算法構造:XORMAC、ANSIX9.9MAC、ANSIX9.19MAC。
基于hash算法構造:HMAC。
通信雙方擁有共享密鑰才能計算消息的消息認證碼,不僅能夠确認資料完整性,還可以實作資料源的認證。
密鑰管理
密鑰分發問題: 如何安全地讓加、解密雙方擁有相同的密鑰(手動,自動分發)。
密鑰管理問題: 多方通信時,随着通信人數增加,需要維護的對稱密鑰數量也會增加,密鑰管理量将急劇增長。
KMC密鑰管理中心
公鑰密碼(非對稱密碼)
現代密碼學最重要的發明
密鑰對: 由公鑰(公開的密鑰)與私鑰(私有的密鑰)組成。
公鑰加密與對稱加密相比,加解密速度慢,不适合用于加解
密大量資料。
加密模型(公鑰加密)(機密性)
公鑰加密私鑰解密。
可以用于對稱密鑰的分發:
數字信封:結合了對稱密碼和公鑰密鑰的優點
對消息使用對稱密碼加密,發送方使用接收方的公鑰進行密鑰加密,接受方使用私鑰解密。
認證模型(數字簽名)(真實性,不可否認性)
私鑰簽名公鑰認證
隻使用公鑰密碼技術進行數字簽名,對于明文資料量大的,簽名的時間會變長,對應的性能會下降。
利用公鑰密碼與資訊摘要進行數字簽名:
保證真實性,不可否認性,完整性。
在數字簽名的基礎上進行對稱加密,然後隻用公鑰加密對稱密鑰用于密鑰交換傳輸。相應的消息也會被加密,增加了機密性。
常用的加密算法
- SM2(商密算法,ISO國際标準算法)
- ECC(橢圓曲線算法)
- RSA(計算量大于DES,很少用于大量資料的加密)
相應特性
機密性
公鑰加密隻有私鑰才能解密,但是運算速度慢。
完整性
hash函數解決消息摘要問題,公鑰密碼解決傳輸過程中的加密問題。
可認證性與不可否認性
用發方私鑰加密的消息,任何一個擁有其公鑰的對方都能解密,并且使用發方之外的其它人的公鑰都無法解密。
實際過程中往往是對摘要進行加密(數字簽名)。
比較
對稱密碼:加解密速度快,加密強度高。但是密鑰的分發、管理複雜,在開放網絡中使用不便。
公鑰密碼:密鑰分發簡單,要儲存的密鑰量少,可用于數字簽名。但是運算量大,加密速度慢,不能對大的資料進行加密。
密鑰管理
密鑰管理的階段:生成,登記,存儲,配置設定與協商,撤銷與銷毀。
生成
密鑰的基本要求要有好的随機性(長周期性、非線性、等概性以及不可預測性).
密鑰等級
- 主密鑰: 安全性至關重要,可用噪聲發生器等方法産生。
- 密鑰加密密鑰: 數量大,可由機器自動産生。(資料加密密鑰)(二級密鑰)
- 會話密鑰: 可利用密鑰加密密鑰及某種算法産生。(初級密鑰)
産生方式
有邊界生産:由中心(或分中心)集中生産。
無邊界生産:由個人分散生産。
登記
将産生的密鑰與特定的使用捆綁在一起(用于數字簽名的密鑰,必須與簽名者的身份捆綁在一起),捆綁必須通過某一授權機構來完成。
存儲
保證密鑰在存儲狀态下的秘密性、真實性和完整性。各級密鑰根據不同特點分級存儲。
主密鑰
-
主密鑰是最進階的密鑰,是以它隻能以明文形态存儲,
否則便不能工作。
-
要求存儲器必須是高度安全的,實體上是安全的,而且
邏輯上也是安全的。
- 通常是将其存儲在專用密碼裝置中。
二級密鑰
- 二級密鑰可以以明文形态存儲,也可以以密文形态存儲。
- 通常采用以加密的形式存儲二級密鑰。這樣可減少明文形态密鑰的數量,便于管理。
初級密鑰
初級檔案密鑰和初級資料加密密鑰是兩種性質不同的初級密鑰。
初級檔案密鑰:其生命周期與受保護的檔案的生命周期一樣長,一般采用密文形态存儲,通常采用以二級檔案密鑰加密的形式存儲初級檔案密鑰。
初級資料加密密鑰:按“一次一密”的方式工作,使用時動态産生,使用完畢後即銷毀,生命周期很短。
配置設定
系統内的一個成員選擇密鑰,然後将它們安全傳給其他成員。
- 密鑰由A標明,然後通過實體方法安全傳遞給B
- 密鑰由可信賴的第三方C選取并通過實體方法安全地發送給A和B。
- 如果A和B事先已有一密鑰,那麼其中一方選取新密鑰後,用已有的密鑰加密新密鑰發送給另一方
-
如果A和B都有一個到可信賴的第三方C的保密信道,那麼C就可以為A和B選取密鑰後安全地發送給A和B。
可信賴的第三方C就是密鑰配置設定中心KDC,常用于對稱密碼技術的密鑰配置設定。
-
如果A和B都在可信賴的第三方C釋出自己的公開密鑰,那麼他們用彼此的公開密鑰進行保密通信
可信賴的第三方C就是證書授權中心CA,常用于非對稱密碼技術的公鑰的配置設定。
協商
系統兩個或者多個成員在公開的信道上聯合建立秘密密鑰。
一般情況下,一個密鑰協商方案的密鑰是某個函數的值,其輸入量由通信雙方提供,協商過程是由一系列順序步驟完成的。兩個成員的密鑰協定也稱為密鑰交換。
常見的密鑰協商算法:DH、ECC、RSA
密碼學的應用
機密性:提供隻允許特定使用者通路和閱讀資訊,任何非授權使用者對資訊都不可了解的服務
通過資料加密實作
認證:提供與資料和身份認證有關的服務。
通過資料加密、散列函數或數字簽名來實作
完整性:提供確定資料在存儲和傳輸過程中不被未授權修改(竄改、删除、插入和重放等)的服務。
通過資料加密、散列函數或數字簽名來實作
不可否認性:提供阻止使用者否認先前的言論或行為的服務。
通過對稱加密或非對稱加密,以及數字簽名等,并借助可信的注冊機構或證書機構的輔助。