在網絡環境中的攻擊類型算法
消息保密性範疇: 一、泄密 二、傳輸分析 安全
消息認證/數字簽名: 三、假裝 四、內容修改 插入/刪除/轉換/修改(消息內容) 五、順序修改 插入/刪除/重排(以消息爲單位) 六、計時修改 延時/重播網絡
數字簽名: 七、發送方否定 八、接收方否定函數
消息認證函數加密
該函數用來產生認證符,可分紅三類spa
一、Hash函數--以Hash值爲認證符blog
二、消息加密--以整個信息加密後的密文做爲認證符圖片
三、消息認證符(MAC)--以消息和密鑰做輸入,產生定長值做爲認證符數學
消息加密io
一、對稱加密
可行性:既提供了保密性,又提供了認證。保密性源自加密和密鑰共享,認證則來自於密鑰共享。
不足:若明文合法性難以斷定(如圖片或二進制文件等),則僅知足保密性,卻沒法認證。根源在於沒有可以識別的結構對明文合法性進行驗證。
解決辦法:由於進行傳輸前只有發送方A知道明文M,A用函數F計算M生成錯誤檢測碼FCS,附在M後,而後一塊兒加密發送給B。第三方在不能破解密文狀況下不知道明文M,所以也就沒法僞造出符合條件的FCS,而接收方也就可以根據FCS進行身份認證。
二、公鑰加密
A用B的公鑰加密,B用本身的私鑰解密。因爲任何人都能獲取B的公鑰,僅此沒法判斷消息是從哪裏發過來的,即沒法認證。
A用本身的私鑰加密或者簽名,因爲B只能用A的公鑰解密(約定明文合法性),所以有認證和簽名的功能。因爲任何人均可以獲得A的公鑰,所以不具備保密性。
A用本身的私鑰簽名,而後再用B的公鑰加密。因爲只有B可以用本身的私鑰解密,所以保證了保密性。而又只有A的公鑰可以驗證簽名,所以還有認證和簽名的功能。
消息認證碼(MAC) Message Authentication Codes
MAC = C(K , M)
M是輸入消息;C是MAC函數;K是共享密鑰;
A計算出MAC後,將之附在不加密的明文M後面一塊兒發送給B。B根據K和M從新計算MAC進行比對認證。
MAC有如下三種基本模式:
MAC函數與加密的區別:MAC算法不要求可逆,而加密算法必須可逆。
MAC函數與Hash函數的區別:MAC算法的輸入包含密鑰,而Hash不包含。
因爲MAC基於共享密鑰,所以不能提供數字簽名。
使用MAC的優勢:
一、MAC將加密性與認證分離開來,能夠知足只須要認證不須要加密的需求。同時MAC使得層次結構更加靈活,如能夠在傳輸的不一樣的層次來分別完成加密和認證。
二、MAC不影響明文的讀取,能夠一直附在明文後面,在須要的時候靈活認證。也能夠延長對消息的保護時間,而不只僅只是在傳輸的時候。也正是基於這一點,上圖b方案比c方案要更好一些。
MAC的安全性:
因爲認證函數的數學性質,與加密相比,認證函數更不易被攻破。
由於MAC函數是一種多對一的函數,在窮舉攻擊下,給定明文和MAC值,攻擊者須遍歷全部可能的K以重現MAC值。因爲可能有許多K均可以重現MAC值,於是並不能肯定具體的認證密鑰,還必須再用新的明文MAC對再作驗證,直到K只剩下一種可能。
MAC函數應具備的性質:
一、攻擊者在已知M和MAC值以及MAC函數的狀況下,要構造知足MAC(K , M') = MAC(K , M)的消息M'在計算上不可行
該要求是防止攻擊者不知道密鑰的狀況下也可以構造出與給定MAC匹配的新消息。
二、對隨機的消息M和M',MAC(K , M) = MAC(K , M')的機率是2-n,其中n是MAC的位數
該要求是使MAC函數具備均勻分佈的特色,對於選擇明文的窮舉攻擊平均都須要2n-1步才能找到具備給定MAC的消息
三、設M' = f(M),例如f多是將M的一位或者多位取反,要求Pr[MAC(K , M) = MAC(K , M')] = 2-n
該要求是認證算法不該對消息的某些部位比其餘部位的處理不均勻。
常見的MAC函數實現:
一、基於Hash函數的MAC--HMAC
二、基於分組密碼的MAC--DAA和CMAC
三、認證加密:CCM和GCM