区块链中的密码学

课程介绍

区块链经历了比特币 1.0 时代,以太坊 2.0 时代,以及目前正在进行的 3.0 时代,应用领域正在蔓延到各行各业,主要底层技术包含:密码学、共识算法、分布式存储、P2P 网络系统。而量子计算机的出现也变得越来越近,2018 年 7 月初潘建伟教授的团队首次实现 18 个量子比特的纠缠,再次刷新量子纠缠世界记录。

本课程内容将讲解密码学在区块链中的应用、量子力学基础知识以及量子计算是如何破解加密算法的:

  • 第一部分介绍了密码学基础知识和哈希算法原理,通过密码学的角度来看比特币;
  • 第二部分深入讲解了对称加密算法 3DES、AES 和非对称加密算法 RSA、ECC 椭圆曲线算法的原理;
  • 第三部分介绍了量子力学的基础知识以及什么是“薛定谔的猫”和量子计算机是如何破解加密算法的。

区块链的技术发展非常快,几个月的时间就有可能会更新换代,想要跟上发展的脚步可从以下两个方面着手:

  • 踏踏实实的学习底层数学原理,强烈建议学好离散数学和微积分。
  • 不要抱着速成的态度去学习,要系统专注的、有计划的学习,从密码学、公识算法、分布式存储、P2P 网络系统这四个方面选择一个自己感兴趣的领域,然后深入研究,直到成为这个领域前 20% 的人。

专家推荐

本课程在加密算法方面讲解到位,相比市面上的资料更加通俗易懂,揭开了密码学神秘的面纱。作者在写作过程中和我有过多次深入沟通,整个过程中收获最大的是学习方法和研究一门技术的思路,非常值得认真研读和学习。

——郭继,阿里巴巴资深工程师

孙启超曾深度参与中国电信与 360 的联合研发,在大数据、加密通信、移动应用方面均有建树,更可贵的是面对日新月异的新技术,如区块链,启超保持着高度的敏感和激情不断学习、总结经验,特别是在本课程中关于区块链算法的原理描述非常到位,值得深入学习,分享给大家并支持启超!

——刘波,微位科技副总裁、前中国电信 O2O 门户创始人

作者介绍

孙启超,药房网区块链研究员、机器学习算法专家、CSDN 百万博客专家、法国蒙彼利埃大学 MBA。2015 年之前参与过 360 技术团队的技术研究工作;2015 年后加入药房网团队开始创业,主要负责区块链技术架构工作,擅长把技术和业务相结合开发出产品,一手缔造了药房网从“人找信息”转换为“信息找人”的智能时代,同时两年之内的交易额翻了 10 倍。

课程内容

导读:区块链高薪清单

区块链技术从 2017 年已经开始爆发,2018 年更是火热,可以预见未来也一定是一个重要的技术,绝对不是昙花一现,很多有远见的公司早已经在 2015 年开始布局区块链技术,如 BAT、TMD 等。区块链技术确实会颠覆一些中心化的大公司,但是真正好的大公司是不会等着别人去颠覆,他们会自己先投入研究区块链技术,而密码学作为区块链技术的基石自然成为研究学习的重点。下面通过一张图来看看目前区块链的就业情况:

区块链中的密码学_第1张图片

(图片来源于网络)

图中的“专家”、“高级研究员”、“总监”之类的岗位,密码学知识成为核心必备技能。

很多公司在发币热潮过去后,意识到区块链的底层技术才是真正有价值的,也是开始在密码学、公识算法、分布式存储、P2P 网络系统这四方面招揽人才,本课程恰恰是要助力于想在密码学方面深入研究的或者是转向区块链架构方面工作的开发者。

课程大纲

密码学基础其实并没有想象的门槛那么高,具备初中以上数学知识就可以入门,如质数的特性、多项式分解因式等。同时本课程也会结合区块链中使用到的密码学相关算法来讲解推导过程,从而加深对区块链核心技术的理解;中间还会包含对称加密,非对称加密,哈希算法三类加密算法的原理讲解;最后会介绍量子力学的基础知识以及量子计算是如何破解加密算法的,对于量子计算领域现在有很多争议,认为目前只是特定功能计算,并没有普及,其实现在的量子计算很像十几年前的人工智能,当时也是有很大争议认为人工智能普及有难度,但是随着技术发展,现在结果已经很明显了,而量子计算也是一样的,以现在的技术科研能力相信用不了十几年,三、五年可能就有突破。

本课程大纲分为三部分,具体如下。

第一部分介绍了密码学基础知识和哈希算法原理,通过密码学的角度来看比特币:

  • 区块链中密码学基础
  • 用密码学的角度去看比特币
  • 哈希算法和 MD5 原理解析
  • 深入理解 SHA 系列加密算法

第二部分深入讲解了对称加密算法 3DES、AES 和非对称加密算法 RSA、ECC 椭圆曲线加密算法的原理:

  • 解析对称加解密算法 3DES
  • AES 加密算法推导
  • 非对称加密算法 RSA 的原理
  • ECC 椭圆曲线加解密算法

第三部分介绍了量子力学的基础知识以及什么是薛定谔的猫和量子计算机是如何破解加密算法的:

  • 介绍量子力学基础和薛定谔的猫
  • 量子计算机是如何破解加密算法
  • 密码学在区块链中能做什么

你将收获什么

区块链零知识证明

当理解了默克尔树的特性:任意一个叶子节点的细微变动,都会导致 Root 节点发生翻天覆地的变化;在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。好处是:在使用零知识证明的时候,不降低安全性。

  • 零知识证明工作高效,计算过程量小,双方交换信息少。
  • 简单、安全,又有很好的隐私,减少计算量。

理解对称加密,非对称加密算法的特点

(1)对称加密

分组加密和序列加密。前者将明文切分为定长数据块作为基本加密单元,应用最为广泛。后者则每次只对一个字节或者字符进行加密处理,且密码不断变化,只用在一些特定的领域,如数字媒介的加密等。代表算法如 MD5、SHA 系列算法。

对称加密适用于大量数据的加解密过程,不适合用于签名场景,并且往往需要提前分发好密钥。

(2)非对称加密

  • 缺点是处理速度比较慢,比对称加密慢了 2、3 个数量级;加密效率不如对称加密。
  • 非对称加密的安全性需要基于数学问题来保障,目前有:大数质因子分解、离散对数、椭圆曲线等经典数学难题进行保护,代表算法:RSA、Diffie-Hellman、ElGamal、ECC、SM2。
  • 适用于签名场景或密钥协商,不适于大量数据加解密。

了解量子力学的基础和如何破解加密算法

量子世界是不确定的,最多只能预测各种结果出现的概率,一个东西可以同时处于两个相互矛盾的状态中,比如薛定谔的猫这个实验中,猫的状态即是生也是死,一旦发生观测猫的状态就确定了,但是观测之前是处于即生又死的状态。

量子比特和传统比特的区别就是:传统比特只能存储一个信息 0 或者 1;而量子比特可以同时存储 0 和 1,有一定的概率是 0 或者一定的概率是 1,这个概率是任意变化的,因此可以存放很多信息,想要取出信息则需要做一次观测,观测发生的时候就可以得到结果,这个结果和概率有关。

用量子计算破解加密算法则基于量子纠缠和并行计算,使得传统计算机在有限时间内无法完成的任务,在量子计算机中可以快速完成。

区块链中的密码学_第2张图片

课程寄语

希望读者通过本课程的学习,能够产生对数学和算法的兴趣,对忘记掉的数学知识重新燃起学习的欲望,以前对算法感觉不重要的同学能够加强对算法的学习。

在数学方面强烈建议学习离散数学和微积分,对编程来说是相辅相成的,很难想象只有小学数学水平的人能把架构做好。微积分其实原理并不难理解,总的来说就是把整体拆分,然后根据拆分出的微小部分求和;先分割、再求和,分割就是微分,求和就是积分,剩下的就是找到公式去套用,重点是理解数学思想,公式都是全世界公认的几乎不会有变化,也不需要我们去发明一个公式,但是要理解数学思想之后才能合理运用合适的公式,排列组合等。

之前听我的恩师胡老大说“编程到最后就是:数据结构 + 算法”,当时不理解,但是出于对老师的信任一直重视对算法的学习,工作到现在感受特别深。在计算机界,技术日新月异,学习到的技能可能是一时的,但是培养起终身学习的习惯和高效的学习方法,才是最有价值的。

最后,预祝每一位订阅课程的朋友,都能够有所收获,如果有任何疑问和建议,也欢迎通过我的读者圈与我交流,我们共同学习、共同进步。

第01课:区块链中的密码学基础

什么是密码学

密码学分为两部分,第一部分是编码学:应用于编制密码以保证通讯的私密性;第二部分是破译学:应用于破译密码以获取通信的内容,两部分合在一起总称为密码学。

通俗的来说密码学像是一个矛和盾的过程,编码学好比是盾,做的尽量坚硬能抵挡一切矛的攻击;而破译学就像是矛,做的尽量锋利从而刺破一切盾,两者相互制约、相互进步,很难说哪一个更厉害。

密码学在区块链中的作用

首先要理解什么是区块链,简单来说是由一个个区块组成,而区块是由两个哈希值和一个存储空间组成,每个区块只和它的前一个区块相关联,正是通过哈希值所关联起来的,目前可把哈希值理解为身份证号,一个是自己的,一个是跟自己关联的前一个区块的。哈希值是通过密码学中的哈希算法得到的,这就是我们重点要关注的。

试想一下,身份证号有什么特点。

  • 第一个:唯一性,一个身份证号对应一个人。
  • 第二个:保密性,给你一个身份证号,你能看出代表的是谁吗?根本猜不出来。

其实这两个特点恰恰就是哈希算法的特点。

区块链核心概念还包含以下几点:

  • 支撑比特币的底层交易系统就是“默克尔树”也叫哈希树。
  • 密码学中的椭圆曲线算法(ECC)也用在区块链中来保护消息摘要的真实性。
  • RSA 非对称加密算法在区块链中用作证书签发。

密码学主要分类

密码学主要分为三大类,具体如下。

  • 散列算法:如 MD5、SHA 系列算法;
  • 对称加解密算法:如 3DES、AES 算法;
  • 非对称加解密算法:如 RSA、ECC 算法。

不同的加密算法适用于不同场景,比如大规模的数据加密通常使用 3DES 和 AES,而像数字签名,身份认证则使用 RSA 和 ECC,后面我们会针对每一种算法都有深入解析,当大家理解它们的原理以及如何运行算法的时候就明白为什么适用了。

加解密算法概述

(1)散列算法

散列算法也叫哈希算法,是非常基础且重要的计算机算法,它能将任意长度的二进制明文映射为较短的二进制串,并且不同的明文很难映射为相同的 Hash 值,具有以下特点:

  • 正向快速:给定明文和 Hash 算法,在有限时间和有限资源内能计算得到 Hash 值。
  • 逆向困难:给定 Hash 值,在有限时间内很难逆推出明文。
  • 输入敏感:原始输入信息发生任何变化,新的 Hash 值都应该出现很大变化。
  • 冲突避免:很难找到两段内容不同的明文,使得它们的 Hash 值一致。

(2)对称加密

加解密过程的密钥是相同的,优点是速度快、空间占用小、加密强度高。

从原理上分:分组加密和序列加密。前者将明文切分为定长数据块作为基本加密单元,应用最为广泛。后者则每次只对一个字节或者字符进行加密处理,且密码不断变化,只用在一些特定的领域,如数字媒介的加密等。代表算法如 MD5、SHA 系列算法。

对称加密适用于大量数据的加解密过程;不能用于签名场景,并且往往需要提前分发好密钥。

(3)非对称加密

公钥、私钥分开,缺点是处理速度比较慢,比对称加密慢了 2、3 个数量级;加密效率不如对称加密。

非对称加密的安全性需要基于数学问题来保障,目前有:大数质因子分解、离散对数、椭圆曲线等经典数学难题进行保护,代表算法:RSA、Diffie-Hellman、ElGamal、ECC、SM2。

适用于签名场景或密钥协商,不适于大量数据加解密。

(4)安全强度高的:椭圆曲线系列算法。

密码学中也可以分加密算法和加解密算法,像 MD5、SHA256 等都是加密算法,加密后是一个固定长度的字符串,常用来比较一致性和没有篡改,如登录时传输的密码用 MD5 加密存到服务器数据库,并不会存原始密码,当用户第二次登录时输入密码后转化为 MD5 的值,再和服务器数据库中的 MD5 值相比较,如果一致则登录成功。没有人把 MD5 解开拿着原始密码和用户输入的原始密码比较的,这是加密算法。加解密算法更看重的是加密的内容,需要解密出加密前的内容,然后使用原始数据做相应处理,所以两种算法的应用场景也不同。

支撑密码学的数学定理

像非对称加密这些算法之所以能广泛被大家认可并应用,其根本原因是它们基于的数学原理。

ECC 涉及到有限域上的椭圆曲线和离散对数问题、几何加法、标量积等。

RSA 算法基于:两个大质数相乘得到的大数难以被因式分解,还涉及到另外两个数学概念:

  • 互质关系:如果两个正整数,除了 1 以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。
  • 欧拉函数:是指任意给定正整数 N,在小于等于 N 的正整数之中,有多少个与 N 构成互质关系。

总结

本课介绍了密码学的基础知识和作用,支撑起了密码学的正是数学原理,其中大部分属于初中、高中数学知识,并没有想象的那么高不可攀,通过有效的学习,具备基础的数学知识,同样可以深入理解密码学。

参考文献

  • http://www.williamlong.info/archives/499.html
  • http://baike.baidu.com/fenlei/密码学
  • https://zhuanlan.zhihu.com/p/36326221
第02课:用密码学的角度去看比特币
第03课:哈希(Hash)算法和 MD5 原理解析
第04课:深入理解 SHA 系列加密算法
第05课:解析对称加解密算法 3DES
第06课:AES 加密算法推导
第07课:非对称加密算法 RSA 的原理
第08课:ECC 椭圆曲线加解密算法
第09课:量子力学基础和薛定谔的猫
第10课:量子计算机如何破解加密算法
第11课:密码学在区块链中能做什么

阅读全文: http://gitbook.cn/gitchat/column/5b6c49d99f4dd1284bf83bda

你可能感兴趣的:(区块链中的密码学)