校验和:探究密码学中的数据完整性问题

安全 数据安全
数据完整性是指系统中信息的准确性、合法性和一致性。在发送信息时,尤其是使用不可靠媒介时,数据完整性可以确保该信息未被篡改。

本文转载自公众号“读芯术”(ID:AI_Discovery)。

数据完整性是指系统中信息的准确性、合法性和一致性。在发送信息时,尤其是使用不可靠媒介时,数据完整性可以确保该信息未被篡改。

[[339802]]

非法数据的潜在成因是什么?

数据完整性能防止出现数据违背系统的指令被篡改等系列问题。其中一些潜在的问题包括:

  • 物理故障:用不好的媒介传输大量数据可能会毁坏数据。例如,无线信号可能会暂时丢失,或者线路可能遭到噪声电信号的干扰。
  • 数据问题:负责传达信息的软件可能有一些漏洞,无意间使信息的子集发生变异。
  • 恶意篡改:可能有中间人正在更改信息,以迷惑通讯员或者学习有价值的信息。

解决办法-校验和

校验和可以解决以上三个潜在的数据完整性问题。校验和是从信息数据中衍生出的一个确定值,可以单独传输,这意味着给定信息的校验和总是相同的。

信息接受者可以从该信息中生成校验和,如果生成的校验和与发送信息的校验和匹配,那么发送的信息就不会被篡改。

需要注意的是,如果获取校验和的媒介不可靠,那么信息和校验和都可能被中间人篡改。通常较好的做法是在校验和上签署数字签名,数字签名就能证明校验和的发送者的身份。

什么是好的校验和?

校验和的类型很多,但是最好的校验和通常是加密哈希函数。哈希函数能生成很好地校验和验证数据的完整性,以下是它的性质:

  • 确定性:同一信息的哈希值始终相同,不存在随机性。
  • 速度快:无需使用不必要的资源计算校验和(KDF是一种低效的校验和)。
  • 几乎不重合:两条不同的信息生成相同的校验和的可能性几乎为零。
  • 精简:哈希的结果(又称“摘要”)应该很简短,无需浪费大量数据。

SHA-256哈希函数通常用于创建校验和摘要。

[[339803]]

示例 –验证实际的校验和

校验和的常见用例是对下载的验证。在本例中,我们将下载比特币核心节点软件并验证其完整性。假设你使用的是Mac OS,对于其他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
  • 打开终端并下载文件夹:
    1. cd ~/Downloads 

计算并打印下载的dmg文件的校验和:

  1. shasum -a 256 bitcoin-0.19.1-osx.dmg 

应该打印:

  1. 206d8d92189d22e735393abebeb7a2e7237a119dd448b4a40df8c357da1287b2 bitcoin-0.19.1-osx.dmg 

然后打印下载的(预期的)校验和:

  1. catSHA256SUMS.asc | grep bitcoin-0.19.1-osx.dmg 

应该匹配:

  1. 206d8d92189d22e735393abebeb7a2e7237a119dd448b4a40df8c357da1287b2 bitcoin-0.19.1-osx.dmg 

如果能够匹配,那么恭喜你!你的下载已经通过验证。你下载的程序没有经过恶意篡改。

此外,请记住,要验证提供给你的校验和未被篡改,你还需要验证GPG签名。

 

责任编辑:赵宁宁 来源: 读芯术
相关推荐

2020-05-20 08:35:55

公钥密码学非对称密码密码

2017-06-01 09:03:51

2017-12-14 16:02:43

2011-07-19 13:55:38

2011-07-19 13:59:59

2020-12-19 10:38:22

量子计算密码学加密

2019-11-13 09:27:55

Web密码学数据

2021-07-26 10:34:47

物联网密码学IoT

2024-03-12 14:53:02

2019-01-02 11:09:37

2020-10-07 16:44:27

量子计算

2018-12-07 08:15:03

2017-06-28 13:57:59

2018-03-16 13:00:58

2015-03-12 15:44:59

2013-04-17 15:11:08

2020-08-13 18:19:24

OpenSSL密码学Linux

2018-03-09 17:36:27

2017-01-03 16:03:56

2015-10-08 15:07:32

点赞
收藏

51CTO技术栈公众号