資料完整性

尹成發表於2018-11-15

#簡介
完整性用來確保資訊沒有被修改,也可以防止假冒的資訊。
一個印刷在書面上的檔案,要想通過修改其上面的文字或者數字來破壞其完整性是不容易的,你可以塗抹檔案上面的文字,但可能很容易就被發現了。相對於現實世界而言,儲存在計算機中的數字資訊的完整性受到破壞的風險就大大增加了。一個儲存在計算機中重要的文字檔案,可能被其他人惡意修改了其中一個重要的數字而你沒有發現就發出去了,甚至可能整個檔案都給替換了而你沒有再看一眼就發出去了,後果可想而知。在網路傳輸中,完整性面臨的風險就更大,這種風險有兩種,一種是惡意攻擊,一種是偶爾的事故,惡意攻擊者可以監聽並截獲你的資訊包,然後修改或替換其中的資訊,再發給接收方,這樣能夠不知不覺地達到其目的。網路是一個物理裝置,雖然其出錯的可能性極低,但還是有可能發生的,如果你在給某個商家轉賬的過程中其中的付款數字在網路傳輸時發生了錯誤而沒有發現,後果是嚴重的。
目前完整性的解決方案主要是基於單向雜湊函式和加密演算法。單向雜湊函式能夠將一個大的檔案對映成一段小的資訊碼並且不同檔案雜湊成相同資訊的概率極低。通常我們將會將原始資訊使用單向雜湊函式處理得到一段資訊碼,然後將其加密,跟檔案一起儲存。如果有人更改了檔案,那麼當我們再次使用該檔案時,先使用同樣的單向雜湊函式得到資訊碼,然後用自己的金鑰解密原來生成的資訊碼跟新得到的資訊碼對比,那麼就會發現不一樣,就可以發現檔案已經被修改。
單向雜湊函式(one-way hash function)有一個輸入和一個輸出,其中輸入稱為訊息(message),輸出稱為雜湊值(hash value),單向雜湊函式也稱為訊息摘要函式,雜湊函式,或者雜湊函式。
說明:

  • 這裡的訊息不一定是人類能夠讀懂的文字,也可以是影象檔案或者聲音檔案。單向雜湊函式不需要知道訊息實際代表的含義,無論任何訊息,單向雜湊函式都會將它作為單純的位元序列來處理。
  • 雜湊值的長度和訊息的長度無關。無論訊息是1位元,還是100MB,甚至100GB,單向雜湊函式都會計算出固定長度的雜湊值。

#單向雜湊函式的性質

  • 根據任意長度的訊息計算出固定長度的雜湊值

首先,單向雜湊函式的輸入必須能夠是任意長度的訊息。其次,無論輸入多長的訊息,單向雜湊函式必須能夠生成長度很短的雜湊值,如果訊息越長生成的雜湊值也越長的話使用就不是很方便了,從使用方便的角度來看,雜湊值的長度最好是短且固定的。

  • 能夠快速計算出雜湊值

計算雜湊值所花費的時間必須要短。儘管訊息越長,計算雜湊值的時間也會越長,但是如果不能在現實的時間內完成計算就沒有意義了。

  • 訊息不同雜湊值也不同

如果單向雜湊函式計算出的雜湊值沒有發生變化,那麼訊息很容易就會被篡改,這個單向雜湊函式也就無法被用於完整性檢查。兩個不同的訊息產生同一個雜湊值的情況稱為碰撞。理論上單向雜湊函式的碰撞概率應該為0,但是實際上不存在這種單向雜湊函式。

  • 具備單向性

單向性指的是無法通過雜湊值反算出訊息,但是根據訊息計算雜湊值可以很容易。
這裡寫圖片描述
#單向雜湊函式的實際應用

  • 檢測軟體是否被篡改
  • 基於口令加密
  • 訊息認證碼
  • 數字簽名
  • 偽隨機數生成器
  • 一次性口令

#單向雜湊函式具體例項

  • MD4,MD5是由Rivest分別與1990年,1991年設計的單向雜湊函式,能夠產生128位元的雜湊值。
  • SHA-1是由美國國家標準技術研究所設計的一個能夠產生160位元的雜湊值的單向雜湊函式。
  • SHA-2系列單向雜湊函式:SHA-256,SHA224, SHA-384,SHA-512。

#單向雜湊函式的缺點
單向雜湊函式能夠辨別出篡改,但是無法辨別出真偽。
例如:假設攻擊者A偽裝成B,向C同時傳送了訊息和雜湊值,這時C能夠通過單向雜湊函式檢查訊息的完整性,但是這只是對A傳送的訊息進行檢查,而無法確定這條訊息是否真的是B傳送的。

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
在這裡插入圖片描述

相關文章