黑暗中的利刃, 解析区块链+DevOps实践 | 案例
我至今仍记得 2018 年 2 月。那时加密货币的泡沫被戳破,大多数加密货币的价格暴跌,几近腰斩,凉透了所有加密货币爱好者和投资者的心。
在那个时候,我和我的联合创始人 Moshe Bar (他主要的头衔是虚拟化软件初创公司 XenSource 和 Qumranet 的联合创始人,2008 年 9 月,红帽以 1.07 亿美元的价格收购了 Qumranet )进行了一些非常深刻的讨论,讨论如何解决 DevOps (DevOps 是 Development 和 Operations 的组合词,是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合)相关的问题。
我们希望在无需修改或增添任何事物的前提下为每个数字资产赋予一个全球唯一且有意义的标识,从而实现对任何数字资产的完整性保证和信任。
https://github.com/vchain-us/vcn
https://github.com/vchain-us/kube-notary
https://www.codenotary.io/
故事发生的背景
在当下,人们为了保证重要文件不被篡改,要么是提前计算文件、源代码或 docker 容器映像的校验和,要么就是使用数字证书对需要保护的文件进行签名,数字证书是目前最推荐的一种方式,但是签名时要保证数字证书支持该类型的文件。
虽然安全哈希算法 SHA-256 和 SHA-512 非常适用于计算数字指纹,但实际上并没有哪些数字证书真正适用于你可以找到的任何数字资产。最后但非常重要的一点是,数字证书绝对不是为这个快速发展的世界制作的。
你可能已经被我绕晕了,这里让我们先补充一下基础知识,如果数字证书被撤销将会发生什么:
使用这个数字证书签名的所有数字对象都会被撤销。 你的设备上会不断显示该数字对象签名已被撤销的警告,具体警告的形式取决于你使用的操作系统、应用程序以及对应的执行引擎。 在某些时候,签名被撤销的二进制文件无法再被打开。
你可能会问了,那为什么要撤销数字证书呢?在以下几个场景中,你不得不这样做:
当你丢失了自己的私钥时。 当有人偷了你的私钥时。 当你不再信任已签署的数字资产时。
那么问题就来了,设想一下,如果你需要签署数百甚至数千个数字资产,如此大的工作量你绝对不会仅仅因为不再信任一个或两个数字资产就撤销数字证书。这也就意味着,大多数的数字证书永远都不会被撤销,即使是在这些证书丢失、被盗、不再被信任的前提下。
如果想要使用一个新的数字证书,对一个数字证书已被撤销的数字对象进行签名,你需要有访问它并重新构建它的权限。这不仅是一个巨大的工程,而有时这种操作完全是不可能的。这也是为什么数字证书可以保证信任的原因。
但这使得数字证书并不适用于我们所要构建的解决方案。
区块链来了
在 2018 年,加密货币价格的暴跌让大多数人开始意识到,区块链应该注重技术而不是疯狂炒作。区块链技术也确实给我们的项目带来了巨大的转机,我们认为,区块链技术正是我们想要实现全球化数字资产身份认证和信任目标所必须的技术,这种技术可以让我们的项目免于与中心化的数字证书认证机构打交道。
在确定了方向之后,我们不断向前推进,成立了 vChain.Inc 这家公司,并组建了一支团队开始编程实现。
1、去中心化帐本技术
在深入研究去中心化帐本技术时,你很快会意识到当前去中心化账本的许多组件仍处于试验阶段,而现有的开发工具也都尚处于初期阶段。因而直接使用公有区块链对我们来说并不现实,公有区块链有一些非常致命的痛点,其中最令人诟病的莫过于高延迟以及加密货币币价的不稳定。
区块链中没有加密货币或通证:由于我们需要将大量的数字资产写入到区块链中,因而区块链无需交易费用是至关重要的一环。 区块链不能是私有区块链:区块链中不支持加密货币,但我们也不想将它转换成一条私有区块链,因为我们想要通过将数据连接到区块链上来实现数据的公开访问。 可用的开发人员和开发工具:如果使用的区块链过于小众,那么我们就很难找到可用的开发人员,大多数基础的开发工具也得我们重新开发。 始终可用:区块链要保证可以一直稳定运行。 区块链不能是托管的区块链:我们想到的最后一条要求从项目建立的第一天就悬而不决,伴随而来的还有区块链上数据迁移的问题,哎,一言难尽。
2、零信任联盟
了解DevOps
接下来,让我们通过一些基础知识来了解 DevOps。
由于零信任联盟平台可以涵盖我们解决方案的基础,因而我们可以完全专注于开发我们自己的解决方案,也就是 CodeNotary 。
在谈论 DevOps 时,我们往往谈论的都是一系列的组件,包括进程、工具、自动化、构建管道、源代码的处理与存储、微服务、docker 容器,当然 DevOps 远远不止这些,这个名单还可以一直列下去。
但是从数字资产的角度来看,DevOps 最重要的组件是:
源代码(代码存储库)。 软件制品(CI (Continuous Integration,持续集成)/ CD(Continuous Deployment,持续部署),自动化)。 文件(配置文件,定义文件,描述文件,文档)。 docker 容器(镜像,只读层)。
从一开始,我们的目标就是支持所有地这些组件,但不做深入的更改,也不以任何方式破坏自动化。当然,这种集成应该易于使用,易于集成从而满足软件开发的需求。
我们将通过用户身份创建数字资产身份的过程命名为公证( notarization ),将验证完整性和信任级别的过程命名为身份验证( authentication )。
当然了,这两个过程是有先后顺序的,在 CodeNotary 平台中,一个数字资产只有先被用户公证之后才能进行身份验证。
CodeNotary 的公证过程
CodeNotary 的公证过程如下:
计算安全哈希算法 SHA-256 校验和。
获取文件或对象的属性。
使用用户身份(私钥)将对象校验和以及信任级别写入基于以太坊技术的区块链中。
在受区块链保护的关系数据库( CodeNotary 后端)中添加对象属性。 只有当所有的数据都被成功写入到区块链时,才会返回成功。
文件的公证过程,注意最下方的信任级别为 3-已验证身份,状态为可信(TRUSTED)。
如果你不再想要支持这个数字资产(可能是因为已经发布了较新的版本,并且你不再想要支持较旧的版本),或者是不再信任这个数字资产(可能是因为你在其中发现了漏洞,问题或者只是不再喜欢它)。这时,区块链上的状态也会发生变化,并且世界各地的各个节点都会收到这次状态的更新,在代码中你所需要的操作如下所示,具体的原理我们后面会讲。
vcn unsupport prometheus.yml
vcn untrust prometheus.yml
接下来我们来公开公证一个非常常见的 docker 容器镜像:
docker pull ubuntu
vcn n -p docker://ubuntu:latest
重要的一点是,与使用数字签名不同,这个数字资产永远不会被更改。
CodeNotary 的身份验证过程
计算安全哈希算法 SHA-256 校验和。 在基于以太坊技术的区块链上查询对象校验和,当然了,这个操作只对特定用户或特定组织的成员开放。 如果身份验证成功:区块链会返回数字资产的信任级别和元数据。 如果该数字资产尚未进行公证:区块链会返回该数字资产未知。
vcn a prometheus.yam
文件的身份验证过程,注意最下方的状态为不再支持(UNSUPPORTED)。
在上文中我们用这个文件演示了不再支持文件的操作,因此在这里身份验证时我们会收到错误消息。在将 vcn 集成到任何自动化测试或脚本中时,这个错误是十分有用的。
我们可以直接对 docker 镜像进行身份验证:
vcn a docker://ubuntu:latest
除此之外,我们还有很多对数字资产进行身份验证的方法,感兴趣的话你可以点击链接查看:
CodeNotary 网站: https://authenticate.codenotary.io Google Chrome浏览器扩展程序: https://chrome.google.com/webstore/detail/vchain-codenotary-downloa/mnloemedehacppeggbipipjlphdjpjcb?hl=en Javascript: https://github.com/vchain-us/jsvcn 项目管理工具软件 Maven: https://github.com/vchain-us/jvcn-maven-plugin 容器化应用 Kubernetes: https://github.com/vchain-us/kube-notary
CodeNotary 仪表板
无论进行何种操作,你都可以在 CodeNotary 的仪表板面板上检查它。如果你使用 CodeNotary 来开发或维护非赢利的开源项目,那么你可以免费使用 CodeNotary 所有的功能。
CodeNotary 的仪表板面板
区块链透明性
口说无凭,眼见为实。你可以通过以下的视频检查我们的区块链:https://vimeo.com/361498314
区块链资源管理器: https://explore.zerotrustconsortium.org CodeNotary 智能合约解码器: https://decode.codenotary.io
快速安装 CodeNotary
CodeNotary 的下载页面
如果你还意犹未尽,想了解 vnc 更多的实现细节,你可以在我们的 Github 仓库中找到更多的说明文件:https://github.com/vchain-us/vcn
推荐阅读:
Spring Boot 面试,一个问题就问趴下了! 10分钟Get拥抱无服务的正确姿势 限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看! 解决掉这些痛点和难点,让知识图谱不再是“噱头” 11月4日,上海开源基础设施峰会,不见不散!
猛戳"阅读原文"有惊喜哟
老铁在看了吗?👇