► 币圈 +收藏 已有0 人收藏 +发表新主题

区块链课堂三:必须了解的密码学

2018-4-4 12:10 [复制链接] 5688 1

区块链课堂三:必须了解的密码学
『转载-铂链 Bottos 文案组 忆忆 原创』
引言:在上篇揭秘了密码学后,本篇将介绍密码学中基础概念和算法,例如对称加密、非对称加密和hash算法等,让读者明白这些在说到区块链或者密码学时最常听到的算法。

作者君在上篇提到过,密码学,作为研究如何隐秘地传递信息的学科,其首要目的并不是隐藏信息的存在,而是隐藏信息的含义。因此,密码学一般分为两个方向,即研究编制密码学和破译密码。
1)编码学:研究密码变化的客观规律,应用于编制密码以保守通信秘密;
2)破译学:研究密码变化的客观规律,应用于破译密码以获取通信情报。
从上述的字面意思可以了解到,编码学就是将原始信息进行变化,让其他人即使拿到了传递的信息,也无法明白其想表达含义。而破译学则是在获得传递信息后,对信息进行分析,获得破解的方法,从而明白信息的原始想表达的含义。

图1 神秘密码学(图片来自百度)
编码学和破译学相互制约相互促进,从而推动密码学的发展。下面,作者君为介绍最常听到的一些密码学词汇及密码学算法。
(一)常见密码学词汇
不管是在区块链,还是在交流虚拟币钱包,或者是生活中,读者们应该会说到密钥,也就是所谓的密码,还有类似于明文、密文等词汇,读者一一对这些词汇进行解释。
(1)密钥:生活中,很多人都活说成密码,例如钱包密码、手机密码等。密钥分为两种类型,即加密密钥和解密密钥。
(2)明文:没有进行加密,可以直接代表原含义的信息。
(3)密文:经过加密处理后,隐藏原含义的信息。
(4)加密:明文转换成密文的实施过程。
(5)解密:密文转换成明文的实施过程。
(6)密码算法:密码系统采用的加密方法和解密方法。
值得注意的是,一般情况下,密码算法是公开的,需要保密的是密钥,若密钥丢失,对应使用该密码的信息则被他人获取。以电视剧《潜伏》为例,男主角每次通过电报机收到摩斯密码,通过对应的摩斯密码表译出对应的数字,再找到书,利用这些数字找到书中第几页第几行的汉字,将所有数字译成汉字,这些汉字就是信息原始想表达的含义。
将上述解释的词汇一一对应,原始想传递的信息为明文,将这些汉字替换成书中页码、行数和列数,也就是将汉字变换成数字,再利用摩斯密码通过电报机进行传输这些数字,因此,最后传输的摩斯密码为密文,采用的密码算法为置换密码,而对应的密钥就是那本书,若被其他人知道了那本书,则明文就被他人知晓。
当然,上述的例子中将书比喻为密钥是为了更好地让读者理解,实际生活中说的密码算法都是现代密码学说的对称密码算法、非对称密码算法等。
(二)常见密码学算法
由于密码学算法较多,本篇只对一些常见的算法进行概要说明,让读者们更好地了解。
(1)Hash算法
Hash算法应该是链圈或者币圈人士听到最多的算法,读者君首先对其进行介绍。Hash算法,也称为单向散列函数、杂凑函数、哈希函数、散列算法或消息摘要算法。用比较书面的解释,Hash算法通过一个单向数学函数应用于数据,将任意长度的数据转换为一个定长的、不可逆转的数据。
或许上述的解释,很多没有基础知识的读者依旧看不懂,更直白的说法:将一系列数据变换成一串固定长度数据的过程。该过程就是通过hash算法计算hash值,得到的固定长度的数据就是hash值。

图2 图示hash算法
Hash算法是单向的,也就是最后得到的hash值是无法反推出原始的数据,这就是hash算法的单向性。因此,安全的hash算法必须具备三个特性,分别为:
1)单向性:知道一个原始数据m,计算m的hash值很简单,但是若知道m的hash值,反推m是困难的。
2)弱碰撞自由:给定一个数据x,需要找到另外一个数据y,满足x的hash值和y的hash值相等,是困难的。
3)强碰撞自由:寻找两个不同的数据x和y,满足x的hash值和y的hash值相等,是困难的。
(2)对称密码算法
所谓对称密码算法,就是密码算法中使用的加密密钥和解密密钥相同。如图3所示,信息加密成密文时使用的密钥和密文解密时使用的密钥相同。例如常见的DES就是一种分组对称加密算法,国密sm1 算法是由国家密码管理局编制的一种商用密码分组标准对称算法。

图3 对称密码算法
(3)非对称加密算法
与对称加密算法对应的就是非对称加密算法,非对称加密算法很好了解,就是加密密钥和解密密钥不相同。在非对称加密算法中,一般都是使用公钥和私钥来说明,其中公钥是公开的密钥,而私钥是需要安全保存的密钥。

图4 加密数据
如图4所示,表示的是利用非对称密码算法对信息加密的过程,若Alice想发信息给Bob,在信息进行加密时她会利用Bob的公钥,得到密文后再发生给Bob。Bob得到密文后使用自己的私钥进行解密获得明文。该过程可以保证加密数据的机密性,只要其他人没有Bob的私钥,就无法获得原始信息。

图5 数字签名
如图5所示,表示的是利用非对称密码算法对信息进行数字签名,保证信息的是由发送者发出。Alice利用自己的私钥对信息进行签名,再发送给接受者。接受者收到签名的信息,利用Alice的公钥进行验证,就可以证明该信息是由Alice发送。
需要注意的是,加密过程中,公钥是用来加密,私钥用来解密;数字签名过程中,私钥用来签名,公钥用来验证。上述说法才是专业且正确的表达方式。

以上就是本节课上篇的内容,由于篇幅限制,只是概述了密码学的常见词汇和算法。若读者有任何问题或者疑问,欢迎大家指正。
经过课堂三的密码学知识普及,第四节课作者君会介绍密码学与区块链之间的关系,其中会涉及到私钥、公钥和地址之间的联系、钱包哪些信息可以公开等等内容。如果读者有什么疑问或者希望作者君重点讲解哪些内容,可以留言提出,作者君会积极采纳各位的意见。


最新评论 | 正序浏览
只看楼主|楼层直达:
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 36 主题
  2. 197 帖子
  3. 197 积分

Ta的主页 发消息
帝国区交所

QQ|Archiver|手机版|比特帝国    

© 2001-2013 Comsenz Inc.All Rights Reserved.

Powered by Discuz! X3.3

快速回复 返回顶部 返回列表