写在前面:本文作者为EOS创始人DanielLarimer。他在文章中分析了传统互联网中的数据库等基础架构和设计的缺陷并指出区块链是最好的解决方案:诸如EOSIO之类的区块链开放式框架使得开发者无需为了构建安全的应用程序而重新创建“数据库”,因为所有用户使用私钥对自己的行为签名,可追溯和查证。未来B1的一个目标是添加工具和接口,促使在区块链上部署业务的过程和传统互联网上部署业务相似。
传统的网页应用程序基础结构在设计时将安全性作为事后考虑事项,在过去的25年中,许多公司一直在试图修补一个根本不安全的架构。这种架构在设计时就预设服务器是可以被信任和保护的,但是多年的经验告诉我们,没有服务器是安全的,更不用说内部的攻击了。换句话说,服务器基本上是中心化的。
我们过去认为“问题”在于用户和服务器之间的连接,因此我们引入了SSL和HTTPS。但后来我们发现,黑客会破坏数据库并窃取密码。所以我们开始存储密码的哈希值,但后来我们发现黑客会在盗取哈希值后强行破解密码。然后,我们引入了密码切换机制,以便在暴力破解时更改密码,诸如此类的措施还有很多。
BM:在过去10年通过steem让许多人进入加密领域:EOS创始人BM(Daniel Larimer)在回复推特网友“在过去的10年里你做了什么?”时表示,我发明了DPO、TAPOS、DAO(DAC)、第一个去中心化交易所、第一个稳定币、最高性能链,我通过steem让更多的人进入了加密领域,这比大多数项目都多,我还使非洲许多人摆脱了贫困。[2021/1/4 16:21:06]
为了保护服务器和数据库,企业需要花费数十亿美元,尽管付出了所有努力,但仍然没有简单的方法来审查系统并确保企业按预期运行。
Block.one正在构建区块链软件,以保持数据库和用户账户的安全,防止未经授权的访问和未予解释的修改。有了区块链,用户可以使用高度安全的私钥,这些密钥存储在安全的硬件中,用于对每个用户交互进行签名,而不是简单地进行服务器连接的身份验证。区块链创建了一个不可更改的记录,建立了接收用户输入的绝对和确定性的顺序,而智能合约提供了确定性的业务逻辑,确保了所有系统之间的一致性。
未来的Block.one正在消除密码和昂贵的审计,为企业节省数十亿美元,防止身份盗窃,并提供更高的可靠性和可审计能力。
BM:类似于IPFS的技术有助于实现去中心化:EOS创始人BM(Daniel Larimer)今日发推称,要真正实现去中心化,我们必须超越web浏览器和DNS,将需要类似于IPFS的技术。[2020/10/27]
多年来,我一直认为每个多用户网站都可以从区块链后端中获益。和很多人的认知不同,区块链不必是缓慢、低效的数据库,也不必在抗审查、开放的基础上运行。区块链可以在安全性、审计能力、透明度和业务流程的完整性方面提供重要的改进,即使区块链完全由公司自己操作,其中的所有内容都不会公开。本文旨在揭示区块链在企业环境中的真正价值,并为区块链行业的发展指明方向。
常见的误解
在区块链行业中,许多人认为区块链只有在将互不信任的参与方连接起来时才会创造优势。他们认为,传统的数据库技术已经可以完成确保业务所需的所有工作。换句话说,他们认为传统的数据库复制和“数据完整性”保证就足够了。在这个过程中,他们要么忽视要么无视区块链所提供的完全不同的安全性和完整性保证:
1.对全局事件序列的承诺
2.业务逻辑的确定性执行
3.业务逻辑和数据完整性的紧密耦合
4.消除密码
在传统的业务应用程序架构中,业务逻辑与数据库是分离的。通常有一个应用服务器,如Node.js或J2EE,提供了修改数据库的密码。Node.js服务器的作用是通过密码或多因素认证机制对用户进行身份验证。一旦应用服务器对用户进行了身份验证,它就会发出一个会话令牌,用于对未来的用户交互进行身份验证,直到超时或会话的某些元素发生更改。
BM:EOSIO是为了让开发者构建在其他平台无法实现的DeFi:EOS创始人Daniel Larimer(BM)刚刚再次发推表示,去中心化生态系统和DeFi需要许多企业家建立独立的业务。我们创建EOSIO是为了让开发者能够构建在其他平台上无法实现的DeFi。在ETH的发展蓝图中,没有什么能与EOS现在能够支持的应用程序相提并论。[2020/8/16]
显然,这种传统设计通过应用服务器管理的单次登录/密码执行所有数据库操作。通过最终用途,应用服务器负责部署身份认证机制。显然,通常有多个用户可以访问用户名和密码。数据库管理员可以向许多不同的应用服务器或个人分配和撤销凭据。
高级系统确保在横向扩展的系统中,每个应用服务器都有自己的用户名和密码,在某些情况下甚至可以使用公钥基础设施和硬件安全模块。但是,即使在这里,数据库也只认证应用服务器的连接。为了提供审计日志,它必须记录安全连接的整个数据流。但是,即使这个日志也只能记录应用程序服务器请求的“读写操作”,而应用程序服务器已经丢失了最初用户意图的所有信息。
审查这样一个系统的审计师无法知道应用服务器是否遵循正确的业务逻辑,是否正确地验证了最终用户的身份。Node.js进程可以将用户操作记录到数据库中,方便审计师复制同样的计算,但这样的记录并非不可篡改,而且没有独立认证验证,无法了解终端用户真的授权了某一行为。
可以尝试记录每个用户的连接,但是由于用户经常通过连接传输他们的密码,这些记录最终会成为一个泄露用户信息的蜜罐。更复杂的系统可以对这些记录进行加密,这样只有审计人员才能读取它们。
BM:将引入RocksDB扩展EOSIO数据库容量:针对“在不久的将来你对EOSIO有什么大的更新吗?2020年的大计划是什么?”的提问,BM(DanLarimer)回复称,针对EOSIO,未来我们有很多事情要做。现在,实际上,如果你关注我们的Github,你会发现我们有很多令人兴奋的新更新。我们将通过引入RocksDB来扩展数据库容量,这将使更多的用户可以使用它,并且我们将通过带有返回值的操作和关于WASM-QL的一些其他创新使区块链数据更易于查询。所以我们真的在努力让区块链更容易访问,数据更容易访问,开发人员更容易使用工具,因为我们已经解决流程和事务处理的扩展问题,每秒处理5000到10000个事务。展望未来,我们的目标是解决数据大小方面的问题,同时让开发人员更容易使用API,这样他们就可以更有表现力,更快地构建其应用程序。(U.Today)[2020/3/27]
假设审计日志没有被篡改,审计人员将不得不通过应用程序逻辑运行相同的操作序列,以验证最终数据库状态是否匹配。这意味着应用服务器必须以确定性的方式实现。
确定性计算很难
虽然编写确定性代码似乎很简单,但实际上所有常见的计算机语言都是非确定性的,因为它们允许开发人员获取存储在数据库以外的数据。可以是一些简单的东西,如时间戳、内存地址、环境变量、IP地址,也可以是一些更微妙的东西,如硬件上的浮点行为或哈希表的插入顺序。在许多情况下,访问长时间运行的应用程序服务器的内存变量就足以引入不确定性。启动/停止应用程序服务器的动作必须被记录和复制,否则在重放期间每个本地内存访问可能是不确定的。
声音 | BM:侧链核心数量是未来竞争激烈的地方:据IMEOS消息,BM在电报群中表示,TPS是近期一场与传输速度有关的战争,在未来侧链核心数量是竞争激烈的地方。[2018/7/19]
事实是,编写确定性代码对于受过常见误区培训、积极寻找非确定性的最佳开发人员来说是一个挑战。典型的企业应用程序开发人员会发现以确定性的方式编写代码是困难的或不切实际的。
如果我们进一步假设应用程序代码是确定性的,应用程序如实记录用户事件,那么我们仍然面临跟踪部署的代码版本的挑战。应用程序是动态的,并且经常更新,因此应用程序代码本身也必须是数据库状态的一部分,并且其更新的管理和记录与用户操作的安全性和可审计性相同。然后,审计人员需要拥有应用服务器代码的所有版本的副本,并根据需要通过每次版本升级来重放用户输入。
即使单个应用程序服务器在安装和部署方面都能够以确定的方式进行操作,它仍然会遇到一个主要的可扩展性问题。只有一个应用服务器实例可以在数据库进行操作。并行访问可以通过复杂的锁实现,但是即使锁上的竞争条件也必须被记录和复制,或者两个具有不同本地变量的应用程序逻辑实例也可能产生不确定的输出。
此时人们可能会完全放弃确定性,但是确定性在缺席之后,会逐步在最终数据集累积大量的偏差。审计人员将被迫使用模糊逻辑和近似匹配,每个人都必须相信“模糊逻辑”已经够好了。
当然,要否定编写和部署确定性代码所付出的所有努力,唯一要做的就是让数据库管理员直接修改数据库而不进行跟踪。在某些情况下,对用户输入日志和状态的仔细更新可能会创建两个不同的数据库状态,每个状态都通过了确定性测试,但仍然具有不同的和不可调和的输出。例如,假设一个教授向系统提交了一个学生的成绩为F,然后这个学生可以通过黑客或贿赂的方式进入数据库来更改他的成绩和教授提交的记录。
消除密码
任何重视完整性的多用户系统的最终目标都是确保不能伪造用户输入。用户名/密码或其他主观的多因素认证的使用依赖于服务器来判断密码是否匹配,或者是否输入了正确的SMS代码/电子邮件链接/验证码。很明显,这对系统的完整性来说是一个巨大的问题,我将提供一个真实的例子来说明这些系统有多糟糕。
2016年,我在一家加密货币交易所开设了一个账户,后来这家遭到黑客攻击,黑客窃取了价值数万美元的比特币。我当时一共收到了4封邮件,第一封是“密码重置”邮件,然后是另一封表明我的密码已成功重置的邮件。然后我收到一封要求确认我的比特币提取的邮件。然后我收到了一个通知,说我的提币手续已经办完了。
乍一看,我的邮箱似乎被黑了,但这是不可能的,因为我采用了多因素认证。我的邮箱安全页面显示,没有未经授权的访问。我也能看出来,因为谷歌会记录并显示所有访问我邮箱的IP和设备。
事实上,攻击者在邮件到达我的邮箱之前就截获了邮件。应用服务器无法知道邮件被截获,因此就算攻击者只有应用服务器生成的一次性代码,其还是能获得密码重置和提币的授权。
同样的漏洞也可用于SMS或依赖于用户控制的私钥以外的其他技术。真正安全的用户账户是为所有用户采用基于硬件的私钥作为他们的登录凭证,在硬件密钥丢失的情况下,采用一个稳健的和费时的过程来促进安全复位。
此时,多用户业务应用程序可以使用用户的私钥对每个用户请求签名,将这个签名的请求记录到数据库中,并使用确定性代码处理它。即使这样也不能提供人们所期望的完整性,因为用户请求仍然可能被删除,同时还会产生副作用。想象一下,当一名警官提交了你的罚单,然后所有的州都产出了这个请求,你就可以入侵警察数据库并删除他签署的请求。
此时,精明的工程师会宣称,我提出的每个问题都可以通过更改应用程序逻辑来解决。他是对的,一个成熟的应用程序开发人员可以使用传统的数据库、传统的应用程序服务器和常见的密码原语来构建一个相对安全且可审计的系统。根据同样的逻辑,一个精明的工程师可以声称数据库是完全不必要的,所有的东西都应该直接构建在文件系统上。也有工程师可能会指出,我们可以从头开始编写代码,不再依赖于Node.js和J2EE等应用服务器框架,这样就能提高性能。这就好像所有的东西都是由低水平的技术制造出来的,我们也可以设计出性能最佳的晶体管。
我之所以指出这个极端,是因为它强调了了高级框架在加速和保护新应用程序开发方面的真正效用。很少有人编写自己的密码库或算法,而编写这些库或算法的人要么是专家,要么在自己的系统遭到黑客攻击时成为了反面教材。从头开始开发/重新开发所有东西的成本可能会使每个应用程序都比在经过验证的框架上构建更昂贵。
区块链应用和数据服务器的优势
区块链和EOSIO这样的开发框架之所以存在,是为了让应用程序开发人员不必为了构建安全的应用程序而重新创建“数据库”。安全性和确定性很难实现,这就是为什么技术构建在抽象细节的层中。EOSIO在同一过程中将确定性执行环境与快速数据库相结合。所有的用户操作都由他们自己的私钥签名,并记录在一个复制和分布式的数据库中,该数据库具有对区块头进行公开承诺的能力。
EOSIO这样的框架变得与传统的不安全系统一样强大且易于开发,只是时间问题。在许多方面,EOSIO的架构已经比传统系统具有更高的性能,这是因为它将应用程序逻辑放在与内存数据库相同的进程空间中。这就创建了确定性存储过程。
在未来的几年里,Block.one的目标是添加工具和接口,使在区块链上部署企业应用程序就像在传统企业应用架构上部署同类应用一样容易。
很明显,采用区块链技术应该成为政府机构、上市公司和有责任防止欺诈或进行财务报告的企业的优先事项。在我看来,未来几年不采用区块链技术就像银行不采用SSL,一旦该技术得到广泛使用,不使用区块链技术就会被认为是疏忽。
是时候开始行动了。如果应用程序的构建方式没有根本性的改变,你的企业和用户就不会安全。每耽搁一天,你的生意就会面临欺诈或黑客攻击的风险。
这个春节的链界币圈,探讨行情的声音少了,多了一批关注疫情的行动者。截至1月30日16时,腾讯数据显示,全国新型冠状病肺炎感染的确诊病例为7766例,疑似病例12167例,死亡人数为170人,治.
1900/1/1 0:00:00互链脉搏在2020年春节期间,特推出了“回归常识读懂区块链”栏目。获密码学博士、中国计算机学会区块链专委会委员高承实博士的授权,摘选其著作《回归常识:高博士的区块链观察》一书的精彩章节,于互链脉.
1900/1/1 0:00:00据Cointelegraph2月1日报道,Kraken安全实验室于近日对外公布,Trezor硬件钱包及其衍生产品可以被黑客窃取私钥.
1900/1/1 0:00:00目前,两家矿池控制了门罗币网络60%的算力,但这个问题到底有多严重? 图片来源:visualhunt韩国检方查获并搜查涉嫌参与WEMIX大规模清算的两家公司:8月4日消息.
1900/1/1 0:00:00撰文:小毛哥@链闻、咖啡@头等仓来源:链闻2020年是去中心化存储领域关键的一年,就在未来两个月内,会有包括Filecoin、Storj在内的重量级去中心化存储项目发布产品进展.
1900/1/1 0:00:00作者:梁山花荣?来源:互链脉搏2月5日,2020年中央一号文件正式发布。文件指出,加强现代农业设施建设.
1900/1/1 0:00:00