面向区块链的网络安全实用指南(全)

原文:zh.annas-archive.org/md5/16f1790d47286c6fa5714ff44649219e

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

区块链技术被誉为当今最具革命性和颠覆性的创新之一。区块链技术最初是在世界上最流行的数字货币比特币中被识别出来的,但现在已经改变了许多组织的看法,并赋予他们甚至将其用于价值存储和转移的能力。

本书将首先向您介绍常见的网络威胁景观和常见攻击,如恶意软件、钓鱼、内部威胁和 DDoS。接下来的章节将帮助您了解区块链技术、以太坊和 Hyperledger 架构的运作方式,以及它们如何适应网络安全生态系统。这些章节还将帮助您在以太坊区块链和 Hyperledger Fabric 框架上编写您的第一个分布式应用程序。稍后,您将了解安全三重性及其与区块链的适应性。最后一组章节将带您了解网络安全的核心概念,如 DDoS 保护、基于 PKI 的身份验证、双因素认证和 DNS 安全。您将了解区块链在从根本上转变网络安全解决方案方面起到了至关重要的作用。

在书的最后,您将了解区块链在安全案例中的真实部署示例,并了解短期挑战和区块链与网络安全未来的发展。

本书适合谁

本书面向网络安全专业人士,或任何与网络安全相关的利益相关者,他们希望了解如何使用区块链来提升基础设施的安全性的下一层次。对区块链的基本理解可能是一个额外的优势。

要充分利用本书

硬件要求如下:

  • Ubuntu 16.04

软件要求如下:

  • Linux

  • Node.js

  • Truffle

  • Ganache-CLI

下载彩色图片

我们还提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。您可以从www.packtpub.com/sites/default/files/downloads/HandsOnCybersecuritywithBlockchain_ColorImages.pdf下载。

使用惯例

在本书中使用了许多文本约定。

CodeInText:指示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。这是一个例子:“这个文件夹包括我们的智能合约,TwoFactorAuth.sol。”

代码块设置如下:

forward-zones=bit.=127.0.0.1:5333,dns.=127.0.0.1:5333,eth.=127.0.0.1:5333,p2p.=127.0.0.1:5333
export-etc-hosts=off
allow-from=0.0.0.0/0
local-address=0.0.0.0
local-port=53

当我们希望引起您对代码块的特定部分的注意时,相关的行或项目将以粗体显示:

$ node registerAdmin.js 
//File Structure Tuna-app/tuna-chaincode.go


任何命令行输入或输出都以以下形式编写:

sudo apt-get update
sudo apt-get install git npm
sudo apt-get install nodejs-legacy

粗体:表示新术语、重要单词或屏幕上看到的单词。例如,菜单中的单词或对话框中的单词会在文本中显示为这样。这是一个例子:“我们需要将环境字段设置为 Web3 Provider 选项。”

警告或重要说明会以这种方式显示。

实用提示和技巧如下所示。

联系我们

我们随时欢迎读者的反馈。

一般反馈:请发送电子邮件至feedback@packtpub.com并在主题中提及书名。如果您对本书的任何方面有疑问,请发送邮件至questions@packtpub.com与我们联系。

勘误:虽然我们已竭尽全力确保内容的准确性,但错误还是会发生。如果您在本书中发现错误,我们将不胜感激。请访问www.packtpub.com/submit-errata,选择您的书籍,点击勘误提交表格链接,并输入详细信息。

盗版:如果您在互联网上发现我们的任何作品的非法复制,请您提供给我们位置地址或网站名称,我们将不胜感激。请发送电子邮件至copyright@packtpub.com并附上材料链接。

如果您有兴趣成为作者:如果您在某个专业领域有专业知识,并且有意撰写或为书籍贡献内容,请访问authors.packtpub.com

评论

请留下您的评论。在阅读和使用本书后,不妨在购买书籍的网站上留下您的评论?潜在的读者可以看到并使用您中立的意见来做出购买决策,而我们在 Packt 则可以了解到您对我们产品的看法,我们的作者也可以看到您对他们书籍的反馈。谢谢!

欲了解更多有关 Packt 的信息,请访问packtpub.com

免责声明

本书中的信息仅供以合乎道德的方式使用。如果您没有设备所有者的书面许可,请勿使用本书中的任何信息。如果您从事非法行为,您可能会被逮捕并受到法律的严厉制裁。如果您滥用本书中的任何信息,Packt Publishing 不承担任何责任。本书中的信息只能在获得适当人员的书面授权后在测试环境中使用。

第一章:网络威胁格局与安全挑战

信息一直是竞争优势和可持续成功的关键。当一系列大容量和无可争辩的数据用于回答一个简单问题时,通常会产生信息。情报通过收集信息来形成可以用于决策过程的预测。情报收集是预测未来最强大和有效的实践。从古代情报到今天的人工智能,从世界大战到今天的网络战争,目标总是超越我们的对手。

让我们来看看现实世界。中国政府及其军队中国人民解放军PLA)经常被指控从美国的私人机构窃取技术和商业机密。你可能会认为中国想要摧毁美国,但事实并非如此。中国只是希望成为超级大国并成为技术领袖。最终,它希望每个美国人,甚至全世界其他国家的人,都依赖中国市场的技术。这导致中国间谍行动持续试图窃取跨国公司和政府机构的商业机密。现在我们切换话题。政治党派通过对本国公民进行高级分析来收集信息以预测即将到来的选举结果。很明显世界正在随着互联网的变化而变化。

快速转向云计算、物联网、认知计算和移动性已经管理着大部分组织的关键资产;然而,日益增长的互联应用和技术数量也导致可利用漏洞的增加。组织正在部署多种安全措施来定位和修复这些安全漏洞;但这对安全力量来说是永无止境的工作。然而,通过对潜在威胁进行分类排序,可以优先处理顶级漏洞,但这需要高度的威胁情报实践。

网络安全是一个有二十年历史的现象,但在过去五年,保护者难以应对新兴威胁,比如零日漏洞利用、加密勒索软件、以太字节的 DDoS 攻击、多向恶意软件和高级社交工程。

这本书准备采用一种对安全感知的范式转变。尽管增加了另一层安全性,但这是一种试图从根本上改变安全心态的尝试。以互联网命名的最流行的技术之一是区块链;然而,使区块链真正革命性的是其在加密货币之外的应用潜力。如今,有许多初创公司正在使用区块链技术颠覆现有的商业模式和行业垂直领域,例如云主机托管、金融服务、供应链、医疗保健、网络安全等。本书对安全专家、安全产品工程师甚至区块链爱好者都将很有帮助。本书侧重于带领读者了解当前的安全威胁景观,并提供了一种克服区块链技术中一些最关键安全挑战的实践方法。

本章中,读者将了解以下主题:

  • 当前的威胁景观

  • 各国政府机构和企业等防御者如何准备自己保护资产免受对手的攻击

  • 实时攻击模拟,从远程机器执行数据外泄

当前的威胁景观

在网络空间的新时代,技术转型已成为持续安全创新和运营的核心因素。在互联车辆、物联网、移动性和云的世界中,这为网络犯罪、定向攻击和工业间谍活动打开了一个焦点。一旦攻击者发现了漏洞并确定了如何访问应用程序,他们就拥有了构建应用程序的利用所需的一切,因此开发强大的漏洞管理至关重要。请记住,漏洞管理的有效性取决于组织跟上新兴安全威胁和模型的能力。

如果员工被诱使点击他们通过电子邮件收到的恶意链接,那么安全系统将无法产生影响。社会工程已被证明是进入目标网络的一种有效方式,安全力量面临着无休止的挑战,以识别恶意入侵。在 Facebook 和 LinkedIn 之前的旧时代,如果你需要找到有关组织的信息,你在互联网上不太可能获得很多信息,因此社交网络网站的使用使得社会工程攻击变得更容易进行。

勒索软件

勒索软件是一种恶意软件,它会对受害者计算机上的信息进行加密,并要求付款才能授予他们访问权限。勒索软件是最流行和回报最高的犯罪软件之一。在过去的两年中,它引起了大量媒体关注,主要是因为 WannaCry、NotPetya 和 Locky。WannaCry 勒索软件在 2017 年 5 月迅速传播到全球多个系统。它针对了几个知名组织,包括英国国家医疗服务体系、西班牙电话巨头 Telefonica、法国汽车领导者雷诺、美国领先的物流公司联邦快递、日本公司日立等等。

勒索软件作者在暗网上托管服务,允许任何买家创建和修改恶意软件。

暗网是互联网的一部分,无法通过搜索引擎获取,但需要一种特殊类型的匿名浏览器,称为Tor。换句话说,暗网携带的是搜索引擎无法获取的未编入索引的数据。Tor 浏览器基本上通过一系列代理服务器路由用户信息,使用户身份不可识别和不可追踪。暗网站看起来与普通网站类似,但在命名结构上有一些不同。暗网站没有顶级域(TLD)如.com.net.co;而是只使用以.onion结尾的网站。

黑客行为的货币化

根据网络安全业务报告,预计到 2019 年,勒索软件造成的损失将达到 115 亿美元。全球勒索软件业务增长的几个驱动因素。为了更快地赚钱,网络罪犯已经停止制作恶意软件,开始利用勒索软件即服务RaaS),这在暗网市场上是可用的。

这些市场不仅减少了专业罪犯的工作量,还允许非技术犯罪分子或脚本小子进行勒索软件操作。

攻击者制作了一个预先配置了定时器的勒索软件程序,确保在截止日期之前不支付赎金就销毁数据。攻击者还分享了一个支付流程,主要通过比特币钱包(因为数字加密货币钱包提供了匿名性)。

WannaCry

WannaCry 攻击是 2017 年 5 月 12 日发生的最大规模勒索软件攻击。WannaCry 利用了 Windows 操作系统的一个漏洞,最初由美国国家安全局(NSA)识别,然后通过影子经纪人(Shadow Brokers)公开了这一漏洞。它被设计成利用 Windows SMBv1 和 SMBv2 的漏洞,以便在网络内部进行横向移动。直到 2017 年 5 月 24 日,超过 150 个国家的 20 万多台计算机系统被感染。

NotPetya

NotPetya 是另一种勒索软件攻击,于 2017 年 6 月发布。NotPetya 勒索软件显然与 Petya 病毒有很多相似之处—它加密文件并显示一个要求比特币以恢复文件的屏幕。最初的感染方法是植入 M.E.Doc(乌克兰领先的会计公司软件)的后门。在通过 M.E.Doc 软件侵害系统后,NotPetya 使用 EternalBlue 和 EternalRomance 等工具在网络中传播。它还利用了一个叫做 Mimi Katz 的工具,在受感染的计算机中查找管理凭据。

SimpleLocker

SimpleLocker 是第一次勒索软件攻击,它并未影响任何计算机系统,而是影响了一些手机。黑客偏好的操作系统是 Android,这种勒索软件的来源被追踪到东欧。这个特洛伊木马攻击目标是插入平板电脑和手机的 SD 卡,自动爬取整个集合以获取特定文件,然后要求现金才能解密数据。该病毒通过 Google Play 商店进入设备。一旦安装,病毒将扫描受影响设备的各种文件类型,并使用高级加密标准AES)对这些文件进行加密,将文件扩展名更改为.enc。它还用于从各自设备收集各种其他信息,例如 IMEI 号码、设备型号和制造商,并将其发送到 C2 服务器。借助这种病毒的最新版本,黑客甚至可以访问设备摄像头,并显示受害者的照片,以恐吓他们支付赎金。这种威胁仍然潜在。

TeslaCrypt

在 CryptoLocker 之后的一年内,出现了一种新的威胁,即TeslaCrypt。一开始,许多人认为它是 CryptoLocker 的一个维度,但后来,它被赋予了一个新的名称—TeslaCrypt。这种勒索软件针对不同的人群—狂热的游戏玩家。TeslaCrypt 针对并影响与视频游戏相关的附属文件。这些文件包括已保存的游戏文件、地图、任何游戏相关的可下载内容等。这种勒索软件的独特之处在于,它的创建者不断改进了特洛伊木马的影响力,并填补了攻击过程中存在的漏洞。

CryptoLocker

CryptoLocker 是一种大规模的勒索软件,据信它首次出现在 2013 年 9 月 5 日的互联网上,通过电子邮件附件和 GameOver Zeus 僵尸网络培育而成。它对运行 Microsoft Windows 系统的系统施加影响,并通过恶意电子邮件附件传播,并使用 RSA 加密对用户本地和网络驱动器上存储的某些类型的文件进行加密。CryptoLocker 于 2014 年 5 月底通过Tovar行动被清除,该行动关闭了 GameOver Zeus 僵尸网络。据报道,CryptoLocker 成功向受害者勒索了 300 多万美元。

PC Cyborg

1989 年,发现了一个名为 PC Cyborg 的特洛伊木马,它具有隐藏文件夹然后加密 C 盘中文件名的功能。受害者随后不得不向注册在巴拿马邮局的 PC Cyborg 公司支付 189 美元。

分布式拒绝服务 (DDoS) 攻击

DDoS 攻击是一种恶意尝试,通过淹没服务器的正常用户流量来干扰其运行,其特点是以大量随机流量进行攻击。DDoS 与 DoS 不同之处在于其分布式的特性,从多个独立网络的被攻陷系统攻击目标。这些被攻陷的计算机系统被称为僵尸,僵尸网络指的是由同一恶意行为者控制的这样的一组僵尸。

DDoS 攻击已经成为一种频繁的危险,因为它们常被用于报复、敲诈勒索、活动主义,甚至用于网络战。2016 年 10 月,领先的 ISP Dyn 的 DNS 遭受了来自数百万僵尸的 DNS 查询波浪式攻击。这次攻击是由 Mirai 僵尸网络执行的,共有超过 100,000 台物联网设备被攻陷。

从脚本小子到地缘政治

关于 2016 年 10 月 26 日对 Dyn 的 DNS 基础设施发动的攻击,存在许多理论。其中一种最敏感和影响深远的 DDoS 攻击是针对 Dyn 的一次——一个总部位于美国的 DNS 服务提供商,导致包括 Twitter、Reddit、GitHub、亚马逊、Netflix、PayPal 等在内的一些主要网站在大部分时间无法访问。有许多关于这次攻击的理论和说法,关于谁可能是幕后黑手。安全研究人员指责脚本小子,然而,还有一位黑客 Jester 声称俄罗斯政府是幕后黑手。黑客组织 Jester 对俄罗斯外交部进行了污名化,反对一次 民主党全国委员会 (DNC) 的黑客攻击。

事情并没有就此结束;最近也发生了一些备受关注的损害。卡塔尔的政治危机导致了对半岛电视台网站的 DDoS 攻击。法国的总统选举也因对费加罗和世界报网站的攻击而受到了干扰。

启动 DDoS 的便捷性

您可以支付每小时 10 美元、200 美元或 600 至 1200 美元的费用来发动 DDoS 攻击,持续一整周。暗网上的多名攻击者提供 DDoS 服务,使发动 DDoS 攻击变得容易。

想要用大量流量轰炸目标的人要按每秒钟的僵尸使用时间计费,而不是按小时计费。

被攻击最多的国家

攻击者可以攻陷一台计算机并制作自己的僵尸。这些僵尸用于进行侦察、网页爬行,甚至 DDoS 攻击。重要的是要理解,拥有大量被攻陷系统的国家应该意识到其全球风险指数。以下是一个由领先的 DDoS 保护提供商 Incapsula 绘制的 2017 年第二季度全球 DDoS 威胁格局图示:

2017 年全球有 33%的企业受到 DDoS 攻击的影响。与 2016 年相比,受 DDoS 攻击影响的企业数量翻了一番。

内部威胁

任何形式的威胁都可能来自组织内部,并不仅限于具有恶意意图的员工;也可能是承包商、前员工、董事会成员或股东或第三方实体。

定义内部威胁的更多方式

CERT 的《一般常识指南:减轻内部威胁》将内部人员定义为符合以下标准的现任或前任员工,承包商或商业伙伴:

  • 具有或曾经拥有对组织的网络、系统或数据的授权访问权限

  • 故意超出或故意使用该访问权限,以一种对组织信息或信息系统的机密性、完整性或可用性产生负面影响的方式

内部威胁概况

在描述此内容之前,重要的是了解其需求,这一需求在 2000 年由美国国防部(DoD)表示,并且自那时起,CERT 部门进行了研究。要了解内部威胁概况及其对应的行为,请访问以下链接:ccdcoe.org/sites/default/files/multimedia/pdf/Insider_Threat_Study_CCDCOE.pdf

一种恶意威胁,来自组织内部,例如来自员工、前员工、合作伙伴、关联人等,无需来自外部即可影响组织系统。这种攻击比其他恶意软件更具威胁性,因为这些人可以访问主要系统,并且他们了解允许他们以合法方式绕过安全措施的知识。内部威胁无处不在。如果有人说他们不容易受到内部威胁,那么他们可能实际上不知道内部威胁是什么,以及它对组织有多严重。所谓的内部人员可能会尝试访问机密文件以谋取个人利益。这种利益可以是任何事情,从向竞争对手出售信息到为内部人员自己的个人使用窃取信息。

任何组织的流失率都在一个可观的水平上。每年或两年人们离开和加入公司。这使员工保留某些信息成为动力,因为员工认为他们有权利保留这些信息,只是因为他们已经在这方面工作了相当长的时间。谈论内部威胁,甚至美国政府也无法摆脱内部威胁。2012 年发布的一份报告表明,大多数内部威胁实际上发生在员工的工作时间内。由于技术已经使得很容易确定侵入或攻击的起源,但没有证据,并且在所有情况下都没有确定罪犯的数量。

数据侵犯

在 2017 年,Ponemon 研究所进行的《网络犯罪成本研究》表明,全球数据侵犯的平均成本目前为 362 万美元,实际上比 2016 年下降了 10%。

数据侵犯可能涉及敏感企业文件、技术蓝图、知识产权、商业秘密甚至电子邮件的泄露。这一直是数量庞大并对企业有更大影响。复杂的攻击者能够为目标武装高度定制的恶意软件,并且还能悄无声息地传送恶意软件。

根据 Mandiant 的 M-Trend 2017 年报告,大多数受害组织被其他人通知其遭受侵犯,而非自身员工。超过 53%的侵入是由外部来源发现的。组织应该制定主动的侵入管理计划,以在被外部人员通知之前检测到侵犯。越早发现,组织就能节省更多资金。Ponemon 研究所还建议组织应该在 100 天内确定侵入。在此时间内检测到破坏的平均成本为 590 万美元,但对于那些没有工具检测到这一点的组织来说,平均成本上升至 870 万美元。数据侵犯发生的方式有多种,并且以下是一些最常见的原因:

  • 恶意攻击:对手可以启动恶意软件或无恶意软件攻击,利用应用程序漏洞来窃取敏感信息。

  • 不安全的安全系统:攻击者已变得更加先进和持久。攻击者可以使用窃取的凭据看起来像网络中的合法用户,因此绕过现有的安全系统,如防火墙,入侵防御系统IPS)和终端安全。

  • 人为失误:根据 2017 年 Verizon 数据侵犯调查报告,88%的数据侵犯涉及人为失误。人为失误是所有组织必须应对的问题。

最近显著的数据侵犯

一些最显著的最近的数据侵犯如下:

  • 2017 年 9 月的 Equifax:Equifax 是美国三大信用机构之一,遭受了影响了 1.43 亿消费者的泄露。一个未知的威胁组织成功地通过利用 Apache Struts CVE-2017-5638 漏洞来入侵 Equifax 在线服务。由于被盗数据的敏感性,包括社会安全号码SSN)和驾照号码,这是有史以来最严重的泄露之一。

  • 2017 年 7 月的 Verizon:约有 1400 万 Verizon 的订户可能受到了数据泄露的影响。受影响的服务器由以色列的 NICE 系统管理。

  • 2017 年 5 月 31 日的 Edmodo:教育平台 Edmodo 上超过 7800 万用户的信息被泄露。这是在黑暗网络上发现一名黑客(被称为 nclay)出售 7700 万 Edmodo 帐户时公开通知的。

  • 2017 年 3 月 7 日的 Verifone:美国领先的 POS 信用卡终端制造商 Verifone 在其内部网络中发现了一起大规模数据泄露。消息来源表明,有证据表明俄罗斯的黑客组织参与了此次泄露。

数据泄露的影响

企业遭遇客户或合作伙伴的数据丢失或任何其他机密数据的后果严重且不断增长。独立的安全研究公司 Ponemon 研究所已经对数据泄露受害组织进行了一项调查,以了解数据泄露的影响:

  • 财务损失:约有 113 家经历数据泄露的上市公司的股价平均下跌了 5%,导致了客户基础的流失

  • 品牌声誉损失:61% 的首席营销官认为数据泄露的最大成本是品牌价值的损失

  • 客户信任流失:消费者信任金融机构、医疗保健提供者,甚至政府机构,以保护他们的个人信息和隐私

要了解每种影响的见解,请查看 2017 年 Ponemon 研究所的以下报告:www.centrify.com/media/4772757/ponemon_data_breach_impact_study_uk.pdf

高级持久性威胁(APT)

APT 使用多个阶段来攻击网络,避免被检测,并长期收集有价值的信息:

  • 高级:它是一种高级攻击,因为它由攻击者可以利用的广泛的感染向量和恶意软件技术组成,这些技术被混合在一起以成功地入侵系统。

  • 持续性:它是持续性的,因为被入侵的威胁始终存在。

  • 威胁:这不是典型的、平凡的系统妥协。这种攻击对目标构成了真正的威胁,不仅因为它得到了高度组织、资金充裕和积极进取的犯罪分子的支持,而且因为如果攻击成功,它对目标的后果可能远远超出了正常的系统清理范围。

随着技术的进步,新的方式已经出现,对企业实体和任何业务进行监视。这是以 APT 的形式进行的。APT 可以被描述为对一个组织的网络进行攻击,允许未经授权的人长时间地在网络中存在而不被察觉或未被发现。

什么使 APT 如此不同?

与普通网络犯罪分子不同,APT 基于目标的选择、目标和人为因素:

  • 目标:它们是基于财政、政治、地缘政治、监视和安全情报利益来选择的,以获得高价值信息。

  • 目标:APT 的目标不是简单地进入然后退出,而是获得对网络资源的长期访问权,并使自己在安全管理员的监测下保持未被察觉。

  • 人为因素:这是整个 APT 操作的一个关键因素,因为该操作可以通过钓鱼攻击甚至是内部威胁来进行。

欲了解更多关于数据外泄的信息,请访问 about-threats.trendmicro.com/cloud-content/us/ent-primers/pdf/how_do_threat_actors_steal_your_data.pdf

防御者的观点

在了解新兴威胁形势和一些最有效的网络攻击之后,重要的是着手加强我们自己的防御工作。这些威胁团体已经得到了他们需要的一切,以发现一个组织的资产,然后找到漏洞,据此构建他们的武器。这对于那些一直没有适应性的组织来说是一个巨大的关注点,甚至有些组织已经存在几十年了,但让我们接受这样一个事实,有很多机构在实现网络卫生和更好的网络防御生态方面取得了辉煌的成就。让我们专注于其中一些机构,包括政府和企业。

政府

多个外国安全机构已针对政府电子系统进行了定向攻击,以收集情报。随着互联技术的日益普及,政府系统在扩大攻击面方面也面临着挑战。政府当局提高保护其关键资产的能力至关重要。

美国(US)

美国总统唐纳德·特朗普于 2017 年 5 月 11 日签署了一项行政命令,涉及加强联邦网络的网络安全,强调问责制,改进关键基础设施的框架,并现代化现有的网络安全系统。美国国防部也提出了加强网络防御和网络威慑姿态的战略,其中包括三个主要的网络任务,如下截图所示:

网络任务部队计划在 2018 年前组建 133 支队伍

要了解更多关于美国国防部加强网络防御和网络威慑姿态战略,请访问以下链接:www.defense.gov/News/Special-Reports/0415_Cyber-Strategy/

英国(英国)

通过 2016-2021 年的国家网络安全战略NCSS),英国政府计划使该国安全和具有弹性。这一愿景概括为以下三个目标:

  • 捍卫网络空间:这是为了确保英国的网络、数据和系统受到保护和弹性支持。从而,英国公民、企业和公共机构应该具备足够的专业知识和能力来自我防御。

  • 威慑对手:用于发现、了解、调查和打击针对英国的网络威胁。

  • 发展其能力:借助自持续的人才储备,它为英国在公共和私营部门的国民提供必要的技能。

要深入了解英国 NCSS 项目,请访问以下链接:www.gov.uk/government/publications/national-cyber-security-strategy-2016-to-2021

欧洲

欧盟网络和信息安全局ENISA)是欧盟国家和欧盟机构相关网络和信息安全的专业和卓越中心。有一些重大的值得注意的举措,如年度隐私论坛APF)、ENISA 威胁格局ETL)和 Cyber Europe——一个旨在保护欧盟免受协同网络攻击的泛欧洲演习。

在 2018 年,通用数据保护条例GDPR)将取代数据保护指令 95/46/EC,并带来以下变化:增加的领土范围、处罚、同意、泄露通知、访问权、被遗忘权、数据可携性、隐私设计和数据保护官员。要了解 GDPR 的每个垂直领域,请访问以下链接:www.eugdpr.org/key-changes.html

印度

在 2017 年 2 月,印度政府的计算机应急响应小组CERT-In)推出了网络卫生中心,这是一个清除僵尸网络和恶意软件分析中心,旨在通过检测和清除用户终端中的僵尸程序来创建一个安全的印度网络空间。要了解更多关于印度在清除僵尸网络计划上的倡议,以及其他组织如何帮助政府实现这一目标的信息,请访问链接:www.cyberswachhtakendra.gov.in/

企业

随着移动性、云和物联网的快速适应,企业更多地面临潜在威胁。事实上,一些最流行的技术,如自带设备BYOD),使内部威胁的概率和分数变得更高。即使在预防安全方面投入了数百万美元,仍然无法完全保证安全,这促使组织探索各种新兴安全防御技术,以便检测和打击成功绕过现有安全系统的高级威胁。在许多跨国组织中,首席信息安全官CISO)需要同时兼顾多重任务。在 2018 年,每个 CISO 都将就其组织的安全做出一些关键决定。

以下提及了一些新兴安全防御。

终端检测和响应(EDR)

EDR 是一种旨在从网络中检测和清除恶意活动的解决方案。EDR 解决方案通常包括以下四项能力:

  • 通过持续监控终端来检测威胁

  • 收集和调查日志,并将其与历史事件相对比和关联,从而检测每个终端活动

  • 响应对资源的危险尝试,并将其从网络中移除

  • 结束未经授权的进程,使终端回到正常状态

欺骗技术

欺骗技术曾被用于世界大战中的古代军事,现在,则是在网络空间的世界中。简而言之,这是一种技术,允许攻击者渗透到一个假目标系统中。通过欺骗,企业可以探测到攻击者,并了解他们的行为和相关信息,从而帮助改进自己的防御。这可以通过多层堆栈来扩展,包括网络设备、终端和应用程序。

网络威胁情报(CTI)

CTI 是分析对手能力的一种方式。在网络空间中,它通常以威胁指标IOC)的形式传递,包括恶意 IP 地址、域名、哈希等。对于组织来说,了解他们的资产、人员和每个连接的第三方是至关重要的,以便他们可以准备自己的威胁情报,并计划加强自己的防御。

新兴安全挑战

每个组织都必须参与这场与网络攻击者的永无休止的竞赛。如果你无法在对手之前保持领先,你很可能会成为攻击的受害者。在未来几年,防御者必须为一些最新的安全挑战和威胁做好准备。这些包括以下内容:

  • 安全适应速度缓慢:与网络和云转型不同,网络安全解决方案的发展速度不如人意。传统的网络分段已被简化和扁平的架构所取代,消除了大量的网络复杂性。然而,安全解决方案仍然使用传统的基于区域的方法来缓解威胁。

  • 人为错误:根据 IBM 安全服务报告,超过 95%的调查的网络事件是由于人为错误引起的,比如系统配置错误和不足的补丁管理。

  • 第三方供应商安全风险:在互联的商业世界中,组织不得不让其他组织存储和使用其信息以改善业务运营,然而这也可能带来更大的风险。如果第三方受到损害,组织将面临业务数据丢失的风险。大多数供应链攻击使用了能够绕过现有安全系统的复杂攻击向量。

摘要

在了解当前的威胁格局、防御者视角、实时攻击模拟和安全失败的根本原因之后,很明显地可以看出,对于数据泄露和其他高级定向攻击,并没有万能的解决方法。攻击者根据技术和业务流程的变化来改变其武器和战术,而防御者则积极探索各种安全工具。同时也很明显,攻击者不需要复杂的技巧就能实施复杂的数据泄露;他们只需要抓住机会。借助开源工具和免费的在线侦察平台,威胁行为者能够发现资产及其对应的漏洞。

在下一章中,您将学习一些部署网络安全系统的有效方法。

问题

在网络空间中,总会留下一些关于企业和组织面临的真实风险、实现更好的防御策略以及安全出错的问题。以下是一些被广泛提出的问题:

  1. 如何让组织了解网络空间中对手的能力?

  2. 如何准备有效的网络威胁情报?

  3. 如何适应新兴的网络安全技术?

进一步阅读

请考虑以下链接以进一步阅读:

第二章:安全必须演变

在了解了威胁景观的大部分关键方面后,是时候改变我们看待网络安全的方式了。恶意软件家族的无穷多种类具有持久性、隐藏性、自毁性,并且可以通过表现得像合法用户一样来绕过传统的安全系统,使防御者们不得不采用新的安全方法以实现更好的网络姿态。在本章中,我们将了解防御者采取的不同方法来应对高级威胁并加强网络安全系统。

本章将介绍从网络边界到服务器农场部署的一些最广泛使用的安全实践。本章还将探讨零信任安全方法和接受攻击的安全方法的见解。

在本章中,您将了解以下主题:

  • 安全生态系统

  • 零信任方法

  • 假设被攻击方法

  • 基础层的演变

安全生态系统

数千个安全机构和安全研究人员日夜工作,以创新并开发应对新威胁的有效解决方案。组织每年花费数百万美元来增强其安全姿态和工具。他们不断研究零日漏洞,为端点保护构建人工神经网络ANN),为新威胁模型建立机器学习模型,构建有效的网络安全事件响应流程和意识计划等。

主要有四类网络攻击防范策略:

  • 减少攻击面:大多数组织都有定期进行漏洞扫描的流程,包括外部和内部,用于查找不需要的应用程序端口、文件扩展信息和平台信息。这种持续的安全威胁评估过程帮助他们确定以下问题:

    • 我们正在做些什么不同的事情?(技术、流程、应用程序、人员等)

    • 最高风险的应用程序是什么?

    • 网络中的安全漏洞是什么?

    • 哪些用户和流程最具风险?

迈克尔·霍华德(微软安全业务部门)、乔恩·平卡斯(微软研究员)和珍妮特·M·温格(卡内基大学计算机科学家)开发了一种方法,用于衡量任何应用程序的攻击面,并跟踪攻击面的每一次更改。他们将其命名为相对攻击面商数RASQ)。他们的工作是受到当今行业面临的实际问题的启发。衡量系统之间相对安全性的方法是受霍华德关于相对攻击面的非正式概念的启发。他们在霍华德原始的 17 个攻击向量上增加了三个,并展示了 5 个 Windows 版本的 RASQ 计算。

  • 完全可见性:一些最流行的勒索软件,如 WannaCry 和 NotPetya,利用 SMB 漏洞来威胁终端。虽然 SMB 是一种常用的微软协议,但具有完全可见性的组织可以将良好的 SMB 行为与不良的 SMB 行为分开。同样,存在许多难以通过现有安全系统保护的异常情况;然而,检测成为揭露此类恶意行为的关键,并且甚至有助于进行感染后的分析。这种策略也提高了组织的安全姿态。

  • 预防已知威胁:Verizon 的 2017 年数据泄露调查报告发现,99%的恶意软件仅见过一次,威胁行为者在不停的网络战场中不断修改它,高调的网络攻击总是成为头条新闻,并引起组织的关注以保护自己免受这些攻击,防火墙和杀毒软件作为网络和终端的第一道防线是必要的。

  • 预防未知威胁:随着今天的先进威胁和黑客技术,宣称你对 100%的攻击有防护已经成为一种神话。有一些先进而未知的威胁从未被见过,它们甚至行为方式与合法用户完全相同,为了检测和响应此类威胁,组织正在采用具有动态和行为分析、机器学习/深度学习以及攻击者技术、战术和程序TTPs)分析能力的新方法。

除了这些众所周知且广泛采用的安全技术之外,几家安全组织和专家不断探索新的方法来保护他们组织的关键资产免受新兴威胁的影响。坏消息是,大多数防御者仍然将它们视为任何其他恶意软件;然而,事实是网络攻击者变得更加复杂、有经济动机且有耐心。他们变得更加难以识别,他们手动执行命令和工具(罪犯在面对更大的目标时从不冒险),并且攻击者同时从多个途径渗透网络。

零信任方法

由福雷斯特(Forrester)最初提出的广受认可的方法是数据为中心的方法,通过实施始终验证来使用所有数据和资产。这个方法旨在解决平面网络问题,帮助威胁行为者通过横向移动不被察觉,并窃取敏感和机密信息。这种方法还赋予了安全专家重新掌控他们的网络和应用的能力。以下是我们如何开始实施零信任方法:

  1. 识别和分类敏感数据:为了保护您的数据,看到它至关重要。如果您不了解自己的敏感数据,感染后的情况可能会变得更糟。一旦识别出敏感数据,就有必要对其进行分类。

  2. 绘制数据流图:重要的是要对网络上的应用程序流程有一个高级别的理解。此外,最好与所有利益相关者(包括网络团队、应用程序团队和安全架构师)合作,以利用现有模型准备最终的数据流图。

  3. 设计网络架构:零信任设计展示了多个网络之间的通信流程,还说明了用户如何访问外部数据。在这个阶段,组织确定了具有物理和虚拟交换机配置的微观边界。

  4. 创建策略基础:这种方法的一个关键方面是,安全专业人员应该基于需知来限制访问并构建有效的访问控制。除了了解 IP 标头字段外,安全团队还需要了解用户身份以及应用程序行为。

  5. 持续监控:应该实时收集和检查整个网络和应用程序日志,包括不仅来自外部网络的流量,还包括来自私有网络的流量。内部流量应该像对待外部流量一样对待。

假定遭受攻击方法

即使有着不断增长的网络攻击预防系统,包括防病毒软件、下一代防病毒软件、防火墙和下一代防火墙,高级威胁仍然设法绕过安全系统。因此,没有任何安全预防技术能够保证对此类威胁的完全防护。在过去几年中,组织采用了一种称为假定遭受攻击的新方法,这是一种测试其事件响应能力的方式。

假定遭受攻击的思维方式使得组织能够接受各种安全解决方案和服务,如下所示:

  • 红队演练:红队演练是增强版的渗透测试,由一组高度专业的安全专家执行,不仅是为了发现漏洞,还要测试组织的检测和事件响应能力。这有助于组织的高级管理层针对即时改进提出战术建议,并针对长期安全态势改进提出战略建议。

  • 持续监控:一个不间断、始终活跃的安全监控系统为企业网络中的用户和其端点提供实时可见性。这有助于我们在感染前阶段识别威胁,并构建更好的事件响应流程,实现更智能的网络安全卫生和合规性。大多数组织倾向于将此服务外包给托管安全服务MSS)提供商,他们通过常用工具,如安全信息和事件管理SIEM)和端点检测与响应EDR)跟踪网络、应用程序和用户活动。

基础层面的演变

我们有一个漏洞百出的船体结构,尽管我们对其进行修复,但我们只是使这艘越来越快、更智能的船装载了越来越多的不必要资源。是时候尝试改变整个船体结构,看看我们能否做得更好了。

整个网络安全的目的是保护运行在 TCP/IP 模型上、使用客户端-服务器数据库架构的计算机网络。修改数据的权限保留在集中式服务器上,该服务器在允许客户端访问数据库之前对每个客户端进行身份验证。由于只有一个服务器对规则和维护进行管理,如果该服务器受到威胁,整个数据可能会被修改、渗透甚至删除。大多数数据泄露事件基本上是因为在云上有一个集中式服务器数据库而造成的影响和风险。随着我们进入下一章,你将了解如何利用一项最引人注目的技术创新来解决这个根本和关键的差距,名为区块链

总结

在本章中,你了解了安全专家如何在网络安全领域探索创新。你也了解了一些最有效和广泛使用的安全方法和思维方式。最后,我们看了一下基础层面的安全挑战,这些挑战很少被提及。在下一章中,你将了解区块链、构建块、工作原理以及它在工业技术中的作用。

问题

安全系统的演进是一个永无止境的过程,它总是会为改进和整合打开空间:

  1. 采用零信任方法面临的挑战是什么?

  2. 采用假设泄露方法面临的挑战是什么?

  3. 为什么迄今为止中心化数据库风险没有被覆盖?

进一步阅读

请考虑以下链接以获取进一步阅读:

第三章:介绍区块链和以太坊

几年一次,我们会见证到具有颠覆性能力的革命性技术的诞生,它们有能力颠覆广泛的商业模式。本章将介绍区块链技术及其商业应用案例。区块链是一个概念,起源于一篇名为《比特币:一种点对点的电子现金系统》的白皮书,作者是Satoshi Nakamoto,目的是避免第三方介入任何金融交易。我们还将讨论基于区块链的业务需求、密码学和共识,以减少欺诈风险。

本章节内容包括以下主题:

  • 什么是区块链?

  • 互联网与区块链

  • 它是如何工作的?

  • 区块链的构建模块

  • 以太坊区块链

  • 私有与公有区块链

  • 业务适应

什么是区块链?

就像每天的其他日子一样,你正在享受早晨的咖啡和新闻。与此同时,某处,一个财务动机的黑客正在寻找所有可能的方法来攻击一个广泛使用的社交网站上数百万用户的帐户。黑客成功地访问了数据库并窃取了大量的凭据。

大约 180 天后,这一大规模的凭证盗窃事件被公开揭露,你发现自己也是被攻击目标之一。和你一样,数百万其他用户也有充分的理由担心他们的信任和隐私。例子包括最新的 2017 年信用档案公司数据泄露案(1.43 亿凭证被泄露)、2016 年 Adult Friend Finder 案(4.13 亿账户被盗)、2015 年 Anthem 案(7.8 千万帐户被黑客攻击),等等。没有一个预防性解决方案可以百分之百安全,但是在正确的时间找出问题可能会拯救这些账户的滥用。如果有一种技术可以做到以下几点:

  • 检测谁查看了一个人的账户并更改它?

  • 确保与个人相关的数据不被滥用?

这听起来像是一个明智的选择,但实施起来并不难。这就是区块链的作用。简而言之,它只是一个智能、安全且不断增长的数据库。区块链是一个按时间顺序记录任何价值或资产交易的分类账。区块链网络提供了使用点对点网络在独立方之间传输任何类型价值或资产的能力。区块链技术最初的目标是在两个独立方之间建立值得信赖的金融交易,而无需任何第三方,比如银行;然而,后来,几个行业采用了区块链来简化其供应链流程、KYC 系统、数据管理等。随着在线服务的增加和在线交易数量的增加,用户必须信任并依赖于诸如银行和支付网关提供商等第三方。这导致了区块链的诞生。

简史

2009 年,比特币:一种点对点电子现金系统的白皮书由Satoshi Nakamoto发布,旨在解决现有金融市场面临的挑战。这份白皮书着眼于开发一个平台,允许一方向另一方进行在线支付,而无需经过金融机构。其中一个主要解决的问题是双重支付方法,该方法用于避免比特币的双重花费(数字货币的一个独特问题是在花费后复制相同金额的风险)。由于比特币是数字货币,复制数字数据并宣布它并不困难,因此发生了双重支付,并提出了一个解决方案来防止这种情况发生——这就是区块链。然而,Nakamoto 的原始论文并没有提到区块链一词;它首次出现在比特币源代码的注释中,被称为block chain

区块链的基础知识

区块链是一个分散式数据库,以追加方式安全记录所有交易。由于其分散式数据库的特性,区块链迅速在许多行业中流行起来。对于一个不能承受单点故障的组织来说,区块链数据库使得敏感信息几乎不可能被网络犯罪分子攻击。此外,区块链不仅仅由受信任的管理员或开发人员管理;它是由任何可以被信任的人或来自已知或未知方的人管理的。下图是区块链网络的图形表示:

每台连接到互联网的计算机都需要具有区块链节点软件,并运行特定于区块链生态系统的应用程序。根据使用情况,这些计算机的参与可以受到限制。例如,基于区块链的生态系统银行链只允许银行运行银行链节点客户端应用程序。

谁在使用区块链以及如何使用?

在当前技术时代,除了任何热门技术外,区块链有能力以颠覆者的身份进入任何行业。这可能是为了降低运营支出,克服与网络安全相关的问题,提供身份和访问管理解决方案,促进私人和公共机构的合作,实现更好的数据管理系统,增强和简化物流和供应链管理,实现无缝的保险销售和管理系统,或者部署更好的健康记录数据库系统以保护人们免受任何数据窃取或间谍企图的威胁。

互联网与区块链

互联网是一个拥有 30 多年历史的技术,其目的是通过 TCP/IP 和开放系统互联OSI)模型栈共享信息。从互联网诞生开始,每一项新技术都颠覆了现有的技术,无论是电子邮件、网络还是电子商务。互联网是最强大的技术之一,足以将思想传播到影响和创造现实的幻觉。

TCP/IP 是第一个用于标准化类似网络之间通信的互联网协议套件;然而,OSI 模型是由国际标准化组织ISO)开发的,旨在提供一个框架来标准化系统之间的通信,无论供应商、模型和技术如何。组织偏好这两种模型用于客户端/服务器通信,因为客户端/服务器网络往往在性质上更可靠和稳定。重要的是要对客户使用的数据以及他们如何使用数据有更好的控制。在客户端/服务器模型中,客户端管理其自己的本地资源,例如工作站或任何设备的硬件和软件组件,而服务器是一个管理共享资源的高度强大的系统,例如硬件、网络通信渠道和数据库。在对等网络中,没有中央机构来监视、控制和强制执行。尽管小型企业过去偏爱此类网络用于其内部需求,但由于失去对业务操作和管理的控制的风险,大型组织一直远离对等网络。

然而,在连接世界的这段旅程中,有一些时刻重新定义了创新并为每个企业的需求提供了媒介。这就是区块链,一个由独立节点组成的对等网络,可共享任何类型的价值,无需任何第三方参与。计算的演变首先是从大型机计算开始的,十年后互联网诞生。云计算通常是由Ramnath Chellappa教授在 1997 年定义的,亚马逊于 2006 年推出了其弹性计算云EC2)服务。我们现在处于一种新型计算的时代,它改变了数据安全存储的方式。请看下图:

IP 数据包与块

我们在互联网上进行的所有操作都通过 TCP/IP 模型上的 IP 数据包进行。IP 数据包是可以通过互联网发送的最小数据单位。一个 IP 数据包有两个组成部分——IP 头部有效载荷

为了发送这些信息,它需要源和目的地 IP 地址。一个块是这个过程的重要元素;它被链接在一起形成一个区块链。块也有两个组成部分——块头部块体。为了发送任何类型的值或交易,它添加自己的数字签名作为源标识符和公钥,这类似于点对点网络中目的地的身份。

网页应用程序与 dApp

网页应用程序(web app)简单来说就是一个基于 Web 的应用程序,广泛用于客户-服务器模型以为用户提供服务。然而,去中心化应用程序dApp)是一种运行在点对点计算机网络上的应用程序。

传统的 Web 应用程序使用 CSS、HTML 和 JavaScript 来渲染前端页面。它通过 API 调用从数据库中获取数据。dApp 的前端使用完全相同的技术来渲染页面,但是不同于调用 API,dApp 使用一个智能合约连接到区块链。

它是如何工作的?

让我们以最简单的形式了解区块链账本的工作原理。为了以通用形式理解系统,重要的是使用几种区块链的状态并进一步探索:

  1. 交易准备: 在这个阶段,甲方创建了一个交易,其中包括接收者的公共地址、源数字签名和交易消息等信息。现在这个交易对所有区块链中的节点都是可用的。

  2. 交易验证: 区块链节点在一个无需信任的模型中工作,其中每个节点(运行区块链客户端软件的机器)接收到这个交易,并使用甲方的公钥验证数字签名。验证成功后,这个经过身份验证的交易被停放在账本队列中,等待所有节点成功验证相同的交易。

  3. 块生成: 排队的交易被排列在一起,一个节点在网络中创建了一个块。在比特币区块链中,当比特币节点,也称为矿工,通过解决一些数学上复杂的问题创建一个块时,会获得比特币奖励。

  4. 区块验证: 在成功生成区块后,网络中的节点将进行迭代验证过程,其中大多数节点必须达成共识。有四种流行的实现共识的方式,例如工作量证明PoW),权益证明PoS),委托权益证明DPoS)和实用拜占庭容错PBFT)。比特币使用 PoW 来实现共识;然而,以太坊使用 PoS 进行共识。这种机制影响了金融方面,并确保了整个交易操作的安全性。

  5. 区块链技术:在成功的共识机制之后,区块将经过验证并添加到区块链中。

区块链的几种状态如下图所示:

区块链的构建模块

区块链技术是建立在一组现有技术之上的,这些技术已被广泛应用于整个行业。让我们逐个查看构成整个系统分布式、不可变和可靠性质的区块链的每个组件。

区块

分布式分类帐存储在数据库中,并由区块链网络中的每个参与者更新。分类帐以一系列单位块表示。为了理解区块,让我们从传统数据模型开始,然后跳到区块链网络,了解如何将区块链接在一起。

首先让我们了解互联网上常规的信息交换方式。在 TCP/IP 协议栈的世界中,信息是通过客户端/服务器模型进行传输的,其中客户端可以在集中式服务器上存储和修改数据。然而,数据库的控制仍然由指定的管理员管理。如果管理员的安全性受到威胁,整个数据库可以被更改或删除。理论上,服务器与用户机器没有什么区别;然而,在实际中,服务器的目的是同时为多个终端用户提供服务。请看以下图示:

区块链网络由名为节点的多台独立机器组成。与将整个信息存储在集中式数据库服务器上的传统数据库不同,区块链节点保留了整个数据库的副本,并具有管理角色。即使一个节点宕机,信息仍将对其他节点可用,如下图所示:

当一个节点加入区块链网络时,它会下载更新后的区块链分类帐。每个节点负责管理和更新其带有验证区块的分类帐。该节点维护分类帐并以块的形式组织它,连接到哈希算法,如下图所示:

多个交易被捆绑在一起形成一个区块,以最简单的方式,它是一种数据结构。每种加密货币都有自己的区块链和自定义属性。例如,在比特币区块链中,每 10 分钟生成一个区块,每个区块的大小为 1 MB,而在以太坊区块链中,每 12-14 秒生成一个区块,每个区块的大小为 2 KB。看一下以下图表:

让我们更深入了解区块。一个区块由区块头和区块主体组成:

  • 区块头:区块头帮助我们识别区块链中的特定区块。它包含一组元数据:

区块的各个组成部分解释如下:

    • 版本:这是一个 4 字节的字段,用于跟踪软件或协议版本。

    • 时间戳:这是一个 4 字节的字段,表示区块创建时间(秒)。

    • 上一个区块的哈希:这是一个 32 字节的字段,表示链中上一个区块的哈希。

    • Nonce:这是一个 4 字节的字段,用于跟踪 PoW 算法计数器。

    • Merkle 根哈希:这是一个 32 字节的字段,是该区块交易 Merkle 树根的哈希值。

    • 区块主体:区块的这部分包含一系列交易。在比特币世界中,一个区块平均包含 500 多笔交易。每个交易都必须经过数字签名;否则,将被视为无效。为此,使用哈希函数对实际交易和私钥/密钥进行算法运算。

加密学 – 数字签名和哈希算法

密码哈希是一种根据任何给定长度的输入字符串生成固定长度输出的方法。输出被称为哈希值或消息摘要,旨在保护任何类型的数据的完整性,例如文件、媒体或文本。只分配一个消息摘要来保护特定输入或敏感信息。对输入数据进行轻微更改会导致结果的巨大差异,使得几乎不可能预测数据的传输或静止。有各种方法来生成哈希值或消息摘要。在加密货币世界中,比特币等热门货币使用 SHA-256 算法对每个区块生成一个固定长度的 256 位哈希值或消息摘要。

让我们了解 SHA-256 算法的工作原理。有几个免费的网络工具可用来生成 SHA-256 哈希值。我们在passwordsgenerator.net/sha256-hash-generator/上演示。

让我们开始生成一个哈希:

  • 第一个输入消息如下:
"Hi" 
Hash =3639efcd08abb273b1619e82e78c29a7df02c1051b1820e99fc395dcaa3326b8
 

  • 第二个输入消息如下:
"Welcome to the world of Blockchain"


Hash = d6d937bbd71b1184e588dffb50709e0fc4d8e7323df3acd98f2826a3601793ef

  • 第三,在加密货币的背景下,输入消息如下:
"Mike is paying John $200 at Jan 23, 2017"


Hash = 5afef671f79cab507aba379a84477d637aac6ad72456ef3c35a39476e886b9d0


为了确保传输的文件没有损坏,接收者可以始终将计算得出的哈希与给定的哈希进行比较,以了解文件或其任何内容的作者。在区块链世界中,哈希是其不可变性特性的支柱。哈希过程确保了分类账中的任何区块都没有被修改或篡改。区块链和节点不必记住每笔交易的详细信息,例如Mike 在 2017 年 7 月 20 日支付$20 给 JohnKevin 在 2017 年 9 月 21 日收到了法律文件Tom 在 2017 年 11 月 22 日完成了从休斯顿到达拉斯的行程,而只需记住并跟踪其相应的哈希。

让我们了解一下区块链如何利用哈希算法。在区块链中,一个节点将整个分类账以按时间顺序连接的区块形式排列。为了确保分类账保持不可篡改,每个区块都依赖于前一个区块。换句话说,新区块无法在没有前一个区块的哈希的情况下产生。在将新区块添加到分类账之前,这必须得到区块链中每个节点的批准和验证。这使得任何人都无法篡改或修改分类账,除非是黑客,他有能力同时感染和妥协区块链中的数百万个节点。只有第一个区块称为创世区块是自己生成的并指向自己。下图显示了简化的比特币区块链:

每个区块都指向上一个哈希区块的哈希,这成为区块链不可变系统的支柱。现在,即使中间的一个区块被改变或受到任何方式的干扰,黑客也永远无法获得相同的区块链,因为区块的微小变化可能导致结果哈希的重大变化。在每个区块中有成千上万的交易,要找到一个不耗时且处理敏感的交易变得极其困难。为了避免这种复杂的工作,开发了一种名为默克尔树的综合哈希树。下图显示了默克尔树:

哈希排列的目的是简化在数千个中定位单个交易哈希的过程。

数字签名已经在许多组织的安全控制核心中起着作用,确保传输数据的真实性并防止伪造。数字签名确保交易发生在两个经过验证和认证的当事人之间。在现实世界中,每个人都是通过其独特和永久的国民身份号码进行身份验证,例如美国的社会安全号码(SSN),新加坡的国民登记身份证(NRIC),英国的国民保险号码(NINO),印度的印度独特身份机构(UIDAI)等。政府机构根据其唯一身份号码进行财务交易、财产交易和公民与政府之间的法律交易的跟踪,其中包含有关其个人详细信息甚至生物特征信息的信息,在完成交易时将进行验证。在数字世界中,数字签名对于确保两个经过验证的当事人之间的交易至关重要。现在让我们了解为什么区块链需要数字签名。

在区块链技术中,每个节点都保持着一个具有行政角色的区块链总账。任何人都可以使用自己的数字身份将其交易添加到总账中。与区块链技术相关的好消息和坏消息如下所示:

  • 坏消息:数字身份全部由 1 和 0 组成,这增加了伪造的可能性。任何一方都可以通过简单地复制受害节点的数字身份来尝试在总账中进行欺诈性记录。

  • 好消息:区块链网络利用私钥和公钥对。每个节点都有自己的私钥和公钥对。数字签名和哈希与区块链共同工作,以了解这两种基本技术如何携手保持区块链具有高级别的安全性。

假设甲方想要向乙方发送交易信息。为了保持我们对区块链的关注,已经移除了比特币挖掘,尽管进行财务交易仍然需要成功的挖掘过程。甲方有一笔交易,准备宣布。消息是Party A sends $200 to Party B on July 23, 2017 at 03:00 EST

为了避免任何伪造,甲方必须使用非对称密钥对,也称为私钥/公钥对。信息由私钥签名,并且这仍然是甲方的私人信息。假设甲方有一个私钥或秘钥Blockchain#123,消息是Party A sends $200 to Party B on July 23, 2017 at 03:00 EST。使用 SHA256 消息摘要算法签名消息将如下所示:

读者也可以在www.freeformatter.com/hmac-generator.html链接中提到的工具执行相同的操作。以下是计算得到的基于哈希的消息认证代码HMAC):

图片

现在,每个交易由三个重要元素组成—类似于源地址的数字签名,指示目的地的公钥,以及最后的交易信息。

这个交易到达B方以及其他通过公钥验证了这个交易的参与者。在成功验证后,交易被确认。

共识 – 区块链的核心

共识是区块链系统的一个组成部分,负责在分布式环境中达成一致。区块链的开放和无信任性质是区块链的核心;然而,同样也需要注意额外的注意和严格的流程。由于任何人都可以参与并提交信息,评估每个参与者的议程是至关重要的,并且让每个人同意一项理想政策有助于避免任何欺诈企图。这催生了类似信令过程的共识机制,以确保在实际通信开始之前已经考虑到所有事项。以下是用于实现区块链共识的四种主要方法:

  • PoW:在区块链中实现共识的最流行方法之一是由比特币创始人中本聪发明的。在这种共识类型中,基于信任特定节点可以避免欺诈企图,该节点旨在执行最大的计算工作。区块所有者,也被称为加密货币世界中的矿工,知道拥有强大的计算资源可以实现更好的哈希率,并且获得比特币奖励的几率增加。新交易广播到网络中的所有节点,并且每个节点都在监听这些交易。想要通过比特币获取激励的节点被称为矿工,但他们不仅仅是监听,他们收集交易。矿工必须用 PoW 算法解决一些复杂的数学问题。首先解决的人将获得比特币奖励。最终,验证的区块被添加到每个矿工的区块链中。

这个数学问题就是通过对一组交易和一个随机数(一个 32 位随机数)应用哈希来实现一个期望哈希的过程。如果输出得到一个比目标哈希更小的哈希,矿工就赢得了该区块并实现了共识。当一个矿工赢得一个区块时,每个区块都携带一定数量的比特币BTC),然后他们收到:

    • 2009 年 1 月至 2012 年 11 月:每个区块是 50 BTC

    • 2012 年 11 月至 2016 年 7 月:每个区块是 25 BTC

    • 2016 年 7 月至 2020 年 2 月:每个区块是 12.5 BTC

    • Feb 2020-Sep 2023: 每个区块将会有 6.25 BTC

  • PoS:这是区块链中另一种节点之间达成共识和验证交易的方法。与 PoW 不同,使用 PoS,区块生成器不会根据其当前的财富来选择。在这种机制下,区块不会被奖励,PoS 中的矿工被称为铸造者。以太坊使用 PoS,选择这种方法的目的是避免因大量耗电而产生的环境压力。根据 Digiconomist 2017 年的报告,整个比特币网络消耗的电力估计超过了爱尔兰共和国。比特币使用 PoW 机制,完全依赖于拥有强大资源的矿工,这导致了更多的电力消耗。使用 PoS 机制,节点必须加入验证者池才能被选为铸造者。Casper,一种以太坊共识 PoS 协议,作为一个混合版本与现有的 PoW 机制一起运行。PoS 适用于具有静态币量的平台,并且许多人使用它来分发代币进行投资。

  • DPoS:这是另一种共识协议,被认为是更快、更高效的模型。DPoS 使用民主方式解决共识问题。在网络中选举区块生成器并确认交易大约需要一秒钟。这样,你不仅解决了共识问题,还消除了不受欢迎的监管干预。

  • PBFT:拜占庭容错是一种既失败又在故障检测系统中起作用,并且对不同检测器显示不同模式的状态。如果一些节点成员向其他人发送关于交易的不一致信息,可能会给整个网络带来巨大的困境。PBFT 是一种解决方案,可保护网络免受拜占庭错误的侵害。

以太坊

以太坊是最古老的区块链之一,它为平台提供了一种自定义系统的方式。比特币旨在通过自己的共识机制颠覆当前的支付系统和在线银行业,而以太坊正处于去中心化现有计算机系统的中间状态,因为它在客户端-服务器模型上大量运作。

历史

2013 年,22 岁的程序员维塔利克·布特林首次在白皮书中描述了以太坊,他曾参与比特币的开发。2014 年初,一家名为以太坊瑞士有限责任公司的瑞士公司开发了第一个以太坊软件。2016 年 6 月,一个匿名团体攻击了DAO(去中心化自治组织),引发了加密社区的重大争论,并导致网络分裂成两个派别——以太坊ETH)和以太经典ETC)。

以太坊是什么?

以太坊是一个分散网络,具有在分布式环境中运行应用程序的能力。其简单的理念是避免完全依赖单一实体来存储和管理用户的个人和业务数据。在当前的数据库系统中,一旦数据存储在线,客户端就无法获取有关数据的存储方式、采取了哪些安全防范措施、谁能读取数据等信息。以太坊提供了一个平台,可以构建分布式应用程序,将每个利益相关方或参与方直接连接起来,以实现更好的透明度和零依赖性。尽管比特币和以太坊之间存在基本的相似之处,但它们在目的和能力上显著不同。通过以太坊,任何集中式服务都可以通过其独特的编程能力转变为分散式服务。以太坊基本上有三个层面——以太坊虚拟机(EVM)、加密货币以太币和 gas。

智能合约

智能合约,在其最简单的形式中,是由其创建者编写的用于执行特定任务的程序。尽管合约可以编码在任何区块链中,但以太坊是最受欢迎的选择,因为它提供了可扩展的处理能力。

以太坊允许开发人员编写他们自己的智能合约。智能合约可以用于:

  • 通过在发生特定事件时自动触发索赔,简化索赔解决流程

  • 管理用户之间的协议

  • 存储有关应用程序的信息,例如健康记录和 KYC 信息

在以太坊中,每个合约都被赋予一个地址,以便可以唯一识别。该地址是通过对创建者地址和已执行的交易数进行哈希计算得到的。

当我们将智能合约部署到公共区块链环境中时,我们会为我们的智能合约获得一个地址。我们现在可以编写代码与智能合约中的特定实例进行交互。合约有标准,如 ERC20 标准,重要的是实现所需的方法。

让我们尝试构建我们的第一个智能合约。我们将使用 Solidity 编写智能合约。Solidity 编程语言类似于 JavaScript。要开始该过程,我们首先必须使用 Ganache 软件包设置环境,该软件包将用于创建私有区块链。其次,我们需要访问在线的 MyEtherWallet,该网址为 github.com/kvhnuke/etherwallet/releases

安装完成后,我们可以通过以下链接进入以太坊 IDE 开始。以下截图显示了以太坊 IDE:

Remix 是用于 Solidity 的在线编译器,用于编写我们的智能合约代码。此代码是为我们的计数器所写。正如我们在以下截图中所看到的,它有一个变量和两个函数。变量 c 是一个整数且是私有的,这意味着它不能被合约之外的任何人访问。第一个函数 plusbyone() 通过增加其值来改变 c 的值,第二个函数 getC() 访问 c 并将其值返回给调用该函数的人或物。

当计数器代码被粘贴到 Remix 中,它将看起来像以下截图:

现在让我们打开 Ganache,我们将会看到类似于这样的内容。在屏幕顶部,我们可以看到它写着 RPC SERVER:

现在让我们尝试在浏览器中访问 MyEtherWallet,以查看结果。在右上角,您将看到一个下拉菜单,显示 MyEtherWallet 正连接到以太坊。默认情况下,它连接到以太坊的主网络。我们必须通过单击下拉菜单来更改此选项。如以下截图所示,单击“添加自定义网络 / 节点”选项:

现在我们可以输入 Ganache 准备好使用的 RPC 服务器信息。我们可以将节点命名为以下内容:

MyEtherWallet 现在通过 Ganache 连接到了我们自己托管的区块链。让我们使用 MyEtherWallet 来上传我们的计数器智能合约。为此,我们将点击位于 MyEtherWallet 导航栏顶部的“合约”选项卡,然后选择“部署合约”选项:

正如我们所看到的,MyEtherWallet 正要求我们提供合约的字节码:

要定位此信息,我们将返回到我们的 Remix IDE 并点击“详细信息”按钮:

我们现在将看到一个包含有关我们计数器智能合约信息的对话框。要复制字节码,我们将点击 BYTECODE 部分旁边的复制图标:

现在我们将回到 MyEtherWallet 并将字节码粘贴到字节码文本区域里:

现在我们可以滚动下去并导入一个账户地址来上传合约。默认情况下,Ganache 提供了五个地址,我们可以用它们来与我们的私有区块链交互。我们将返回到 Ganache 并点击钥匙图标,以便我们可以访问任何地址:

现在我们将看到私钥与账户绑定:

现在我们必须复制这个私钥并将其粘贴到 MyEtherWallet 中:

现在我们可以点击解锁按钮,MyEtherWallet 会问我们是否要签署此交易并部署我们的合同:

最后,我们将会看到一个成功的提示,如下截图所示:

成功的交易后,Ganache 将增加其当前区块值,并且我们用来部署合同的帐户的交易计数也会增加:

我们的智能合约现在已经上传到我们的区块链上。要通过增加和减少计数来与它交互,我们现在必须返回到 MyEtherWallet 并选择与合同互动选项:

MyEtherWallet 现在要求我们输入我们新部署的智能合约所在的地址,以及合同的应用二进制接口ABI)。我们可以按照以下方式查看我们的交易日志:

正如您所看到的,Ganache 告诉我们我们用来部署合同的地址。让我们点击该交易,复制创建的合同地址,并粘贴到 MyEtherWallet 中:

下面的截图显示了 MyEtherWallet 如何与我们的合同进行交互。我们将回到 Remix 并点击接口 ABI 旁边的剪贴板图标进行复制:

现在我们需要返回 MyEtherWallet,将 ABI 粘贴到文本框中,并点击访问按钮。我们可以通过点击选择函数下拉菜单与我们的合同进行交互:

在我们的代码中,我们将计数c的初始值设置为0。为了确认智能合约工作正常,我们需要调用getC()函数:

我们可以看到合同已经返回,但我们还创建了其他函数plusbyone()。让我们调用plusbyone()来测试它。我们可以通过再次选择函数下拉菜单,选择plusbyone,并创建一个新的交易来实现这个目的:

这刚刚增加了c的值。现在,我们可以再次调用getcount()来确认值是否改变:

最后,我们可以看到c变量现在等于1。所以,这澄清了我们的plusbyone()函数是有效的:

EVM

EVM 是一个用于构建和管理智能合约的去中心化运行时环境。在以太坊中,每个程序都会被数千台计算机网络处理。

智能合约被编译成字节码,具有一个称为 EVM 的特性可以读取和执行。所有节点都使用他们的 EVMs 执行此合约。从根本定义上,网络中的每个节点都持有交易的副本以及智能合约在网络中的历史记录。EVM 负责执行开发人员预先编程的合同规则。EVM 通过基于堆栈的字节码计算这些数据,而开发者则使用高级语言(如 Solidity 或 Serpent)编写智能合约。

Gas

智能合约在以太坊网络中被每个节点执行时会消耗大量能量。因为能源消耗越多,造成的费用也就越高,这也取决于智能合约编程的水平。换句话说,EVM 中的每个低级操作码执行其期望输出都需要消耗特定数量的gas

Gas 只是指执行计算的成本,并帮助开发人员了解其智能合约代码的能源消耗。与比特币市场类似,gas 的价值是由市场决定的。如果支付了更高的 gas 价格,节点将优先处理交易以获取利润。

dApp

dApp 利用加密代币和内置共识机制等激励措施。一个分布式应用程序并不需要存储其所有状态;然而,基于以太坊的分布式应用程序确实存储了可信状态,这为最终用户提供了经济解决方案。

dApp 客户端需要为前端编程,但除此之外,客户端还与以太坊区块链进行交互。客户端经常用 JavaScript 编写,因为它们可以在网页浏览器中运行,这是我们大多数人都拥有的。

dApp 浏览器利用通常用 JavaScript 编写的 dApp 客户端与一个与智能合约通信的以太坊节点进行交互。dApp 确保与以太坊节点的连接并提供了轻松更改连接的过程。它还为用户提供了一个账户界面,让他们可以轻松与这些 dApps 进行交互。

通过这些,我们已经涵盖了以太坊的一些核心组件,并研究了智能合约的实际运作。在接下来的章节中,我们将开始在以太坊区块链上构建一个分布式应用程序。

私有与公共区块链

多种区块链技术已经在过去几年中发展,并进行了多次迭代以实现商业价值。有超过一千家初创企业正在推出他们的产品,其中包括分布式区块链应用。在商业领域,了解最适合的解决方案很重要。

从诞生开始,区块链就是无需许可的,向公众开放的。你可以下载节点软件并查看整个区块链的历史,发起交易并存储信息。这让最终用户的生活变得更加轻松;然而,有意部署区块链的企业可能会将此视为一个巨大的挑战。

当涉及到商业时,公共区块链确实存在一些关键的劣势。企业通常更感兴趣的是私有区块链,以创建具有更好隐私和安全性的区块链解决方案。

公共区块链

使用公共区块链,将一个区块链接到的过程始终与节点相关,这些节点可以是独立的、不受信任的,甚至是未知的,并且可以参与共识过程来验证一个区块。在公共区块链中,任何人都可以在其系统中简单地下载区块链节点客户端并与任何人进行交易,任何人都可以通过区块浏览器读取交易。比特币和以太坊是公共区块链的一些重要示例。

比特币是第一个安全地传输资金的去中心化平台。然而,以太坊的创新目的不同——它的目的是为任何人提供一个平台来开发他们自己的去中心化应用程序,而不仅仅局限于货币的转移,而是任何类型的价值。以太坊使用智能合约来实现一组在满足特定条件时执行的自动运行程序。

私有区块链

设置私有区块链的组织将其配置为工作为权限网络。它被设计为提供更好的交易隐私,并适用于银行和其他金融机构。与公共区块链不同,仅仅连接到互联网并使用区块链节点客户端不足以发起交易;然而,联盟区块链只允许特定和经过预验证的人员访问并在网络上转移任何类型的价值。

在这个系统中,共识机制由预先选择的节点组控制和管理。这样,即使区块链在公共网络中运行,它仍然受限制,只能由特定的节点组或甚至是单个节点控制和维护。基于其限制和控制水平,私有区块链也可以被称为联盟区块链

这种实现中最受欢迎的是 Hyperledger Fabric,这是一个由 Linux 基金会托管的权限区块链框架。

商业适应

行业领导者正在花费数百万美元进行研究与开发R&D)以评估新兴的区块链平台。在任何行业中,中介机构的成本是不可避免的,并且随着交易数量的增加而增加,可能会基于订阅计划。

让我们探讨区块链的用例:

  • 金融科技:金融机构始终需要适应新兴技术来解决关键安全挑战并提升用户体验。由于技术更新涉及到停机(服务中断)的风险,组织更倾向于等待从其行业主要参与者那里获得反馈和用例。超过 50 家最大的银行机构已经认识到并赞赏区块链在提高基础层安全性方面的作用。每笔成功交易都按照时间顺序保存在分布式账本中,以散列算法的形式以区块形式保存。这意味着记录不能被篡改,从而减少了金融欺诈尝试的风险。

  • 保险科技:一般来说,填写保险单需要第三方,如经纪人、保险公司销售人员或可能是律师。通过区块链,公民可以直接填写自己的文件,而无需第三方参与。许多与保险相关的任务和子任务可以如下覆盖:

    • 理赔管理

    • 管理国内外客户的政策

    • 电子身份认证

    • 跟踪政策状态

    • 管理多个投资组合

  • 医疗保健:医疗保健运营不仅仅是标准的业务运营。随着医疗行业数据泄露和勒索软件事件的增加,关键是他们要提出一种从基础层面促进安全的技术。一些最有效的用例如下:

    • 健康记录数据管理,如图像、实验室报告和基因组学

    • 存储每个病人的完整索引历史记录,并附有适当的时间戳

    • 病人在分享或修改时会收到通知

    • 药品库存管理

  • 网络安全:网络罪犯变得越来越复杂,组织正在与他们竞争,保卫关键资产,如商业机密、知识产权和客户信息。每个组织都使用某种形式的网络安全解决方案,然而每年仍然会损失数十亿美元。区块链设计为分散、不可变和可追溯,它解决了大多数核心安全挑战。一些其用例如下:

    • 身份和访问管理

    • DDoS 防护

    • 分散式存储

    • 防范中间人攻击(MITM)攻击

总结

在本章中,您了解到了区块链如何从基础层解决许多业务挑战。通过以太坊区块链,组织现在可以轻松利用分布式应用程序的好处,类似于启动传统 Web 应用程序所需的工作。我们还了解了智能合约的系统化编程,并将其与以太坊区块链集成。

在下一章中,我们将了解由 Linux 基金会主持的Hyperledger项目。我们还将了解 Hyperledger 如何解决几个业务需求。

问题

在探索了区块链技术及其组成部分和不可变的链接过程后,我们仍然需要更多地了解区块链的不同类型:

  1. 比特币区块链能否在不久的将来用于商业应用?

  2. 以太坊的未来如何?

进一步阅读

要更深入了解区块链的架构和共识模型,请参考链接:www.researchgate.net/publication/318131748_An_Overview_of_Blockchain_Technology_Architecture_Consensus_and_Future_Trends

第四章:Hyperledger – 企业级区块链

在了解了区块链技术的架构、核心组件和流程之后,探索满足业务需求的可能性至关重要。区块链负责在没有第三方监管机构的情况下运行分布式网络。现在,它正在成为必须考虑的重要组成部分,并将塑造下一代金融技术和治理模式。然而,用于加密货币的区块链非常专注于奖励并为参与者提供激励,例如比特币和以太坊。为了克服这一挑战,Linux Foundation 和行业领导者合作成立了一个基于分布式账本的项目,名为 Hyperledger 项目。在本章中,您将了解 Hyperledger 项目与现有区块链技术的不同之处,其核心组件、交易流程以及如何使用 Hyperledger 技术启动应用程序。

您将在本章中学习以下主题:

  • Hyperledger 概述

  • 区块链即服务

  • 架构和核心组件

  • Hyperledger Fabric 模型

  • 比特币对以太坊对 Hyperledger

  • Hyperledger Fabric 的功能

  • 使用 Tuna 应用程序的实验室

技术要求

本章包括一个实验室,演示了将 Hyperledger 应用于解决供应链管理中的真实挑战。需要你从以下链接获取源代码:github.com/hyperledger/education.git

Hyperledger 概述

Hyperledger 是一个专注于满足核心行业需求的分布式账本技术的开源倡议。这是一个由 Linux Foundation 主办的团体计划,与信息技术、银行业、物流、交通运输、金融、制造业和物联网等几家行业巨头合作。

尽管加密货币仍在努力赢得几个政府和企业机构的信任,但区块链正在被采用作为保障业务运营和管理技术的关键。由于比特币的刚性和静态性质,它不能用于业务应用目的。尽管以太坊具有使用智能合约启动业务应用程序的能力,但由于其无许可使用案例,金融机构和其他关键业务操作已经犹豫尝试以太坊区块链。

Hyperledger 是唯一一个专为需要许可区块链以实现对整个系统更好控制的企业而构建的分布式账本技术框架。Hyperledger 不支持任何加密货币平台或相关系统,因为它更多关注解决关键业务问题。

成立于 2015 年 12 月,Hyperledger 被许多行业领导者所赞赏和采用,例如埃森哲、空中客车、美国运通、思科、富士通、日立、IBM、英特尔、SAP、NEC、西班牙经济银行、Bitmark、博世、CA 科技、卡普吉米尼、安永、Factom、H3C、印度国家证券交易所、甲骨文、普华永道、红帽、三星、瑞波、泰利斯、威睿普罗和云安全联盟等等。

Hyperledger 项目还计划通过一个单一和全面的标准,促进区块链爱好者、区块链社区、企业和非营利组织之间的合作,用于构建分布式账本应用程序。就像 WordPress 革新了网站的制作方法和上线时间一样,Hyperledger 正在努力降低构建分布式账本应用程序的成本和总体时间。

区块链即服务(BaaS)

自从云计算问世以来,一个改变产品或服务交付或部署方式的热门术语是 X(任何东西)即服务,其中 X 是任何形式的软件或应用。在世界认识到区块链的沉浸式力量后,行业领导者开始探索使用区块链与其现有云基础架构模型(例如供应链管理、身份和访问控制、数据库管理等)结合的各种可能性。Hyperledger 类似于分布式账本技术,但区块链技术在该生态系统中受到了特别关注。

通过 Azure 区块链服务,微软成为 2015 年首家推出 BaaS 的软件供应商。微软与 ConsenSys 密切合作,宣布将在 Microsoft Azure 平台上开发基于以太坊的 BaaS。SAP 推出了自己的 BaaS 平台,并命名为 Leonardo,这是一个基于 Hyperledger 的云服务。

德勤是最大的咨询公司,提出了一种基于区块链的业务解决方案,并将其命名为 Rubix Core。这是一个为他们的客户构建私有和定制网络的架构。

编程目标

Hyperledger 项目因其为平台协作开发跨行业框架而付出的努力而受到广泛赞赏。金融行业一直是与 Hyperledger 平台合作实现无缝转移的最活跃行业。让我们了解 Hyperledger 项目的目标,以了解其路线图:

  • 社区驱动的基础设施:由于 Hyperledger 项目得到了几家私营和政府机构的支持,它呈现出一个高效、开放的社区驱动环境。

  • 企业级框架:与加密货币区块链不同,Hyperledger 的开发目的是支持企业在分布式账本网络上执行安全可靠的交易。

  • 建立技术社区:该项目还旨在建立一个更有效、更大的技术社区,以创新和开发区块链智能合约和其他相关代码。

  • 意识:这是向企业和其他机构传播有关区块链技术及其商业用例的重要途径。

架构和核心构件

Hyperledger 是一个开源框架,允许企业基于分布式分类账技术构建企业级解决方案。该框架由以下构件组成:

  • 共享账本:这是一个只追加账本,按照时间顺序存储区块。

  • 共识算法:这是一种实现分布式分类账变更的共识方法。

  • 隐私:构建 Hyperledger 的主要目的是在关键业务环境中实现安全可靠的受许可网络进行交易。

  • 智能合约:这是一种粒度细的方法,用于规划和处理交易请求。

让我们了解 Hyperledger 架构:

  • 共识层:这主要负责根据预定义的一组规则就每个订单达成一致,并验证交易。

  • 智能合约层:这负责处理交易请求并应用业务逻辑。

  • 通信层:这提供了一个允许节点通过点对点传输进行通信的平台。

  • 数据存储抽象:这允许其他模块使用各种数据源。

  • 加密抽象化:这允许使用不同的加密算法而不影响其他模块。

  • 身份服务:这在区块链设置期间启用信任根,并提供额外的身份验证和授权保障。

  • 策略服务:这负责管理多个策略,如共识策略、背书策略和群组管理策略。

  • APIs:这使得客户端和应用可以与区块链模块进行交流。

  • 互操作性:这在不同的区块链实例之间提供互操作性。

让我们了解各种 Hyperledger 框架,具体如下所述:

图片

  • Iroha:Hyperledger Iroha 是由 Soramitsu、日立、NTT DATA 和 Colu 贡献的区块链框架。旨在供 Android 和 iOS 包下的移动应用程序开发人员使用。采用 C++编程包和 YAC 共识算法进行简单设计。

  • Sawtooth:它由英特尔投入,并根据网络规模使用多种共识算法构建。默认情况下,Hyperledger Sawtooth 使用时间过证明PoET)来实现节点之间的共识。旨在灵活支持受权限和无许可实施。

  • Indy:Hyperledger Indy 是一个分布式分类账,用于实现分散身份的企业解决方案,并提供对多种支持的分布式分类账技术DLT)的互操作性。旨在在节点和整个交易过程中实现隐私。

  • Burrow:Hyperledger Burrow 是一个可许可的智能合约,提供了带有 Ethereum 虚拟机(EVM)的可许可的智能合约解释器的模块化区块链客户端。

Hyperledger Fabric 模型

Hyperledger Fabric 项目由 IBM 区块链平台提供支持,并由 Linux 基金会托管,其主要亮点是机密交易的权限网络、可编程的商业逻辑和无需加密货币计算方法。

我们正在看到了很好的结果,并积极准备过渡到 1.1.0 版本。我们的最新产品,IBM 区块链平台入门计划,将是市场上首批推出这一新版本的产品之一——IBM 区块链技术副总裁 Jerry Cuomo。

在了解 Hyperledger Fabric 和 Hyperledger 项目的其他项目之后,现在是时候了解这项技术的实际情况,以及在部署步骤中遇到的一些挑战。

Hyperledger Fabric 核心组件

在理解交易流程之后,重要的是了解网络中多个节点之间的通信是如何建立和维护的:

  • 节点:在 Hyperledger 网络中存在以下三种角色:

    • 客户端:客户端在网络上提出交易请求。它必须连接到对等方才能参与区块链。客户端有权将所需的对等方连接到网络。

    • 对等方:对等方监听账本更新并保存其副本。根据其性质,可能存在两种进一步的类型:

      • 认可对等方:认可者模拟和认可交易

      • 提交对等方:在网络中提交交易之前,提交者验证交易

    • 排序服务:排序服务接受认可的交易,将其排列并排序为一个区块,最终交付给提交对等方。排序服务还为客户端和对等方提供了一个共享和安全的通信渠道。它作为广播交易的媒介,帮助我们将其交付给对等方。

  • 分类账:就像比特币和以太坊一样,Hyperledger 分类账提供了系统运行期间所有有效和无效交易的经过验证的列表。它由一个排序服务创建,并保存在网络中的所有对等方那里。

  • 通道:Hyperledger Fabric 通道是节点之间进行机密交易的受限通信媒介。通道对于成员、共享账本、链码应用程序和排序服务节点是特定的。加入通道的每个对等方都必须从成员服务提供商(MSP)那里获得许可,MSP 验证每个对等方与其各自的通道对等方和服务。

  • 世界状态:这反映了网络中所有资产的当前数据状态。数据以以下格式安全地存储:

    • LevelDB:这是 Hyperledger Fabric 的默认数据库,简单地存储键/值对。

    • CouchDB:这非常适合 Web 和本机应用程序,它以原生 JSON 进行通信。它支持所有数据存储需求的二进制。

  • 链码:链码管理网络中成员同意并创建的业务逻辑。它是用 GO—Node.js 编写的程序:

    • LevelDB:这是在受保护的 Docker 容器上运行的默认编程语言,管理账本状态。

    • CouchDB:这是另一种存储 JSON 对象的数据库编程语言。它还支持键范围、复合和完整的数据丰富查询。

  • 共识:共识是就要添加到账本的一组交易达成一致的过程。在 Hyperledger Fabric 中,共识是通过以下三个步骤实现的:

    • 交易背书

    • 订购

    • 验证和承诺

现在,让我们了解这些共识组件以及它们如何与 Hyperledger 和其交易处理方法配合工作。

Hyperledger 和交易处理的工作

Hyperledger 和交易处理的工作可以解释如下:

  1. 交易提案:在 Hyperledger Fabric 中,该过程始于客户端应用程序发送交易提案:

每个客户端应用程序向背书对等方提出交易以进行模拟和背书过程。

  1. 背书人将 RW 集发送给客户端:每个背书对等方都模拟提议的交易,并存储一组被命名为RW 集的读取和写入数据。这些集合由背书对等方签名,并返回给客户端应用程序:

交易背书:这是模拟交易的签名响应。可以通过策略链码定义几种方式的交易背书,它类似于智能合约。一个交易背书策略类似于一个已定义的链码。

  1. 客户端应用程序服务:一旦客户端应用程序接收到 RW 集和背书交易,就必须将这些提交给订购服务。无论其他客户端应用程序提交的交易背书和 RW 集如何,该方法都会继续运行:

  1. 订购者将交易以块的形式发送给提交对等方:订购服务接受 RW 集和背书交易,并将它们排列成块,然后将它们转发给提交对等方:

订购服务负责组织所有交易,然后将它们提交到分类账中。默认情况下,Hyperledger Fabric 的订购服务是 Kafka,这是一个由Apache Software FoundationASF)开发的开源流处理平台。

现在,让我们更详细地了解订购服务的工作原理。将这分为核心部分是很重要的:

  • 订购服务的第一部分:一旦在指定的时间段内准备好了一定数量的交易,就会创建一个区块,并且这些交易会按照时间顺序提交。与比特币区块链不同,Hyperledger Fabric 提供了最适合的订购机制,这有助于组织设计一个粒度细致、灵活、可扩展的去中心化网络。

  • 订购服务的第二部分:Hyperledger Fabric 支持三种订购服务机制——SOLO、Kafka 和简化拜占庭容错SBFT):

    • SOLO:这对于软件开发人员进行研究和测试目的最合适,并且只有一个订购节点。

    • Kafka:这是另一种 Hyperledger Fabric 订购机制,已经准备就绪。它由 ASF 开发,并提供了一个统一的、高效的、低延迟的软件平台来处理实时数据流。在 Hyperledger Fabric 中,Kafka 处理读写集和背书交易。

    • SBFT:这类似于比特币区块链的 PoW 共识机制。此解决方案旨在克服拜占庭故障,即使网络中存在恶意节点或一组恶意节点,系统也可以正常工作。

  1. 提交的对等方验证区块中的每个交易:提交的对等方验证交易,以确保读写集与当前世界状态匹配。一旦提交对等方验证了交易,交易就会被更新到总账上,并且世界状态会自动使用读写集中的写入数据进行更新:

最后,提交的对等方必须通知客户端应用程序交易成功或失败。

  1. 身份验证:在交易流程的每个步骤中,从背书到版本检查,身份验证始终是一个持续进行的过程。

比特币与以太坊与 Hyperledger

区块链是最激动人心的创新,仍然在加密货币领域中广受欢迎。在过去的几年里,该行业也认识到了区块链对其商业模式运营和管理的影响。尽管区块链技术在其原生形式下运行得很顺畅,但大多数业务需求从未适合一站式解决方案。因此,我们有了几个版本的区块链网络。让我们首先了解一下其特性,以便我们能够详细了解一些流行区块链模型之间的比较:

  • 权限限制:这定义了事务处理器的资格,以创建或阻止现有账本。在这个背景下,存在以下两种模型:

    • 权限区块链:在此模型中,只有预选用户可以进行交易处理。Hyperledger Fabric 就是这样一个例子。

    • 无需许可的区块链:该模型不限制交易处理器创建或添加新区块。以太坊和比特币是其中最受欢迎的例子之一。

  • 对数据的受限访问:这指明了区块链网络上的读取权限。以下是两种模型:

    • 公共区块链:在读取正在进行的交易时没有限制。任何人都可以使用区块链节点客户端下载更新的区块链账本。

    • 私有区块链:在此模型中,只有预选用户可以访问区块链账本。

  • 共识机制:在分布式网络中,实现无需信任的网络和确定所有交易的共识至关重要。这确保只有有效和合法的交易被添加到区块链中。PoW、PoS 和 PBFT 是一些共识算法的例子。

  • 可扩展性:可扩展性取决于两个因素——节点性能。节点可扩展性是指可以添加到网络中而不影响整体性能的节点数量,而可扩展性取决于每秒交易数。

  • 匿名性:这指的是区块链中用户的身份是公开还是隐藏的。

  • 治理:这是分布在区块链社区中的决策权的级别。区块链平台必须由核心开发团队或其他利益相关者维护。

  • 原生货币:这指的是区块链内有效的货币,例如比特币与比特币区块链。

  • 脚本化:这指的是去中心化应用程序dApp)支持的编程水平:

特征 比特币 以太坊 Hyperledger
权限限制 无需许可 无需许可 许可
对数据的受限公开访问 公开 公开或私有 私有
共识 PoW PoW PBFT
可伸缩性 高节点可伸缩性,低性能可伸缩性 高节点可伸缩性,低性能可伸缩性 低节点可伸缩性,高性能可伸缩性
中央化监管(治理) 低,由社区/矿工去中心化决策 中等,核心开发者团队,但 EIP 流程 低,基于 Linux 模型的开放治理模式
匿名性 假名性,不加密交易数据 假名性,不加密交易数据 假名性,加密交易数据
原生货币 是,比特币 是,以太坊
脚本化 有限的基于堆栈的脚本化可能性 高可能性,调整完备的虚拟机,高级语言支持—Solidity 高可能性,调整完备的链码脚本化,高级 Go 语言

Hyperledger Fabric 的能力

Hyperledger 提供了一套全套的企业级业务解决方案,以提供带有增加的安全性、保密性和性能的安全且可伸缩的价值。Hyperledger Fabric 提供以下功能和核心能力:

  • 身份管理:为了成为一个有权限的网络,Hyperledger Fabric 提供了一个维护用户 ID 并在网络中对每个用户进行身份验证的会员身份服务。一个用户 ID 可以被允许调用一个链码应用程序,但可以被阻止启动一个新的链码。

  • 高效处理:Hyperledger 根据交易排序和承诺为每个节点分配角色。随着并发执行的增加以及提高交付每个订单的时间,整体性能得到提高。

  • 隐私和保密性:私人频道限制消息传递路径,为特定网络成员提供交易隐私和保密性。整个数据,包括成员信息、交易和频道细节,对其他网络成员来说都是不可见且无法访问的。

  • 链码功能:这涉及链码应用程序,是 Hyperledger Fabric 的业务逻辑。链码确保所有转移所有权的交易受其规则和要求约束。通道的操作参数通常由系统链码定义,而验证系统链码定义了背书和验证交易的要求。

实验室

在了解 Hyperledger Fabric 的架构、组件、交易流程和链码的洞见后,现在是时候整合这些部分进行实验室了。为了保持实验室的可访问性,我们将从 GitHub 托管的实验室环境中运行实验室,网址为:fabric-sdk-node.github.io/

Tuna 应用

Tuna 应用是关于在供应链中不同方之间转移金枪鱼货物。整个应用程序都是用 Node.js 编写的,使用 gRPC 与链码进行交互:

  • 目标:使用 Fabric Node SDK,与 Hyperledger 区块链建立连接。对等节点将被配置为与其特定应用程序的链码容器通信。在这个练习结束后,我们将熟悉如何使用 Node.js SDK 与网络进行通信。我们还将了解应用程序链码网络和账本如何相互交互。

  • 基本安装:如果你还没有为这门课程下载education仓库,可以在终端窗口中按照以下说明操作:

$ git clone https://github.com/hyperledger/education.git 

$ cd education/LFS171x/fabric-material/tuna-app 


在运行下一个命令之前,请确保您的计算机上正在运行 Docker。我们需要确保我们已经完成了本章中的 Hyperledger Fabric 部分的安装,然后再继续进行本应用程序部分,因为我们可能会遇到错误。首先,删除任何现有的容器,因为它们可能与本教程中的命令冲突:

$ docker rm -f $(docker ps -aq) 

现在,让我们使用以下命令启动 Hyperledger Fabric 网络:

 $./startFabric.sh 
  • 故障排除:如果在运行前一个命令后,您收到类似以下错误:
ERROR: failed to register layer: rename /var/lib/docker/image/overlay2/layerdb/tmp/write-set-091347846 /var/lib/docker/image/overlay2/layerdb/sha256/9d3227c1793b7494e598caafd0a5013900e17dcdf1d7bdd31d39c82be04fcf28: file exists 

然后尝试运行以下命令:

$ rm -rf 
~/Library/Containers/com.docker.docker/Data/*

package.json文件安装所需的库,注册我们网络的管理员和用户组件,并使用以下命令启动客户端应用程序:

$ npm install 
$ node registerAdmin.js 
$ node registerUser.js 
$ node server.js 

在任选的浏览器窗口中简单地打开localhost:8000即可加载客户端,你将在此 URL 看到我们简单应用的用户界面,如下截图所示:

  • 故障排除:如果客户端无法连接金枪鱼服务器,则需要执行以下命令:
Error: [client-utils.js]: sendPeersProposal - Promise is rejected: Error: Connect Failed error from query =  { Error: Connect Failed at /Desktop/prj/education/LFS171x/fabric-material/tuna-app/node_modules/grpc/src/node/src/client.js:554:15 code: 14, metadata: Metadata { _internal_repr: {} } }  

尝试运行以下命令:

 $ cd ~ 
$ rm -rf .hfc-key-store/. 

然后,从上一条命令开始运行之前的命令:

$ node registerAdmin.js 
// File Structure tuna-app/tuna-chaincode.go

这是包含我们样本金枪鱼应用程序所有业务逻辑的链码文件:

    • tuna-app/app.js:这是一个 JavaScript 客户端代码,位于app.js中,用于操作用户界面的 HTML 元素

    • tuna-app/index.html:这是一个 HTML 文件,包含客户端应用程序的 UI

    • src:这是一个包含使用软件开发工具包SDK)连接客户端请求到网络和链码函数的代码的文件夹

    • tuna-app/src/controller.js:其中包含执行操作和查询数据的函数

    • tuna-app/src/server.jsserver.js用于在localhost:8000上查看 UI

  • 验证:现在,让我们查询我们的数据库,在那里应该有一些样本条目,因为我们的链码智能合约使用 10 个先前捕获的函数初始化了分类帐,该函数不带任何参数。正如我们在第 6 行所见,它接受一个空数组。

// queryAllTuna - requires no arguments  
const request = {  
chaincodeId:'tuna-app',  
txId: tx_id,  
fcn: 'queryAllTuna',  
args: ['']  
};  
return channel.queryByChaincode(request);

该代码来自..src/queryAllTuna.js

现在,让我们查询我们的数据库,在那里应该已经有一些样本条目,因为我们的链码智能合约使用了十个先前的捕获来初始化分类帐。该函数不带任何参数,正如我们在前面的代码中的第 6 行所看到的。相反,它接受一个空数组。可以在用户界面中看到的查询响应是十个预填充的条目,每个条目都有其捕获的属性:

以下代码是用于查询记录的特定金枪鱼:

// queryTuna - requires 1 argument  
const request = {  
chaincodeId:'tuna-app',  
txId: tx_id,  
fcn: 'queryTuna',  
args: ['1']  
};  
return channel.queryByChaincode(request);

该代码来自..src/queryTuna.js

现在,让我们查询特定的金枪鱼捕获情况。此函数需要一个参数,正如您在代码的第 6 行中所看到的。例如 ['1']。在此示例中,我们正在使用密钥查询捕获情况。您应该会看到以下查询响应,详细说明了记录在一个特定捕获中的属性:

以下代码是用于更改金枪鱼持有者的:

// changeTunaHolder - requires 2 argument  
var request = {  
chaincodeId:'tuna-app',  
fcn: 'changeTunaHolder',  
args: ['1', 'Alex'],  
chainId: 'mychannel',  
txId: tx_id  
};  
return channel.sendTransactionProposal(request);  

代码来自 ..src/changeHolder.js

现在,让我们更改持有给定金枪鱼的人的名称。此函数需要两个参数-特定捕获的键和新持有者,正如我们在前述代码的第 5 行中所看到的。例如,args: ['1', 'Alex']。您可能会在您的终端窗口中看到类似的成功响应:

The transaction has been committed on peer localhost:7053 event promise all complete and testing complete Successfully sent transaction to the orderer. Successfully sent Proposal and received ProposalResponse: Status - 200, message - "OK", metadata - "", endorsement signature: 0D 9  

这表明我们已通过 SDK 从我们的应用程序发送了提案,并且对等方已被认可和提交,账本已被更新:

您应该看到通过再次查询键 1 确实已更改持有者。现在,持有者属性已从 Miriam 更改为 Alex

  • 结束: 使用以下命令在 tuna-app 文件夹中移除我们在本教程中创建的所有 Docker 容器和镜像:
$ docker rm -f  
$(docker ps -aq)  
$ docker rmi -f $(docker images -a -q)  

摘要

我们探索了一种新的区块链 Hyperledger 项目类型,旨在解决业务挑战和克服分布式账本技术。 Hyperledger 是由 Linux Foundation 领导和托管的唯一的团队项目,该项目持续进行路线图,以分布式账本即服务模型改革业务。该项目帮助行业避免部署区块链的困难,就像 WordPress 解决了建立网站的困难一样,Apache 解决了建立数据库的问题一样。

在下一章中,我们将了解区块链技术如何影响现有和传统的安全模型,即机密性、完整性和可用性CIA)三元模型。

问题

通过金枪鱼应用程序,我们已经成功地理解了 Hyperledger Fabric 的工作原理和测试。然而,要解决网络安全挑战,重要的是我们探索现有解决方案以及它们如何能够通过分布式账本技术或通用区块链甚至是 Hyperledger 项目得到改进。因此,重要的是涵盖以下几点:

  1. Hyperledger Fabric 是否可以用于公共区块链?

  2. Hyperledger 能与传统数据库连接吗?

第五章:区块链在 CIA 安全三元之上

在前一章中,我们涵盖了 Hyperledger 模型,其核心组件,其流程和链代码编程。在本章中,我们将涵盖一种将本地区块链和 Hyperledger 的组件以保密性,完整性和可用性CIA)安全三元模型的形式进行排列的基本方法。这个三元模型是与区块链结构联系最紧密的最古老和最流行的安全框架之一。CIA 三元模型是一个帮助组织构建其安全姿态的模型。我们将了解这三个核心元素如何影响区块链技术,以及如何使用这个安全模型来组织区块链的最佳使用。

在本章中,我们将涵盖以下主题:

  • 什么是 CIA 安全三元?

  • 区块链在机密性上

  • 区块链在完整性上

  • 区块链在可用性上

什么是 CIA 安全三元?

CIA 是一个用于安排信息安全团队使用的信息安全infosec)团队的一系列安全控制和系统的框架/模型。有时也被称为可用性、完整性和机密性AIC)安全三元。这个三元模型的目的是提供一个标准框架来评估和部署信息安全政策,而不考虑底层技术、网络或系统。

机密性

机密性是一种将信息隐藏在未经授权的人们之外的方式。当必须保密的信息保持保密时,就实现了机密性。在当前数字连接的时代,每个人都非常渴望知道被保密的信息。安全机构就是违反机密性的一个主要示例,这样他们就可以进行取证和使用监视录像。出于经济动机的网络犯罪分子会尽最大努力侵入安全系统,并获取有利于他们业务对手的机密文件。

永无止境的竞争一直存在于对手和防御者之间。组织每年都在花费数百万美元来通过加密和访问控制系统实现全栈机密性。每天都在测试几种方法来保护静态数据和动态数据。

完整性

完整性是一种保护未经授权篡改信息的方式。这是每一个信息安全机构的强制合规要求。这也是一种在整个数据生命周期中维护数据的一致性、准确性和可信度的方法。数据必须完全安全,并且任何未经授权的访问都应该被禁止。有助于上述事项的某些措施包括文件权限和用户访问控制。

可用性

可用性是指及时可靠地访问数据。从数据到信息,再到价值的路径意味着如果信息在正确的时间不可用,则价值将是非法的。分布式拒绝服务DDoS)和勒索软件攻击是一些恶意行为者手中最强大的武器,他们使用这些攻击使得具有授权和合法访问权限的人无法获取信息。组织机构做出了多次尝试来对抗这些攻击,包括网络应用防火墙、DDoS 保护、内容分发网络CDN)甚至灾难恢复。

了解区块链的保密性

每一种数字连接技术都伴随着安全挑战的成本,这些挑战可能涉及隐私暴露、保密性泄露、身份盗窃等等。区块链技术是一种运行在数字生态系统上的计算技术,因此重视其基本安全挑战变得至关重要。每一个全球连接的企业都会为网络安全拨出年度预算,以便他们能够保持信息和关键资产的保密性。让我们了解当前区块链模型的机密程度及其未来的路线图。

现有模型中的保密性

正如我们已经知道的那样,区块链技术是随着比特币而引入的。然而,它从未被设计为具有限制性质,因为任何具有客户端软件的人都可以参与区块生成过程,或者在比特币的情况下进行挖矿。关于区块链的保密性,简单来说就是要将交易信息隐藏在网络中不需要的参与者。然而,由于比特币等公共区块链的开放和无权限性质,要实现更好的保密等级可能极为困难。

企业、区块链和保密性

在谈论业务时,保密性成为网络安全领域中实现与客户和其他利益相关者之间更好信任的关键支柱。许可区块链因其仅允许预先选择的参与者访问分布式分类账网络中的数据而受到极大赞赏。当一个企业与另一个企业互动时,不仅仅是关于分享多少信息,还涉及谁应该在什么条件下访问哪些信息。在考虑超级账本(Hyperledger Fabric)时,IBM 建议记住以下几点:

  • 在每一笔交易中,重要的是要知道参与者是否可以看到完整信息、部分信息或根本没有信息。这必须在智能合约中说明。

  • 如果监管机构已被指定,则他们必须确认监管机构访问的数据范围。

  • 了解您的网络性质——静态还是灵活——非常重要,因为保密性参数可能会根据新的参与者角色和需求在将来发生变化。

使用 Hyperledger Fabric 实现保密性

Hyperledger Fabric 提供了一组库文件,可轻松实现保密性特性:

  • 基于属性的访问控制ABAC):用户访问交易的决定取决于其身份。这可以通过 ABAC 实现。ABAC 可以支持链码和整个区块链。在部署交易期间使用的属性必须在用户进行 Tcert 创建时传递。确定用户是否可以执行任何特定的链码是一个重要步骤。属性证书颁发机构ACA)在验证属性并返回属性证书ACert)方面起着重要作用。ACA 维护数据库,以便公司可以为用户及其从属关系存储属性。

  • Hyperledger Fabric 加密文学:智能合约可以配置为加密交易中的信息或信息子集。这些信息将使用密钥加密存储在账本上,只有应该查看和访问它的节点才能使用密钥解密。如果背书策略需要来自不同组织的节点,则必须在将其包含在交易提案中之前对信息进行加密。

区块链上的完整性

尽管在网络安全方面花费了更多的资金,但仍然有几家组织不愿意使用公共云解决方案。将数据加密发送到云端是一种常见做法,但加密只能提供对内部攻击的可靠保密性;它无法保护数据免受配置错误、软件错误或间谍行为造成的破坏。虽然区块链技术在使用哈希算法和默克尔树模型实现不可篡改性方面有自己的可靠方法,但我们必须尝试理解它如何在现实世界的应用和 Hyperledger Fabric 中实际运作。

当前区块链网络中的完整性

完整性是避免任何数据篡改的一种方式。区块链使用密码哈希来确保账本的不可篡改性。这种哈希函数的关键特性之一是它总是单向的,这意味着从哈希结果或消息摘要中逻辑上不可能恢复数据。分析消息摘要的模式并预测原始数据也很困难,因为实际消息的轻微变化可能导致很大的差异。无论是哪种区块链,它们都广泛使用哈希技术,具体包括:

  • 以太坊账户标识符是通过将公钥与 Keccak-256 哈希算法进行哈希而创建的

  • 比特币地址是通过使用 SHA-256 算法对公钥进行哈希计算得出的

区块排列和不可变性

正如我们已经知道的那样,每个节点都以连接的区块形式存储账本,并且创建新区块取决于前一个区块的哈希值。这阻止了对账本中的任何区块进行恶意尝试干扰、修改或删除的可能性。这帮助组织实现了新的网络安全完整性水平,并提供了一个平台,您可以在此平台上开发防篡改的业务应用程序。

通过 Hyperledger 实现完整性

虽然 Hyperledger Fabric 是分布式账本技术的又一种变体,但有几个关键属性使其与其他技术区别开来。在将新区块添加到账本之前,提交节点总是会验证新区块。节点被入侵的情况意味着该区块可能会被篡改。为了避免这种情况,有一些方法可以纠正区块被添加到账本的方式。

验证链的完整性

在此方法中,每个节点定期验证其区块链,并要求节点重新检查是否检测到破损区块。必须调用一个名为CheckChainIntegrity()的函数来保持完整性检查运行:

理解区块链的可用性

业务应用程序可以通过网络(公共或私有)访问,这些应用程序是一组代码,只有在需要时才具有价值。区块链是在云上运行的软件应用程序,并且在没有被破坏或干扰时保持其价值。对于用户来说,区块链的面貌只是一个分散式应用程序(dApp),为了始终保持其可用性,系统的前端和后端都应该无缝运行。

在当前区块链网络中的可用性

及时和可靠的信息访问类似于可用性。DDoS 等网络攻击会对互联网服务造成巨大的破坏,并导致网站不可访问,这会给企业造成巨大损失。区块链的分散化性质使得更难以干扰这些应用程序。

无单一故障点

即使区块链中的一个节点出现故障,信息仍然可以被网络中的其他节点访问和使用。由于所有节点都保留账本的完全副本,因此账本始终是最新的。网络中的所有节点在逻辑上都是分散的,并且系统故障的可能性为零。

商业与可用性

当涉及到区块链时,其可用性取决于有效和成功的交易。对于每个企业来说,记录所有交易是核心功能,而这些交易可能是业务活动、资产条目、供应链管理记录等的条目。

摘要

在本章中,我们研究了 CIA 安全三元组对区块链技术的影响。虽然比特币区块链足够强大,可以证明符合 CIA 安全框架,作为一个区块链,它受到了多个组织的赞赏和采纳,并且市场上出现了多种区块链来满足特定的商业模式。我们已经看到 Hyperledger Fabric 如何适用于 CIA 安全三元组,以及何以使 Hyperledger Fabric 系统成为商业友好的解决方案。

问题

在了解原生区块链和 Hyperledger Fabric 的 CIA 安全三元组系统如何运作之后,重要的是要解决一些问题,例如:

  1. Hyperledger 和其他项目如何适用于 CIA 安全三元组?

  2. 有哪些广泛使用的方法来增强 dApp 的可用性?

进一步阅读

要更详细地探讨区块链背景下 CIA 安全三元组,读者可以使用以下链接:

第六章:使用区块链部署基于 PKI 的身份

组织有多个应用程序需要管理,这些应用程序托管在不同的系统和服务器上。 组织已经部署了多种身份验证用户的方式,例如多因素身份验证系统,每个系统/应用程序一个,单点登录SSO),以及目录服务器;然而,在互联网上对用户进行身份验证是一种相对困难的机制。 在交换信息之前在互联网上建立信任是非常重要的,因为互联网对受信任和不受信任的各方都是开放的。 为了在公共网络上建立信任,需要一个独立的可信方。 公钥基础设施PKI)是一个开放的框架,旨在解决互联网连接用户之间的信任因素。

本章中,我们将学习以下主题:

  • 公钥基础设施

  • 现有 PKI 模型的挑战

  • 区块链技术如何帮助?

  • 实验室和测试结果

PKI

组织有数百个基于云的应用程序需要管理和维护。 管理单个访问控制和身份验证是一项困难的日常任务。 当涉及到互联网用户和庞大的 Web 应用程序时,很难信任单个网站,并且用户往往会通过它们失去他们的隐私和机密信息。 PKI 提供了一种安全的方式来验证个人的身份。

企业可以通过采用 PKI 来简化应用程序部署和管理问题。 随着企业越来越多地转向基于云的应用程序,保护安全敏感的应用程序免受新兴威胁的影响至关重要。 在线通信时存在几种安全威胁,例如身份盗窃,中间人MITM)攻击和数据泄露。

PKI 简介

互联网允许任何人连接到任何其他人,与现实世界不同,不存在地理/物理障碍。 这使得在互联网上识别一个人并建立进一步通信的信任变得困难。 在下图中,Alice 想要通过互联网与 Bob 交流; 但是,Bob 拒绝了,因为他没有任何手段验证 Alice 的身份:

PKI 通过在 Bob 和 Alice 之间添加一个受信任的第三方TTP)来解决这个问题。 因此,在他们开始相互了解之前,他们必须建立信任,而 TTP 有助于实现这一点。 在下图中,Alice 与 Bob 共享数字证书,Bob 使用来自受信任证书颁发机构的公钥来解密此签名并验证 Alice。

在前面的图表中,TTP 是证书颁发机构CA)。 这个 CA 生成了一个证书,帮助互联网用户在互联网上展示他/她的身份:

  • PKI:PKI 提供了一个层次化的标准,用于管理实体的数字资产以建立安全的通信渠道。它不仅仅局限于用户;它也被多个不同的系统使用,如电子邮件、Web 应用程序、智能卡等,稍后将进行解释。

  • 网络设备:PKI 用于通过 802.1X 认证控制对路由器和交换机的访问。

  • 应用程序:应用程序需要从 CA 获取签名证书才能在操作系统中运行。

  • IPsec 隧道:路由器和防火墙使用证书来认证互联网上的其他端点。

  • 半径服务器:一个 轻量级目录访问协议LDAP)查询受到 PKI 证书的保护。

以下图表显示了 PKI 安全架构:

PKI 的演变

X.509 设计详细说明了通过 CA 数字签名的证书存储和分发公钥的数据格式和流程。然而,X.509 不包括一个规范来指定支持证书的许多子字段和扩展,如下所示:

标准化工作准备了 X.509 第 3 版以及第 2 版证书吊销列表的 PKI 概述。在 RFC 2459 出现之前,有大约 11 个草案来增强 X.509 标准。

RFC 2510 是为了指定在 PKI 中使用的消息协议而制定的。在此之后,出现了两个并行发展,一个是需要一个注册协议,另一个是倾向于使用 PKCS#10 消息格式。以下图表解释了 PKI 标头的演变。在第 2 版中,标头添加了发行者唯一 ID 和主题唯一 ID。在第 3 版中,引入了一个扩展字段来标识策略和其他相关信息,如下所示:

此外,证书请求语法是在 S/MIME WG 中使用 PKCS#10 开发的。通过 RFC 2510,定义了一个简单的注册协议,但它没有使用 PKCS#10 作为证书请求格式。

组件

PKI 是一个由各种组件、应用程序、策略和实践组成的集合,用于结合并实现三个安全原则,即完整性、身份验证和不可否认性。数字证书是 PKI 中的主要组件,因为它们在互联网上充当数字身份。PKI 的五个核心组件将在以下小节中解释。

非对称密钥加密

在密码学中,加密是将信息编码以使只有预期的一方能够看到的过程。有两种方法可以实现这种密码学加密,分别定义如下:

  • 对称加密:在对称加密中,相同的密钥用于加密和解密数据。需要确保双方使用相同的密钥来加密和解密数据,如下所示:

图片

  • 非对称加密:在非对称加密中,使用不同的密钥集来加密和解密数据。该密钥对是公钥和私钥的组合。公钥用于加密数据,而私钥用于解密数据。公钥随数据一起通过互联网传输,但私钥保留给使用它的个人,如下所示:

图片

公钥和私钥对包括两个唯一相关的加密密钥。以下是公钥的示例:

3048 0241 00C9 18FA CF8D EB2D EFD5 FD37 89B9 E069 EA97 FC20 5E35 F577 EE31 C4FB C6E4 4811 7D86 BC8F BAFA 362F 922B F01B 2F40 C744 2654 C0DD 2881 D673 CA2B 4003 C266 E2CD CB02 0301 0001

公钥通过互联网向所有人提供,并存储在可访问的仓库或目录中。另一方面,私钥必须保持对其所有者的私密;因此,它也被称为秘密密钥

公钥和私钥之间在数学上是相关的;因此,使用公钥加密的数据只能由相应的私钥解密。

证书

证书是代表用户或设备的身份有兴趣通过网络进行通信的电子 ID。证书基本上确保只有合法用户才能连接到网络。证书是通过由受信任的第三方(即 CA)对公钥进行签名来生成的。

以下是三种主要类型的证书:

  • 安全套接字层(SSL)证书:SSL 服务器证书安装在托管服务的服务器上,例如 Web 应用程序、邮件服务器、目录或 LDAP 服务器。此证书包含有关拥有应用程序的组织的标识信息。SSL 证书还包含一个系统公钥。证书的主题与服务器的主机名匹配。此证书必须由受信任的证书颁发机构签名。主机名在证书的主题字段中列为通用名称。

  • 客户端证书:客户端证书用于识别互联网用户、设备、网关或任何其他类型的设备。它是一种数字凭证,用于验证拥有该证书的客户端的身份。如今,许多应用程序允许使用证书来验证用户对特定资源的身份,而不是使用用户名和密码。通过电子邮件进行通信的两个用户还将使用客户端证书来验证各自的身份。

  • 代码签名证书:代码签名证书用于对在系统上运行的软件进行签名。由于用户机器下载了数百万个应用程序,因此验证代码非常重要;因此,代码签名证书在其中发挥着重要作用。

  • 电子邮件证书:发件人需要使用 S/MIME 协议确定向特定收件人使用哪个公钥。发件人从电子邮件证书中获取这些信息。通常,当组织内部和与其自己的 CA 进行邮件通信时,会使用 S/MIME 协议。

证书颁发机构(CA)

CA 是一个可信任的第三方,用来证明用户、服务器、数据库和管理员的身份。CA 检查用户的凭据并授予证书,并用密钥对其进行签名。CA 可以是本地解决方案,也可以是提供证书服务的托管解决方案,如下图所示:

CA 的功能如下:

  • 颁发和交付证书

  • 将证书和证书吊销列表(CRL)发布到存储库

  • 处理证书所有者的吊销请求

在下面的屏幕截图中,我们可以看到客户端系统中的数字签名列表。有来自多个证书颁发机构的证书列表,以及它们的到期日期:

CA 的不同类型如下:

  • 公共数字证书颁发机构:有几家管理商业和个人用途证书的公共证书提供者。只有支付了特定费用后才发放凭证。

  • 私人数字证书颁发机构:组织管理员可以向域内部系统和用户颁发证书。Windows 服务器可以创建和存储密钥对,但这些私人证书对外部通信无效。

注册机构(RA)

RA 负责对需要证书颁发机构证书的新实体进行身份验证。它还维护本地注册数据信息,并发起对旧证书的更新和撤销流程。

RA 的功能如下,并在后续图表中进行了说明:

  • 负责对需要从 CA 获得证书的新用户或系统进行身份验证

  • 它还执行了 CA 的一些功能

  • 它作为 CA 的代理

  • 维护来自冗余证书的更新和吊销的本地注册数据:

证书库(CR)

CR 是一个可以被 PKI 环境中所有节点访问的证书数据库。它还保存了与证书吊销相关的信息和管理策略信息。证书吊销列表被用于从该存储库中获取更新后的证书列表。

证书库的功能如下:

  • 允许以非验证方式检索信息

  • 它作为一个数据库,保存公钥证书、吊销列表和策略等信息

架构

整个 PKI 架构都是基于名为信任链的模型。这个模型存在于每个身份之间的信任关系中。具体来说,两级层次结构和三级层次结构之间的区别在于第二层被放置在根 CA 和颁发 CA 之间。使用第二级 CA 的主要原因是要有一个负责向颁发 CA 签发证书的策略 CA,然而,三级层次结构提供了更好的安全性。这个策略 CA 也可以用作管理边界。如果管理员需要因为密钥泄露而撤销一些 CA,这个设计也很有用;撤销可以在第二级别执行,同时根的其他分支仍然可用,如下图所示:

在签名过程中,根 CA 用其秘钥对中间证书进行数字签名。这个过程确保中间证书经过根 CA 信任。每个 CA 都可以接收客户端的证书请求并签发。通常情况下,根 CA 是无法被客户端访问的,但是客户端有资格拥有根 CA 证书。客户端将证书请求发送给一些下级 CA 并进行安装,如下图所示:

在下图中,我们可以看到数字证书及其解密的流程。为了验证一方,数字证书通过使用公钥进行解密:

在了解了数字证书的层次结构,包括身份证书、中间证书和根证书,现在我们将了解客户端和 SSL 网站之间的通信是如何建立和处理的。客户端请求访问 HTTPS 网站。客户端的浏览器预装了一些根 CA 证书。具体步骤如下:

  1. 客户端连接到 SSL 网站。

  2. 网站以其身份和中间证书回应客户端。

  3. 然后客户端使用中间公钥解密数字签名来确认中间证书的身份。

  4. 然后客户端确认所请求的网址是否与身份证书中的显著名称匹配。如果不匹配,会显示警告。

  5. 交通流量随后由客户端使用公钥进行加密/解密,服务器使用秘钥进行加密/解密。

证书生命周期

根据国家标准与技术研究院NIST)的说法,加密密钥生命周期是密钥管理的预操作、操作、后操作和删除阶段的组合。考虑到密钥的有效性总是有限的,因此重要的是考虑在账户中花费的时间。因此,加密周期用于记录特定密钥被授权使用的时间。加密周期是通过结合加密将适用的估计时间以及它将被解密以供使用的时间来确定的,如下所示:

以下图示显示了具有多个密钥的加密周期流程图:

现在,我们可以检查密钥使用和处理的几个阶段:

  • 密钥生成:加密密钥由密钥管理服务器生成并存储。密钥管理器通过使用安全的随机比特生成器进行加密过程生成加密密钥对。一旦密钥对被创建,它就会连同所有属性一起存储在密钥存储数据库中。这些属性通常包括名称、大小、实例、激活日期、滚动、镜像、密钥访问以及其他相关属性。密钥激活时间可以预定,也可以在创建时立即激活。加密密钥管理器跟踪加密密钥的当前和过去实例。

  • 密钥使用和滚动:密钥管理器负责允许授权用户或系统检索信息,并允许它们进行加密或解密处理。它还负责在整个生命周期和每个实例中管理加密密钥的状态。如果一个组织有一项政策规定每年使用一组新密钥,那么密钥管理器应保留密钥的先前版本并只分发当前版本。但是,仍然可以检索以前的版本以执行解密过程。

  • 密钥吊销:管理员连接到密钥管理器以吊销密钥,以便不再用于进一步的加密和解密过程。如果需要,管理员甚至可以重新激活密钥并用于进一步的步骤。在一些情况下,管理员还可以使用以前加密的解密数据,例如旧备份。加密生命周期如下图所示:

  • 备份(托管):NIST 建议为所有停用的密钥建立档案。这个档案必须受到任何未经授权的修改、删除和更改的保护。建议在其加密周期结束后具有可恢复密钥机制。

  • 密钥删除(销毁):如果密钥已经受到损害或长时间未被使用,管理员应选择从加密密钥管理器的密钥存储数据库中删除密钥。密钥管理器会删除密钥及其所有关联的实例,或者可以专门删除某些实例。当数据在其加密状态下受到损害时,此选项起到了重要作用。如果删除密钥,受损数据将完全安全且无法恢复,因为不可能重新创建加密密钥。

密钥管理

密钥管理互操作性协议KMIP)用于客户端和服务器之间的通信,执行由密钥管理系统维护的存储对象的管理操作。这是一种标准化的管理加密密钥的方法,贯穿整个生命周期,并且已经发展成为促进对称和非对称加密密钥、数字证书和其他相关模板进行对象创建和管理的方法,具体如下所示:

结构化信息标准促进组织OASIS)的指导下,这是一个非营利性质的联盟,提供人们在互联网上和组织内交换信息的标准,客户端可以向密钥管理服务器请求的特定对象列表有:

  • 创建密钥或密钥对:用于生成新的对称密钥或新的公钥/私钥对并注册新的托管加密对象。

  • 注册:主要用于使用密钥、密码或一些其他加密材料注册托管对象。

  • 重新生成密钥:为现有对称密钥或密钥对生成替代密钥,也称为密钥更改,用于现有的公钥/私钥对。

  • 派生密钥:为了派生对称密钥或密钥对象,使用派生密钥来获取密钥管理系统已知的数据对象。

  • 定位:为了找到一个或多个托管对象,使用定位请求来获取请求中指定的属性。

  • 检查:用于检查请求中指定值的托管对象的使用情况。

  • 获取或获取属性:用于返回由其唯一标识符指定的托管对象或与托管对象关联的一个以上属性。

  • 添加、修改或删除属性:用于添加、删除或修改与托管对象关联的属性实例。

  • 激活:用于激活托管的加密对象。

  • Revoke:用于撤销托管的加密对象。

  • 销毁:当需要销毁特定托管对象的密钥材料时使用。

  • 存档:用于指定托管对象。

  • 恢复:用于访问数据恢复过程。

现有 PKI 模型的挑战

现有 PKI 模型的挑战如下:

  • 问题 1 – 需要额外安全性:根据 Ponemon 研究所 2016 年的报告,62% 的企业在使用 PKI 部署基于云的应用程序,2015 年增长了 50%。如果中央证书存储库遭到破坏,将导致大规模的数据泄漏和账户被盗。组织倾向于使用额外的安全层,如硬件安全模块HSMs)来保护其 PKI。HSMs 被部署来保护最关键的根和发行 CA 私钥的 PKI。组织正在选择多因素身份验证以及 HSM 的使用。

  • 问题 2 – 中央权威:在当前互联网状态下,中央权威(根权威)负责管理 DNS 请求和响应(根权威)、X.509 证书等。因此,所有连接到互联网的设备和系统都必须信任第三方来管理公钥和标识符。以域名为例;即使它已被其所有者购买,实际上也属于第三方,如互联网名称与数字地址分配机构ICANN)、域名注册商和证书颁发机构。

此外,这些受信任的第三方完全有能力拦截和破坏全球用户的完整性和安全性。有过几起案例表明,这些受信任的第三方已经向安全机构和其他机构分享了其客户的信息。他们可能出于金钱利益或准备客户行为分析而这样做。

区块链如何帮助?

由于其集中式管理系统,PKI 具有主要的漏洞。然而,区块链基本上是分散的,允许多个参与方之间进行通信,而不需要任何第三方参与。采用去中心化的方法可能是 PKI 的一次范式转移;然而,需要一个系统化的方法来部署它。

分散式基础架构

区块链是关于实现多个参与方的分散网络,无需第三方参与。分散式公钥基础设施DPKI)是一个创新的概念,它在公共系统上实现了身份验证系统,而不依赖于可能损害系统完整性和安全性的单一第三方。正如我们已经知道的,区块链是建立在无信任的方法上的,允许信任和不信任的参与方相互通信。然而,通常通过几种共识模型来在地理和政治上分散的参与方之间建立信任,并形成账本状态。根据定义,区块链允许您在网络中的多个节点上存储任何类型的值。通过 DPKI,这个值将是一种秘密属性。

主体可以通过在区块链中注册标识符来直接控制全局可读的标识符,如网站域名。使用键值数据库,主体将标识符用作查找键。区块链可以允许分配保密资产,例如公钥和其他属性,并允许以一种安全的方式全局读取这些值,这是 PKIX 中可能受到中间人攻击的。通过允许最正确的公钥与标识符值关联,并通过对最新的公钥进行标识符查找来执行身份验证,可以实现这一点。

在这种设计的 DPKI 中,系统保持去中心化,标识符的控制权仍在主体手中,并消除了标识符数据存储被损害的风险。

部署方法

以太坊,除其他平台外,是最灵活可靠的区块链之一。它是一个可编程的区块链,并适用于粒度细的基于策略的 PKI。PKI 作为以太坊区块链中智能合约的一个函数来实现。每个实体可以有多个属性以进行身份验证。这些实体可以是公钥或以太坊地址。每个交易都使用公钥标识,并由相应的实体 ID 和 PKI 表示。智能合约用于对 PKI 中的各种操作进行事件和函数编程。智能合约还可以配置为调用特定的 PKI 操作,如创建、派生、移除、销毁等。这些功能和流程将以 Solidity 编写,并在 EVM 中部署,这将为 PKI 操作的用户管理带来便利。通过编程智能合约,提供以下一系列的 PKI 操作:

  • 实体注册:用户或系统通过调用智能合约的注册事件将其添加到 PKI 系统中。实体可以简单到只是一个以太坊地址、公钥、属性 ID、数据和数据哈希。智能合约上配置的事件收集实体并将其作为交易发送到以太坊。排队的交易被挖矿,创建一个后来将加入到区块链中的区块。

  • 属性签名:实体可以使用注册事件来表征。实体的每个属性都可以通过智能合约由 PKI 系统签名,并发出一笔交易。这个签名的实体之后将被提供给其他实体或用户使用。

  • 属性检索:可以通过在智能合约上配置的事件的相应 ID 在区块链上应用过滤器来定位实体的属性。

  • 撤销签名:这是任何 PKI 解决方案所需的最关键功能之一,用于撤销属性或实体上的数字签名。当用户丢失密钥或密钥被 compromis 时,撤销变得极为重要。智能合约可以配置为调用撤销事件并撤销特定实体上的签名。

要求

在 DPKI 部署中,注册员仍然在基础架构中发挥作用,但受到以下限制,以确保实体的身份在网络中得到代表:

  • 必须确保软件始终在主体及其相应密钥的控制下。

  • 私钥必须以分散的方式生成,以确保它们始终在主体的控制下。代表主体生成密钥对必须严格禁止。

  • 不能有任何单个实体可以在未经主体同意的情况下更改其他实体。

  • 通过以太坊智能合约在区块链内创建命名空间后,无法销毁它。

  • 标识符的注册和续订必须是透明的。

  • 默认情况下,管理标识符的软件必须确保所有活动(如创建、更新、续订或删除标识符)都通过分散的机制转发。

实验

我们将首先启动 Node.js 和 Ganache-CLI 框架来开始实验。必须小心执行 ganache-cli 的安装,因为它在我们的本地系统中创建整个以太坊环境。按照以下步骤进行:

  1. 使用网站上显示的命令安装 Node.js,网址为 nodejs.org/uk/download/package-manager/#arch-linux

  2. 在终端中运行以下命令:

npm install -g ganache-cli

现在,我们通过终端中显示的命令启动测试网络:

  1. 我们现在必须启用开发者模式以详细查看浏览器内容。我们还必须启用加载未打包的扩展,如下面的截图所示:

测试

CA 可以发行反应策略RP),如果为域发行了未经授权的证书,则其生效。在测试过程中,我们需要注册域证书策略DCP)并创建 RP。可以在本地系统上执行以下步骤进行测试:

  1. 我们首先需要添加一个检测器并将其注册。以下脚本用于通过定义其检测器 ID 添加检测器:

  1. 我们现在将注册一个 CA,由域所有者用于发行证书。需要定义 CA ID、CA 拥有者地址和名称,如下所示:

  1. 注册 DCP 到 CA,如下所示:

  1. 在智能合约下创建关联的 RP,如下所示:

  1. 当检测器接收到有关野外恶意证书的报告时,撤销证书,如下所示:

  1. 当一个恶意 CA 频繁地表现出异常行为时,检测器现在可以将其加入黑名单,如下所示:

通过这种方式,我们成功地部署了具有以太坊区块链的 PKI。借助这个基础设施,我们描述了完整的流程,从注册 CA 到索赔反应支付。我们成功地开发了一个描述反应支付的模型,并开发了一种强制对行为不端的 CA 负责的方法。

总结

在这一章中,你了解了 PKI 的重要性以及它如何解决互联网用户之间的信任问题。我们还了解了 PKI 中的几个组成部分,这些部分负责使 PKI 成为一个更可靠的模型,以保持对公共网络的信任。

问题

在 PKI 提案下已经发布了几个修订版本,并且已经集成了不同的技术。以下是可能仍然重要的一些问题:

  1. 还有哪些其他用于管理密钥的方法?

  2. 一些基于区块链的 PKI 身份验证方面有哪些进展?

进一步阅读

读者可以参考以下链接进一步探索 PKI 框架和相关技术:

第七章:区块链的双因素认证

每个组织都拥有数百个应用程序和数据库,员工每天都使用自己的凭据(即他们的用户名和密码)访问它们。拥有这些有效凭据的攻击者可以绕过现有的安全解决方案,因为它们看起来像合法用户。根据 2016 年 Verizon 数据泄露报告,超过 63%的成功入侵事件涉及受损的凭据。双因素认证(2FA)提供了额外的层次来保护现有的基于凭据的系统,作为解决这一急剧增长问题的解决方案。

在本章中,我们将涵盖以下主题:

  • 什么是 2FA?

  • 区块链用于 2FA

  • 实验室

什么是 2FA?

随着几起数据泄露事件,我们目睹了社交和专业网站账户遭到大规模黑客攻击的大幅增加。有时,甚至简单的人为错误都可能在全球造成巨大麻烦。有时,根据用户的日常活动、行为甚至姓名,预测用户的密码可能很容易。用户仍然倾向于使用明文密码来保护他们的账户,最糟糕的包括password123456abcde

2FA 是用于确保只有合法所有者可以访问其账户的额外安全层。在这种方法中,用户首先输入用户名和密码的组合,而不是直接进入他们的账户,用户将需要提供其他信息。这其他信息可能以以下形式之一出现:

  • 用户所知道的信息:这可能是密码、秘密问题的答案,或者像个人识别号码(PIN)这样的信息。

  • 用户所拥有的东西:这种方法包括基于卡片详细信息、通过智能手机、其他硬件或软件令牌的第二级身份验证。

  • 用户所拥有的东西:这是验证用户第二步的最有效方式之一,通过生物特征数据(如按键动态和鼠标行为)来实现。

用户认证的演变

几个组织不断努力寻找更有效和可靠的身份验证系统。从互联网的诞生到公共和混合云的扩展,身份验证因素一直在并驾齐驱。选择支持强大身份验证解决方案的解决方案非常重要。组织确保系统具备未来性,并具有互操作性。以下图表解释了身份验证系统如何从单因素身份验证(SFA)演变为多因素身份验证(MFA)系统:

  • SFA:它基于用户的预共享 PIN 或密码的信息,或者最可能是一个安全问题。然而,有时会受到干扰,因为用户可能会忘记这些预共享信息,如果用户不经常访问应用程序。

  • 2FA:这是为了克服用户忘记基于所知道的预先共享信息的倾向。它有智能手机、钥匙卡或一次性密码(OTP)验证等方法。在这一因素中,第二步身份验证是动态的,用户不必与应用程序的所有者分享任何信息。这也避免了因被盗凭据而导致帐户被入侵的风险。

  • 多重因素身份验证(MFA):这有几种方法来对第二级用户进行身份验证,例如语音生物识别、面部识别、手部几何形状、眼部方法、指纹扫描、地理位置、热图像识别等。但是,本章仅限于探索 2FA。

以下图表显示了身份验证的演变:

为什么要使用 2FA?

2FA 有助于终端用户和业务安全,并且使用它有几个好处,如下所示:

  • 更好的安全性:通过集成第二层身份验证,基于短信的一次性密码(OTP)减少了攻击者冒充合法用户的风险。这降低了账户被盗和数据泄露的风险。即使黑客从暗网获取了用户的凭据,他们也不会有完全验证所需的第二个信息。

  • 提高生产力:移动 2FA 帮助全球企业无缝地使用第二级身份验证。员工可以安全地从任何设备或位置访问企业应用程序、文档和第三方系统,而无需共享任何机密信息。

  • 减少欺诈,增加信任:大多数欺诈受害者避免去某些零售商,即使该商家不负责数据泄露。2FA 为用户建立了更高的信任层,并且还减少了商家网站上的欺诈尝试。

它是如何工作的?

2FA 可以以两种方式部署——基于云的解决方案本地解决方案。我们将了解这两种解决方案,并了解哪种更适合哪种部署:

  • 基于云的解决方案:这在电子商务、在线银行和其他在线服务相关的网络应用中被广泛使用。看一下下面的图表:

  • 本地解决方案:组织在允许基于云的安全解决方案时存在犹豫,并倾向于更喜欢本地解决方案,其中员工访问网络应用程序时输入用户名和密码的组合。现在这些信息发送到内部 VPN 集成器,该集成器处理凭据并在组织与第三方 2FA 提供商之间交换密钥。第三方 2FA 提供商将生成 OTP 并通过短信或移动应用程序与员工共享此信息。这种模型有助于组织实现隐私,因为它不必与第三方 2FA 提供商共享凭据。看一下下面的图表:

挑战

在 2FA 中,第一层身份验证是用户名和密码的组合,但对于第二层身份验证,这部分信息由中央存储库提供。该中央存储库负责存储所有必要的信息以验证用户身份。尽管 2FA 通过第二层身份验证增加了安全性,但它仍然存在存储用户秘密信息的中央数据库的缺点。中央数据库可能会被定向威胁篡改或损坏,这可能导致大规模的数据泄露。

基于区块链的 2FA

区块链被誉为最具革命性和颠覆性的技术之一。区块链一直在扰乱基于网络安全解决方案的 CIA 安全三要素。多年来,2FA 在安全措施中一直是关键;然而,有时攻击者能够成功入侵这些系统。我们将了解区块链如何转变 2FA 系统,以实现改进的安全方法。

区块链如何转变 2FA?

从设计上看,区块链是一种去中心化技术,允许多个参与者之间进行任何类型的价值交易,而无需第三方的参与。通过利用区块链,我们可以确保这些敏感信息永远不会留在一个数据库中;相反,它可以存储在具有不可变性且无法修改或删除的区块链节点中。下图展示了基于区块链的 2FA。

在此情况下,用户设备将通过区块链网络由第三方 2FA 提供商进行身份验证。区块链网络中的每个参与方都将安全地保存端点信息,并激活 2FA 系统以生成第二级密码。

这可以部署在公共领域,甚至是通过第三方 API 调用的私有网络中:

解决方案架构

作为最新的技术,区块链仍在多个组织的测试阶段。在本章中,我们将使用以太坊区块链来启用 2FA 系统。以太坊允许通过智能合约编程应用程序。下图展示了用户、Web 应用程序和基于以太坊的存储库之间的基本流程:

用户访问 Web 门户并输入第一层凭据。Web 应用程序将与基于以太坊的存储库通信,生成 OTP 并与用户共享。最后,用户输入相同的 OTP 并获得 Web 应用程序的访问权限。让我们通过下图进一步了解以太坊区块链:

实验

为了启动整个项目,我们将不得不部署该项目的子组件。源代码已从 GitHub 获取,可以在以下链接找到:github.com/hoxxep/Ethereum-2FA.

它包含以下文件:

前面截图中的文件解释如下:

  • contracts:该文件夹包括我们的智能合约,TwoFactorAuth.sol

  • migrations:该文件夹包含用于将合约部署到区块链的迁移文件。

  • test:该文件夹包含server.js,负责验证我们合约中的事件。

  • node_modules:该文件夹包括所有库。

  • truffle.js:此配置文件包含一组配置,用于连接到区块链。

  • package.json:这是我们项目的配置,如名称和脚本。

组件

以下是该项目的三个核心组件,如下图所示:

  • 一个区块链网络(我们将通过 Ganache CLI 开发)

  • 智能合约

  • 一个与区块链通信的服务器

查看以下图表:

准备工作

在开始配置任何其他参数之前,开发区块链网络至关重要。首先,让我们在本地以太坊上开发我们的去中心化应用程序dApps)叫做testrpc。在我们的情况下,我们使用 Ganache CLI,它使用 EthereumJS 模拟完整的客户端行为,使以太坊开发更加简单和安全。它还包括所有知名的 RPC 函数和特性。

安装 Node.js

我们将首先在本地系统上安装 Node.js 包。代码可以从以下链接下载:nodejs.org/uk/download/package-manager/#arch-linux.

启动以太坊

启动以太坊的步骤如下:

  1. 首先,我们需要在系统上安装ganache-cli
>  npm install -g ganache-cli
  1. 接下来,使用以下命令运行整个套件:
> ganache-cli

在前面提到的命令执行后,我们将获得 10 个默认账户和 10 个默认私钥。现在我们将有一个本地以太坊testrpc,运行在http://localhost:8545上,如您在以下截图中所见:

启动智能合约

现在我们将使用以下命令运行server.js

Macbook-Air: Ethereum-2FA_user$ truffle_test ./test/server.js

在执行前面的命令后,我们将看到以下屏幕,该屏幕还显示了 2FA 的网址:

现在让我们打开 Google Chrome 并访问端口3000上的本地主机,如前面的截图所述。查看以下截图:

测试和验证

测试和验证按以下步骤进行:

  1. 调用身份验证功能:我们需要在以太坊 IDE 上运行智能合约代码,该 IDE 可以通过 remix.ethereum.org 访问。以下过程在 remix 中添加了 Solidity 代码:
    1. 单击左上角的 + 号,添加一个名为 TwoFactorAuth.sol 的新文件

    2. 复制并粘贴代码到我们的 remix 实例文件

    3. 现在,选择 TwoFactorAuth 并单击 Compile 选项

    4. 接下来,转到 Run 选项卡

我们需要调用 authenticate() 函数来验证合约,如下截图所示:

  1. 验证身份验证:在这一步中,我们需要验证身份验证是否成功。为了实现这一点,请按照以下步骤操作:
    • 我们需要将环境字段设置为 Web3 Provider 选项。

    • 现在选择 TwoFactorAuth 选项,在占位符中提供合约地址并使用 Load contract,然后单击 At Address 按钮,如下截图所示:

  1. 成功的身份验证:我们的服务器订阅了合约,当我们调用 authenticate() 方法时,服务器从区块链中读取并返回成功的身份验证:

概要

在本章中,您了解了 2FA 如何是最关键的安全措施之一。然而,中央存储库可能会面临复杂的网络攻击风险。我们研究了区块链如何帮助在多个节点之间分散数据库,并减少成为数据泄露的受害者的几率。以太坊智能合约是实现 2FA 系统的真正强大组件,它提供了对整个系统进行编程的灵活性。

问题

我们有关于理解 2FA、认证类型和方法以及演示以太坊如何用于创建 2FA 基础设施的主题。有一些值得探索的重要问题,比如:

  1. 我们还可以通过以太坊实现 MFA 吗?如果可以,如何实现?

  2. 我们如何将基于短信的 2FA 与以太坊智能合约集成?

进一步阅读

要了解更多关于 NIST 多因素认证(MFA)准则的信息,请查看以下链接:www.nist.gov/itl/tig/back-basics-multi-factor-authentication

第八章:基于区块链的 DNS 安全平台

域名系统DNS)主要设计用于将主机名查询解析为 IP 地址。互联网用户需要域名,例如www.packtpub.com,但互联网需要 IP 地址才能将请求路由到所需目的地。这样,DNS 就成为互联网的电话簿,并允许每个人在全球范围内使用它;然而,这也会导致其被滥用的可能性很高。在本章中,我们将了解 DNS 基础架构、核心组件、现有系统存在的挑战以及区块链如何改变其当前功能。

在本章中,我们将涵盖以下主题:

  • DNS

  • DNS 结构和层次结构

  • 大型企业的 DNS 拓扑结构

  • 当前 DNS 解决方案面临的挑战

  • 基于区块链的 DNS 解决方案

  • 实验室

DNS

DNS 是互联网的核心。如果 DNS 不可用,我们每个人都会在互联网上找资源时遇到困难。作为互联网的大型电话簿,我们的整个在线系统都严重依赖 DNS。由于 DNS 命名空间,我们中没有人需要记住一长串 IP 地址;相反,我们只需要记住网页的名称。

对于 IT 和安全专业人员来说,了解其基本结构、功能和操作是很重要的。DNS 是一个具有委托权限的分层数据库。根据本章的范围,我们将考虑企业 DNS 部署及其功能。组织可以通过允许他们的互联网服务提供商ISP)管理或内部管理来管理其 DNS 基础架构。ISP 网络中的任何配置错误或故障都可能导致组织的互联网基础设施中断。

随着互联网用户数量的增长,DNS 成为了互联网上组织的支柱,因此它给组织提供了控制自己 DNS 的强有力理由。通过有效的 DNS 部署,组织甚至可以实现更好的电子邮件垃圾邮件过滤系统和优化的网络拓扑结构。以下是 DNS 在组织中发挥关键作用的一些方式:

  • 反垃圾邮件:一些 DNS 机制,包括发件人策略框架SPF)和域键识别邮件DKIM),确保只有预定义的域应被允许代表特定组织发送电子邮件。如果组织中的 DNS 正常工作,则这些机制是有效的。

  • 负载均衡:DNS 服务可以通过将高利用率服务器的流量与其他低利用率服务器进行负载均衡来优化服务器基础设施。

  • 隐私:DNS 服务通过使用不同的名称掩盖地址,具体取决于是否从网络内部或外部访问,以确保组织命名空间信息的隐私,有助于实现更强大的网络安全。

理解 DNS 组件

DNS 不仅仅是一个协议,它由几个独立的实体共同工作,以提供可扩展和可靠的域名数据库。在最简单的形式中,DNS 有三个核心组件—命名空间服务器解析器

命名空间

命名空间是 DNS 数据库的结构。它以倒置树的形式表示,其根节点位于顶部。树中的每个节点都有一个标签,根节点具有 null 标签。请看下面的图示:

域名是从一个节点到根之间以点分隔的标签序列。命名空间最大深度为 127 级,域名长度不超过 255 个字符:

名称服务器

名称服务器负责以区域的形式存储有关命名空间的信息。可以有多个名称服务器,对于一个区域,有一个加载完整区域的服务器被称为权威。通常,单个区域有多个名称服务器被用作权威服务器,以确保更好的冗余性和负载共享:

有两种主要类型的名称服务器—权威服务器缓存服务器

  • 权威名称服务器:它提供 DNS 查询的响应。它负责为每个 DNS 查询提供原始和最终答案。权威名称服务器分为两种类型:

    • 主服务器(主名称服务器):它存储所有区域记录的原始副本。管理员只能对主服务器区域数据库进行更改。

    • 从属服务器(辅助名称服务器):从属服务器保留主服务器文件的副本。它用于分享 DNS 服务器负载和提高 DNS 区域的可用性。

  • 缓存名称服务器:它将名称服务带给用户更近,并提升整体名称查找性能。它还通过允许用户从本地缓存中获取所有的名称映射,为本地用户提供私有命名空间的完善机制。

解析器

名称解析器帮助名称服务器在命名空间中查找数据。名称解析器用于查找根区域的名称和 IP 地址。根名称服务器存储关于顶级区域的信息,并指示要联系哪些服务器以获取所有顶级域TLD)的数据。解析器基本上从右到左地将名称分成其标签。首个组件,TLD,使用根服务器进行查询,以获取指定的权威服务器。

DNS 结构和层次结构

类似于互联网的 DNS 基础架构,组织也部署其内部 DNS 基础架构。要部署内部 DNS 基础架构,组织可以选择任何域层次结构;然而,一旦连接到互联网,它们必须遵循通用的 DNS 框架。让我们了解名称服务器层次结构。

根名称服务器

在互联网上保持一致的命名空间中,根名称服务器直接响应对根区域中记录的请求,并通过返回适当 TLD 的权威名称服务器列表来回答其他请求。

为了修改根区域,必须首先在互联网上发布区域文件。根区域文件在互联网上由 AM 的 13 台服务器上发布。

根区域包含以下信息:

  • 通用顶级域名,如.com.net.org

  • 全球认可的 TLDs

  • 国家代码 TLDs,每个国家的两字母代码,如.in 代表印度,.no 代表挪威

  • 全球认可的 TLDs,通常类似于国家代码 TLD 名称

根区域包含服务 TLD 内容的名称服务器的数值地址,当 TLD 询问时,根服务器会用这些地址回答。

当组织获得新的域名时,注册商可能代表他们配置 DNS 记录并为他们提供一个名称服务器NS)。组织需要一个名称服务器告诉互联网的 DNS 目录其网页服务器和相应服务的 IP 地址。

当前 TLD 结构

TLD 是 DNS 层次结构中最高级别的域之一。TLDs 安装在命名空间的根区域中。系统中最后部分的域必须用完全合格的域名识别。互联网名称与数字分配机构ICANN)确保 TLDs 由委托组织管理。互联网分配数字机构IANA)由 ICANN 运营,负责管理 DNS 根区域。

IANA 负责管理以下顶级域名(TLDs):

  • ccTLD—国家代码顶级域名

  • gTLD—通用顶级域名

  • .arpa—基础设施 TLDs

此分层图解释了现有的 TLD 结构:

注册表、注册商和注册人

DNS 存储着大量的域名数据库。为了进行注册,有三个实体共同合作——注册表注册商注册人

  • 注册表:负责维护命名空间数据库的组织,具有对该数据库的编辑权限。注册表运行命名空间的权威 NS 并管理 TLD 名称。他们的角色是创建域名扩展名、制定域名规则,并与注册商合作向公众提供域名。例如,Verisign 管理着.com 域名及其 DNS 的注册。

  • 注册商:保留域名并被授权向公众出售域名的组织。此注册商必须由通用顶级域名gTLD)注册表或国家代码顶级域名ccTLD)注册表授权。注册商按照域名注册表提供的指南操作。

只有指定的注册商才能修改或删除中央注册数据库中有关域名的信息。最终用户直接从注册商购买域名,最终用户完全有权切换注册商,调用注册商之间的域名转移流程。一些最受欢迎的注册商包括 GoDaddy、HostGator、BigRock 等。

  • 注册人:这只是持有域名权利的最终用户。作为域名注册人,每个人都有一定的权利和责任,包括从用户的注册商那里获取有关注册、管理、转移、续订和恢复域名注册的流程的信息。

这是一个显示所有三个实体一起工作的图示:

DNS 记录

DNS 记录是与 DNS 服务器相关联的映射文件,处理发送到每个域的请求。各种字母字符串被用作模拟 DNS 服务器操作的组件,这些命令字符串称为 DNS 语法。这些语法包括 A、AAAA、规范名称CNAME)、邮件交换器MX)、指针PTR)、名称服务器NS)、权威起始SOA)、服务SRV记录文本TXT)和名称授权指针NAPTR)。让我们详细了解其中一些 DNS 记录。

  • SOA:SOA 记录标记了区域文件的开始。它由区域的名称、技术联系点、其 NS、序列号和超时值组成:

  • NS:NS 记录标识区域的授权名称服务器。NS 还在区域文件上将子域委托给其他组织。在前面的例子中,我们可以清楚地看到www.google.com的 NS 列表。

  • 记录:地址记录建立了名称到地址的前向绑定。在这个例子中,我们将 IP 地址与域名www.google.com映射起来:

  • MX 记录:这些记录标识可以交换电子邮件的服务器。每个记录都与优先级相关联,因此用户可以选择主要和备份邮件服务器。

  • TXT 记录:这些记录提供了通过 DNS 扩展提供的信息的方法。这个文本记录存储了有关 SPF 的信息,可以确定授权服务器代表您的组织发送电子邮件。

  • CNAME:CNAME 实质上是将流量绑定到域和子域的文本别名。它们表示安全文件传输协议SFTP)服务器与邮件服务器位于同一系统上。CNAME 在服务器不受组织控制时发挥重要作用,比如托管或管理的网络服务器。

  • PTR 记录:这些记录提供从地址到名称的反向绑定。PTR 记录应与前向映射完全匹配。

大型企业的 DNS 拓扑

对于 IT 专业人员来说,了解 DNS 查询和名称服务器类型是组织 DNS 最佳实践的重要内容:

  • 网络拓扑:冗余在域基础设施中起着关键作用。即使一个服务器失败,另一个也会接管,保持服务正常运行。BIND(广泛使用的 DNS 软件)通过主从关系支持高冗余性。主 NS 通过区域传输机制将映射更改更新到一个或多个从服务器。

  • 配置文件:BIND 的配置存储在一个名为 named.conf 的文件中。此 named.conf 文件帮助服务器识别权威和/或缓存服务器以及其是否为任何特定区域的主或从服务器。该文件指向包含真实映射数据库的区域文件。它包含定义特定域的名称到地址和地址到名称映射的行或记录。

架构

随着技术和网络转型的变化,DNS 必须随着时间的推移进行升级。存在着像DNS 运营、分析和研究中心DNS-OARC)和互联网系统联盟ISC)等机构。在以下图表中,我们可以看到一个优化 DNS 基础设施的标准 DNS 架构:

先前的标准 DNS 架构可以描述如下:

  • 主 DNS 区域:主区域包含区域数据的读/写副本。网络中只允许一个主区域。所有 DNS 记录必须手动或自动写入主区域。然后,此数据存储在标准文本文件中。

  • 从属 DNS 区域:从属区域是区域数据的只读副本。通常,它是主区域的复制版本。如果尝试在辅助区域上更改 DNS 记录,则可以将其重定向到具有读/写访问权限的另一个区域。从属 DNS 区域的作用是备份 DNS 区域文件。

  • 聚合缓存转发器(ACF):它基本上转发请求而不处理它们。当服务器发送响应时,它将其传递回自己的客户端。在某些情况下,解析器也可以是转发器或缓存转发器。它可能会或可能不会缓存数据;但是,对于希望向没有预定义 DNS 服务器地址的 DHCP 客户端提供 DNS 数据的系统(如小型办公室家庭办公室SOHO)网关)非常有用。

当前 DNS 的挑战

如今,DNS 已成为互联网和组织网络的支柱。DNS 是一项使组织无法正常运行的关键基础设施。然而,尽管在网络和信息安全方面投入了越来越多的投资,攻击者仍然成功入侵网络,DNS 仍然是网络基础设施中的一个容易受攻击的组件,经常被用作攻击向量。防火墙保持 53 端口开放,从不查看每个查询的内部。让我们来看一下最广泛使用的基于 DNS 的攻击之一:

DNS 欺骗

当 DNS 服务器的记录被更改以将流量重定向到攻击者的服务器时,DNS 将被劫持。这种流量重定向允许攻击者在网络中传播恶意软件。DNS 欺骗可以通过以下三种方式之一进行:

  • DNS 缓存投毒:攻击者可以利用缓存的 DNS 记录,然后通过向 DNS 服务器注入伪造的 DNS 条目来执行欺骗。结果,所有用户现在将使用该伪造的 DNS 条目,直到 DNS 缓存过期。

  • 攻击 DNS 服务器:DNS 服务器是整个 DNS 基础设施的核心。攻击者可以利用多种攻击向量来 compromis... 即可提供恶意网络服务器的 IP 地址。

  • 中间人(MITM)攻击:在这种类型的攻击中,威胁行为者不断监听客户端和 DNS 服务器之间的对话。在收集信息和序列参数之后,它开始欺骗客户端,假装是实际的 DNS 服务器,并提供恶意网站的 IP 地址。

基于区块链的 DNS 解决方案

区块链技术具有改变多个行业的能力,在本章中,我们将使用它来管理名字服务器,以克服一些最关键的 DNS 挑战。DNSChain 是转换 DNS 框架并保护免受欺骗挑战的最活跃的项目之一。

DNSChain 是一个基于区块链的 DNS 软件套件,取代了 X.509 公钥基础设施PKI)并提供了 MITM 身份验证证明。它允许互联网用户设置公共 DNSChain 服务器以进行 DNS 查询,并使用以 .bit 结尾的域名访问该服务器。

X.509 PKI 替代方案

X.509 是一个标准框架,定义了 PKI 的格式,用于在互联网上标识用户和实体。它帮助互联网用户知道与特定网站的连接是否安全。DNSChain 具有提供可扩展和去中心化替代方案的能力,不依赖于第三方。

MITM 证明的 DNS 基础设施

这使用了公钥固定技术来解决中间人攻击问题。 公钥固定指定了两个 pin-sha256 值;也就是说,它固定了两个公钥(一个是当前证书链中任何公钥的 pin,另一个是当前证书链中没有的任何公钥的 pin):

  • 它与现有的 DNS 服务器并行运行

  • 网站和个人将其公钥存储在区块链中

  • 密钥通过 DNSChain 软件框架共享

基于以太坊的安全 DNS 基础设施实验室

DNS 基础设施一直是组织中最受攻击的资产。传统 DNS 易受多种复杂威胁的影响。当前的 DNS 系统是分层的,系统根服务器成为高价值的攻击向量。由于整个基础设施是集中化的,即使是轻微的故障也可能导致整个系统的失败。一群工程师——Greg Siepak 和 Andrea Devers 已经开发了一个基于以太坊的 DNS 平台,以在客户端和名称服务器之间建立连接而不涉及任何第三方。该项目名为 DNSChain,托管在 GitHub 上,链接为github.com/okTurtles/dnschain

实验室准备

在 Ubuntu 中配置 DNSChain 服务器。 它将运行 PowerDNS Recursor,发出.com.net域的 DNS 查询,正如您所期望的那样,但是要查阅本地 Namecoin 区块链以解析.bit域。

我们将从一份新的 Ubuntu LTS 开始。在我们的实验室中,我们将在亚马逊的 AWS 云上部署这个 Ubuntu 系统。

这里的一些示例可能使用已过期的域名,因此最好在你个人注册的 Namecoin 区块链域名上测试域名解析。从一个新的 Ubuntu 16.04 LTS 开始。我在亚马逊云上使用的是 Ubuntu 16.04 LTS。

我们将使用以下命令准备基础设施:

sudo sh -c "echo 'deb 
http://download.opensuse.org/repositories/home:/p_conrad:/coins/xUbuntu_16.04/ /' >> /etc/apt/sources.list.d/namecoin.list" 
wget http://download.opensuse.org/repositories/home:p_conrad:coins/xUbuntu_16.04/Release.key 
sudo apt-key add - < Release.key 
sudo apt-get update

Namecoin 区块链安装

在本节中,我们将从安装 Namecoin 区块链开始。

  • 安装: 我们需要在本地系统中安装namecoin区块链:
sudo apt-get install namecoin

要配置namecoin,请按照快速入门指南。 本教程将使用当前用户,而不是创建多个用户。

  • 配置: 完成 Namecoin 安装后,我们需要使用以下命令配置区块链:
mkdir -p ~/.namecoin \
&& echo "rpcuser=`whoami`" >> ~/.namecoin/namecoin.conf \
&& echo "rpcpassword=`openssl rand -hex 30/`" >> ~/.namecoin/namecoin.conf \
&& echo "rpcport=8336" >> ~/.namecoin/namecoin.conf \
&& echo "daemon=1" >> ~/.namecoin/namecoin.conf

我们将继续运行namecoind来启动事务。让我们使用namecoind getinfo检查区块链下载的进度。

对于 Ubuntu,我们使用upstart而不是systemd。 我们需要将此文件写入/etc/init/namecoind.conf,记得替换你的用户名; 在我的情况下,它是ubuntu

现在我们必须使用namecoind stop来停止进程。之后,我们需要发出sudo initctl reload-configuration命令,然后使用sudo shutdown -r立即重新启动。最后,namecoin会自动重新启动。

  • 验证: 如前所述,namecoind将开始下载区块链。 在它取得一些进展之前,我们将无法从区块链上查找域名。 稍后,当我们重新访问 Namecoin 时,我们可以尝试以下命令:
namecoind getinfo 

在输出中,我们可以清楚地看到有关 Namecoin 的详细信息以及有关难度级别、连接、时间偏移、创建的块、余额甚至任何错误的详细信息:

此外,我们将使用以下命令获取有关 Namecoin 交易 ID 和地址的详细信息:

namecoind name_show d/okturtles

以下截图显示了运行上述命令的输出:

此外,我们还可以检查 RPC 接口(使用namecoin.conf中的rpcuserrpcpassword):

现在,我们将使用curl命令获取托管在http://127.0.0.1:8336上的内容的 Web 信息:

curl --user ubuntu:b17401a7fcc7a3db10c8efcac65ff96db56bfad6cc199f3a08e1b2cf6805 --data-bina'  -H 'content-type: text/plain;' http://127.0.0.1:8336

我们可以看到针对本地系统托管内容的curl命令的以下输出:

此外,我们可以使用curl命令提取 HTTP 站点发送给我们的标头。 以下命令存储 HTTP 站点发送给我们的标头。 此命令将接收到的协议标头写入指定的文件:

curl -v -D - --user ubuntu:b17401a7fcc7a3db10c8efcac65ff96db56bfad6cc199f3a08e1b2cf6805 --darams":["d/okturtles"]}' -H 'content-type: text/plain;' http://127.0.0.1:8336

运行上述命令的输出如下所示:

安装 PowerDNS

PowerDNS是开源 DNS 软件、服务和支持的首要供应商。 PowerDNS 是一个用 C++编写的 DNS 服务器,并在 GNU 通用公共许可证GPL)下许可。 它运行在大多数 Unix 派生系统上。 它具有许多不同的后端,从简单的 BIND 到关系数据库。 我们将使用以下命令在系统上安装 PowerDNS:

sudo apt-get install pdns-recursor

运行上述命令的输出如下:

  • 配置:我们需要在本地环境中配置 PowerDNS。 我们将命令 PowerDNS 将对.bit.eth.p2p域名的请求发送到端口5333

此配置在/etc/powerdns/recursor.conf文件中指定:

forward-zones=bit.=127.0.0.1:5333,dns.=127.0.0.1:5333,eth.=127.0.0.1:5333,p2p.=127.0.0.1:5333
export-etc-hosts=off
allow-from=0.0.0.0/0
local-address=0.0.0.0
local-port=53

在以下截图中,我们可以看到查询的前向区域文件的提取:

在以下截图中,我们可以找到托管在127.0.0.1:5333上的前向区域信息:

特别注意我们的前向区域声明。 在此时确保使用sudo service pdns-recursor restart重新启动 PowerDNS。 然后,在我们继续之前,确认 PowerDNS 能够正确解析传统域名:

  • 验证: 为了验证前向区域 PowerDNS 的安装,我们需要运行以下命令:
dig @127.0.0.1 packtpub.com

我们将找到以下输出,其中包含packtpub.com的 IP 地址:

安装 DNSChain

首先,我们将更新apt-get并安装一些前提条件。请注意,尽管我们安装npm(需要 Node.js 安装),但需要安装nodejs-legacy

  • 安装依赖项: 在此步骤中,我们将安装所有可靠的脚本和命令:
sudo apt-get update
sudo apt-get install git npm
sudo apt-get install nodejs-legacy 
sudo npm install -g coffee-script
  • 安装 DNSChain: 现在可以通过以下命令执行 DNSChain 的安装:
sudo npm install -g dnschain

在下面的输出中,我们可以发现结果包括coffee-script-1.12.7.tgz注册表文件的提取:

  • 配置: 我们需要配置 DNSChain 将其绑定到端口5333,但只要与 PowerDNS 交付请求的端口号匹配即可使用任何高端口号。这在/etc/powerdns/recursor.conf中早已指定。 DNSChain 的另一个很棒的特性是我们可以通过 HTTP 公开查找结果。我们将为此指定端口8000,但您可以使用任何打开的高端口号。例如,DNSChain 可以设置为通过端口8000通过 Web 服务器访问。以此为例,写入/home/ubuntu/.dnschain/dnschain.conf

我们需要为 DNSChain 制作另一个upstart文件,并将此文件写入/etc/init/dnschain.conf

我们现在将运行sudo initctl reload-configuration,然后重新启动机器。最后,我们通过尝试解析.bit域名来进行测试。

你可能需要等待大量区块链加载完毕才能正常运行。

  • 验证: 最后,我们可以通过查找hello.bit地址来验证 DNSChain。在输出结果中,我们可以找到所需服务器 IP 地址为51.101.1.6的结果:
dig @127.0.0.1 okturtles.bit

以下屏幕截图显示了运行上述命令的输出:

总结

在本章中,我们了解了 DNS 框架及其核心组件。我们了解到,任何受损的 DNS 服务器都可能对基础架构造成巨大破坏,以及区块链如何利用其基本优势来解决其中一些关键挑战。

问题

DNS 是互联网的支柱,也是最复杂的协议框架之一。随着每一种新的攻击向量,DNS 都在准备更强大和更全面。读者可以查阅以下问题:

  1. 什么是 DNS 隧道攻击?

  2. 区块链可以用于部署整个 DNS 基础架构吗?如果可以,怎么使用?

更多阅读

阅读以下文章,以了解更多关于 DNS-OARC 和 ISC 的信息:

第九章:部署基于区块链的 DDoS 保护

互联网的用户数量和应用程序以及它们的带宽正在急剧增长。在过去的几年里,一种新的互联网用户进入了互联网的世界,通常被称为智能设备。它可以是冰箱、空调或微波炉,也可以是无人机或自动驾驶车辆。这些智能设备也被称为物联网IoT)设备,监控着连接的公用事业的功能和操作。尽管有足够的用例,攻击者正在利用它们发动所谓的分布式拒绝服务DDoS)攻击。在本章中,您将学习有关 DDoS 攻击以及区块链如何更有效地保护组织免受此类大规模攻击行动的信息。

在本章中,我们将涵盖以下主题:

  • DDoS 攻击

  • DDoS 攻击类型

  • 当前 DDoS 保护解决方案的挑战

  • 区块链如何改变现有的 DDoS 保护平台

  • 实验室

DDoS 攻击

DDoS 攻击是通过让来自地理分布系统的大量请求淹没目标服务器,以恶意尝试干扰合法流量的一种攻击方式。现在,让我们首先了解拒绝服务DoS)攻击是如何工作的。在 DoS 攻击期间,攻击者向目标机器发起大量请求,导致服务器资源耗尽,并因此无法满足合法用户的请求。在 DoS 攻击中,威胁参与者使用单台机器来耗尽目标服务器;然而,DDoS 攻击更为强大,因为可以使用数百万台机器来耗尽目标服务器。

什么是 DDoS 攻击?

越来越多的组织正在转向具有重大基础设施的云端,以满足其沉浸式客户需求。组织要么建立自己的重型服务器基础设施,要么转向云提供商托管他们的服务器。今天,攻击者更喜欢使用 DDoS 攻击方法来破坏目标服务,因为他们可以生成大量的随机数据,以淹没目标。此外,目标安全团队很难识别和阻止每个攻击机器,因为它们的数量达到了数百万。

此外,攻击者从未合法地控制他们的攻击机器,而是通过特制的恶意软件在全球数百万台计算机上感染病毒,然后获得完全访问权限来发动大规模的 DDoS 攻击。这个由数百万台感染的计算机组成的集合被称为僵尸网络,而单个被感染的计算机则被称为僵尸

DDoS 的第一个实例有点难以确切回忆起来,但第一个明显和重大的攻击发生在 1999 年,目标是明尼苏达大学。它影响了 220 多个系统,并使整个基础设施瘫痪了好几天。

2016 年 10 月 21 日星期五,整个世界目睹了对 Dyn(一家托管 DNS 提供商)进行的最复杂和精密的 DDoS 攻击之一。Dyn 确认 Mirai 僵尸网络是恶意攻击流量的主要来源。这次攻击引起了对互联网安全和威胁的重要关注。

它是如何工作的?

要发动 DDoS 攻击,威胁行为者可以构建整个僵尸网络,也可以从暗网市场租用。一旦攻击者准备好他们的武器,他们需要发现脆弱的站点或主机,或者可能整个网络。

洛克希德·马丁公司的计算机科学家创造了一个称为网络杀链的术语,它阐述了网络攻击的阶段,从侦察到最终攻击目标。这些阶段包括:

  • 侦察:攻击者确定其目标设备并开始搜索其中的漏洞。

  • 武器化:攻击者使用远程工具包和恶意软件,如病毒或蠕虫,来利用漏洞。

  • 交付:威胁行为者通过诸如钓鱼邮件、随意下载、USB 驱动器、内部人员等多种方法将网络战争引入受害网络

  • 利用:恶意软件代码用于触发攻击,在目标网络上采取行动以利用漏洞

  • 安装:恶意软件现在已安装在受害机器上

  • 命令和控制:这种恶意软件允许远程威胁行为者访问受害者机器

为了从 DDoS 的角度理解每个阶段,了解僵尸网络基础设施及其建立方式至关重要。

建立僵尸网络

如前所述,DDoS 攻击的分布式性质需要全球数以百万计受感染的机器。今天,攻击者利用暗网市场,要么租用现成的僵尸网络,要么购买它们。有一些工具,如 Jumper、Dirt 和 Pandore,可以消除创建这些僵尸网络的技术障碍。

以下图表概述了僵尸网络的生命周期:

侦察

目标系统可以大到数据中心,小到计算机。在这两种情况下,建立僵尸网络都涉及识别存在漏洞的主机,可以利用一些恶意软件家族进行利用。攻击者寻找与他们的目标直接或间接相关的信息,以未经授权地获取他们受保护的资产。威胁行为者尝试各种可能的方法来绕过存在的安全系统,如防火墙、入侵防护系统IPS)、网络应用防火墙和端点保护。

武器化

各种开源软件的广泛使用已消除了创造恶意代码的技术障碍。如果程序员有恶意意图并开发了代码,就可以开发出一种新型的恶意软件,对安全系统检测来说会比较困难。

以下是一些用于开发 DDoS 的流行工具列表:

  • 低轨道离子炮 (LOIC):这是一种由流行的黑客活动分子团体 anonymous 使用的最受欢迎的工具之一。它是一个简单的洪水工具,可以生成大量的 TCP、UDP 或 HTTP 流量以过载目标服务器。它最初是用来测试服务器性能的吞吐量;然而,匿名团体使用这个开源工具发起了复杂的 DDoS 攻击。该工具后来通过 IRC 功能进行了增强,允许用户通过 IRC 控制连接的机器。

  • 高轨道离子炮 (HOIC):在成功使用 LOIC 几年后,匿名团体放弃了它,并使用 HOIC 工具首先瞄准了美国司法部 (DOJ),以回应其关闭网站 megaupload.com 的决定。HOIC 再次是一个简单的应用程序,用于支持跨平台的基本脚本,用于发送 HTTP POST 和 GET 请求,并带有简单和简化的 GUI。它后来被配备了 booster 脚本,这些脚本是包含额外基本代码的文本文件,称为 booster 脚本。这个 booster 脚本还允许攻击者指定要攻击的目标 URL 列表。HOIC 仍然被匿名团体用来全球发起 DDoS 攻击。

  • hping:就像匿名团体一样,还有几个不同的黑客活动分子团体积极地瞄准企业和政府机构。一种叫做 hping 的工具被开发出来以克服 Ion Cannon 工具的匿名挑战。它再次被用来在目标处生成大量的 TCP 流量,并且通过欺骗源 IP 地址来保持匿名。它是几个黑客活动分子团体中最强大和最全面的工具之一。

  • Slowloris:Slowloris 是最先进的工具之一,用于使攻击者难以检测和追踪。这个工具是由一位被称为RSnake的灰帽黑客开发的,它能够通过创建非常慢的 HTTP 请求来为服务器发起 DDoS 攻击。它生成大量微小的 HTTP 头,以瞄准服务器并使其等待其余的头到达。

交付

一旦恶意代码被开发或从暗网市场购买,这个软件可以通过针对性钓鱼邮件交付,也可以通过垃圾邮件活动发送。选择其中一种取决于目标,还取决于操作的复杂性。

我们可以将传播恶意代码的过程分类为以下三组方法:

  • 中央源传播:在这种方法中,攻击者计划将易受攻击的系统变成一个或多个僵尸机器人的系统将被给予一个中央系统,以便攻击系统的副本从中央托管的基础架构转移到新受损系统。整个工具包移动后,脚本会自动启动一个新的攻击周期。这整个机制使用 HTTP、FTP 和 远程过程调用RPC)协议。在这种方法中,威胁行为者利用受害者机器,受损系统连接到攻击者的中央仓库,最后,中央源推送代码。请看以下图表:

  • 反向链接传播:在这种方法中,攻击者的工具包被重新定位到新受损的主机上。攻击者的工具包是专门设计用于接受来自受损系统的文件请求的。反向通道文件复制可以通过使用 简单文件传输协议TFTP)的端口监听器来完成。与中央源传播方法不同,攻击者将利用和代码一起传输到受害机器中:

  • 自动传播:在这种机制中,一旦攻击者侵入系统,他们的工具包就会转移到受损主机上。这种机制在传输方式上有所不同,因为攻击工具包首先由攻击者种植到受损主机上。在这种方法中,攻击者先传输利用,然后再从自身传输代码,而不是从任何中央仓库传输。请看以下图表:

利用

一旦恶意软件传递到网络中,它将启动利用未打补丁的软件漏洞、薄弱的软件编码实践和用户注意力缺失的过程。通常,网络中存在许多漏洞;然而,漏洞的利用性使漏洞的性质变得更加关键。

安装

在安装阶段,恶意软件被安装在目标系统中,并允许远程攻击者访问它。在安装过程中,恶意软件可能被安装在系统的用户空间或内核空间。安装在用户空间的恶意软件被检测到的可能性很高;然而,安装在内核空间的恶意软件被安全系统,如终端保护、终端检测和响应平台,检测到的可能性较低。

命令与控制(C2)

武器成功安装后,目标现在完全受到一个名为系统的远程中央系统的控制。被攻击的设备网络被称为僵尸网络,完全在威胁行为者的控制之下;然而,这个僵尸网络保持沉默,直到被攻击者激活。甚至还有几种加密的僵尸对僵尸的通信存在于公共对等网络上。

行动目标

一旦 C2 通道建立,攻击者就可以对目标发动 DDoS 攻击。在这个阶段,攻击者运行脚本来激活整个僵尸网络中的所有僵尸。攻击者还会配置僵尸网络以确定需要生成什么类型的流量。

DDoS 攻击类型

DDoS 攻击有多种方式进行。然而,攻击者会根据不同因素选择其中一种,如目标难度、财务能力、匿名性、优先级和其他因素。运行 DDoS 攻击程序并发动它并不需要太多技术专长。主要有三种类型的攻击,分类如下:

  • 目标网络资源的攻击

  • 目标服务器资源的攻击

  • 目标应用程序资源的攻击

目标网络资源的攻击

这些是计划消耗目标系统网络资源的攻击活动。在这种攻击中,网络带宽被洪泛攻击完全消耗。以下是几种洪泛攻击类型。

用户数据报协议 (UDP) 洪泛

UDP 是嵌入在 IP 数据包中的用于两个设备之间的套接字级通信的协议。UDP 洪泛攻击不会利用目标系统的任何特定漏洞,而是通过以大量洪泛来淹没目标系统的正常流量来干扰它。它指向目标服务器上的随机端口,并消耗目标系统的所有流量带宽。这种 UDP 洪泛甚至不允许系统发送互联网控制消息协议 (ICMP) 目的地不可达的数据包。通常,这种类型的攻击被认为是小型到中型洪泛攻击的一种,并以 Mbps 和 PPS 衡量,如下图所示:

ICMP flood

ICMP 是另一种用于 IP 层可达性和管理操作的无连接协议。同样,它不依赖于任何漏洞来工作。可以使用任何类型的 ICMP 消息执行 ICMP 洪泛,例如回显请求和回显回复。作为最古老的洪泛技术之一,组织已经采取了在网络设备上部署控制平面策略的做法,以限制设备的控制平面可以处理的 ICMP 数据包的数量。

互联网组管理协议 (IGMP) 洪泛

IGMP 是一种多播协议,性质上是无连接的。它是基于非漏洞的,涉及向网络或路由器发送大量的 IGMP 消息报告。

放大攻击

放大攻击利用通信渠道中请求和响应之间的差异。攻击者可以 compromise 一个路由器,强制路由器向多播地址发送广播消息,伪造源地址。甚至可以与 DNS 放大一起使用,攻击者可以 compromise 递归 DNS 名称服务器以缓存大型文件。请看下图:

针对服务器资源的攻击

针对受害者服务器资源并最终耗尽整个服务器处理和内存的攻击最终会对合法流量造成破坏。在这个类别中,攻击者识别目标服务器的漏洞,并武装恶意软件以利用这些漏洞。您将了解到一些用于执行这些攻击的最常见技术。

TCP SYN Flood

这种攻击利用了 TCP 的三次握手机制,并通过 TCP 同步消息消耗大部分服务器资源。在 TCP 的三次握手中,客户端首先发送设置了同步标志的 TCP 包,请求服务器分配资源并建立通信渠道。在 TCP SYN 攻击中,攻击系统发送一系列设置了 SYN 标志的 TCP 请求。为了管理每一个请求,服务器必须打开并分配一定的 CPU 资源,并且缓冲以准备进一步的通信。现在,服务器发送一个设置了 SYN-ACK 标志的 TCP 消息,并期望客户端用带有 ACK 标志的 TCP 消息来确认。攻击系统接收到了,但从未做出响应,结果是,服务器保持套接字打开并为同一客户端机器分配资源。服务器资源是有限的,但攻击者可以不断向服务器发送请求,最终耗尽服务器资源,使其对合法用户流量不可用。TCP 对请求和响应过程有特定的超时时间,但攻击者利用了同样的时间段发送大量的 TCP 请求。请看下图:

TCP RST 攻击

在 TCP/IP 栈中,TCP 中的复位RST)标志用于通知服务器重置其正在进行的 TCP 连接。在 TCP RST 攻击中,攻击者拦截客户端和服务器之间的活动 TCP 连接,尝试随机序列号。成功识别序列号后,攻击者伪造 TCP RST 消息发送给客户端的源 IP 地址。对于人类来说,执行这样的活动将非常困难。因此,会使用机器人来拦截和识别活动序列号。

基于安全套接字层(SSL)的攻击

SSL 是建立 Web 服务器和浏览器之间加密通道的标准安全协议。这确保了 Web 服务器和浏览器之间传输的所有数据都是加密的,从而为互联网用户提供了更好的隐私和完整性解决方案。SSL 在 TCP/IP 上运行,并且仅在完成 TCP 三次握手后发送 SSL hello。基于 SSL 的 DDoS 攻击可以通过各种方式进行,例如针对 SSL 握手机制、向 SSL 服务器发送随机和垃圾数据,或者利用某些与 SSL 加密密钥机制相关的功能。

加密的 HTTP 攻击

随着 SSL/TLS 加密的 Web 应用程序的使用增加,攻击者也转向加密的基于 HTTP 的攻击。大多数组织没有能够检查 SSL 流量的安全解决方案,因此无法保护免受恶意流量的侵害。攻击者利用这一弱点,并采用越来越多的能力通过加密的 HTTP 来破坏网络。

针对应用程序资源的攻击

DDoS 攻击不断增加;威胁行为者正在从传统方法转向更先进和复杂的基于应用程序的攻击。这些不仅仅局限于基于 HTTP 的攻击,甚至还适应了 HTTPS、DNS、FTP、SMTP 和 VOIP。应用程序由多个独立组件构建,因此易受攻击。因此,基于应用程序的攻击对威胁行为者变得更具吸引力。我们将介绍一些最常用的攻击。

DNS 洪泛攻击

DNS 无处不在,并且每个组织网络都必须打开 DNS 端口以进行名称解析。发动基于 DNS 的洪泛攻击很容易,而安全系统难以检测到它。DNS 使用 UDP 协议以获得更快的请求和响应时间,而不建立新的连接(就像在 TCP 握手中)。在这种类型的攻击中,DNS 服务器可能会被大量 DNS 请求压垮,使受害者服务器无法处理合法请求。这种技术曾在最近对 Dyn 网络的 Mirai 攻击中使用,导致用户无法访问 YouTube、Twitter、Netflix 和其他几个应用程序。

正则表达式 DoS 攻击

使用低速攻击方法来攻击受害者服务器。攻击者利用服务器部署的库文件中的漏洞。每当客户端发送带有正则表达式的请求时,服务器都必须花费大量资源来处理正则表达式。攻击者利用这一点来利用服务器,并定期发送安全系统无法检测到的正则表达式。

散列碰撞 DoS 攻击

使用这种攻击方式,攻击者需要花费数天到数月的时间来识别 Web 应用程序框架中的漏洞。大多数应用程序服务器使用哈希表来索引 POST 会话。当返回相似的哈希值时,服务器必须管理哈希冲突。冲突解决消耗大量的处理资源,因为攻击者不断发送带有大量参数的 POST 消息。攻击者设计参数的方式导致服务器端发生哈希冲突,结果使服务器忙于处理它们。

当前 DDoS 解决方案面临的挑战

在过去的几年中,DDoS 攻击呈上升趋势。根据 Radware 最近的报告,43%的组织经历了爆发性攻击,但其余的组织不知道自己是否受到了攻击。攻击者正在采用几种新兴技术和复杂的策略来 compromis 目标网络。

在 2018 年 2 月 28 日,代码托管网站 GitHub 遭受了有史以来最大的 DDoS 攻击,记录在 1.35 Tbps。由于 DDoS 攻击属于无法部署任何安全预防机制的网络威胁类别,因为系统漏洞受到组织控制,但威胁无法控制。Web 应用程序的前端对于所有用户保持集中,因此为组织留下了单点故障的局面。

区块链如何改变 DDoS 保护?

根据定义,区块链是一个去中心化网络,允许独立的各方进行通信,而无需任何第三方的参与。为了保护网络免受 DDoS 攻击,组织可以分布在多个服务器节点之间,提供高弹性并消除单点故障。使用区块链有两个主要优势,如下所示:

  • 区块链技术可用于部署一个分散式分类的 IP 地址存储黑名单

  • 区块链技术消除了单点故障的风险

实验室

为了部署基于区块链的 DDoS 保护平台,我们必须准备带有 Node.js 和 Truffle 的测试环境,以太坊区块链。我们将使用现有的区块链项目来保护网络免受 DDoS 攻击。项目链接可以在链接github.com/gladiusio/gladius-contracts中找到。

此外,我们需要按照步骤准备 Gladius 项目的基础架构:

  1. 首先,我们将在环境中安装 Node.js,网址为nodejs.org/uk/download/package-manager/#arch-linux

  2. 我们需要安装truffle来测试环境:

npm install -g truffle
  1. 在终端中运行以下命令:
npm install -g ganache-cli
  1. 现在,我们可以通过以下命令在终端中启动测试网络:
ganache-cli

以下屏幕截图显示了运行上述命令的输出:

  1. 在这个终端窗口中,我们可以看到测试区块链网络中的所有交易。现在,我们必须打开一个新的终端窗口并跳转到工作目录。

要设置项目,请按照以下说明操作:

  1. 转到github.com/gladiusio/gladius-contracts并下载.zip文件。然后,将此文件解压缩到您想要的文件夹中。

  2. 用以下代码替换truffle.js文件中的代码:

let HDWalletProvider = require('truffle-hdwallet-provider')

module.exports = {
    networks: {
        development: {
            host: "localhost",
            port: 8545,
            network_id: "*" // Match any network id
        },
        truffle: {
          host: "localhost",
          port: 9545,
          network_id: "*", // Match any network id
        },
        travisci: {
            host: "localhost",
            port: 8545,
            network_id: "*"
        },
        rinkeby: {
            host: "localhost", // Connect to geth on the specified
            port: 8545,
            from: "0x0085f8e72391Ce4BB5ce47541C846d059399fA6c", // default address to use for any transaction Truffle makes during migrations
            network_id: 4,
            gas: 4612388 // Gas limit used for deploys
        }
    }
};
  1. 我们将通过终端转到名为gladius-contracts-master的文件夹,并使用以下命令编译合约:
truffle compile

下面的截图显示了运行上述命令的输出:

  1. 现在,我们将使用以下命令将我们的合约部署到ganache-cli本地区块链:
truffle migrate --reset

下面的截图显示了运行上述命令的输出:

  1. 现在,我们必须使用truffle test命令启动单元测试以确保智能合约可用:

  1. 转到github.com/gladiusio/gladius-control-daemon,下载.zip文件,并将其解压到与gladius-contracts相同的文件夹中。

  2. 接下来,我们在终端中找到gladius-control-daemon-master文件夹,并链接合约应用程序二进制接口ABI)。ABI 是两个程序模块之间的接口,其中一个模块位于机器代码级别:

ln -s ../gladius-contracts-master/build build

下面的截图显示了运行上述命令的输出:

  1. 接下来,我们将使用npm install命令安装依赖项:

  1. 接下来,我们将使用node index.js命令启动脚本:

  1. 让我们打开一个新的终端窗口并运行gladius-networkd命令:

  1. 接下来,我们需要打开一个新的终端窗口并运行gladius-controld命令:

  1. 要启动您的节点,您需要在新的终端窗口中运行以下命令:
gladius node start

下一个截图显示了运行上述命令的输出:

  1. 我们可以将数据提交给特定的池,使其接受或拒绝您成为池的一部分:

  1. 创建节点完成后,我们可以使用我们的管理器应用程序检查其状态。这将从区块链中显示您的节点信息:

您只需将 Gladius 客户端下载到您的计算机并访问系统即可。

一旦 Gladius 被激活,所有节点都会处理连续的请求流以验证网站连接并阻止恶意活动。Gladius 正在积极努力解决系统中的若干挑战,并实现系统的稳定。

摘要

在本章中,您了解了 DDoS 攻击及其运作方式。我们了解了当前 DDoS 解决方案所面临的挑战,也了解了如何利用区块链来帮助我们更有效地保护网络免受恶意流量的侵害。

问题

读者应该理解这只是防御 DDoS 攻击的多种方式之一。读者应该查阅以下一些问题:

  1. 为什么 DDoS 攻击变得越来越频繁?

  2. 我们可以使用区块链准备关于即将发生的 DDoS 攻击的威胁情报吗?

进一步阅读

为了进一步探索区块链技术用于 DDoS 保护,以下链接可能会有帮助:

第十章:区块链与网络安全的事实

区块链技术具有创新性,并使用一种独特的方法,结合了计算算法和数据结构来解决各个领域长期存在的问题。区块链技术仍在不断发展,并且对各个组织来说都是新的。然而,真正的问题不仅仅是了解这项技术;更重要的是知道是否值得用区块链技术解决现有问题。

让我们看看区块链有意义的不同情况。

在本章中,我们将涵盖以下主题:

  • 区块链的决策路径

  • 领导者的清单

  • 区块链的挑战

  • 利用区块链的网络安全未来

区块链的决策路径

就像每一次新技术更新一样,领导者和管理机构在批准技术升级提案之前必须遵循特定的预定义程序。决策路径是一组必须在得出结论之前遵循的行动流程。让我们了解一些区块链技术的热门决策路径:

  • IBM 模型:这是帮助决策者知道何时使用区块链的内容。它还将带领您通过区块链的市场推广。这是一个简化的布局,说明了在什么条件下区块链集成可以成为您组织的良好选择。IBM Hyperledger Fabric 旨在为行业提供私有区块链解决方案,如下图所示:

  • Karl Wust 和 Arthur Gervais 模型:此模型更多地是关于决定哪种区块链类型最适合您的业务需求。这是于 2017 年 5 月开发的,并旨在构建一种方法论,以确定解决业务问题的解决方案,如供应链管理、银行间和国际支付网关,以及去中心化自治组织。请见下图:

作家基本上指的是对区块链分类账有写入权限的各方,并且他们也参与共识机制来创建一个区块并将其添加到分类账中。

  • Birch-Brown-Parulava 模型:再次,这是一个很棒的模型,专门开发出来以制定适当的区块链选择方法。流程的上下文更多的是关于识别各方完整性的需求。如果需要由选定的一组维护完整性,那么私有区块链是更好的选择。然而,如果涉及激励或奖励,那么公共区块链是更好的选择。见下图:

何时使用区块链?

区块链可以应用于以下情景:

  • 冲突情况:区块链网络不仅连接了可信任的各方,还连接了不可信任的各方。因此,需要特别注意冲突情况并无缝解决。区块链利用共识算法来确认交易并准备区块。不同的区块链使用不同的共识模型,例如工作证明PoW)、股权证明PoS)等,但目的是相同的,即避免冲突并执行成功的交易。

  • 共享通用数据库:如果组织在员工(管理员或非 IT 人员)、承包商或第三方之间共享一个通用数据库,那么权限区块链确实可以满足要求。当一个集中式数据库在不同方之间共享时,会增加访问控制利用的风险,这可能导致特权升级。当使用权限区块链时,可以确保只有提交对等方有权对数据库进行更改,而事务认可可以由预选参与者中的任何一个完成。

  • 需要业务交易规则:如果业务模型要求您有一个简单或复杂的逻辑策略来执行任何交易,区块链可以通过其智能合约(如以太坊的智能合约)或超级账本的链代码等逻辑策略来提供极大的保证。业务策略总是被定义在节点软件中,强制节点根据定义的规则工作。

  • 需要系统透明性:如果一个组织的商业模式要求其必须对其客户或供应商在整个供应链中有透明度,分布式账本技术可以更好地提供对供应链运营和管理系统的端到端可见性。在无权限区块链网络中,每个节点都被允许读取和写入区块链账本,因此也变得透明。然而,企业对在只有预选节点参与区块链计算过程和账本管理的有权限环境中总是更倾向。

  • 需要数据不可变性:如果一个组织需要开发一个高度安全的仅追加数据库,加密哈希和数字签名都可以帮助我们构建一个高度安全的账本。在准备每个区块时,它会取前一个区块的哈希值,因此在创建后就无法修改或重新排列数据库。

何时不应该使用区块链?

尽管区块链是业界见过的最强大技术,但它并不总是适合所有工作的正确工具。这使得评估阶段在各个方面都非常关键。在了解它最适用的地方后,让我们来看看一些区块链不适合的情况:

  • 存储相当大的数据:由于其分布式和去中心化的特性,在区块链网络中的每个节点都存储了整个数据库(在许可分类账的情况下,只有预先选择的参与者可以被允许读取和存储数据,结果,复制数据库需要很长时间并可能导致速度变慢)。已经有一些解决方案可以完成这一目的;让我们快速浏览一下每个解决方案。

  • 如果交易规则经常变更:一旦设置和启动了智能合约政策,它将不会改变执行路径。频繁更改业务流程和操作的组织不推荐使用基于区块链的应用。区块链网络内的每个子系统和子流程都必须是确定性的。

  • 如果区块链需要从外部来源获取数据:区块链智能合约并不是用来从外部来源获取信息的。即使配置了区块链与可信数据库之间的通信,它也将被操作为常规数据库操作。此外,在这种情况下,区块链智能合约不会从外部数据库中取出条目;相反,可信数据库必须将数据推送到区块链上。

领导者的清单

区块链正在创造一些很棒的技术和商业机会,它正在促进组织之间的合作。组织领导者目前正处于感知和识别区块链技术对其业务运营的用例的情况,以便跟上不断变化的市场需求。让我们关注您的区块链计划中的重要问题:

  • 谁是我行业中在区块链技术方面最值得信赖的领导者?

  • 我的竞争对手对区块链有什么看法?

  • 哪些业务部门可能会受到最大的干扰?

  • 谁将受到我们的区块链部署影响最大,他们可能的反应是什么?

  • 区块链的可能业务案例是什么,我们如何实现更好和可持续的商业模式?

  • 部署涉及的整体成本因素是什么?

  • 当前的规则和法规对区块链应用的影响会是什么?

  • 我们如何与监管机构实现双赢的局面,将区块链应用推向市场?

  • 我们如何将安全控制应用到我们的区块链应用中?

在将区块链应用推向市场之前,预计要进行一系列的头脑风暴,但建议准备项目范围并对齐适当的利益相关者。

区块链的挑战

尽管区块链对资产交换产生了巨大影响,并为金融机构降低了运营成本,但通常情况下,炒作会产生模糊的结构,从而分散对潜在业务解决方案和用例的关注。现在重要的是了解一些需要特别关注的挑战,以便我们能够实现基于区块链的应用的可持续商业模式。这些挑战包括:

  • 技术专长:根据 2017 年全球数字智商调查,大约 86%的金融高管表示他们的组织尚未开发所需的区块链技能。全球市场上对区块链专业知识的缺乏导致了对其潜在商业用例和多种实施方法的关注较少。尽管区块链从根本上是一种变革性技术,但完善区块链后端系统的途径仍然是通过编程语言,比如 Node.js、JavaScript,以及一些新开发的语言,比如 Go 和 Solidity。然而,仅有程序员是不够的。拥有了解业务流程和核心要素的区块链顾问是至关重要的。

  • 合规性:自 2018 年 5 月 25 日起生效的欧盟通用数据保护条例GDPR)正在改变不仅在欧洲运营的企业的战略,也改变了全球企业(那些在欧洲地区有客户基础的企业)的战略。 GDPR 已推出这个概念,与区块链的基本原则恰恰相反。根据 GDPR,组织必须对其所有数据库进行创建、读取、更新、删除CRUD)操作;然而,区块链数据库不允许用户或管理员对数据库中的任何条目进行更新或删除。其次,GDPR 规定个人信息不应离开欧盟,而公共区块链的一个主要问题是分布式模型不允许限制数据存储到特定节点或一组节点。

  • 互操作性:技术适应的转变应该是渐进且无缝的,为了达到这一点,区块链应该能够与传统平台进行交互。最初,区块链可能无法处理现有系统的所有功能;因此,必须对现有系统进行相当大的修改,以便实现渐进式过渡。

  • 存储:根据属性,区块链是一个仅追加的数据库,不断增长。区块链通常存储文件或媒体的文本或元数据,即使我们尝试存储所有实际数据,区块链的一个属性也将成为障碍,那就是分布式网络。确保所有节点具有相同数据库的可用性的默认性质可能成为处理大型数据的障碍。有几家初创公司正在解决这个问题,以克服区块链的基本挑战。

  • 能源消耗:根据 Digiconomist 的数据,比特币目前的能源消耗约为 61.4 TWh,相当于美国电力消耗的 1.5%。以 PoS 共识模型的以太坊正在克服能源消耗问题并实现绿色经济。

区块链与网络安全的未来

网络安全是一种最多才多艺的行业,在这个行业中,企业几乎每隔一天就会遇到新的威胁。尽管网络安全的未来对全球领导者来说始终是一个不可预测的任务,但对可能的威胁和潜在的安全创新进行评估以保持一致的客户和利益相关者信任至关重要。

区块构建算法和哈希的结合使得区块链在处理任何价值类型的交易时都成为网络安全组合中的一个重要解决方案,提高了数据安全性。区块链以多种方式改变了网络安全解决方案。在云计算和其他数字化进步之后,组织应该使用数百个应用程序(内部和基于云的)来满足多种业务需求已成为显而易见的事实。这也导致了终端用户和组织数据泄露的水平上升。

根据 2017 年的数据泄露指数BLI),超过 25 亿条数据记录已经遭到泄露。因此,在即将到来的数字时代,舒适性和灵活性将被隐私和安全所取代是可以预见的。正如已经清楚地展示的,区块链致力于为机密信息提供数据安全和隐私保护,因此,区块链很可能成为几个商业应用的重要吸引力,以提供更好的安全性和隐私保护。

摘要

在本章中,我们介绍了一些关于区块链和网络安全的关键事实。我们了解到在选择区块链技术之前,充分关注决策过程的重要性。网络安全将始终是攻击者和防御者之间永无止境的竞赛。对于防御者来说,不断测试和部署创新武器至关重要,因为攻击者永远不会停止。

问题

在成功介绍了一些关于区块链和网络安全的关键事实后,读者可能会有以下问题:

  1. 有哪些流行的区块链决策路径?

  2. 如何克服所提及的区块链挑战以及它们可以多快解决的困难是什么?

进一步阅读

要了解更多关于卡尔·沃斯特(Karl Wust)和亚瑟·杰尔维斯(Arthur Gervais)决策路径模型的信息,请访问链接:eprint.iacr.org/2017/375.pdf

第十一章:评估

第一章

  1. 有几种开放标准和专有方式可以实现对对手能力的更新状态。MITRE 的对抗战术、技术和通用知识ATT&CK™)是一种广泛使用的网络对手模式框架,反映了对手生命周期的各个阶段和已知攻击目标的平台。 MITRE 开发了三类主要用于确定对手能力的类别——预攻击,面向企业的攻击和攻击移动配置文件。

  2. 网络威胁情报始于收集大量数据和信息。它包括一系列步骤——建立情报优先框架,协作情报来源,咨询威胁情报专家,然后就解决方案达成结论。

  3. 几乎每个季度都有几种技术在门口敲响,然而,了解特定技术的有效性和目的非常重要,然后才能给予机会。 安全利益相关者应参加一些私人安全会议和知名公共论坛,包括 RSA 会议,黑帽子会议,DEFCON 黑客大会,云安全博览会,SANS 峰会,Infosecurity 欧洲,世界网络安全大会,Infosec 世界,国际网络安全会议等等。 首席信息安全官和首席安全官也应考虑加入一些独立的安全研究公司,如 Gartner 和 Forrester。

第二章

  1. 零信任方法要求完全了解网络的可见性和控制。 进行评估和内部网络审计需要花费大量人力资源。 在考虑零信任方法之前,必须充分了解网络渠道,漏洞,第三方渠道,业务合作伙伴网络,DMZ 等概念。 大多数组织倾向于使用大多数应用程序和网络设备的默认设置,这也可能成为部署高效零信任方法的问题。

  2. 采取违反假设的方法有助于组织为数据泄漏条件做好准备,以便可以规划更好的网络防御计划。 违反假设的思维模式要求持续进行网络和应用程序监视,并增加一层事件响应计划。 重要的是要区分正常流量和异常流量,并对每个数据集应用适当的策略和响应。 必须小心和准确地执行整个过程,因为一个小错误可能会扰乱整个方法。

  3. 互联网从未被建立用于金融系统和关键资产转移。然而,由于高度依赖互联网,组织现在不断增加新的安全层来保护关键基础设施。几乎所有的商业应用程序都在客户端-服务器框架上运行,以支持现有的 TCP/IP 互联网堆栈;从集中式数据库迁移需要高度的互操作性支持和行业接受度。

第三章

  1. 不,它不能用于商业应用,因为应用程序需要根据多个要求进行编程。比特币区块链构建为具有严格的性质,这使得它不适用于商业应用。

  2. 以太坊的未来取决于其行业适应性,然后是以太币。虽然在当前情况下,以太坊市场看起来并不那么稳定,但它有潜力在市场上蓬勃发展,成为长期的商业机会。以太坊的创始人正在多种方式上改进现有的共识,并使其成为更节能的挖掘以太币的解决方案。

第四章

  1. 不,IBM 和 Linux 基金会专注于为企业构建私有区块链环境。 Hyperledger Fabric 旨在为具有已知身份的许可网络提供更好的框架。

  2. 虽然已经发布了几个用例来连接区块链与传统数据库,但都没有一个经过验证的框架。

第五章

  1. 由于 Hyperledger Fabric 建立在相同的分布式分类帐系统上,它具有与区块链类似的特性和属性。 Hyperledger Fabric 甚至更加安全可靠,适用于商业应用。它通过其许可数据库结构满足了所有 CIA 安全三元条件。

  2. 为了实现 dApp 的高可用性,重要的是在仍然使用传统的 JavaScript、HTML 编程语言的前端开发上进行工作。

第六章

  1. 密码学密钥管理是任何组织的最关键目标。员工使用硬件安全模块HSMs)来签署较低数量的文档或代码,认证到 VPN 或任何其他网络。 HSM 也可以 API 并支持自动化工作流程。其次,物理不可克隆函数PUF)技术是密钥保护的一次范式转变。借助这项技术,密钥可以直接从芯片的 SRAM 存储器的独特物理属性中派生出来。

  2. 总部位于阿姆斯特丹的软件安全公司 Guardtime 推出了无密钥签名基础设施KSI)技术来改变 PKI。 KSI 技术使用哈希函数加密,允许仅依赖区块链使用哈希函数的安全性。

第七章

  1. 是的,以太坊甚至可以用于开发一个多因素身份验证平台,通过编写智能合约来实现。这个智能合约必须被编程连接到几个集成,如生物识别和移动应用程序。

  2. 为了实现基于短信的两步验证平台,以太坊的智能合约必须编程与短信网关集成以发送一个一次性密码 (OTP) 来进行第二级别的认证。这个 OTP 可以防范中间人攻击 (MITM)。

第八章

  1. DNS 隧道是对 DNS 的滥用。域名服务器 (DNS) 被称为互联网上的电话簿等同。与记住长达十二位数的 IP 地址不同,您只需要知道与 IP 地址相关联的域名。DNS 隧道试图劫持该协议,将其用作隐秘通信协议或数据外泄手段。这是一个被广泛忽视的安全威胁。

  2. 是的,可以实现。Emercoin 在区块链上构建了完整的 DNS 解决方案,其中 EmеrСоіn 是基于流行虚拟货币 Peercoin 的平台。有些 DNS 功能也是从 Namecoin 分叉出来的。该系统使用第二代股权证明 (PoS) 算法。这就可以在没有挖矿的情况下运行。这使得 EmerCoin 对 51%攻击更加环保和更加抵抗。将发行总计十亿 EMCs。

第九章

  1. 最近的研究发现,与上一季度相比,2017 年第一季度大于 10 Gbps 的大规模 DDoS 攻击增加了 55%。DDoS 专家预测,先进的容量攻击在不久的将来将变得更加普遍。越来越多地使用暗网市场和开源软件平台使得 DDoS 成为频繁发生的事件,大量物联网设备,如连接的冰箱或其他智能设备,安全性很低且很容易被卷入这样的攻击。攻击者利用 DDoS 作为一种工具来使他们不喜欢的事物下线,而这些工具在互联网上是免费提供的。

  2. 尽管没有完美的答案,但有几项措施可以阻止 DDoS 攻击。一个去中心化的平台允许用户出租他们的带宽,然后可以汇集起来以实现大规模数据处理,极大降低 DDoS 成功的风险。

第十章

  1. 最有效和流行的决策路径是由 IBM 开发的。这有助于组织决定适当的区块链模型。这包括减少成本方法、提高可发现性等多个因素。

  2. 区块链面临的最大挑战是行业意识。尽管有几家初创公司正在开发具有区块链的创新产品,但仍然很难确定其有效性。Linux 基金会提出了与行业领袖合作开发面向企业的开源区块链平台的重大举措,并将该项目命名为 Hyperledger。Hyperledger 项目可以成为建立区块链技术快速增长的推动因素。

posted @ 2024-05-01 15:27  绝不原创的飞龙  阅读(9)  评论(0编辑  收藏  举报