【小哈划重点:密码学不仅仅是加密这么简单,密钥管理才是核心。量子计算机离商用还有较大距离,破解能力加强了但加密能力也加强了。我们要相信数学家能提供好的解决方案,密码学上数学家还没有让我们失望过。】
王东临:区块链思想者40人论坛成员,书生集团/书生云/YottaChain创始人,中国十大青年科学家,中国软件行业十大杰出青年,首届中国杰出工程师,OASIS国际工业标准组织UOML-X技术委员会主席,民进北京市委委员,中华杰出工程师委员会副会长,北京民营科技企业家协会副会长,密码学/分布式存储专家。
2018年8月2日,王东临先生在DAGA | Blockchain & AI (核心群)做了专题分享,主题为:区块链和自组织。以下文字根据讲座的语音整理,已经过作者审核。
大家好,今晚我演讲的题目是区块链与IT基础架构变迁,我有点拿不准大家的技术背景,所以讲的过程中欢迎大家随时提问反馈,我好控制技术深浅。
一、IT基础架构的四代技术
IT基础架构一般指的是服务器端,在机房里面一般人看不到的地方,为大家提供计算能力和存储能力。
传统的三件套是存储、计算和网络,这个行业经过几十年的发展,历经了四代技术。
第一代是大型机、小型机、工作站等专用设备,每个都高性能,非常可靠,但也很贵,今天在银行业的核心系统还主要是这些设备,反正不嫌贵,而且也不敢迁移。
天才的Google
第二代技术是Google为代表的互联网公司,用廉价的PC来做服务器。单台设备的可靠性很差(相对大机来说),但可以拼数量,靠冗余算法来保证可靠性。单台设备的性能也很低(最早可能也不过是双核CPU),也是靠数量来堆积性能,例如一台设备只有IBM一台大机1/10的性能,那我就堆30台服务器,只要同时坏的服务器不超过10台,我的性能就比IBM大机还高一倍,价格只有十分之一。靠冗余算法是可以很长有效地提高整个系统的可靠性的,冗余率提高几个百分点,可靠性是数量级的上升,以刚才的例子来说,不仅省了很多的钱,而且整个系统可靠性可能还提高了一万倍,但这样对软件要求比较高,软件有个bug就全完了。所以一开始也是Google这种绝顶高手开始搞,后来整个互联网界就都流行了。Google的第一个机柜现在已经成了文物了,主板上插几块卡,乱七八糟的走线,连机箱都没买,这样几个很穷的技术天才就把现在的世界第一大网站搞起来了。
钱多人傻的阿里巴巴
我知道的大网站只有一家是用的第一代技术,其它用的都是第二代技术,这个比较特殊的大网站是谁呢?就是钱多人傻的阿里巴巴。
马云在技术上最多算一个小白,又融到很多钱,就用第一代技术构建了网站。这样在当时最省事,但第一代技术不仅费钱,对互联网公司来说还有一个致命的缺点,就是不能水平扩展。也就是说,随着业务量的增加,只能搞垂直扩展,即将单台机器越换越大,而不能通过增加机器数量的方式来提高响应能力。互联网一旦搞大了,其访问量其实比工农中建等大银行还要大,IBM也解决不了这么高的性能要求。马云只好另想办法解决问题,正好那时候第三代技术兴起,他就跨过第二代直接上了第三代技术。第三代技术是什么呢?就是虚拟化上云。
虚拟化上云
我们都听说过阿里巴巴“去IOE”的口号吧?我们都知道阿里云现在很牛吧?IOE就是指的第一代技术,去IOE是淘汰第一代技术,但并不是上第二代技术,而是直接搞阿里云上第三代技术,为什么要搞虚拟化呢?因为一台服务器都是按照最大访问量来设计的,但一年可能都不会有十分钟能达到最大访问量,甚至很多应用场景下永远也达不到。这时候服务器利用率很低,CPU使用率不到10%,很多单位的服务器的CPU使用率都只有2%-5%。虚拟化可以将一台服务器开很多个虚拟机,这些虚拟机共用服务器的物理资源,但是每个虚拟机上跑的程序都以为自己使用的是完整的服务器,完全感知不到是在虚拟机里,可以完全兼容原来的所有软件,这样就可以大幅提高服务器的使用率。而且在理论上管理虚拟机比管理服务器要更方便些。例如开机关机,只要远程发几个指令,就可以让一个虚拟机关机、重启,而开机关机物理服务器可就麻烦多了,也慢多了,一台服务器可以开几十台甚至更多的虚拟机,虚拟机总数量很快就达到数百甚至数万,用人管就管不过来了。
管不过来怎么办呢?就用云管平台来替你管。云管平台不仅大大简化了运维管理的工作量,还有很多的作用,像您说的宕机问题就可以解决了。
云平台
任何服务器宕机了,云管平台就把这台服务器上跑的工作负载(虚拟机)迁移到其它服务器上,继续跑,这样靠冗余来解决硬件可靠性问题,虚拟机会认为是永远不会出故障的,最多偶尔重启一下。
云管平台还提供统一的资源池管理,这是云的一个重要特征,安全问题等会儿会讲。过去第二代技术是烟囱式的,就是说每个业务系统都有自己独立的软件和硬件,谁也不影响谁,或者称为竖井式的。这就像停车位,每个车位上都写有车牌号,只有这个车牌的车才能停这个车位。但对于超市、写字楼来说,假如停车场也这样管理,每个车位都是被一辆车独占,不管这辆车在哪里这个车位都为这辆车所保留,那可就惨了,一万个车位也不够用的。这时就有了资源池的概念,需要资源就从池子里分配,用完了再还到池子里。商场写字楼的停车位就是这样,来一辆车分配一个车位,走了交还这个车位,供下一辆车用,这就是资源池的模式。
云平台就有资源池化的说法,变成一个个资源池之后,云管平台管理各种资源池,例如存储资源池,计算资源池,当然,我这里讲的“云”指的是“云”的技术架构,不是指商业模式。“云”这个词现在有了多种含义,除了本意之外,也代表一种技术架构,也代表一种商业模式,还有其它泛化的用法。
超融合
现在第四代技术也开始出现了,但还没发展起来,就是超融合。
任何产业的发展,都有一个重要的分水岭,就是从面向专业用户转向面向非专业用户,超融合就是要跨过这道分水岭的一代技术。过去IT基础架构特别专业,特别复杂,没有很多年专业积累都玩不转,很多产品甚至还要用户考认证工程师,例如Cisco认证工程师,华为认证工程师等,这些ToB的产品一般都是工程师设计,为工程师用。我们想象一下,如果我们买一台电冰箱,需要先考一个海尔认证工程师,买一台电视,需要考长虹认证工程师,会不会很荒唐?这是产业不成熟的早期阶段才会发生的事。而超融合就是要解决这个问题,让IT基础架构变成让非专业用户也能用,只要掏钱就可以买,或者说,就像需要对光圈对焦距的专业相机变成傻瓜相机,对着取景框按快门就好。
超融合将存储计算网络等设备都封装在一个机柜了,整机交付给用户,用户不需要像以前那样买散件组装,不需要管理维护内部模块,只需要买整机回来开箱就用,平常只需要操作面板就行,不需要学习很多专业知识,也不需要7x24小时都盯着。而且在这种模式下,也给了超融合厂商进行技术优化的空间,可以将原来涉及很低技术领域的东西融合在一起,打穿打透,性能进一步提高,成本进一步降低。
二、边界安全、系统安全与数据安全
刚才有人提到安全,我就顺便说一下,也正好从这个问题可以转到区块链上。
信息安全分为几个部分,简单说包含网络安全、系统安全和数据安全。网络安全就是靠防火墙这样的产品,御敌于国门之外,所以也称为边界安全,缺点是不可能永远准确地识别出来谁是好人,谁是坏人。就像北京的进京检查站,也经常能查出坏人,但不可能所有坏人都查出来,也经常误伤了好人,更何况有些人进北京时不是坏人,进了北京之后才变成坏人的。
边界安全
系统安全是保护计算机不被坏人所控制,典型的就是360的杀毒、防木马,我们知道,这也不可能做到100%绝对安全。
数据安全是让坏人看不到你的数据,就算拿到数据了也不能解密,不知道是什么内容,刚才提问的指的肯定就是数据安全问题。他不是担心阿里云的防火墙被攻破了,也不是担心阿里云的服务器被黑客控制了,是担心自己放在阿里云上的数据被阿里巴巴偷看了。这时,潜在的坏人就是阿里云的后台管理员,有最高权限的管理者。这种情况下,所有的网络安全措施、系统安全措施统统没用,只能靠数据安全来保护。
数据安全
数据安全采用的是加密加上密钥管理的方式,让没有密钥的人即使拿到你的数据也一筹莫展。过去很多加密是靠加密算法,算法如果被泄露了后果很严重。后来经过很多数学家的贡献,发展成算法可以公开,只要保护住密钥就行,你就算拿到密文,知道加密算法,甚至拿到全套源代码,只要没有密钥,就永远不知道明文是什么。而且密文没有特征,各种攻击方法都失效,唯一的办法就是猜密钥。但密钥只要足够长,那哪怕是世界上最快的计算机来猜,直到地球都毁灭了(几十亿年)也不能穷尽所有密钥组合。理论上,也有可能猜几次密钥就猜出来了,但这个概率实在太小,小到比你中奖500万小,比出门被坠落的小行星撞死的概率都要小。所以虽然从科学意义上仍然达不到100%绝对安全,但从工程意义和商业意义来说,可以认为是100%绝对安全了。也就是说,网络安全和系统安全都绝对做不到100%安全,但数据安全可以做到。所以,你的数据如果做好的加密,可以做到云平台的后台管理员想作恶也不能。正好,区块链也是基于密码学应用构建的,和数据安全用的是同样的技术。
三、区块链的基础架构就是密码学
现在我们谈谈密码学的基础。
密码学不仅仅是加密这么简单,密钥管理才是核心。加密分为对称加密和非对称加密。对称加密就是同一把密钥,既用于加密也用于解密,一般人能想象到的密码算法都是对称加密的,例如我们看电影的时候那些间谍用的密码本就是对称密钥,既用于加密,也用于解密。非对称加密也是数学家的一大贡献,有天才数据家想出了一个办法,可以让加密密钥和解密密钥不一样,而且相互不能推导。什么意思呢,就是你即使有了加密的密钥,你也知道加密算法和解密算法,但你只能加密,不能解密,同样,即使你有了解密密钥,你也知道所有的算法和实现的代码,但你只能解密,不能加密。
也许你觉得只能解密不能加密没什么意义,其实意义大着呢。
非对称加密
非对称加密算法被发明出来之后,人们就可以将其中一把密钥公开,称为公钥,另一把密钥留自己手里,称为私玥。其实每把密钥都是既可以加密也可以解密的,只是公钥加密的密文,需要用私玥才能解开,用公钥是不能解开的;同样,用私钥加密的密文,用公钥可以解开,私玥自己也是不能解开的。也有一些应用场景不公开任何的密钥,这时再称“公钥”就不准确了,但很多时候也照样这么称呼,约定俗成习惯了,只是这时的公钥也是不公开的。还有一种习惯说法,用公钥加密是加密,私玥解密是解密,用私玥加密却常称为签名,公钥解密称为验签。
说到这里再介绍两个概念。首先是数字摘要(Hash,哈希)。
hash是一种算法,可以将任意长度的数据计算后变成固定长度的结果,而且数据有变化的话结果也会变化。最简单的hash算法是将数据的每个字节都相加,溢出的不管,最后形成8位数的一个结果。可以想象,由于数据是任意长度的,映射到hash值的时候一定不是唯一映射的,一定是多个不同的数据都能对应同样的hash值。当hash取值足够长的话,是可以做到你就找不到第二个数据有同样的hash值。两个数据有同样的hash值称为hash碰撞,就相当于撞脸了。现在数学家又登场了,数学家发明了一些非常好的hash算法,可以做到你知道hash值是根本推导不出来原来的数据的,你也没法去构建一个数据,其hash值刚好就等于特定值。像我刚才举例说的挨个字节相加,不仅只有8位长度不够,而且就算长度足够长(例如128位分组相加),也很容易构建一个文档具有特定的hash值。真正的hash算法是你根本就构建不出来的。
哈希算法
好的hash算法可以带来的好处是,由于hash碰撞的概率可以忽略不计,因此一个hash值就代表一个文件,所以也称为数字摘要。如果有一个公开的hash值,那另外一个人如果能拿出来跟这个hash值对应的文件,那就可以肯定这个hash值就是这个文件产生的,而且即使hash值被公开了,也不会泄露任何文件信息。另外一点是,非对称加密的性能是很差的,所以没人对整个文件都用非对称加密算法进行加密,而是先用一个对称密钥进行加密,再用非对称密钥来对这个对称密钥进行加密。
那对一个文件进行加密的时候会怎么办呢?首先是生成一个随机的对称密钥,用对称密钥来对文件进行加密,然后用公钥来对对称密钥进行加密,密文后加密后的密钥可以保存起来,即使被偷了也不怕,没有你的私玥,任何人都解不开这个文件,等你要用这个文件的时候,用私玥解密,解出来对称密钥,再用对称密钥对密文进行解密,就得到明文了。这是一个典型的加密流程。
签名
那签名又是怎么回事呢?
先对这个文件计算hash值,然后用私玥对hash值进行加密,加密后的结果保存起来。这个加密后的结果称为签名数据,代表你认可了这个文件,和签字盖章是一个意思,以后验证的时候,任何第三方重新算一遍这个文件的hash值,同时用你的公钥解密签名数据,比较解密后的数据是否等于这个文件的hash值,如果相等,就说明你对这个文件签过名了。
前面说过,hash碰撞的概率可以忽略,你的私玥只有你有,别人也没有,用你的私玥对这个hash值进行加密,就意味着你认可了这个hash值对应的文件。除非是这种情况,否则没有任何人能构建出这个签名数据,007也不行。数学很神奇吧?
区块链用了hash,用了签名验证,但其实没用加密解密。签名验证和加密解密其实是两回事,从前面的例子也能看出来了。我看很多文章将hash算法也称为加密算法,这是外行说法。原来比较流行的对称加密算法是DES,这是原来美国的军方标准,将加密算法做成标准之后就可以大规模批量生产密码机了。但DES强度不够,随着计算机性能的飞跃发展,已经不够安全了,所以后来发展到了AES,就是更先进的加密算法的意思,这是现在专业人员常用的算法。最知名的非对称算法是RSA,是三个数学家发明的,这三个数学家的首字母缩写就是RSA,他们是非对称算法的发明人。但随着技术的不断发展,RSA也不够可靠了,这三个数学家当时加密的一句话后来也被破解了。现在专业人员用的是ECC,也是比特币用的。
区块链的基础架构是密码学
Hash算法也有类似情况,最常用的是MD5,但这个算法被中国一个教授破解了。所谓破解了hash算法就是可以构建出具有指定hash值的数据。当然,这个“破解”也没那么严重。一方面是破解的代价不小,更重要的是构建出来的数据并不太可能有意义的数据,当然,这个“破解”也没那么严重。例如,如果你是对一个word文件计算的MD5,构建出来的另一个文件可以具有相同的MD5值,但就不可能也是一个能打开的Word文件了。所以对于一般的文档文件还是风险不大的,但对密钥就不行了。由于密钥是可以任何随机数,那对密钥计算MD5数字摘要就不靠谱了。我和破解MD5的王小云教授交流过,她也是持同样的观点。那专业人员用什么呢?用SHA256,这也是中本聪的选择。其实我还有一个更好的方法,就是用双hash。用两种不同的算法分别计算hash值,这时第一个hash值碰撞后还能做到第2个hash值也碰撞,那就比碰撞出一个能打开的Word文件还要难。
总之,一句话,区块链的基础架构就是密码学,YottaChain做的是在区块链上构建“存储+加密+计算+网络”的完整基础架构能力。
时间就快到了,先讲到这里,看看大家还有什么问题。
提问互动
问:王总辛苦了。有两个问题请教您。一、区块链交易记录可否加密,如果可以,如何防止双花。二、目前云计算平台实际应用的密文访问控制和密文搜索机制有哪些?谢谢!
答:第一个问题我还没有深入研究,拍脑袋想想似乎有一定可能性,这个可能性需要设计一套比较复杂的机制,就是说在不知道具体记录的情况下验证其账户余额。我能理解你的问题,现在区块链其实是没有隐私的,这样的机制如果搞出来了意义是很大的,但既然现在没人提供,肯定不会那么简单,至少我现在想了两分钟,还没有找到好的方法,但也没有证伪。
第二个问题,密文访问控制相对比较容易些,就是用密钥管理的方式来做。像我以前做的云盘系统,有几十亿把密钥,有加密数据的密钥,对密钥进行加密的密钥,包括会话密钥、交换密钥、工作密钥、主密钥等,最终效果就是只有拿用户私钥才能访问这个用户的数据,并且在这个前提下可以分享数据,将数据授权给别人用。减少密钥数量的意义并不大,占的空间很有限的。密文搜索比较难,简单方法是只搜索目录和标题,能满足98%左右需求,同时数据泄露有限,难一点的方法是同态加密,但性能实在太差。
问:如何看量子计算机的研发与加密机制之间的关系?
答:量子计算机离商用还有较大距离,破解能力加强了但加密能力也加强了。我们要相信数学家能提供好的解决方案,密码学上数学家还没有让我们失望过。(视觉设计 | 蘇四)