工作中遇到的一些問題,總結一下------密碼學篇(資料完整性)
技術標籤:App安全相關
本文部分摘取自:https://blog.csdn.net/xjhhjx/article/details/81603107
序言
密碼技術的目的很明確,就是為了解決資訊保安問題。
就本人從事行業來說,可以用客戶端與伺服器端的資料通訊過程舉例(考慮客戶端與伺服器端通訊的雙向性)。
資訊保安可分為四類特性:
1、資料保密性:為了防止通訊過程中資訊被竊聽,對應的密碼技術有對稱加密和非對稱加密。(使用者敏感資料不應明文傳輸)
2、資料完整性:為了防止通訊過程中資訊被篡改,對應的密碼技術有單向雜湊函式、訊息認證碼、數字簽名。
3、認證:為了防止攻擊者偽裝成真正的傳送者,對應的密碼技術有訊息認證碼和數字簽名。
4、資料抗抵賴:為了防止傳送者事後否認自己沒有做過,對應的密碼技術為數字簽名。
2.保證資料完整性
訊息摘要
訊息摘要函式是一種用於判斷資料完整性的演算法,也稱為雜湊函式或雜湊函式,函式的返回值是雜湊值,雜湊值又稱為訊息摘要或者指紋。
這種演算法是不可逆的,即無法通過訊息摘要反向推匯出訊息,因此又稱為單向雜湊函式。
常見演算法:
MD5 SHA-1 SHA-2(SHA-224,SHA-256,SHA-384,SHA-512)
國密SM3(安全性及效率與SHA-256相當)
值得注意的是,現階段有些系統會使用MD5或者base64當做應用層的加密手段。姑且不論MD5和base64根本不可稱之為加密演算法,實際就目前而言,MD5和SHA1已被破解,base64只是作為一種轉碼演算法。目前相對安全的雜湊演算法需達到SHA256及以上級別
例:
當我們使用某一軟體時,下載完成後需要確認是否是官方提供的完整版,是否被人篡改過。通常軟體提供方會提供軟體的雜湊值,使用者下載軟體之後,在本地使用相同的雜湊演算法計算雜湊值,並與官方提供的雜湊值向對比。如果相同,說明軟體完整,未被修改過。
下圖是使用Windows命令列檢視本地某Apk檔案簽名信息的執行結果,如果App具備自校驗簽名機制,當我們對該apk檔案進行重簽名之後,安裝重簽名的Apk檔案並執行,過程中會失敗
keytool -list -printcert -jarfile F:\1.apk
優點:
可以保證資料的完整性。
缺點:
無法保證資料的真實性,即不能確定資料和雜湊值是來自發送方的,因為攻擊者完全可以將資料和雜湊值一起替換。
問題:
如何驗證傳送的資料確實來自於傳送方?