作为一个在高校间运行的研究加密技术和区块链的学术组织,伯克利区块链着眼于区块链技术生态领域的探讨,和在社区内部的普及教育,促进创新的讨论和进展,通过分析具体案例、模型构建和整合解决方案来帮助各公司从区块链技术中受益。据雷锋网AI金融评论了解,该组织成员包括近四十家专业从事区块链咨询和开发业务的机构,将伯克利社区等学界与更广泛的区块链技术生态系统连接起来。本文聚焦在数字签名在加密技术逐渐完善的基础上,一步步取代传统的账户密码的身份识别手段,并讲解其在比特币区块链网络中的具体应用机制。

这是加州大学伯克利分校 CS 294–144课程:区块链、加密经济学,在技术、商业和法律的未来前瞻。

比特币是区块链技术最早落地的应用案例。它的定义起源于Github上的比特币源代码。所以要想深入了解区块链技术,我们首先需要去搞懂比特币的区块链网络是如何运作的。

在今天,关于比特币的未来走向,区块链行业内外有着许多争论。它到底是数字黄金(价值储藏)还是一种全新的支付手段(交换媒介)?让我们从创始人对它最原始的明文定义--比特币白皮书中去找答案:

“一种纯点对点版本的电子现金将允许一方在线上直接发起支付,而无需经过任何金融机构。”

----《比特币:一种点对点电子现金系统》,by中本聪(Satoshi Nakamoto)

该如何完成中本聪提出的这一电子现金系统的设想?教授Dawn Song向我们详细讲述了其中运转的每个零件部分。

只存在于理想世界“零”的版本

一个完美的信任世界。在这里,用户可以直接向他人发送电子现金用以支付。这将使得整个交易流程简单便捷,因为没有中间商和验证流程的存在。但问题在于,在这个透明的世界里,隐私性和安全性将无从谈起,并且在防欺诈上也将无能为力。

在现实世界中,如果有人给了你一张一美元的钞票,对于本人而言知道自己持有这张钞票,而旁人却无从得知。但在线上,这样将有可能导致一个非常重大的隐患:双花问题(Double-Spending Problem)。在文件极易被复制和再造的前提下,如果我直接向你发送一张数字钞票,你将没有任何办法分辨得出来,我给的是原始真正的钞票,还是只是一个副本。

如果我们生活在一个完美的信任世界,我们无须担心上述双花问题。但在现实世界里,诈骗的风险一直存在,这使得我们必须寻找其他方法,来逐步完善线上支付。

中心化账本的1.0版本

对于大部分的用户,他们在进行线上商务活动时会选择一个可信第三方,来追踪资金的归属。用户通过了基于密码验证的身份核验环节后登录到一个中心化的网站,而这个中心化的网站可以对每一笔交易进行检查,以确保每个买家在交易中都钱花出去了,并且是他们真正所有可支配的资金,并保证每一个卖家都收到了账款。这一切都是通过中心化的账本来实现的。

通过这个系统,用户能够确实能够体验到简单便捷和快速的交易性能,这个可信第三方也有能力修复错误和取消交易。但是,它亦暴露出了不少问题:极其低下的安全性(用户密码有被盗的风险)、该中心化第三方的不公正性风险(该第三方会作弊或在裁定交易分歧时判决不公平),以及在隐私性保护上没有任何针对措施(没有任何一样事务是完全匿名的)。

这种类型的系统有一个很好的例子:Venmo。Venmo能够对经过它的中心化账本发送或接收的每笔支付进行追踪。具体到每一笔支付中,它会从买家的账户中扣除钱款,并将这笔钱存入卖家的账户。但如果你是Venmo的用户,你首先得相信Venmo能将公平准确地处理每笔交易。

2.0版本:数字签名的诞生替代密码验证

在2.0版本中,用户开始使用数字签名以进行身份核验,来取代输入用户名和密码的验证方式。

使用密码登录的验证方式的确显现出了很大的便利性,但与此同时它存在着重大的安全漏洞,在安全性上很脆弱。中心化第三方实体需要花大量精力对这套验证系统进行维护管理,然而它依然极易遭到攻击。在过去数年里,公司被黑客入侵的事件屡见不鲜,产生了许多受害者。

由此,出现了一种替代密码验证的全新身份核验手段:数字签名。

当你在现实世界中签下你的名字,其唯一性使得别人都知道这个签名代表着你本人,当这个签名与一份特定文档绑定在一起时,例如签署在文末,这就意味着这个签名不能够被用以表示你本人同意另一份文件。

比如教皇,至今仍使用如图上的这种戒指图章来签署文件(更常见于几个世纪以前)。通过将这枚戒指压印在蜡中,图像才能最终成形。而这个图像,在理论上,是被公众熟知所认为专属于教皇的签名(因为没有其他人拥有这枚戒指)。

现在,我们假定有个叫Emily的人需要设置一个数字签名,她将首先需要生成一个公钥(Public Key,以下图中简称PK)和一个秘密的私钥(Secret Key,以下图中简称SK)。公钥就类似于教皇戒指的印记,而私钥只有Emily自己知道,就如同是教皇的这枚戒指,只教皇一个人控制支配并从来不与其他人共享。

当Emily需要发送一段信息时,她将要将她的私钥和这段信息一同输入,通过应用到数学转换后,生成了Emily在这段信息上加注的数字签名。然后,当你接收到这段信息后,你就可以通过这个签名以及公钥,来检验这段信息是否真的是Emily用她的私钥所签署过的,来辨别真伪。

为什么我们需要数字签名?出于更高安全性的考虑。当你使用私钥进行加密后,一个中心化的第三方实体或黑客将无法伪造或篡改你的交易(除非他们设法取得了你的私钥)。由于用户的私钥不是保存在这个中心化实体的服务器上,黑客在入侵这些服务器后,也无法偷得用户的信息。也正因为如此,数字签名还有了隐私性的保障。和以往要向中心化的第三方实体提交个人信息不同,用户可以通过提供类似笔名的公钥来进行身份验证。

但无论如何,值得注意的是,用户没有办法把他们的私钥单单存储在脑海当中,如同此前他们凭记忆保存他们的用户名和密码一样。启用私钥后,对于个人而言,用户还需自行对他们的私钥进行管理。

而对于那些中心化的第三方实体来说,它们同样需要在服务器上对公钥进行管理。因此,因为公钥与用户的个人身份存在着一定的联系,隐私性有被泄露的风险。最后,中心化的第三方实体依然有办法实现作弊和发起任何不公平的行为,因为它们仍然掌管着这个交易所必需的中心化账本。它们能够随意拒绝或不执行用户的交易,甚至能撤回篡改交易。

3.0版本:引入区块链加数字签名的批次交易

在这个版本中,用户依然可以在每笔交易中签署添加数字签名。用户依然需要对自己想私钥进行保管,而公钥依然存储在中心化的第三方实体那里。并且,这些实体依然管理着账本。

但有所不同的是,这些中心化的第三方实体每十分钟就需要将数字签名应用到成批次(加上以往批次)的交易当中,这些就被称作是“区块”(Blocks)。

一个区块就是一批次交易加上数字签名的集合。而整个链条则包括了一段时间内的所有交易。这就是为什么它被称作为“区块链”的原因。

相对2.0版本来说,这是一个很大的提升和进步,因为第三方实体不再能够罔顾事实删除交易数据,或面对不同的用户提供不同的批次交易。但由于账本仍然是中心化的,中心化的第三方实体依旧可以任意拒绝或发布交易。

在以往我们讨论过,过度信任这样一个中心化的实体会产生什么问题。银行可能会走向倒闭,政府会对贸易活动进行限制,还会冻结资产,甚至会引发恶性的通货膨胀。所以如果公众可以在交易中有所创新,无需信任中心化的第三方实体,这将是一件伟大的事情。

4.0版本:比特币的诞生

在比特币的区块链网络里,用户可以实现真正的隐私性保护(他们的身份对应于密钥),每笔交易在签署数字签名后在区块链上发布进行。最大的区别在于,账本是完全去中心化的。

实现了完全的去中心化,意味着整个社区都在记录维持着纯公共化的账本,由此没有任何一个单独的组织能够对交易进行限制。而在区块链上,对这个公共账本进行记录维持和验证的途径就是挖矿。网络通过制定一名参与者的方式来对区块上的交易进行排序。所有的矿工彼此竞争,都希望成为这一个对交易进行排序的唯一玩家,原因在于这个幸运的胜出者将由于创造了下一个区块而获得了额外比特币的奖励,这些奖励由系统产出(通常来说,每位矿工的奖励为12.5比特币)。

如何具体挖矿:投入算力竞赛的赌博行径

Professor Song 将挖矿形容为“哈希老虎机”。一个哈希函数通过特定的输入后,应用于函数转换后生成一个单独的随机的输出结果。谁最快找到这个正确的输出结果,就得到创造下一个区块的权力,也就赢得了这笔奖励。从这点来看,挖矿的确是碰运气的事,就像买彩票一样。

值得注意的是,哈希函数有几个重要的性质:

  • 抗原像性(Pre-image resistance):给定一个输入后,从计算机科学的角度来讲很难去确定一个输出。
  • 抗碰撞性(Collision resistance):非常困难实现两个不同的输入得到同样的输出。
  • 确定性(Deterministic):给定输入的输出总是同样的结果。
  • 看起来随机。
  • 隐藏有关输入的信息。
    所以,矿工们的挖矿机器计算哈希函数的速度越快,成为第一个挖得下一个区块的可能性就越高。这就是工作量证明(proof of work )系统。无论是谁,只要投入了最多的算力都将被赋予挖掘下一个区块的权力,和得到系统奖励的比特币。而挖掘出来新的区块包含了上一个区块的哈希值和交易信息,以及被称为“nonce”的随机数(胜者的中奖彩票券:一串提供理想哈希值的数字,赋予了矿工创造下一个区块的权力)。

当矿工们同时找到一个区块时,会发生什么?


(如图所示,绿色区块是创世区块。黑色区块链条是被大众所接受的链条,故紫色链条即遭废弃。)

当矿工们同时找到了同一个区块,就会发生分叉现象(Fork)。这种情况经常发生,而更长的链条将会胜出。更长的链条也是承载了最多工作量的链条,紧接着后续的区块就会被添加到这条链上,而另一条链就遭废弃。在废弃区块中被写入的交易在之后将会被添加到胜出的区块链网络中。

在比特币中体现了哪些区块链技术特性?

  • 区块链是严格排序的信息序列。
  • 写入区块的权限是基于区块链网络设定的规则,而读取的权限是全球性的。
  • 没有信息可以被修改(不可篡改性)。
  • 没有中间商。
  • 更加透明化。
  • 理论上,交易效率可以被优化提升,并像传统金融工具一样进行清算和结算。
    Professor Song将区块链形容为具有一致性的分布式公告牌(每个服务器得到的结果一致),同时具有可用性(新出现的交易处理效率更高)。但区块链所蕴含的潜在优点远不止此。分布式系统要实施正常运转非常困难,比特币也还实现低交易费用、高交易效率的性能,也尚未成为一种真正的价值储藏、交换媒介或账户单位。

他最后引用这样一句话作为结束:

在一个分布式系统中,你的电脑可能会因为一个甚至你都没有意识到存在的计算机故障而导致瘫痪。

----Leslie Lamport(图灵奖得主,计算机科学家),1987

原文发布时间为:2018-02-05
本文作者:吴阳煜
本文来源:雷锋网,如需转载请联系原作者。

伯克利区块链课程:替代密码验证,比特币应用数字签名的进化之路相关推荐

  1. 令众多高校趋之若鹜的区块链课程是否真的物有所值?

    培根有言"知识就是力量",这句话曾被无数人当做人生格言.即便进入信息时代,这句话依然散发着理性的光芒,值得所有人去重新解读并在工作中加以运用.随着就业市场的竞争日趋激烈,掌握一些新 ...

  2. 区块链课程——高校兴起“加密教育热”

    随着对区块链技术深入了解的需求日益增加,商学院和高校正在争先启动加密货币和区块链课程.但究竟应该教授什么?应该由谁来教授呢?随着学术积累的不断增加,学界也在争论加密货币教育的未来之路该走向何方. 需求 ...

  3. 全球27所大学开设区块链课程,这门课究竟该教什么?

    全球27所大学开设区块链课程,这门课究竟该教什么? 根据链塔智库的报告可以注意到一个现象,尽管早在2014年就有高校开设区块链课程,但直到2018年,都未有高校设立专门的本科区块链专业.陈滢认为,区块 ...

  4. 高校很时髦,只恨毕业早,你母校开区块链课程了吗?

    自区块链技术爆发以来,越来越多的企业涉足其中,行业对人才的需求迫切. 学术界则以其知识领域的核心竞争力迅速入场,2014年,随着区块链的起步和初期发展,美国和英国最先开设区块链课程,此后世界各地的高校 ...

  5. 区块链需要学习哪些东西_区块链课程需要学习哪些内容?

    现阶段随着区块链技术和相关应用的发展,区块链领域正在变得炙手可热,很多朋友看到了区块链的发展前景和空间,纷纷投身于区块链的学习中.那么,区块链课程需要了解哪些内容呢? 1.区块链主流语言--Go语言. ...

  6. 为培养区块链工程师,东京大学加设区块链课程

    区块链虽已渐入我们生活,但区块链开发人才依然很紧缺.东京大学工程研究生工程院开始提供区块链课程,由ETF基金会和日本银行巨头三井住友出资80万美元.据三井住友(Sumitomo Mitsui)的声明, ...

  7. 美SEC主席的区块链课程和监管态度

    (图片来源于网络) 8月3号,美国证券和交易委员会(U.S. Securities And Exchange Commission,简称SEC)在官网上发布了一篇公开陈述(public stateme ...

  8. 怎么评价牛津大学开设区块链课程?

    策划|Tina编译|核子可乐区块链前哨导语:继去年英国关闭 800 家银行之后,越来越多的传统金融工作受到人工智能和区块链的影响.针对新技术带来的变革,牛津大学商学院正在加强科技金融和区块链在线战略计 ...

  9. 重磅!浙大开设区块链课程,影响70%的程序员?

    2018年,区块链技术可谓是最热的宠儿.在国务院去年印发<"十三五"国家信息化规划>中,区块链技术和人工智能.虚拟现实.大数据.无人驾驶交通工具.基因编辑等新多项高新技 ...

最新文章

  1. C#中通过list的GetRange方法对list进行按执行长度截取并拆分
  2. 智能判断图片中是否存在某物体_智能家居组件漫谈——人体传感器
  3. c# in deep 之Lambda表达式
  4. 图论 BZOJ 3669 [Noi2014]魔法森林
  5. 中国无人车第一案剧情突变:景驰投入百度Apollo怀抱,下周或和解收场
  6. 方法论:怎样练习一万小时
  7. 解决Windows10无法卸载Edge浏览器,亲测有效
  8. python调用子函数_类中的Python调用函数
  9. randn函数加噪声_Matlab笔记——AWGN函数详解与实例——AWGN加性高斯白噪声+QPSK调制...
  10. 教父:花半分钟就看透事物本质的人,和花一辈子都看不清本质的人,注定是截然不同的命运...
  11. 烤仔说 | 最强攻略带你玩转NBA Top Shot
  12. R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,nrow参数指定行的个数、byrow参数指定按照列顺序排布图
  13. SAP 读取凭证抬头文本或项目文本
  14. 矩阵的分解_QR分解
  15. collapse 微信小程序_详解优化你的微信小程序
  16. 使用RStudio导出高清符合要求的SCI图片
  17. Ubuntu20.04查看和修改输入法切换快捷键
  18. 聊聊BIO,NIO和AIO
  19. 无人船也要来了!“陆海空”终将全部进入自驾模式
  20. 【Python绘图】绘制Mascot

热门文章

  1. Android Volley
  2. livedata mvvm_Android MVVM LiveData数据绑定
  3. 多重搜索算法_Android多重搜寻,例如传送,搜寻联络人
  4. ElasticSearch的javaAPI之Client
  5. Java基础篇:如何使用return语句
  6. CS229学习笔记(3)逻辑回归(Logistic Regression)
  7. 【Linux】Linux JSON 格式化输出
  8. scrapy常用设置参考手册
  9. 深入理解JAVA中的NIO
  10. 性能优化总结(三):聚合SQL在GIX4中的应用