欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

浅析互联网后最具颠覆性创新技术——区块链安全

来源:本站整理 作者:佚名 时间:2016-10-12 TAG: 我要投稿


0×00 引言
近些年区块链呈现井喷式的速度被各行各业所垂青,在证券市场、支付系统、票据与供应链金融、客户征信与反欺诈等应用场景有很大的应用前景。在享有“互联网之后最具颠覆性的创新技术”之名的区块链技术应用背后的安全问题成为不可忽略的重要一环。本文简单介绍区块链并浅析区块链可能存在的安全问题。
0×01 区块链简介
1.1 区块链的起源
自1983年D.Chaum发表第一篇电子现金论文以来,在电子现金方面的研究一直没有间断过,直到中本聪在2008发表了“一个新的电子现金系统”的白皮书,2009年在一个开源的区块链上运行比特币才让区块链进入大家的视野。

说到区块链,大家都会联想到比特币、去中心化、智能合约、记账本、中本聪等关键词。简单来说,区块链就是一个去中心化的分布式账本,是比特币的底层技术。
1.2 区块链分类与特点
1.2.1 分类:公有链(例:比特币)、联盟链(例:R3CEV)、私有链(例:DAH)
公有链:所有的机器都是在公开的网络上面,数量极其庞大,所以没有人能够控制这样的机器去达到个人的 目的,比特币就是一个典型公有链的例子。
联盟链:由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程,其他任何人可以通过该区块链开放的API进行限定查询。
私有链:仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。
1.2.2 特点:分布式(去中心化)、匿名性(无需信任)、开放性(高度透明)、加密安全性(不可篡改)
去中心化:也就是说所有的交易都是点对点发生的,无需任何的信用中介或集中式清算机构;
无需信任:任意两个节点间的数据交换无需互相信任,完全依靠区块链中的交易历史和数据的可追溯,以及共识机制来保证数据交换的正确且不可逆的执行。
开放性:整个区块链网络中的数据是公开透明的,每个节点(参与者)都可自由加入该网络中,下载到所有的数据。
加密安全性:跟当前银行网银系统(特别是公司网银系统)的加密机制类似,区块链的数据结构和交易流程中大量的使用了公私钥来加解密,保证数据的安全性。基于该技术基础,甚至可以应用群组签名来保证共有数据的安全性。另外区块链采取单向哈希算法,每个新产生的区块严格按照时间线形顺序推进,时间的不可逆性导致任何试图入侵篡改区块链内数据信息的行为都很容易被追溯,导致被其他节点的排斥,从而可以限制相关不法行为。
1.3 区块链工作流程
首先客户端发起一项交易后,会广播到网络中并等待确认
网络中的节点对收到的数据记录信息进行检验,比如记录信息是否合法。通过检验后,数据记录将被纳入到一个区块中;
全网所有接收节点对区块执行共识算法(工作量证明PoW、权益证明PoS等);
区块通过共识算法过程后被正式纳入区块链中存储,全网节点均表示接受该区块。而表示接受的方法,就是将该区块的随机散列值视为最新的区块散列值,新区块的制造将以该区块链为基础进行延长。

0×02 区块链结构
2.1 区块
区块是记录在一段时间内发生的交易和状态,是对当前账本状态的一次共识,它由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易组成。区块头是80字节,而平均每个交易至少是250字节,平均每个区块至少包含超过500个交易。


下一区块头hash最大值=后三字节(难度目标)*2^(8*(第一字节(难度目标)-3))
挖矿难度=创世区块链下一区块头hash最大值/下一区块头hash最大值
比特币地址=*1*+Base58(0+公钥hash160+前四字节(hash256(0+公钥hash160)))
hash160(x)=Ripemd160(sha256(x)) 
Ripemd160原始完整性校验消息摘要,建立在md的基础之上,所以,其添加数据的方式和md5完全一样。
每个区块都有一个区块标识符,区块标识符包含区块头哈希值(区块主标识符)和区块高度,区块头哈希值可以唯一、明确的标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块头哈希值。区块头哈希值实际上并不包含在区块的数据结构里,不管是该区块在网络上传输时,抑或是它作为区块链的一部分被存储在某节点的永久性存储设备上时。区块头哈希值是当该区块从网络被接收时由每个节点计算出来的。区块的哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块。区块高度是可以通过该区块在区块链中的位置识别区块的另一种方式。第一个区块,其高度为0,每一个随后被存储在第一个区块之上的区块在区块链中都比前一区块“高”出一个位置,就像箱子一个接一个堆叠在其他箱子之上。和区块头哈希值不同的是,区块高度并不是唯一的标识符,在区块链的增长过程中可能会出现两个或两个以上的区块有同样的高度,这种情况叫做“区块链分叉”
2.2 区块链
当一个节点从网络接受到传入的区块时,它会验证这些区块,然后链接到现有的区块链上,形成如下区块链:

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载