区块链技术与应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-26 20:48:01

点击下载

作者:朱建明 等

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

区块链技术与应用

区块链技术与应用试读:

前言

随着以比特币为代表的数字货币的崛起,其底层支撑架构——区块链凭借去中心化信用、数据不可篡改等特点,吸引了世界许多国家政府部门、金融机构及互联网巨头公司的广泛关注,已经成为当前学术界和产业界的热点课题。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术在互联网时代的创新应用模式。区块链技术被认为是继大型机、个人电脑、互联网之后计算模式的颠覆式创新。目前,区块链的应用已延伸到物联网、智能制造、供应链管理、数字资产交易等多个领域。

2016年12月,《国务院关于印发“十三五”国家信息化规划的通知》将区块链写入“十三五”国家信息化规划,将区块链列为重点加强的战略性前沿技术。区块链已经成为国家信息化战略的重要组成部分。

2016年9月,中央财经大学信息学院的朱建明、高胜和段美姣三位老师共同开设了第一门“区块链技术”课程,本书就是在此基础上完成的。本书主要回答四个方面的问题:

第一,为什么要学习和研究区块链技术?从国家战略、技术发展等方面阐述了区块链技术的重要性和区块链技术的应用环境以及面临的问题。

第二,比特币中的区块链技术原理是什么?作为比特币的底层技术,区块链是如何发挥作用的?其技术原理和细节是什么?这一部分给出了详细的介绍。

第三,区块链技术的原理是什么?在比特币区块链技术的基础上,区块链技术又有新的发展,这一部分详细介绍区块链的最新研究成果和技术。

第四,如何应用区块链技术解决实际问题。

全书由朱建明、高胜和段美姣三位老师共同编著。第1章由朱建明编写,第2章由贾恒越编写,第3章由海沫编写,第4~7章由段美姣、朱烨辰编写,第8~10章由高胜编写,第11章案例由布比公司和火币网提供,由付永贵整理。

编者在完成本书的过程中参阅了大量的文献,其中包括专业书籍、学术论文、学位论文、国际标准、国内标准和技术报告等,书中有部分引用已经很难查证原始出处,编者注明的参考文献仅仅是获得相关资料的文献,没有一一列举出所有的参考文献,在此表示歉意和谢意。

由于编者水平有限,本书不足与疏漏之处在所难免,敬请广大读者批评指正。作者2017年8月第一部分 基础知识第1章 绪论

区块链(blockchain)技术是金融科技(fintech)领域的一项重要技术创新。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术在互联网时代的创新应用模式。区块链技术被认为是继大型机、个人电脑、互联网之后计算模式的颠覆式创新,很可能在全球范围引起一场新的技术革新和产业变革。联合国、国际货币基金组织,以及美国、英国、日本等国家对区块链的发展给予高度关注,我国也积极探索推动区块链的应用。目前,区块链的应用已延伸到物联网、智能制造、供应链管理、数字资产交易等多个领域。

那么,什么是区块链呢?为什么区块链技术引起学术界和产业界的高度重视?本章将回答这些问题。1.1 区块链概述

最早关于区块链的描述出现在2008年由化名为中本聪(Satoshi Nakamoto)所撰写的论文《比特币:一种点对点的电子现金系统》(Bitcoin:A Peer-to-peer Electronic Cash System)中,然而该文重点讨论比特币系统,区块链被描述为用于记录比特币交易的账目历史。在比特币系统成功运行多年后,部分金融机构开始意识到,作为比特币运行的底层支撑技术——区块链实际上是一种极其巧妙的分布式共享账本技术,对金融乃至各行各业带来的潜在影响甚至可能不亚于复式记账法的发明。2014年前后,业界开始认识到区块链技术的重要价值,并通过智能合约技术将其用于数字货币外的分布式应用领域。2015年,《经济学人》(Economist)杂志在封面介绍区块链为创造信任的机器,即区块链可以在没有中央权威机构的情况下,为交易双方建立起信任关系。1.1.1 为什么关注区块链

2015年以来,区块链技术引起了学术界、产业界的高度重视。下面是有关媒体对区块链的部分报道:

·区块链——重塑经济与世界。

·区块链技术有望像互联网一样彻底重塑人类社会活动形态,并实现从目前的信息互联网向价值互联网的转变。

·互联网已经颠覆世界,区块链却要颠覆互联网。

·区块链技术已经被视为下一代全球信用认证和价值互联网的基本协议之一。

从这些报道中,可以看出区块链技术的重要性。与此同时,世界各国都加强了区块链技术的研究,将区块链列为国家发展的重要战略。2015年下半年以来,“区块链”这个词开始成为全球各大监管机构、金融机构及商业机构,如摩根士丹利、英国政府、花旗银行等争相讨论的对象。从整体上看,参与讨论的金融机构普遍对区块链技术在改善其中后端流程效率及降低运作成本的可能性上有着较为积极的态度,部分国家政府对推动区块链技术和应用的发展持积极态度。

我国政府也积极支持开展区块链技术的研究和应用。2016年12月在《国务院关于印发“十三五”国家信息化规划的通知》中将区块链写入“十三五”国家信息化规划,将区块链列为重点加强的战略性前沿技术。2016年2月,中国人民银行行长周小川在谈到数字货币相关问题时曾提及,区块链技术是一项可选的技术,并提到中国人民银行部署了重要力量研究探讨区块链应用技术。2017年“两会”上,行长周小川再次表示,数字资产和区块链将产生不可估量的巨大影响。2017年年初,央行数字货币又有新进展,央行推动的基于区块链的数字票据交易平台已测试成功,由央行发行的法定数字货币已在该平台试运行,中国可能成为全球首个发行央行数字货币的国家。

2017年1月,北京市金融工作局、北京市发改委联合印发《北京市“十三五”时期金融业发展规划》强调,要加快云计算、大数据和区块链等金融科技在支付清算、数字货币、财富管理等领域的创新发展与应用。

2016年8月,全球领先的信息技术研究和顾问公司Gartner发布了《Gartner2016年度新兴技术成熟度曲线》,如图1-1所示。2016年,区块链正处于期望膨胀期,距离成熟期5~10年,可见2017年全球区块链技术仍然会保持比较快的发展趋势。

因此,无论从媒体,还是从国家战略和技术发展的角度来看,区块链技术无疑是未来最有发展潜力的技术之一。

比特币作为区块链技术的成功应用示范,其价值变化也进一步说明了区块链技术的重要性。比特币从2009年开始市值已经涨到21399.00元人民币(2017年8月5日的行情),虽然其中多次反复,出现了多次暴涨暴跌,但是总的趋势是上涨的行情。这也从一个方面反映了社会对区块链技术的信心。图1-1 Gartner2016年度新兴技术成熟度曲线1.1.2 区块链的特点

2014年开始,比特币背后的区块链技术受到大家关注,并正式引发了分布式账本(distributed ledger)技术的革新浪潮。区块链实质是由多方参与共同维护一个持续增长的分布式数据库,也被称为分布式共享总账(distributed shared ledger),其核心在于通过分布式网络、时序不可篡改的密码学账本及分布式共识机制建立彼此之间的信任关系,利用由自动化脚本代码组成的智能合约来编程和操作数据,最终实现由信息互联向价值互联的进化。

区块链技术作为创造信任的机器,主要有以下特点:(1)分布式结构。区块链构建在分布式网络基础之上,账本并不是集中存放在某个服务器或数据中心,也不是由第三方权威机构来负责记录和管理,而是分散在网络中的每一个节点,每一节点都有一个该账本的副本,所有副本同步更新,体现了去中心化的特点。(2)建立信任。区块链技术通过数学原理和程序算法,使系统运作规则公开透明,实现交易双方在不需要借助第三方权威机构(如央行等)信用背书下通过达成共识建立信任关系。(3)公开透明。区块链对任何可以上网的人是开放的、透明的。任何人都可以加入区块链,也能查询区块链上的区块记录;同时所有用户看到的是同一个账本,能看到这一账本所发生和记录的每一笔交易。(4)时序且不可篡改。区块链采用带有时间戳的链式区块结构存储数据,具有极强的可追溯性和可验证性;同时,由密码学算法和共识机制保证了区块链的不可篡改性。1.1.3 区块链的重要性

随着新一轮产业革命的到来,云计算、大数据、物联网等新一代信息技术在智能制造、金融、能源、医疗健康等行业中的作用愈发重要。从国内外发展趋势和区块链技术发展演进路径来看,区块链技术和应用的发展需要云计算、大数据、物联网等新一代信息技术作为基础设施支撑,同时区块链技术和应用发展对推动新一代信息技术产业发展具有重要的促进作用。图1-2说明了区块链与新一代信息技术的关系。图1-2 区块链与新一代信息技术的关系

区块链是一种不可篡改的、全历史的数据库存储技术,巨大的区块数据集合包含着每一笔交易的全部历史,随着区块链的应用迅速发展,数据规模会越来越大,不同业务场景区块链的数据融合进一步扩大了数据规模。区块链提供的是账本的完整性,数据统计分析的能力较弱。大数据具备海量数据存储技术和灵活高效的分析技术,极大地提升了区块链数据的价值和使用空间。1.2 区块链技术的应用

区块链技术是金融科技领域的一项重要技术创新。作为去中心化记账(DLT)平台的核心技术,区块链被认为在资产管理、金融、征信、物联网、经济贸易结算等众多领域都拥有广泛的应用前景。

中本聪在其论文中介绍区块链时指出:“区块链是一种数据结构,也是该电子现金系统(比特币)的核心技术。”该系统的实现原理是:利用区块链让系统中的任意多个节点把一段时间内系统交互的数据,通过密码学算法计算并记录到一个区块(block),并且生成该区块的指纹以用于验证和链接下一个区块,系统所有参与节点共同认定记录的真实性。1.2.1 区块链技术的应用场景

区块链技术在经济和社会管理系统中存在广泛的应用场景。

1.数据存储

区块链的高冗余存储(每个节点存储一份数据)、去中心化管理特点使其非常适合存储和保护重要隐私数据,以避免因中心化机构遭受攻击或权限管理不当造成的大规模数据丢失或泄露。目前,利用区块链来存储个人健康数据(如电子病历、基因数据等)是较典型的应用领域。

2.数字身份验证

OneName和BitID是以区块链为基础提供数字身份服务的典型应用。此类去中心化数字身份验证服务利用了每个比特币用户都有一个比特币钱包的优势(即每个用户都拥有一个唯一的比特币地址),大大提高了用户访问网站的速度,并增强了匿名性和安全性。

3.数据鉴证

区块链数据具有安全时间戳,由共识节点共同验证和记录,使其可应用于各类数据公证和审计场景。例如,区块链可永久地安全存储由政府机构核发的各类许可证、登记表、执照、证明、认证和记录等,并可在任意时间点方便地证明某项数据的存在性和一定程度上的真实性。包括德勤在内的多家专业审计公司已经部署区块链技术来帮助其审计师实现低成本和高效的实时审计,Factom公司则基于区块链设计了一套准确的、可核查且不可篡改的审计公证流程与方法。

4.金融交易

在互联网金融领域,区块链技术已经应用于股权众筹、P2P网络借贷和互联网保险等业务,同时证券和银行业务也是区块链的重要应用场景。传统证券交易需要经过中央结算机构、银行、证券公司和交易所等中心机构的多重协调,而利用区块链自动化智能合约的特点,能极大地降低成本和提高效率,避免烦琐的中心化清算交割过程,实现方便快捷的金融交易。同时,基于区块链的交融交易可保证即时到账,从而使跨境转账更为快捷、经济和安全,这也是目前R3CEV和纳斯达克等各大银行、证券商和金融机构相继投入区块链技术研发的重要原因。

5.资产管理

区块链在资产管理领域能够实现有形和无形资产的确权、授权和实时监控。对于无形资产来说,可将区块链技术应用于知识产权保护、域名管理、积分管理等业务;而对有形资产来说,通过结合物联网技术为资产设计唯一标识并部署到区块链上,能够形成“数字智能资产”,实现基于区块链的分布式资产授权和控制,这些方向当前均有相关的研究和商业项目被提出。1.2.2 区块链技术在国外的推广

区块链技术在国外的发展同样是如火如荼,但是与国内多是以研究和探讨应用场景为主,区块链技术推动多是由中小企业担纲不同,国外区块链技术发展的显著特征是:区块链联盟旨在区块链技术的验证和试验,以及区块链技术标准的制定,区块链技术推动多是由大企业来担纲。

1.R3区块链联盟

R3区块链联盟致力于研究和发现区块链技术在金融业中的应用。R3区块链联盟自2015年9月份由9位发起成员设立,2015年年底首轮招募42家知名国际性银行;2016年,R3进一步开放,吸纳非银行金融机构,截至2016年9月,R3联盟成员已超过60家。进一步,R3区块链联盟推出自己的产品Corda,旨在将自身的区块链解决方案打造成全球银行的运作标准。

2.Hyperledger区块链联盟

超级账本项目是Linux基金会管理下的合作项目,目的是要共同建立并维系一个跨产业的、开放的、分布式账本技术平台。截至2016年9月30日,其成员数已达85家。Hyperledger项目是一个“技术驱动”的联盟,在其成员当中,科技公司和金融机构各占三成,另有超过两成的成员是区块链公司,联盟的目标是推动Hyperledger成为事实上的工业技术标准。

3.布局区块链产业的科技巨头

IBM——2016年年初,IBM InterConnect创新应用大会上宣布重点投入区块链领域,随后IBM公司宣布推出一套用于在IBM云上创建、部署、运行和监控区块链应用的“区块链即服务”(BaaS服务)。IBM是HyperLedger项目的主导者之一,已经向HyperLedger项目贡献了44000行代码。

微软——微软宣布向区块链领域开放Azure云计算平台,并且已经与以太坊、Consen-Sys、Ripple等多家平台建立了合作关系,其目的在于将Azure BaaS平台扩展成一个“认证的区块链市场”,客户既可以直接在Azure上部署区块链,也可以间接通过Azure在当地的数据中心部署区块链,使用户可以借助自动化设置在20分钟之内就能打造一个区块链环境。

亚马逊——亚马逊的云计算商业服务平台亚马逊网络服务(AWS)与投资公司数字货币集团(DCG)合作,为企业提供一个区块链实验环境。亚马逊凭借AWS正式进入区块链领域。

谷歌——谷歌在微软、IBM与亚马逊相继建立区块链技术平台后,于2016年也宣布将为银行提供区块链测试服务,正式与IBM、微软、亚马逊角逐BaaS市场。咨询公司GFT在其为苏格兰皇家银行集团提供的一个清算及结算的区块链应用的测试中采用了Google服务器。

英特尔——2016年4月,英特尔推出一个名为“锯齿湖”(Sawtooth Lake)的用于建造、部署和运行分布式账本的实验性分布式账本平台,并基于该平台向开源超级账本(Hyperledger)区块链项目提供代码贡献。2016年6月,英特尔在以色列特拉维夫市成立了一个开发实验室,致力于研究物联网(IoT)连接设备、云计算、生物识别应用程序以及区块链技术。1.2.3 区块链技术的局限性

作为近年来兴起的新技术,区块链仍面临一些制约其进一步发展和广泛应用的障碍,包括底层技术的挑战、潜在的安全隐患以及隐私保护等。

1.政府监管挑战

区块链技术的兴起对于政府的监管提出了一定挑战,如政府无法按照现行税制收取比特币交易税费。现行的税收结构将被完全颠覆,影响税收及整体经济指标的计算。

2.运行安全风险

区块链技术目前潜在的最大安全隐患就是51%攻击问题,即节点通过掌握全网超过51%的算力就有能力成功篡改和伪造区块链数据。据统计,中国大型矿池的算力已占全网总算力的60%以上,理论上这些矿池可以通过合作实施51%的攻击,从而实现比特币的双重支付。虽然实际系统中为掌握全网51%算力所需的成本投入远超成功实施攻击后的收益,但51%攻击的安全性威胁是始终存在的。

3.系统效率及可扩展性问题

比特币区块链目前每秒仅处理7笔交易,这极大地制约了区块链技术在金融系统中高频交易场景中的应用(如VISA信用卡每秒最多处理10000笔交易);此外,依据区块链技术的协议设计,当前每个比特币区块的生成时间为10分钟,这意味着每笔交易的确认时间为10分钟,这在一定程度上限制了比特币在小额交易和时间敏感交易中的使用;最后是容量膨胀问题。区块链要求系统内每个节点保存一份数据备份,这对于日益增长的海量数据存储来说是极为困难的。就比特币区块链而言,完全同步自创世区块至今的区块数据需要约60GB存储空间,虽然轻量级节点可部分解决此问题,但适用于更大规模的工业级解决方案仍有待研究。

4.隐私泄露风险

区块链系统内各节点虽不必公开身份,但也并非完全匿名,而是通过类似电子邮件地址的地址进行标识(如比特币公钥地址)并实现数据传输。虽然地址标识并未直接与用户身份相关联,但区块链数据是完全公开透明的,随着各类反匿名身份甄别技术的发展,仍有可能实现部分重点目标的定位和识别。思考题

1.查阅资料,了解区块链的最新进展。

2.比特币与区块链是什么关系?

3.针对区块链技术的特点,请举例说明区块链技术的一种应用环境。参考文献

[1] Nakamoto S.Bitcoin:A Peer-to-peer Electronic Cash System[J],Consulted,2009.

[2] Antonopoulos A M.Mastering Bitcoin:Unlocking Digital Cryptocurrencies[M].O’Reilly Media Inc.,2014.

[3] Narayanan A,Bonneau J,Felten E,et al.Bitcoin and Cryptocurrency Technologies:A Comprehensive Introduction[M].Princeton University Press,2016.

[4] Morabito V.Business Innovation through Blockchain:The B3 Perspective[M].Springer,2017.

[5] Walport M.Distributed Ledger Technology:Beyond Blockchain[R].Tech Rep,2016.

[6] 中国区块链技术和产业发展论坛.中国区块链技术和应用发展白皮书,2016.

[7] 袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016,42(4):481-494.

[8] 高航,俞学劢,王毛路.区块链与新经济:数字货币2.0时代[M].北京:电子工业出版社,2016.

[9] 谭磊,陈刚.区块链2.0[M].北京:电子工业出版社,2016.

[10] 赵刚.区块链:价值互联网的基石[M].北京:电子工业出版社,2016.第2章 区块链中的密码学

比特币是一种密码货币,区块链技术的基础是密码学。本章主要介绍在区块链技术中用到的密码算法、数字签名、Hash函数等。2.1 密码学概述

密码学(cryptology)起源于保密通信技术,是结合数学、计算机、信息论等学科的一门综合性、交叉性学科。密码学又分为密码编码学(cryptography)和密码分析学(cryptanalysis)两部分。密码编码学主要研究如何设计编码,使得信息编码后除指定接收者外的其他人都不能读懂。密码分析学主要研究如何攻击密码系统,实现加密消息的破译或消息的伪造。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展。

现代密码学主要内容及联系如图2-1所示,这些密码技术为信息安全中的机密性、完整性、认证性和不可否认性提供基本的保障,也为PKI技术、认证技术等实际应用提供基本的工具,本章主要介绍在区块链技术中所用到的有关密码学知识。

随着计算机科学与技术的蓬勃发展,出现了快速电子计算机和现代数学方法,它们一方面为加密技术提供了新的概念和工具,另一方面也给密码破译者提供了有力的武器,二者相互促进,使密码技术飞速发展。新兴信息技术为密码设计者提供了前所未有的条件,从而可以设计出更加复杂和更为高效的密码体制。

近年来,由于其他相关学科的进步和发展,也出现了一些新兴、交叉性的密码技术。例如,随着量子计算研究热潮的兴起,世界各国对量子密码的研究也广泛地开展起来。量子密码具有可证明的安全性,同时还能对窃听行为方便地进行检测。这些特性使量子密码具有一些其他密码所没有的优势,因而量子密码引起国际密码学界的高度重视,我国研究专家已在此领域多次取得世界性突破成果。图2-1 密码学基本内容及其联系2.1.1 密码体制的基本组成及分类

密码学的基本思想就是对信息进行伪装。伪装前的信息称为明文,通常用p(plaintext)或者m(message)表示;伪装后的消息称为密文,通常用c(ciphertext)表示。图2-2是基于密码技术的保密通信基本模型。这种对信息的伪装可以表示成一种可逆的数学变换,从明文到密文的变换称为加密(encryption),从密文到明文的变换称为解密(decryption)。加密和解密都是在密钥(key)的控制下进行的。图2-2 保密通信基本模型

一个密码体制(cryptosystem)由五个部分组成:(1)明文空间M,它是全体明文m的集合。(2)密文空间C,它是全体密文c的集合。(3)密钥空间K,它是全体密钥k的集合。其中,每一个密钥k均由加密密钥k和解密密钥k组成,即k=(k,k)。eded(4)加密算法E,是在密钥控制下将明文消息从M对应到C的一种变换,即c=E(k,m)。e(5)解密算法D,是在密钥控制下将密文消息从C对应到M的一种变换,即m=D(k,c)。d

密码体制是实现加密和解密功能的密码方案,密钥空间中不同密钥的个数称为密码体制的密钥量,它是衡量密码体制安全性的一个重要指标。同时,根据加、解密密钥的使用策略不同,又可将密码体制分为对称密码体制和非对称密码体制。

1.对称密码体制(symmetric cryptosystem)

如果一个密码体制中的加密密钥k和解密密钥k相同,或者由其ed中一个密钥很容易推算出另一个密钥,则称该密码体制为对称密码体制或单钥密码体制(one-key cryptosystem)。因为在使用过程中,密钥必须严格保密,所以也被称为秘密密钥密码体制(secret key cryptosystem)。典型的对称密码体制有DES、AES等。

对称密码体制因为其具有安全、高效、经济等特点,发展非常迅速,并被广泛应用。依据处理数据的方式,对称密码体制通常又分为分组密码(block cipher)和序列密码(stream cipher)。

分组密码是将定长的明文块(如64位一组)转换成等长的密文,这一过程在密钥的控制下完成。解密时使用逆向变换和同一密钥来完成。序列密码是指加、解密时对明文中比特逐个进行处理,也被称为流密码。

对称密码体制主要用来对信息进行保密,实现信息的机密性。它的优点是加密和解密处理效率高,密钥长度相对较短,一般情况下加密后密文和明文长度相同。但是,对称密码体制也存在一些固有的缺陷,如需要安全通道分发密钥,保密通信的用户数量多时,密钥量大,难于管理,难以解决不可否认性等问题。

2.非对称密码体制(asymmetric cryptosystem)

1976年,Diffie和Hellmen发表了具有里程碑意义的《密码学的新方向》(New Dire-ction in Cryptography),提出了非对称密码的思想,即加密过程和解密过程使用两个不同的密钥来完成。进一步说,如果在计算上由加密密钥k不能推出解密密钥k,那么将k公开不会损害edek的安全,于是可以将k公开,因此这种密码体制也被称为公钥密码de(public key cryptosystem),亦称双钥密码体制(two key cryptosystem)。典型的非对称密码体制有RSA、ElGamal等。

非对称密码体制的提出解决了对称密码体制的固有缺陷,它不仅可以保障信息的机密性,还可以对信息进行数字签名,具有认证性和抗否认性的功能。不过,非对称密码体制与对称密码体制相比,其设计所依赖的数学计算较复杂,因而加、解密效率较低。在达到同样安全强度时,非对称密码通常所需的密钥位数较多,并且加密产生的密文长度通常会大于明文长度。因此,在保密通信过程中通常是用对称密码来进行大量数据的加密,而用非对称密码来传输少量数据,如对称密码所使用的密钥信息。2.1.2 密码体制的设计原则

密码学的基本目的就是保障不安全信道上的通信安全。密码学领域存在一个很重要的事实:“许多聪明人都不能解决的问题,它可能不会很快得到解决。”这暗示很多加密算法的安全性并没有在理论上得到严格的证明,只是这种算法思想出来以后,经过许多人许多年的攻击并没有发现其弱点,没有找到攻击它的有效方法,从而认为它是安全的。一般地,衡量密码体制安全性的方法有三种:

第一种方法是计算安全性(computational security),又称实际保密性(practical secr-ecy)。如果一种密码系统最有效的攻击算法至少是指数时间的,则称这个密码体制是计算安全的。在实际中,人们说一个密码系统是计算上安全的,意思是利用已有的最好方法破译该系统所需要的努力超过了攻击者的破译能力(如时间、空间和资金等资源)。

第二种方法是可证明安全性(provable security)。如果密码体制的安全性可以归结为某个数学困难问题,则称其是可证明安全的。例如,RSA密码可以归结为大整数因数分解问题,ElGamal密码可以归结为有限域上离散对数求解问题。香农(Shannon)曾指出,设计一个安全的密码本质上是要寻找一个难解的问题。

第三种方法是无条件安全性(unconditional security)或者完善保密性(perfect secr-ecy)。假设存在一个具有无限计算能力的攻击者,如果密码体制无法被这样的攻击者攻破,则称其为无条件安全。香农证明了一次一密密码具有无条件安全性,即从密文中得不到关于明文或者密钥的任何信息。

一个实用的密码体制的设计应该遵守以下原则:(1)密码算法安全强度高。就是说攻击者根据截获的密文或某些已知明文密文对,要确定密钥或者任意明文在计算上不可行。(2)密码体制的安全性不应依赖加密算法的保密性,而应取决于可随时改变的密钥。即使密码分析者知道所用的加密体制,也无助于用来推导出明文或密钥。(3)密钥空间应足够大。使试图通过穷举密钥空间进行搜索的方式在计算上不可行。(4)既易于实现又便于使用。主要是指加密函数和解密函数都可以高效地计算。

其中第2条是著名的柯克霍夫(Kerckhoffs)原则,是由荷兰密码学家奥古斯特·柯克霍夫于1883年在其名著《军事密码学》中提出的。柯克霍夫原则指出密码算法应该是公开的,唯一需要保护的是密钥。密码算法的公开不仅有利于增加密码算法的安全性,还有利于密码技术的推广应用,有利于增加用户使用的信心,也有利于密码技术的发展。例如国际上,3DES、SHA-1、RSA等密码算法及相关标准在各个领域中被长期沿用。2.1.3 密码体制的常见攻击形式

密码分析学是伴随着密码编码学的产生而产生的,它是研究如何分析或破解各种密码体制的一门科学。密码分析也被称为密码攻击,是指非授权者在不知道解密密钥的条件下对密文进行分析,试图得到明文或密钥的过程。

密码分析可以发现密码体制的弱点,密码分析者攻击密码体制的方法主要有以下三种。(1)穷举攻击:密码分析者通过试遍所有的密钥来进行破译。穷举攻击又称为蛮力攻击,是指攻击者依次尝试所有可能的密钥对所截获的密文进行解密,直至得到正确的明文。1997年6月18日,美国科罗拉多州Rocket Verser工作小组宣布,通过网络利用数万台计算机历时4个多月以穷举攻击方式攻破了DES。(2)统计分析攻击:密码分析者通过分析密文和明文的统计规律来破译密码。统计分析攻击在历史上为破译密码做出过极大的贡献。许多古典密码都可以通过分析密文字母和字母组的频率及其统计参数而破译。例如,在英语里,字母e是英文文本中最常用的字母,字母组合th是英文文本中最常用的字母组合。在简单的替换密码中,每个字母只是简单地被替换成另一个字母,那么在密文中出现频率最高的字母就最有可能是e,出现频率最髙的字母组合就最有可能是th。抵抗统计分析攻击的方式是在密文中消除明文的统计特性。(3)数学分析攻击:密码分析者针对加密算法的数学特征和密码学特征,通过数学求解的方法来设法找到相应的解密变换。为对抗这种攻击,应该选用具有坚实的数学基础且足够复杂的加密算法。

密码攻击和解密的相似之处在于都是设法将密文还原成明文的过程,但攻击者和消息接收者所具备的条件是不同的。密码分析者的任务是恢复尽可能多的明文,或者最好能推算出解密密钥,这样就很容易解出被加密的信息。根据密码分析者可获取的信息量不同,常见的密码分析攻击包括以下4种类型。(1)唯密文攻击(ciphertext only attack)。

密码分析者除了拥有截获的密文外(密码算法是公开的,以下同),没有其他可以利用的信息。这种攻击的方法至少可采用穷举搜索法,只要有足够多的计算资源和存储资源,理论上穷举搜索是可以成功的,但实际上,任何一种能保障安全要求的算法复杂度都是实际攻击者无法承受的。(2)已知明文攻击(known plaintext attack)。

密码分析者不仅掌握了相当数量的密文,还有一些已知的明——密文对可供利用。密码分析者的任务就是用密文信息推出解密密钥或导出一个替代算法,此算法可以对所获得的密文恢复出相应的明文。在现实中,密码分析者可能通过各种手段得到更多的信息,而且明文消息往往采用某种特定的格式,如电子现金传送消息总有一个标准的报头或标题等。(3)选择明文攻击(chosen plaintext attack)。

密码分析者不仅能够获得一定数量的明——密文对,还可以选择任何明文并在使用同一未知密钥的情况下得到相应的密文。如果攻击者在加密系统中能选择特定的明文消息,则通过该明文消息对应的密文就有可能确定密钥的结构或获取更多关于密钥的信息。这种情况往往是密码分析者通过某种手段暂时控制加密机。根据非对称密码体制的特点,非对称密码算法必须经受住这种攻击。(4)选择密文攻击(chosen ciphertext attack)。

密码分析者能选择不同的密文,并且还可得到对应的明文。如果攻击者能从密文中选择特定的密文消息,则通过该密文消息对应的明文有可能推导出密钥的结构或产生更多关于密钥的信息。这种情况往往是密码分析者通过某种手段暂时控制解密机。

上述攻击类型中,唯密文攻击的强度最弱,其他情况下的攻击强度依次增加。当然密码体制的攻击不限于以上类型,还包括一些非技术手段,如通过威胁、勒索、贿赂等方式获取密钥或相关信息,在某些情况下这些手段是非常有效的攻击,但不是本章所关注的内容。2.1.4 密码学在区块链中的应用

区块链是比特币的基础技术,而密码学是区块链技术的基础。在署名中本聪的论文《比特币:一种点对点的电子现金系统》中提出了一套“基于公钥加解密验证而不是基于信用,使得任何达成一致的双方能够端对端进行支付,而不需要一个中间的金融机构”的电子支付系统,同时提出了“一种基于P2P网络解决双重支付问题的方法。这个网络给支付交易打上时间戳……除非可以提供之前所有的工作量证明,否则不能被篡改。只要占多数的CPU不被同时控制以联合起来对网络进行攻击,它们就可以比攻击者生成更长的链条”。从而此系统就是安全的。区块链中有关密码学知识的应用如图2-3所示。图2-3 比特币中区块链的构成

从图2-3可以看出,在比特币的区块链中,用到了公钥密码体制、数字签名、Hash函数等密码学知识。图中,U0、U1、U2、U3等分别表示不同的用户。每一位电子货币的所有者将电子货币转移给下一位所有者的过程是:对前一个交易和下一位所有者的公钥签署一个数字签名,并将这个签名附加在交易的末尾。收款人通过验证签名,就可以验证电子货币的所有者链条。

在后面的章节中,将重点介绍在区块链中用到的密码学基础知识。2.2 对称密码体制

对称密码体制是加密密钥和解密密钥相同的密码系统,建立在通信双方共享密钥的基础上。自1977年美国颁布DES(Data Encryption Standard)密码算法作为美国数据加密标准以来,对称密码体制迅速发展,得到了世界各国的关注和普遍应用。2.2.1 对称密码加密模式

对称密码体制从工作方式上可以分为分组密码和序列密码两大类。

1.分组密码

分组密码(block cipher)是将明文消息编码后划分成固定大小的组,每组明文分别在密钥的控制下输出密文组。

设n是一个分组密码的分组长度,k=(k,k,…,k)是密钥。01t-1分组密码示意图如图2-4所示。x=(x,x,…,x)为明文,其中,01n-1x{0,1},0≤i≤n-1,y=(y,y,…,y)为相应的密文,其中,yi01m-1j∈{0,1},0≤j≤m-1,则y=E(k,x),x=D(k,y),其中E、D分别表示加密变换和解密变换。图2-4 分组密码示意图

如果n<m,则分组密码对明文加密后,有数据扩展。如果n>m,则分组密码对明文加密后,有数据压缩。如果n=m,则分组密码对明文加密后,既无数据扩展也无数据压缩。我们通常考虑的分组密码都是这种既无数据扩展也无数据压缩的分组密码。

分组密码设计的两个基本技术是扩散和混淆,利用扩散和混淆可以有效地抵抗攻击者从密文的统计特性推测出明文或密钥。

所谓扩散,就是让明文中的每一位以及密钥中的每一位能够影响密文中的许多位,或者说让密文中的每一位受明文和密钥中的许多位的影响。

所谓混淆,就是将密文与明文、密钥之间的统计关系变得尽可能复杂,使得对手即使获取了关于密文的一些统计特性,也无法推测密钥。使用复杂的非线性代替变换可以达到比较好的混淆效果。

现代分组密码算法设计时通常利用乘积和迭代的方法来实现扩散和混淆。实际上,乘积密码就是扩散和混淆两种基本密码操作的组合变换,这样能够产生比各自单独使用时更强大的密码系统。选择某些较简单的受密钥控制的密码变换,通过乘积和迭代可以取得比较好的扩散和混淆效果。例如,代换——置换网络(substitution permutation network)简称SP网络(如图2-5所示),是由代换(也称S盒)和置换(也称P盒)交替进行多次而形成的变换网络。代换起到混淆的作用,置换起到扩散的作用。置换不等同于扩散,多轮迭代并同代换结合,置换能产生扩散作用。代换常被划分成若干子盒,它是许多密码算法唯一的非线性部件,决定了整个密码算法的安全强度。当前,绝大多数分组密码算法都使用了这种结构。图2-5 代换——置换网络示意图

分组密码是将消息作为数据分组来加密或解密的,而实际应用中大多数消息的长度是不定的,数据格式也不同。当消息长度大于分组长度时,需要分成几个组分别进行处理。为了能灵活地运用基本的分组密码算法,人们设计了不同的处理方式,称为分组密码的工作模式,也称为分组密码算法的运行模式。四个常用的工作模式分别为:电子编码本(electronic code book,ECB)模式、密码分组链接(cipher block chaining,CBC)模式、输出反馈(output feedback,OFB)模式、密码反馈(cipher feedback,CFB)模式。

由于分组密码加解密速度较快,安全性好,以及得到许多密码芯片的支持,现代分组密码发展非常快,在许多研究领域和商用系统中得到了广泛的应用。

随着信息安全上升到国家安全,密码学作为保障信息安全的核心技术,各国政府均对此领域的发展予以极大的重视。除前文所介绍的几种国际上广泛使用的典型的密码算法外,我国国家商用密码管理办公室也制定了一系列密码标准。在金融领域目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。

SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度,分组长度128比特,因此在安全性上高于3DES算法。

2.序列密码

序列密码又称流密码,是指明文消息按字符(如二元数字)逐位地相加的一类密码算法。序列密码通常认为起源于20世纪20年代的Vernam密码,Vernam密码中的密钥序列要求是随机序列(“一次一密”密码体制),由于随机密钥序列的产生、存储以及分配等方面存在一定的困难,Vernam体制在当时并没有得到广泛的应用。序列密码示意图如图2-6所示,通常划分为同步序列密码和自同步序列密码两大类。图2-6 序列密码示意图

如果密钥序列的产生独立于明文消息,则此类序列密码为同步序列密码。在同步序列密码中,密(明)文符号是独立的,一个错误传输只会影响一个符号,不影响后面的符号。但其缺点是:一旦接收端和发送端的种子密钥和内部状态不同步,解密就会失败,两者必须立即借助外界手段重新建立同步。

如果密钥序列的产生是密钥及固定大小的以往密文位的函数,则这种序列密码被称为自同步序列密码(或非同步序列密码)。自同步序列密码的优点是即使接收端和发送端不同步,只要接收端能连续地正确接收到一定数量的密文符号,就能重新建立同步。因此,自同步序列密码具有有限的差错传播,且较同步序列密码的分析困难得多。

在20世纪50年代,由于数字电子技术的发展,密钥序列可以方便地利用以移位寄存器为基础的电路来产生,从而促使线性和非线性移位寄存器理论迅速发展,再加上有效的数学工具,如代数和谱分析理论的引入,使得序列密码理论迅速发展,并逐步走向成熟阶段。同时由于具有实现简单、速度快,以及错误传播少的优点,序列密码在实际应用中,特别是在专用和机密机构中仍保持优势。2.2.2 典型的对称密码算法

对称密码体制中的代表算法包括DES、3DES、AES,世界上应用较为广泛的对称加密方法还有Blowfish算法、IDEA算法、RC4算法、A5算法等。

1.数据加密标准DES

1977年1月,美国政府宣布:将IBM公司设计的方案作为非机密数据的正式数据加密标准(Data Encryption Standard,DES)。DES是第一个广泛用于商用数据保密的密码算法,其分组长度为64位,密钥长度也为64位(其中有8位奇偶校验位,故实际密钥长度为56位)。尽管DES目前因密钥空间的限制,已经被高级加密标准AES取代,但其设计思想仍有重要的参考价值。

DES加密算法的结构流程如图2-7所示。图2-7 DES加密算法结构流程图

DES首先利用初始置换对明文进行换位处理,然后进行16轮迭代运算,每轮都由加密的两个基本技术——混淆和扩散组合而成,最后通过初始置换的逆置换获得密文。(1)DES加密过程。

设x=(x,x,…,x)是一组待加密的明文块,其中x∈{0,1264i1},1≤i≤64。密钥k=(k,k,…,k),其中k∈{0,1},1≤i≤64。1264i初始置换用于对明文x中的各位进行换位,目的在于打乱明文x中各位的次序。经过初始置换后,

DES中与密钥k有关的16轮迭代可以形式化地表示为:

其中,L和R的长度都是32位,iif是一个轮函数(包括扩展置换、子密钥异或、S盒代换和P盒置换),K是由密钥k产生的一个48位的子密钥。i(2)DES解密过程。

DES算法是对称的,既可用于加密,又可用于解密。只不过在16次迭代中使用的子密钥的次序正好相反。解密时,第一次迭代使用子密钥K,以此类推。解密过程的16次迭代可以形式化表示为:16(3)DES的安全性。

在DES中,初始置换和逆初始置换各使用一次,使用这两个置换的目的是把数据彻底打乱重新排列,它们对数据加密所起的作用不大。

在DES算法加密过程中,除了S盒是非线性变换外,其余变换均为线性变换。因此,S盒是DES算法安全的关键。任意改变S盒输入中的一位,其输出至少有两位发生变化。由于在DES中使用了16次迭代,所以即使改变明文或密钥中的1位,密文中都会大约有32位发生变化。

由于DES算法是公开的,因此其安全性完全依赖于所用的密钥。在算法使用过程中,每次迭代时都有一个子密钥供加密使用。子密钥的产生也很有特色,它确保密钥中各位的使用次数基本相等。实验表明,56位密钥中每位的使用次数在12次至15次之间。在实际使用中,需要注意的是DES算法存在一些弱密钥。所谓弱密钥,是指一个密钥产生的所有子密钥都是相同的,此时对消息加密两次就可以恢复出明文。虽然DES算法有弱密钥现象,但是弱密钥所占比例很小,可以在选取密钥时避开使用,因此对其安全性影响不大。

随着密码分析技术和计算能力的提高,DES的安全性受到质疑和威胁。密钥长度较短是DES的一个主要缺陷。DES的实际密钥长度为561756位,密钥量仅为2≈10,就目前计算设备的计算能力而言,DES不能抵抗对密钥的穷举搜索攻击。1998年7月,电子边境基金会(EFF)使用一台价值25万美元的计算机在56小时内成功地破译了DES。在1999年1月,电子边境基金会(EFF)仅用22小时15分就成功地破译了DES。

DES的密钥长度被证明不能满足安全需求,为了提高DES的安全性能,并充分利用有关DES的软件和硬件资源,人们提出一种简单的改进方案——使用多重DES。多重DES就是使用多个密钥利用DES对明文进行多次加密。如3DES可将密钥长度增加到112位或者168位,可以提高抵抗对密钥穷举搜索攻击的能力。除密钥长度因素外,DES加密算法还有一些其他缺陷,如在软件环境下实现效率较低。因此,美国实施高级加密标准AES算法用于取代DES算法。

2.高级加密标准AES

高级加密标准(advanced encryption standard,AES)是传统对称加密标准DES的替代。在AES标准规范中,分组长度是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,相应的推荐加密轮数分别是10、12、14轮。

AES的处理单位是字节,以AES-128为例,128位的输入明文分组P和输入密钥K都被分成16个字节。一般地,明文分组用字节为单位的正方形矩阵描述,称为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。

在加密过程中,该算法会执行一个轮函数,并且执行10次这个轮函数。轮函数由4个变换组成:字节代换(S盒)、行移位、列混合和密钥加。这个轮函数的前9次执行的操作是一样的,只有第10次有所不同。这些运算都是要在相应的子密钥控制下完成的,需要将密钥进行扩展,产生每一轮的子密钥,共需要44个字的密钥。

AES的解密要使用加密变换相应的逆变换,逆变换使用的顺序也不一样,分别为:逆行移位、逆字节代换、轮密钥加和逆列混合。

在整体结构上,AES算法的轮函数与DES算法相似,都由三层构成,非线性层、线性混合层、子密钥异或,只是顺序不同。AES算法与DES算法的主要不同在于,AES的密钥长度是可变的,而DES的密钥长度固定为56位;DES是面向比特的运算,AES是面向字节的运算;AES的加密运算和解密运算不一致,因而加密器不能同时用作解密器,DES则无此限制。

在安全性方面,与DES相比,扩散的效果更快,即两轮可达到完全扩散。S盒使用清晰而简单的代数方法构造,避免任何对算法留有后门的怀疑。AES在设计上不是对称的,其加密和解密过程不一致,避免了弱密钥的存在。由于在设计时考虑了差分分析和线性分析的攻击方法,因此AES具有较好的抗击其攻击的能力。采用密钥穷举攻击,127平均需要2次AES运算,按目前的计算能力是不可能完成的。

比特币官方客户端就是使用AES算法中的AES-256-CBC来加密钱包文件,用户设置密码后,采用用户设置的密码通过AES算法对钱包私钥进行加密,确保客户端私钥的安全,从而保证资产的安全。2.3 非对称密码体制

对称密码体制虽然可以在一定程度上解决保密通信的问题,但随着计算机和网络的飞速发展,保密通信的需求越来越广泛,对称密码体制的局限性就逐渐表现出来,主要表现在:(1)密钥分配问题。通信双方要进行加密通信,需要通过秘密的安全信道协商加密密钥,而这种安全信道可能很难实现。(2)密钥管理问题。在有多个用户的网络中,任何两个用户之间都需要有共享的密钥,当网络中的用户量很大时,需要管理的密钥数目非常大。(3)难以实现不可否认功能。当用户A收到用户B的消息时,无法向第三方证明此消息确实来源于B,也无法防止事后B否认发送过消息。

非对称密码体制(asymmetric cryptosystem)为密码学的发展提供了新的理论和技术思想,是现代密码学最重要的发明,也可以说是密码学发展史上最伟大的革命。一方面,非对称密码的算法是基于数学函数的,而不是建立在字符或位方式操作上的。另一方面,与对称密码加、解密使用同一密钥不同,非对称密码使用两个独立的密钥,且加密密钥可以公开,因此又称为公钥密码体制。这两个密钥的使用对密钥的管理、认证都有重要的意义。本节就来介绍一下非对称密码的基本原理、特点以及典型的算法——RSA密码算法。2.3.1 基本原理和特点

非对称密码体制的模型如图2-8所示,信息发送前,发送者首先要获取接收者发布的加密密钥,加密时使用该密钥将明文加密成密文,加密密钥也称为公开密钥,简称公钥;解密时接收者使用解密密钥对密文进行处理,还原明文,解密密钥需要保密,因此也称为私有密钥,简称私钥。非对称密码体制的通信安全性取决于私钥的保密性。图2-8 非对称加密体制模型

1976年Diffie和Hellman在《密码学的新方向》一文中提出了公钥密码的思想,他们虽然没有给出一个真正的公钥密码算法,但首次提出了单向陷门函数的概念,将公钥密码体制的研究归结为单向陷门函数的设计,为公钥密码的研究指明了方向。

函数f(x)被称为单向陷门函数,必须满足以下三个条件。(1)给定x,计算y=f(x)是容易的。-1(2)给定y,计算x使y=f(x)是困难的(所谓计算x=f(y)困难是指计算上相当复杂,已无实际意义)。(3)存在δ,已知δ时对给定的任何y,若相应的x存在,则计算x使y=f(x)是容易的。

对于以上条件仅满足(1)(2)两条的称为单向函数;第(3)条称为陷门性,δ称为陷门信息。当用陷门函数f作为加密函数时,可将f公开,这相当于公开加密密钥P。f函数的设计者将δ保密,用作k解密密钥,此时δ即为私有密钥S。由于加密函数是公开的,任何人k都可以将信息x加密成y=f(x),然后发送给函数的选取者。只有他-1拥有S,可以利用S,求解x=f(y)。单向陷门函数的第(2)条kk性质也表明窃听者由截获的密文y=f(x)推测x是不可行的。

利用公钥密码体制,通信双方无须事先交换密钥就可以进行保密通信。公钥密码体制可以提供以下功能。(1)机密性:通过数据加密来保证非授权人员不能获取机密信息。(2)认证:通过数字签名来验证对方的真实身份。(3)数据完整性:通过数字签名来保证信息内容不被篡改或替换。(4)不可抵赖性:通过数字签名来实现,使发送者不能事后否认他发送过消息,消息的接收者可以向第三方证实发送者确实发出了消息。

公钥密码体制采用的加密密钥(公钥)和解密密钥(私钥)是不同的。由于加密密钥是公开的,密钥的分配和管理就很简单,而且能够很容易地实现数字签名,因此能够满足电子商务应用的需要。

在实际应用中,公钥密码体制并没有完全取代对称密码体制,这是因为公钥密码体制基于某种数学难题,计算非常复杂,它的运行速度远比不上对称密码体制。因此,在实际应用中可以利用二者各自的优点,采用对称密码体制加密文件,而采用公钥密码体制加密“加密文件”的密钥,这就较好地解决了运算速度和密钥分配管理的问题。

自公钥密码体制的思想提出以来,国际上已经出现了多种公钥密码体制。这些算法的安全性都是基于复杂的数学难题。对于某种数学难题,如果利用通用的算法计算出密钥的时间越长,那么基于这一数学难题的公钥密码体制就被认为越安全。根据所基于的数学难题来分类,公钥密码体制可以分为以下三类:基于大整数分解问题的公钥密码体制、基于有限域上离散对数问题的公钥密码体制、基于椭圆曲线离散对数问题的公钥密码体制。2.3.2 典型的公钥密码算法

常见的公钥密码算法包括基于大整数因子分解问题的RSA密码、基于有限域上的离散对数问题的ElGamal密码、基于椭圆曲线上的离散对数问题的ECC密码等。

1.RSA公钥密码算法

RSA密码是目前应用最广泛的公钥密码体制,该算法是由美国的Ron Rivest、Adi Shamir和Leonard Adleman三人于1978年提出的。它既能用于加密,又能用于数字签名,易于理解和实现,是第一个安全、实用的公钥密码体制。RSA的基础是数论中的欧拉定理,它的安全性依赖于大整数因子分解的困难性。为了方便理解RSA密码算法,这里首先介绍一下欧拉定理和大整数因子分解问题。(1)欧拉定理。

欧拉函数是欧拉定理的核心概念,其表述为:对于一个正整数n,比n小但与n互为素数的正整数的个数,称为欧拉函数,用φ(n)表示。特别地,如果p是素数,则φ(p)=p-1。如果两个素数p和q,且n=pq,则φ(n)=(p-1)(q-l)。φ(n)

欧拉定理:若正整数a与n互素,则a≡l mod n。

上述定理的证明可查阅其他参考资料。(2)大整数因子分解。

大整数因子分解问题可以表述为:已知p和q为两个大素数,则求N=pq是容易的;但已知N是两个大素数的乘积,要求将N分解,则在计算上是困难的,其运行时间程度接近于不可行。(3)RSA密码体制描述。

选取两个不同的大素数p和q,为了获得最大程度的安全性,p和q的长度一样。计算它们的乘积n=pq。令φ(n)=(p-1)(q-1)。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载