数据完整性是指系统中信息的准确性、合法性和一致性。发送信息时,尤其是通过不可靠的媒体发送信息时,数据完整性可确保信息未被篡改。非法数据的潜在原因是什么?数据完整性可以防止数据被系统指令篡改等一系列问题。其中一些潜在问题包括:物理故障:在劣质介质上传输大量数据可能会损坏数据。例如,无线信号可能暂时丢失,或者线路可能被嘈杂的电信号干扰。数据问题:负责传递信息的软件可能存在错误,这些错误会无意中改变信息子集。恶意篡改:可能有中间人更改消息以混淆通信者或了解有价值的信息。解决方案——ChecksumsChecksums可以解决以上三个潜在的数据完整性问题。校验和是从消息数据中导出的某个值,可以单独传输,这意味着给定消息的校验和始终相同。消息接收者可以从消息中生成校验和,如果生成的校验和与发送消息的校验和匹配,则发送消息不能被篡改。需要注意的是,如果获取校验和的媒介不可靠,则信息和校验和都可能被中间人篡改。通常更好的做法是在校验和上签名数字签名,数字签名可以证明校验和发送者的身份。什么是好的校验和?校验和有多种类型,但最好的校验和通常是加密哈希函数。哈希函数可以生成良好的校验和并验证数据的完整性。以下是其性质:确定性:相同信息的哈希值始终相同,不存在随机性。快速:不需要使用不必要的资源来计算校验和(KDF是一种低效的校验和)。几乎没有巧合:两条不同的消息生成相同校验和的概率几乎为零。紧凑:散列(又名“摘要”)的结果应该很短,不会浪费大量数据。SHA-256哈希函数通常用于创建校验和摘要。示例——验证实际校验和校验和的一个常见用例是下载验证。在这个例子中,我们将下载比特币核心节点软件并验证其完整性。假设您使用的是MacOS,对于其他OS(操作系统),请按照下载页面上的说明进行操作。下载程序: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-a256bitcoin-0.19.1-osx.dmg应该打印:206d8d92189d22e735393abebeb7a2e7237a119dd448b4a40df8c357da1287b2bitcoin-0.19.1-osx.dmg然后打印下载的(预期的)校验和:catSHA256SUMS.asc|grepbitcoin-0.19.1-osx.dmg应该匹配:206d8d92189d22e735393abebeb7a2e7237a119dd448b4a40df8c357da1287b2bitcoin-0.19.1-osx.dmg如果匹配,恭喜!您的下载已通过验证。您下载的程序未被恶意篡改。此外,请记住,要验证提供给您的校验和未被篡改,您还需要验证GPG签名。
