密码学初探

密码学是学习区块链技术最重要的课程之一。

因为区块链技术,包括比特币,它们之所以这么安全,最重要的基石就是密码,包括非对称加密、哈希、数字签名这些技术。

如果不理解密码,就不能理解之后的签名、地址、验证等问题。

对非专业研究算法的我们来说,密码学的原理并不复杂,关键掌握以下要点:

一、进制&存储单位

1、进制是一种计数方法

(注:上图“2进制”与“10进制”写反了)

2、存储单位

(注:上图“BG”应为“GB”,“TG”应为“PG”)

比特币挖矿算力8359PH/s,指比特币每秒钟的算力达到8359PG的哈希量。

二、加密解密

1、对称加密

对称加密中,密钥只有一个,一旦密钥丢失或被盗,任何得到密钥的人都能解密信息。这也正是对称加密的缺点,传递过程中无法确保密钥的绝对安全。

对称加密中的密钥就类似于我们在谍战剧中看到的密码本,任何得到密码本的人都可以根据密码本破译出原文,所以密码本的安全传递就非常重要。

那怎样才能更安全的传递信息呢?

这就需要非对称加密。

2、非对称加密

非对称加密由公钥和私钥进行加密。

私钥是本机电脑上自动生成的。公钥是私钥根据算法生成的。

传递的只是公钥。私钥由个人保存,用于解密。

发送方将信息用接收方的公钥进行加密(公钥可以公开),随机生成一段密文,接收方接到密文后,用自己的私钥进行解密,还原信息。

整个过程解决了安全问题,但没有解决“接收方如何验证信息是由指定的发送方发送”的问题。

就好比我收到了一个信息,我还原了这个信息,我如何知道这个信息是你发给我的而不是别的人发给我的?

这就需要数字签名。

在谈数字签名之前,我们先谈谈另一个重要的概念:哈希。

三、哈希-Hash

哈希是将一段任意长度的数据,转换为一段定长的数据。

我们可以根据原数据生成哈希值,但无法通过哈希倒推出原数据。这个过程是不可逆的。

(公钥加密后生成的密文是随机的,但都能用对应的私钥进行解密。

而同一数据生成的哈希值是确定的,因此哈希值可以用来验证数据。)

下图为哈希运算界面

你可以将任意长度的数据,无论是几K或是几G的文件输入,点击“Hash”,就会生成很多格式的哈希值。以前比较常用的有MD5,但是随着计算机算力的增强现在它的安全性受到了挑战。现在比特币的哈希值采用的是“SHA-256”格式,今后也许会采用“SHA-384”或其它长的格式。

哈希可以用于很多方面。比如财务软件安全下载。

如果你要下载一款炒股的软件,下载界面就会出现它的哈希结果:MD5……

当你下载完成以后,你想验证你所下载的这个软件是不是安全的,你就可以对这个下载的文件进行哈希:

然后生成的哈希结果与原下载界面的哈希结果进行比对验证,如果一致,证明这个软件是安全的,没有被篡改过。

哈希还可以用于用户密码的存储:

现在很多服务器都不直接存储用户密码的明文,那样一旦被攻击,或者发生数据库管理员监守自盗,所有的信息直接暴露。

因为哈希的不可逆性,哈希值可以用来验证用户密码,却不能倒推出用户密码,所以现在大多服务器存储的都是哈希。

但是哈希存储可以用“彩虹表攻击”的方法,就是先大量的输入猜测的密码,用生成的哈希值与服务器存储的哈希值作比对,一旦一致就可以倒推出用户密码。

针对“彩虹表攻击”,现在很多服务器采取的是“盐+哈希”存储的方式,就是在原密码的基础上,引入一个随机数,比如时间,当做“盐”,生成一个新的哈希,这样就使得彩虹表失效。

四、签名

发送方将信息用接收方的公钥进行加密,生成一个随机的密文,发送给接收方。

接受方接到密文后,用自己的密钥进行解密,得到一个信息。

接收方如何确认这个信息是指定的发送方所发送的呢?

这就需要数字签名。

发送方先将信息进行哈希,生成的摘要用自己的私钥进行签名,然后发送给接收方。

接收方接收后,用发送方的公钥进行解密,生成一个摘要。

然后接收方再把之前收到的信息进行哈希,生成一个摘要。两个摘要做比对,如果一致,就证明是确定的发送方发送的。

在实际应用中,由证书授权重心CA来证明“我确实是我”。

五、结语

相信学完这一课,你对公钥、私钥、哈希、签名等都有了新的认识。

公钥加密,私钥解密。

私钥签名,公钥解密。

区块链的世界,切记要保护好自己的私钥。

(本文根据新大区块链课程整理,授课人:周兵,图片来源:课程PPT)

推荐阅读更多精彩内容

  • 比特币之所以安全最重要的是密码学。 1,进制&存储单位 可使用的计数符号的数目决定了进位制,简称进制。 用有限的数...
    张三度阅读 155评论 0 1
  • 概述 花了一天多粗略的翻了《图解密码技术》,图解系列真是入门神书,能够迅速的建立起一门学科的体系,强烈推荐。 一些...
    zengfan阅读 457评论 0 1
  • 〇、序言 货币由于其天然属性决定了其与安全不可分割的联系,从最早的金库、保险柜、镖局到后来的ATM机、运钞车;从存...
    怒马2048阅读 35,143评论 4 74
  • 2018-Read-Record 记录我的2018学习历程 文中首先解释了加密解密的一些基础知识和概念,然后通过一...
    NinthDay阅读 9,266评论 8 104
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    sunny冲哥阅读 975评论 0 3