根据区块链思想者40人论坛成员、YottaChain创始人王东临先生2018年8月2日晚间在DAGA | Blockchain & AI (核心群)的分享讲座整理。(我们为什么改名叫YottaChain?)
大家好,今晚我演讲的题目是区块链与IT基础架构变迁,我有点拿不准大家的技术背景,所以讲的过程中欢迎大家随时提问反馈,我好控制技术深浅。
一、IT基础架构的四代技术
IT基础架构一般指的是服务器端,在机房里面一般人看不到的地方,为大家提供计算能力和存储能力。
传统的三件套是存储、计算和网络,这个行业经过几十年的发展,历经了四代技术。
第一代是大型机、小型机、工作站等专用设备,每个都高性能,非常可靠,但也很贵,今天在银行业的核心系统还主要是这些设备,反正不嫌贵,而且也不敢迁移。
第二代技术是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%左右需求,同时数据泄露有限,难一点的方法是同态加密,但性能实在太差。
问:如何看量子计算机的研发与加密机制之间的关系?
答:量子计算机离商用还有较大距离,破解能力加强了但加密能力也加强了。我们要相信数学家能提供好的解决方案,密码学上数学家还没有让我们失望过。
问:如何看待btc一类加密货币大量占用电力资源的问题?如果按照16年17年时候的大牛市,很多大公司投巨资加入算力竞赛,照这样的速度大量的电力资源会被用于做加密运算用于挖取数字货币。
版权声明:
1.本文全部著作权归作者王东临独占享有。
2.任何个人或机构如需转载本文,无须再获得作者书面授权,但是转载者必须保留作者署名,并注明出处。
3.作者保留对本文的修改权。他人未经作者许可,不得擅自修改,破坏作品的完整性。
4.作者保留对本文的其他各项著作权权利。