登録は簡単!. 無料です
または 登録 あなたのEメールアドレスで登録
走进加密学 により Mind Map: 走进加密学

1. 月亮上的加密学

1.1. 到目前分享的加密算法都是我们日常生活在互联网上天天使用的加密算法,我们自己可能没有认识到而已。 下面我们简单的解释一下和区块链未来发展紧密相关,并没有大规模应用的加密技术,因为极为复杂,很多人称之为月亮上的加密学

1.2. 第一个就是大家经常听到的zkSNARK,我对这个英文全称一直很恐惧,念起来就不像是给人理解的加密学,v神有一遍文章说,你对一遍看不懂没关系,就算读10变看不懂也正常, 我的确是看不懂,这也是让我决定系统学习加密学的原因,

1.3. 在这里呢,我不建议大家取抠这里每个单词的意义,我们就简单解释一下这个技术到底是像实现什么东西,有个这个这理解,他到底叫什么就不重要了。 zkSNARK主要是有三层含义,第一个是零知识,第二个是无交互,第三个是快速高效验证

1.4. 第一个是什么是零知识,稍微正式说法就是我可以证明一件事情,但是又不用告诉你这件事情具体是什么。我对这个说法一直似是而非,直到有一天看到一个例子,你如果想一个盲人证明两瓶可乐的包装颜色是不一样的? 这里零知道就是我证明可乐的包装颜色不一样,但是又不需要告诉你具体颜色是什么。 那我如何证明呢? 就是盲人拿这两瓶可乐,在桌子地下,对调或是不对调左右手,然后把可乐拿到桌面上来,让我回到,这两瓶可乐是对调了还是没有对调过。如果可乐的包装是一样的,那么我每次猜对的几率是50%, 如果我可以连续猜对几次,就可以大概率的让盲人相信可乐的颜色是不一样的。这是就一个特别直观的零证明

1.5. 那这个过程中需要我和盲人进行多伦的答问,zkSNARK这个技术呢可以去掉多伦答问,这就是无交互的含义。

1.6. 快速高效认证,是指盲人可以很快的有效的分析我提供的证据,从而快速做成结论

1.7. 隐私计算

1.7.1. 隐私计算是这次分享的最后一个加密技术。其本质就是不告诉第三方自己的原始数据的情况下,进行有效计算。主要又两种实现方案,第一种叫同态加密。 基本的步骤是这用的,A对数据进行加密,让后把加密后的数据发给B, B对加密数据进行运算,将结果返还给A, A对结果进行解密,从而得出正确的结果。 一个不太好的例子,比如我想多了解一下苍井空老师生平,但是又不想让度娘直到我对苍老师比较关注,我就可以通过同态加密这个技术先对仓老师进行加密,让后让度娘搜索加密后的密文,我拿到结果以后进行解密。 以往人们只找到一些部分实现这种操作的方法。而2009年9月克雷格·金特里(Craig Gentry)的论文从数学上提出了“全同态加密”的可行方法,即可以在不解密的条件下对加密数据进行任何可以在明文上进行的运算,使这项技术取得了决定性的突破。这也可能是我们未来如果保护个人隐私的一个重要的工具

1.7.2. 另外一个技术叫多方加密计算, 这个是在1982 有我们唯一的一个华人图灵奖获得者姚期智老师提出来的,他有一个著名的问题叫百万富翁问题,就是两个百万富翁到了餐馆吃了饭,都比较抠门不想付账单,决定那个更富有的人付账单, 但是他们又都不想让对方知道自己又多少钱。 如果有个信任第三方,这个问题很好解决,比如两个富翁都告诉餐厅的服务员自己又多少钱,这时候服务员就可以决定谁更富有。 但是如果没有可信第三方,这个问题怎么解决?这就是多方计算要解决的问题。数学家已经证明了,所有这种可以通过可信第三方解决的问题,都可以通过多方计算解决

2. Ellipse Curve

2.1. 椭圆曲线的原理和RSA是一样的,只不过计算的对象从整数变成了椭圆曲线上的点,也就是从一位空间,变到了二维空间。 从而增加了破解的难度.具体的算法,由于时间关系和数学复杂程度,我们有机会以后可以深入分享一下。但是了解了RSA以后,椭圆曲线并不难理解

3. RSA 1977

3.1. RSA

3.1.1. 下面我们来看一个RSA的实力,进一步了解循环往复和单向函数。 RSA是1977由三位数学家的发明的。RSA也是三个人名字的首字母。RSA由三部分组成, 一个最大数max,公钥,私钥。其中max和公钥是每个人都知道,私钥只有alice自己知道

3.1.2. 假设加密的信息是数字,加密的过程就是将这个数字和自己想乘 公钥的次数,又是是m的公钥次方,在计算的过程中,如果结果大于max就会进行对max的取余数的计算。比如10除以9的余数为1

3.1.3. 解密的过程就是将加密后的数字d和自己相乘私钥的次数,同样进行对max的取余计算。这用是这次分享中最复杂的数学公式了。 下面我们带入一组数字,就行计算,假设max是91, 公钥是5, 私钥是29,加密的数字是67.那么加密的过程就是67*67,乘5次,第一次相乘的结果是4489,大于max,4489对91的余数是30, 下一步用30乘67,对91取余数结果是8,这用最后的结果是58,也就是我们的加密结果

3.1.4. 将58带入右面的解密计算,同样的算法,我们需要将58连乘29次,每次相乘的结果对91取余数。 我们在最后得回了67. RSA的算法具体的讲解了怎么安全的选取max, 计算公钥和私钥。我们这里不做展开。通过这个小例子,大家可以再想想RSA里面什么是循环往复,什么是单向函数。

4. 非对称加密基本原理

4.1. 非对称加密的理论基石是由我们前面提到的Diffie - Hellman的论文奠定的。 所有的非对称加密算法都有这两个特征,一个是循环往复 - 循环有限群, 另一个就是单向陷门函数,单向陷们函数就是一个函数有输入得到输出很快,但是从输出倒推输入就很难了

4.2. 这里我们举一个运动场的例子, alice从红点出发,走了100米,到了标注星星的地方,如果我们知道操场的长度是400米,这时候alice有两个方法回到出发点,回走100米,或是继续前行300米。 如果这时候运动场突然刮起一阵妖风,回头走是顶风,特别困难,那她就只能想前走300米了。在这里例子里,前行100米就是加密的过程,再走300米回到原点就是解密的过程, 每走400米回到原点就是我们前面所说的循环往返,这阵妖风就是单向函数。 非对称加密学的研究重点就是怎么制造这种妖风。到目前为止,主流的只有RSA和椭圆曲线

5. 非对称性加密直观描述

5.1. 这时候我们就问自己一个问题,通过密钥交换协议和对称性加密我们是不是就可以解决所以的加密通信的问题呢?答案好想是可以的, 但是仔细想一下,如果n个人之间要进行加密通信,每个人是不是都要管理n-1个密钥?密钥的管理是一个特别复杂的问题,所以diffie hellman 密钥交换和对称性加密在实践中还是有不足的地方的。这也是就左边图上描述的问题,alice保管了很多的密钥

5.2. 1970 一个英国的数学家 James Ellis提出了一个直观的构想,就是不需要密钥的加密方案,想法是这样的。 alice定制了很多的锁,这些锁都是用同样一把钥匙打开。 每当alice需要和一个人进行加密通信,她就把没有锁上的锁寄给对方,对方会把密码写在一个小盒子里,用收到的锁,锁上小盒子,在把盒子寄给alice。 alice收到盒子以后就用唯一的一把钥匙打开。在真个过程中alice是不需要和对方进行任何密钥交换的。 这个想法直观的解释了非对称加密的可能性,而且在这种构想之前,alice只需要管理一把钥匙。可惜的是James本人没有想打一个实现的方法

6. Diffie Hellman Key Exchange

6.1. 这个挑战于1976由蒂菲和赫尔曼共同撰写的论文解决。这个解决方案就叫diffie hellman密钥交换协议,这个论文也奠定了非对称加密的理论基础。

6.2. 算法的核心就是 - 通信的双方可以用这个方法在完全公开的网路和确定对称密钥。然后可以用这个密钥进行加密和解密。

6.3. 这个听起来很高深,其实实现的原理初中生就可以理解。 我这里写了一个简化的,不安全的算法,帮助大家理解。 我们也要介绍alice, bob和eve,加密学文章里面最常见的三个人物。 alice和bob想交换私钥, 但是eve可以监听到alice和bob之间左右的通信。 在这用不安全的网路环境中,alice和bob可以通过下面7步建立一个密钥。

6.4. 通过这种方式呢,alice和bob就建立了一个只有他们才知道的共有的密钥。 当然真正的diff hellman的算法由一个余数的计算,并且x是一个特别大的质数,通过离散对数保证了eve在知道x, A, B的情况下计算不出来x的a*b次方。这里我们就不进行展开了

7. block cipher 分组密码

7.1. DES

7.2. AES

7.3. 现在我们解释一下块加密。 块加密把固定长度的明文转化为同样长度的密文。第一代的块加密算法是DES, 已经被破解。 现在最主流块加密算法叫AES

7.4. 大家可能会问,我们既然有了流加密为什么还需要块加密呢? 流加密很块,很容易通过硬件实现,主要是用在了没视频流加密上,比如dvd,4k视频。 而块加密会更安全,但是速度会慢一些

8. 对称性加密的总结:

8.1. 对称性加密的加密过程就是将明文和密钥作为输入,输出密文,解密的过程就是将密文和密钥作为输入,输出明文

8.2. 大家可以想一下,这个过程中最关键的一步是什么?最关键的一步就是如果安全的交换密钥?

9. stream

9.1. 流加密其实对对一次性密码本可应用的实现。 在流加密里,电脑程序代替了人去掷骰子, 掷骰子的电脑程序保证了,输入的密钥相同的情况下,加密和解密的电脑可以生成同样的,而且比密钥本身长很多的随机数字流。这额电脑程序就是伪随机数生成器。 加密的过程就是将生成的随机码流和数据流XOR一起产生加密后的数据流。解密方只要产生同样的随机码流和密文做一个或与就会的到明文

9.2. RC4

10. 一次性密码本

10.1. 20世纪初,数学家提出了一次性密码本的方案, 这种加密方法可以完全隐藏密文里面的语言特征,就是每个字母出现的频率一样。

10.2. 一个最直观的例子就是,存在一个26面的骰子,每掷一次的结果都写在密码本上,密码本写满了从1到26的随机数字。加密的过程就是讲明文里的字母和密码本上的数子一一对应, 然后将明文按照对应的数字进行偏移。解密的过程就是将密文和密码本上的数字一一对应,进行反响偏移。

10.3. 一次性密码本被信息论的奠基者克劳德.香农(Claude Shannon)证明是最安全的,理论上是牢不可破的。香农这个人的硕士论文也奠定了现代数字电路的基础,超级牛人. 那我们会问,一次性密码本这么安全,怎么没有听过他的应用了。这是因为香农同时也证明了,要保证安全,一次性密码本的长度之少要和明文同样的长度。

10.4. 这就比较悲催了,A和B之间如果可以用一种安全的方法交换和明文等长的密文,那就可以用同样的发法之间交换明文了,对不对?因为这个原因了,一次性密码本不可能大规模应用,但是他给我们下面要讲的一个现在特别常见的对称性加密 流加密奠定了理论基石

11. 古代加密学

11.1. 我们现在回顾一下加密学的发展历史。和大部分科技一样,加密学的发展是由战争推动的。 我们知道的第一个加密算法是由凯撒大帝于公元前58年发明的,用了指挥军队。这个加密法就叫做凯撒加密法

11.2. 凯撒加密法很简答,就是把明文里面的字母,按照固定的数字像左或是向右偏移。 ppt里面的例子就是把所有的明文向右偏移三位得到的对应的密文。

11.3. 对我喜欢小姐姐按照凯撒加密法就行加密就会得到下面的密文, 用了对付老师和家长是绰绰有余了

11.4. 800年以后,有一个名叫阿尔·肯迪的阿拉伯数据家发布了一本频率分析的著作。这部著作系统的分析和破解了凯撒加密法。 那什么是频率分析呢?简单的说就是每种语言都有他的统计学特征。这张图了,列出了英语字母出现的频率,大家可以看到,最常见的字母是E。

11.5. 通过凯撒加密的密文继承着明文的的统计特征,在向右偏移三位的例子中, 密文里面出现频率最高的字母应该是H。 这样就很容易破解密文

11.6. 凯撒加密法是一种最早最简单的替换加密。一直到现代加密学的出现,替换加密是加密者手中的唯一工具,所有的加密都是替换加密的不同实现方法, 目的是尽量隐藏密文里面的语言统计学特性,从而增加破解难度

12. 加密学和区块链

12.1. 和大部分同学一样,我对加密学的接触始于对比特币技术对研究。哈希函数和椭圆曲线签名是比特币也是大部分区块链项目的安全基石

12.2. 随着区块链自身的发展,大家对区块链提供的服务有着越来越的期望。 哈希函数和椭圆曲线已有不能够支持所有的功能,尤其是大家展望的web3.0的未来

12.3. 举个例子,dfinity和algorand都是在尝试把一些新的比较前端的加密学研究结果实践在区块链之上,从而创造出新的共识机制

12.4. 和区块链扩容紧密相关的链下可验证计算, 零知识证明,都需要加密学的突破。 区块链的大规模使用,很大程度上是需要加密学进步来推动的

12.5. 所有对加密学的了解可以帮助到我们更好的学习区块链和把握未来区块链的方向

12.6. 希望通过这次的分享,可以吸引跟多的小伙伴一群和我学习研究加密学

12.7. 加密学难不难

12.7.1. 了解加密学很简答

12.7.1.1. 高中数学及格就可以理解

12.7.2. 开创安全,高效的加密算法很难

13. 开场介绍

13.1. 大家好,我是王鲁明。现在就职于澳洲一家社交游戏,职位是高级区块链工程师

13.2. 首先谢谢大家抽出时间参与今天的分享,今天和大家分享的题目是 走进加密学。我会尝试着从一万英尺的高空鸟瞰和回顾加密学的历史,希望可以把一下基本的加密学理论和术语和大家解释清楚,对大家以后的学习有所帮助

13.3. 这是分享的主要内容, 加密学和区块链的发展, 古代加密学, 对称性加密,密钥交互机制, 非对称性加密,最后和他们讨论一下,月亮上的加密技术, zkSNARK和隐私计算