校驗和:探究密碼學(xué)中的數(shù)據(jù)完整性問題
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。
數(shù)據(jù)完整性是指系統(tǒng)中信息的準確性、合法性和一致性。在發(fā)送信息時,尤其是使用不可靠媒介時,數(shù)據(jù)完整性可以確保該信息未被篡改。
非法數(shù)據(jù)的潛在成因是什么?
數(shù)據(jù)完整性能防止出現(xiàn)數(shù)據(jù)違背系統(tǒng)的指令被篡改等系列問題。其中一些潛在的問題包括:
- 物理故障:用不好的媒介傳輸大量數(shù)據(jù)可能會毀壞數(shù)據(jù)。例如,無線信號可能會暫時丟失,或者線路可能遭到噪聲電信號的干擾。
- 數(shù)據(jù)問題:負責傳達信息的軟件可能有一些漏洞,無意間使信息的子集發(fā)生變異。
- 惡意篡改:可能有中間人正在更改信息,以迷惑通訊員或者學(xué)習有價值的信息。
解決辦法-校驗和
校驗和可以解決以上三個潛在的數(shù)據(jù)完整性問題。校驗和是從信息數(shù)據(jù)中衍生出的一個確定值,可以單獨傳輸,這意味著給定信息的校驗和總是相同的。
信息接受者可以從該信息中生成校驗和,如果生成的校驗和與發(fā)送信息的校驗和匹配,那么發(fā)送的信息就不會被篡改。
需要注意的是,如果獲取校驗和的媒介不可靠,那么信息和校驗和都可能被中間人篡改。通常較好的做法是在校驗和上簽署數(shù)字簽名,數(shù)字簽名就能證明校驗和的發(fā)送者的身份。
什么是好的校驗和?
校驗和的類型很多,但是最好的校驗和通常是加密哈希函數(shù)。哈希函數(shù)能生成很好地校驗和驗證數(shù)據(jù)的完整性,以下是它的性質(zhì):
- 確定性:同一信息的哈希值始終相同,不存在隨機性。
- 速度快:無需使用不必要的資源計算校驗和(KDF是一種低效的校驗和)。
- 幾乎不重合:兩條不同的信息生成相同的校驗和的可能性幾乎為零。
- 精簡:哈希的結(jié)果(又稱“摘要”)應(yīng)該很簡短,無需浪費大量數(shù)據(jù)。
SHA-256哈希函數(shù)通常用于創(chuàng)建校驗和摘要。
示例 –驗證實際的校驗和
校驗和的常見用例是對下載的驗證。在本例中,我們將下載比特幣核心節(jié)點軟件并驗證其完整性。假設(shè)你使用的是Mac OS,對于其他OS(操作系統(tǒng)),請按照下載頁面的說明進行操作。
- 下載程序:https://bitcoincore.org/bin/bitcoin-core-0.19.1/bitcoin-0.19.1-osx.dmg?ref=hackernoon.com
- 下載校驗和:https://bitcoin.org/bin/bitcoin-core-0.19.1/SHA256SUMS.asc?ref=hackernoon.com
- 打開終端并下載文件夾:
- cd ~/Downloads
計算并打印下載的dmg文件的校驗和:
- shasum -a 256 bitcoin-0.19.1-osx.dmg
應(yīng)該打?。?/p>
- 206d8d92189d22e735393abebeb7a2e7237a119dd448b4a40df8c357da1287b2 bitcoin-0.19.1-osx.dmg
然后打印下載的(預(yù)期的)校驗和:
- catSHA256SUMS.asc | grep bitcoin-0.19.1-osx.dmg
應(yīng)該匹配:
- 206d8d92189d22e735393abebeb7a2e7237a119dd448b4a40df8c357da1287b2 bitcoin-0.19.1-osx.dmg
如果能夠匹配,那么恭喜你!你的下載已經(jīng)通過驗證。你下載的程序沒有經(jīng)過惡意篡改。
此外,請記住,要驗證提供給你的校驗和未被篡改,你還需要驗證GPG簽名。