資料完整性
#簡介
完整性用來確保資訊沒有被修改,也可以防止假冒的資訊。
一個印刷在書面上的檔案,要想通過修改其上面的文字或者數字來破壞其完整性是不容易的,你可以塗抹檔案上面的文字,但可能很容易就被發現了。相對於現實世界而言,儲存在計算機中的數字資訊的完整性受到破壞的風險就大大增加了。一個儲存在計算機中重要的文字檔案,可能被其他人惡意修改了其中一個重要的數字而你沒有發現就發出去了,甚至可能整個檔案都給替換了而你沒有再看一眼就發出去了,後果可想而知。在網路傳輸中,完整性面臨的風險就更大,這種風險有兩種,一種是惡意攻擊,一種是偶爾的事故,惡意攻擊者可以監聽並截獲你的資訊包,然後修改或替換其中的資訊,再發給接收方,這樣能夠不知不覺地達到其目的。網路是一個物理裝置,雖然其出錯的可能性極低,但還是有可能發生的,如果你在給某個商家轉賬的過程中其中的付款數字在網路傳輸時發生了錯誤而沒有發現,後果是嚴重的。
目前完整性的解決方案主要是基於單向雜湊函式和加密演算法。單向雜湊函式能夠將一個大的檔案對映成一段小的資訊碼並且不同檔案雜湊成相同資訊的概率極低。通常我們將會將原始資訊使用單向雜湊函式處理得到一段資訊碼,然後將其加密,跟檔案一起儲存。如果有人更改了檔案,那麼當我們再次使用該檔案時,先使用同樣的單向雜湊函式得到資訊碼,然後用自己的金鑰解密原來生成的資訊碼跟新得到的資訊碼對比,那麼就會發現不一樣,就可以發現檔案已經被修改。
單向雜湊函式(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
相關文章
- 資料庫 資料庫的完整性資料庫
- 資料庫完整性+T-SQL資料庫SQL
- 資料庫第五章資料庫完整性資料庫
- 原創 oracle 資料完整性總結Oracle
- 雜湊函式與資料完整性 (^=◕ᴥ◕=^)函式
- 從 "垃圾 "資料到資料完整性的轉變
- 資料庫架構和物件、定義資料完整性-SQL Server資料庫架構物件SQLServer
- 資料庫應用系統中的資料庫完整性(上)KP資料庫
- SHA演算法:資料完整性的守護者演算法
- mysql~資料完整性考慮~外來鍵約束MySql
- 資料庫系統之實體完整性約束資料庫
- SQL語言與資料庫完整性和安全性SQL資料庫
- 區塊鏈真的能保證資料的完整性嗎? - Bozho區塊鏈
- 區塊鏈和大資料一起能否開啟資料完整性的新紀元?區塊鏈大資料
- 尚矽谷大資料Hadoop(22)P80-P84DataNode工作機制,資料完整性,服役新資料節點,退役舊資料節點,大資料Hadoop
- mysql:使用樂觀鎖保護資料一致性和完整性MySql
- 完整性約束
- 檔案完整性
- 【技術短視訊】OceanBase 5mins Tips | 關聯式資料庫中如何保證資料完整性、合法性?資料庫
- Web頁面子資源完整性校驗詳細指南Web
- Django爬蟲:如何處理超過重試次數的請求以保障資料完整性Django爬蟲
- MySQL之完整性約束MySql
- 表的完整性約束
- [譯] Android 核心控制流完整性Android
- 愛開源的谷歌又來了,這次釋出的是資料庫備份完整性檢查工具谷歌資料庫
- SQL Server實戰三:資料庫表完整性約束及索引、檢視的建立、編輯與刪除SQLServer資料庫索引
- 【劍指offer】10.程式的完整性
- Win10怎麼關閉記憶體完整性_win10關閉記憶體完整性的方法Win10記憶體
- 物件儲存服務的完整性檢查物件
- UTF-8 編碼及檢查其完整性
- Helmchart指南-系列(6)-出處與完整性驗證
- 讀軟體設計的要素06概念完整性
- Windows原理深入學習系列-強制完整性控制Windows
- Windows原理深入學習系列-強制完整性檢查Windows
- 好程式設計師分享同一資源多執行緒併發訪問時的完整性程式設計師執行緒
- MySQL學習筆記4:完整性約束限制欄位MySql筆記
- 使用 PGP 保護程式碼完整性(三):生成 PGP 子金鑰
- EMC訊號完整性落地實測1---走出玄學