域名币(Namecoin)系统分析_区块_域名
中国科学院大学 中国科学院打算机网络信息中央 吴双力
择要: 名字做事在互联网领域是根本做事。名字做事的紧张需求有安全性、去中央化和易于影象。长期以来这三个需求被认为难以同时知足。而域名币(Namecoin)系统被认为同时知足了这三个需求。同时,在它的根本上还不断扩展出其他运用包括物联网设备互联、去中央化认证等。因此,域名币系统综合了名字做事、安全做事、分布式做事的特点,具有很高的参考代价,本文针对该系统进行剖析。
关键词:比特币,区块链,域名币,认证,物联网
1.域名币系统简介
域名币是去中央化的开源信息注册与转移系统,域名币以比特币为根本。域名币能安全的记录和转移任意名字(或键值),将名字和其值(数据)关联;域名币本身是一种数字货币,可以用来进行域名币交易。
域名币能够使网络对抗审查、保护网上的辞吐自由。这紧张是由于域名币系统完备是去中央化的,个人访问互联网或者注册域名都不须要与特定的机构联系从而避免被审查。域名币系统可以用来访问.bit域名;存储实体信息例如邮箱、GPG密钥,比特币地址,TLS指纹,比特币信息地址等。域名币系统可以存储人可识读的.onion洋葱域名。比特币域名可以用作为文件署名、选举、股票、信赖网络、第三方支付等运用的根本。
域名币系统被认为是破解了Zooko's不可能三角。该三角是安全学者Zooko Wilcox-O'Hearn提出的一个猜想,该猜想指出对付网络协议中的命名系统来说故意义性、去中央性和安全性只能同时知足个中两个,不可能三个都知足。故意义性是指:对命名系统的用户来讲名字故意义并可影象。例如域名系统。区中央性是指:命名系统不须要一个中央的授权机构定义名字的意义。域名系统就不是去中央的,它只有一个中央授权机构。安全性是指:名字映射到独占的详细实体。例如域名系统是独占的由于只有一个机构可以证明域名的所有者。例如DNSSEC知足了安全性和故意义性,但不知足去中央性。域名币系统同时知足了故意义性——它利用人可影象字符,去中央性——不须要一个中央授权机构,安全性——可以担保域名映射的独占性。
域名币系统的基本规范沿用了大部分现有域名干系规范。域名币系统中的名字域(域名)以 “d/”开头,随后是域名,兼容域名币解析的解析器会自动加上顶级域.bit后解析。例如d/example。域名币系统的名字域遵照RFC1035《域名 - 实现和规范》的规定。域名币系统的名字域兼容国际化域名的标准,Unicode编码的名字须要先根据国际化域名标准转换成ASCII码兼容的编码后再进行注册。域名币的值域是UTF-8编码的JSON工具,最大520字节,区分大小写。域名币系统的值域根据现有域名的记录类型定了json的条款。例如\公众ip\"大众对应域名系统里的A记录,“ipv6”对应域名系统里的AAAA记录等[1]。
2.域名币系统的设计规则
域名币系统以比特币为根本,在此根本上增加了域名干系的操作。紧张的操作包括:
name_new(hash(rand, name), value) 创建新域名
name_firstupdate(name, rand, value) 域名首次更新
name_update(name, value) 域名更新
这三种操作和域名币的交易关联在一起。域名首次更新操作须要网络用度。收费后这个以域名币计费的用度被销毁掉。也便是说事实上并没有一个机构收对域名币的域名操作收费。网络用度只是防止域名“淘金热”的一种方法,防止大量无效域名注册、占用掉好的名字资源。
域名操作的详细规则如下:域名首次更新(name_firstupdate)操作会在域名注册(name_new)12个区块韶光(约120分钟)之后被接管。如果名字注册发生冲突第一个不可忽略域名注册生效。名字是一个最大长度为255的字节串,值是最大长度为1023的字节串。只有当支付的网络用度不低于当前的系统网络用度时域名交易才会被插入域名链。网络用度以50个域名币每次操作开始,从起始区块开始打算。每个区块的网络用度递减,每8192个区块韶光(约两个月)就会减半。如果在36000个区块韶光(约200多天)内不更新,域名过期,这个哀求类似于域名里的续费操作。在传统域名系统中域名的拥者如果认为域名还应连续生效,就须要续费,在域名币系统里须要进行更新。
域名币中的名字常日阐明为以\公众/\公众分割的字符串组成的UTF-8字符串。第一个元素是运用标识符。对付域名系统,第一个元素必须是“d”并且仅有两个元素。可以将名字大略的映射到顶级域.bit:d/xyz=>xyz.bit。其对应的值域用区文件(zone file)标准阐明。对付个人公开名字,第一个元素必须是“p”并且仅有两个元素。其对应的值域以json格式的hash值阐明,个中的\"大众key\"大众元素包含了PGP编码的秘钥。
3.域名币系统的技能根本
域名币系统以比特币为根本。它利用了同样的事情量证明算法,并且货币总数为2100万个。但是它有自己独立的区块链(blockchain)。它在比特币的根本上实现了额外的远程过程调用(remote procedure call)命令。通过这些命令用户可以记录和交易区块链中的任意名字和相应的数据。因此域名币系统的技能根本是分布式网络根本上的区块链、韶光戳、事情量证明等。
3.1 区块链
区块链被认为是比特币系统的最大创新之一。区块链是所有网络参与节点之间共享的交易数据库。每个区块包括前一个区块的哈希。每个区块是不可以通过打算变动的。由于如果它被改变,它之后的每个区块必须随之改变。这些特性使得双花(double-spending)比特币非常困难。通过区块链比特币办理了数字货币的一个关键问题。区块链数据通过洪泛协议广播到每个网络节点。
每个区块包括一些或所有近期交易、前一个区块的引用、以及其他数据。它还包括一个事情量证明的结果,该结果对每个区块是唯一的。 [2]。事情量证明的结果很随意马虎验证,没有通过事情量证明的区块不会被加入区块链。区块头的数据构造如表1。
表1 区块头数据构造
数据项
描述
更新条件
长度 (Bytes)
版本
区块版本号
软件更新时
4
前一区块哈希
前一区块的256-bit 哈希
新区块产生时
32
哈希Merkle树根
256-bit hash based on all of the transactions in the block
交易被接管
32
韶光
当前韶光戳,以秒为单位 1970-01-01T00:00 UTC
每隔几秒钟
4
难度目标
当前目标值(压缩形式)
难度调度时
4
随机数
32-bit 数字 (初始值0)
考试测验一次哈希
4
区块的数据构造如下表2。
表2 区块数据构造
数据项
描述
长度
Magic no 邪术术
总是0xD9B4BEF9
4 字节
Blocksize 块大小
到区块结束的字节长度
4 字节
Blockheader 块头
包含6个数据项
80字节
Transaction counter 交易数量
正整数 VI = VarInt
1 – 9字节
transactions 交易
交易列表(非空)
<Transaction counter>-许多交易
随着交易的进行区块不断地产生,大约每10分钟就会产生一个区块。到目前(2015年1月26日21:00)为止比特币的区块数为340544。随着区块数的增长区块链的大小也不断增长。图1[3]给出了比特币两年内区块链大小的曲线。可见区块链大小增长很快,当前大小已经超过20GB。域名币系统也是一样的,这也会造成域名币系统查询客户真个一些问题。由于域名的查询都是查询区块链数据,如果都是本地查询,客户端就要保存大量数据,这对付手机等移动端设备是不适宜的。
图1 区块链大小曲线
3.2 韶光戳
每一个区块包含一个Unix韶光戳,除了作为区块哈希的一个变量外,还使得攻击者修正区块信息更加困难。如果一个韶光戳比之前11个区块的韶光戳的中值大,并且比网络调度韶光小2小时以内就会被认为有效。个中的“网络调度韶光”是指与你相连接的所有节点的均匀韶光。当节点A连接到节点B时,A从B处得到一个UTC标准的韶光戳,A先转换成本地UTC标准韶光保存起来,网络调度韶光即是所有节点确当地UTC韶光+所有相连节点的偏移量均匀值,该网络韶光永久不会调度到超过本地系统韶光70分钟以上。
域名币的韶光同步,也是其根本技能之一。如3.1节中表1看到的一样,每个区块都包含了韶光戳。该韶光戳能够证明特天命据一定于某特定时刻是的确存在的,由于只有在该时候存在了才能获取相应的随机散列值。每个韶光戳又将前一个韶光戳纳入其随机散列值中,每一个随后的韶光戳都对之前的一个韶光戳进行增强(reinforcing),这样就形成了一个链条(Chain)。
3.3事情量证明
由于域名币与比特币系统是完备去中央化的分布式网络,它不以任何参与者的老实和信用乃至审查为根本,因此会有不少对系统不利的利用者。例如域名币系统中企图大量注册较短域名者;比特币中企图霸占更多比特币者。一个最直不雅观的办法是限定每个参与者注册域名的数量,但是参与者本身便是程序,系统无法判断每个参与者运行了多少了程序,这个方法是不实现的。而事情量证明供应了分配参与者获取共同资源当中份额的方法。它是利己而不从属于别人的一群人肃清不合取得共识的手段。
域名币系统的事情量证明机制基于密码学算法。每个数据区块的头部信息中都含有一个随机数(nonce),当打算出来的sha256值不知足哀求时,那么这个随机数(nonce)便增加一个单位,直到知足哀求为止。现在没有创造预测sha256值的方法,以是须要大量的打算来找到符合哀求的头部sha256值。但是一旦找到答案,验证信息的sha256值是非常随意马虎的。因此,数据区块(block)天生的这一过程便成为了网络参与者事情量的证明。随着参与者的增多和全体域名币的事情量证明的难度也会变革。以h表示SHA256函数,l表示区块信息,x表示随机数,N表示难度条件。该问题可以描述为h(l+x)<N。由于哈希运算是单向函数,该问题只能以考试测验的办法求解。
例如l=\"大众Hello, world\"大众,N=0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff,也便是说哈希结果的前4位都为0时知足条件。当x=0时
h(\公众Hello, world!0\公众) = 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
h(\公众Hello, world!1\"大众) = e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
...
h(\"大众Hello, world!4250\"大众)=
0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9
也即是求得x=4250时知足条件。该区块须要加上x才生效。而取得x的过程便是事情量证明过程。该过程常日要耗费相称的打算量。
4.域名币系统的运用
域名币系统的设计初衷是一个去中央化、能够免于审查的域名查询系统。希望成为现有域名系统(DNS)的替代方案。然而目前它的运用领域已经远超出域名领域。作为对数字货币系统的一个实用化运用根本,研究者在深入考虑其运用到去中央化认证、物联网等领域。数字货币由于其颠覆性属性,短期内难以看清其前景,学术界也很少公开谈论。但是以域名币为根本的各种运用已经被麻省理工学院、德国慕尼黑工业大学等顶级高校,国际商业机器(IBM)、三星、趋势等环球化公司关注和深入研究。
4.1去中央化认证运用
目前的网络认证办法紧张有两种:一是基于证书授权机构(CA)的认证系统,是集中式的。一是信赖网络(Web of Trust),是分布式的。CA的方案问题是有单点失落效问题。最近的一些事宜表明这种绝对信赖CA的办法是有问题的,CA有可能被攻击,也有可能本身管理不善。例如荷兰的 DigiNotar就被攻击而发欺骗性的认证,导致安全问题。TrustWave违反基本安全原则授权自己的客户发认证。信赖网络的方案问题是新的和远程的用户难以加入,因难堪以确认身份并对公钥进行署名,同时信赖网络也难以办理密码规复问题。
基于以上缘故原由麻省理工学院(MIT)的Conner Fromknecht,Dragos Velicanu,Sophia Yakoubov提出了基于域名币系统的认证体系Certcoin【4】。Certcoin系统以NameCoin为根本将域名币系统的区块链当做一块公共白板,用来永久记录认证信息。Certcoin的每次交易都是收费的,目的是为了勉励参与者包含Certcoin的信息。Certcoin是完备分布式的并且只哀求用户信赖网络中的非恶意节点占大多数即可。Certcoin基于域名币系统完全的设计了注册公钥署名实体、更新实体、查找实体公钥、验证明体的公钥、规复实体公钥的全体过程。并对验证过程中的效率,查找过程中的存储空间和效率进行了优化。以ID的注册过程为例解释Certcoin以域名币系统为根本的基本思想。详细系统可以参考文献[4]。
注册:
第一步,实体发送(id; register; online; values = (pkn; )) 和(id; register; online; values = (pkf ))到区块链, 个中:
id 是身份信息, pkn 在线公钥, pkf 是离线公钥, 和 是两个数字署名: = sig(skn; id) , = sig(skf ; id). 这些署名表明该身份持有人能够分别对在线私钥skn和在线公钥skf署名。
第二步,区块挖矿者对区块进行验证:
l 验证id之前没有注册过
l 验证
l 验证
如果任何一个验证不通过他将会丢弃该发布,否则他将该信息加入区块。
第三步,身份信息拥有者存储他的身份信息被发布出去的区块。
第四步,每个吸收挖矿完成区块的吸收者进行验证:
l 除吸收者是身份拥有者之外,验证id不是吸收者拥有的id
l 验证
l 验证
如果任何一个区块验证不通过则丢弃吸收到的区块。
更新操作和注册类似,而验证和查找操作都是基于对区块链的遍历,然后进行密码学验证。由之前对域名币系统的剖析可知区块链所占的空间很大,并且不断增长,因此须要对验证和查找操作进行优化。文献[4]分别采取累加验证和分布式DHT数据构造大大优化了这两个问题。
以Alice和Bob进行通信的场景来描述,该系统的过程和其他PKI系统并无不同。Alice 给Bob发送一个形式为(idA,
,w)的,个中idA是Alice的身份信息,
是Alice的公钥,w是累加形式的证据。Bob验证
确实是Alice的公钥。Bob接着发送给Alice一个随机寻衅信息h,如果Alice可以相应
,使得验证结果
,Bob就认为她便是idA的拥有者。这样Alice 就认证成功了。
4.2物联网运用
随着物联网的发展物联网的系统架构也逐渐受到重视,个中的名字系统更是个中的关键。而物联网中的联网实体将以百亿级,并可能达到千亿量级。目前的名字系统紧张以域名系统为主,但普遍认为域名系统在物联网中将碰着寻衅。因此,以国际商业机器(IBM)为代表的公司提出了“设备的民主化”的愿景[5],并联合三星等公司开展Adept项目。其紧张的思想便是建立一个不以信赖为根本的设备自治、对等和无信赖互联互通架构,而这正是以域名币及比特币的区块链为根本。其目标基本是通过区块链去办理名字、认证、通信的大部分问题。
由于物联网中联网物体数量巨大,做事期限长,难以建立信赖网络,导致目前的互联网架构运用于物联网将面临巨大问题。IBM通过剖析认为在物联网时期无论是产品设计、商业模式还是技能根本都要根本改变。图2给出了各个方面的详细哀求。其技能层面就要以前面提到的设备自治、对等和无信赖互联互通架构为根本。
物联网时期的成功金字塔
而实现这个架构就要用到域名币系统中的区块链。区块链作为通用的数字化记录是物联网中去中央化网络的根本。通过去中央化达成同等的方法——也便是事情量证明机制,区块链的办法不须要信赖,知足了无信赖的哀求。区块链作为匆匆成物体间交易和折衷的根本架构,这就知足了去中央化的哀求。每个物品管理自己的角色和行为,这就知足了自治的哀求。
通过这种办法IBM描述了一个物联网从封闭的中央化网络到开放访问的以云做事为根本的网络,直到实现一个开放访问的完备分布式网络的演进过程。图3是这个过程的形象描述。
物联网架构演进
只管IBM给出的愿景非常完美、远大。但是正如前面指出的一样由于区块链数据量大、不断增长,在所有的物联网设备中如何运用还有很多技能问题须要办理。这方面还须要很深入的技能研究和工程实现事情。还是一个非常有寻衅的领域。只管IBM、三星等公司已经开始,但终极成功还有很长的路要走。
5.总结
本文剖析了一个分布式系统——域名币系统。它以分布式系统的网络通讯、远程系统调用、韶光折衷、安全机制等为根本,加上其特有的事情量证明、区块链等技能,面向名字系统这个网络中的根本问题,创新的供应了一个去中央化、安全、对人故意义的名字系统。该名字系统的初衷是应对网络审查,然而随着研究的深入和扩展,以其为根本的分布式认证系统、物联网根本架构等也成为其运用处景。这些研究和扩展已经得到麻省理工学院、德国慕尼黑工业学院,以及IBM、三星的重视,前景可期。然而由于该系统的一些特点,真正实现运用还有一些间隔,是一个值得研究的新兴领域。
参考文献:
[1]https://wiki.namecoin.info/index.php?title=Domain_Name_Specification
[2]http://www.chinabtcc.cn/bl/2014-04-01/2869.html
[3]https://blockchain.info/charts/blocks-size?timespan=2year&showDataPoints=false&daysAverageString=1&show_header=true&scale=1&address=
[4] A Decentralized Public Key Infrastructure with Identity Retention,http://eprint.iacr.org/2014/803.pdf
[5]Device democracy, http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=PM&subtype=XB&htmlfid=GBE03620USEN
本文系作者个人观点,不代表本站立场,转载请注明出处!