论文部分内容阅读
目前,DNS已经成为互联网中最重要的基础服务。但是它的中心化设计导致它在安全、公平隐私等方面存在诸多问题。针对DNS的优化如DNS安全扩展DNSSEC往往只关注其中一个方面而无法彻底解决所有问题。本文研究了DNS和区块链相关技术,结合主流区块链技术设计了适用于DNS服务的NameChain区块链,并在此基础上构建了去中心化DNS系统DBDNS。首先对NameChain的区块结构和交易进行设计,使它可以保存、修改DNS状态并且支持DNS相关操作,对DNS信息进行隐私保护。NameChain的交易和状态数据存储使用了默克尔-帕特里夏树MPT结构。然后,设计了两阶段共识机制来防御51%攻击——第一阶段使用POA共识机制积累算力作为过渡,第二阶段使用内存困难型POW共识机制满足去中心化要求;为了加强安全性还设计了一种快速收敛的区块大小调节算法来抵御可能出现的区块链DOS攻击。另外,为了保证NameChain在POW共识机制下可以稳定发行区块,本文设计了一种结合平均区块发行时长和父区块发行时长的难度调节算法。本文设计的DBDNS系统是分层结构,从下往上分别为区块链层、缓存层、控制层和应用接口层。区块链层由NameChain组成,可细分为存储层和逻辑处理层,分别对应区块数据存储和交易执行、共识机制、P2P网络通讯等功能。缓存层包含双缓存队列,使用本文设计的适用于发散数据的缓存更新算法——DLFU算法和DFIFO算法。控制层主要功能为逻辑控制,起到层次分割作用。应用接口层包含接口层和表示层,前者提供接口,后者直接对用户提供服务。在部署方面,使用轻节点作为普通用户的服务节点,只占用较少的资源。最后,本文实现了DBDNS原型系统并基于虚拟化技术部署了若干节点。通过可用性实验、稳定性实验、缓存实验和DNS更新生效实验等多组实验发现:1)DBDNS的服务可达到预期效果,且兼容当前的DNS服务;2)轻节点存储百万数量级的区块头数据,只占用不到100M磁盘空间,空间利用率较高;3)NameChain在面临区块链DOS攻击时仍然可以正常服务,区块链中的交易不会因交易内存池满而被丢弃,实验中区块大小经过几十个区块即调节到平衡状态;4)NameChain在系统算力波动的情况下,依然可以快速调整并稳定出块,初始难度偏小的实验中,区块平均发行时长为16秒,初始难度偏大的实验中,区块平均发行时长为29秒;5)DBDNS的缓存层经过DLFU算法和DFIFO算法的优化,最终测得缓存命中率高达83%;6)DBDNS系统中大多数的DNS更新在一分钟内即可生效,最长的也不会超过500秒,远远快于当前DNS更新全球生效时长;7)即使瞬间宕机一半节点,DNS更新依然可以在500秒内生效。综上,去中心化系统DBDNS解决了当前DNS系统在安全性、公平隐私性和DNS更新生效时长等方面的问题,且有良好的兼容性和扩展性。