1. 程式人生 > 其它 >工作中遇到的一些問題,總結一下------密碼學篇(資料完整性)

工作中遇到的一些問題,總結一下------密碼學篇(資料完整性)

技術標籤: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

在這裡插入圖片描述

優點:

可以保證資料的完整性。

缺點:

無法保證資料的真實性,即不能確定資料和雜湊值是來自發送方的,因為攻擊者完全可以將資料和雜湊值一起替換。

問題:

如何驗證傳送的資料確實來自於傳送方?