云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

大带宽_数据库原理课程设计_限时特惠

小七 141 0

使用Vault构建以太坊钱包

这是Jeff pouluman的一篇客座帖子,他是T.roweprice的安全架构师,也是DC巴尔的摩HashiCorp用户组的创始人,这项工作是在他作为以太坊爱好者和开源贡献者的角色中完成的。HashiCorp Vault通过将可信身份与代理访问紧密耦合并管理敏感的组织信息和机密,专注于在分布式基础架构中保持应用程序数据的安全。以太坊钱包是以太坊区块链上分散应用程序的网关。它允许您持有和保护以太坊上构建的ether和其他加密资产,以及部署和使用智能合约。本博客将探讨这两者如何能够无缝地合作。与许多基于区块链的生态系统一样,以太坊本质上是一种去中心化的技术。该协议的设计目的是不信任第三方,如云提供商、证书颁发机构或DNS。以太坊基础上的区块链在网络中的每个节点上复制,因此任何特定节点(或节点子集)的丢失都不会造成影响。区块链的根本创新在于如何在没有信任的情况下实现分布式共识。尽管关于这种不可信模型的效率成本或区块链的整体效用存在着无休止的争论,但我更感兴趣的是这种分散架构的实际后果。»管理私钥在所有的链链生态系统的基础上,货币中的"密码"是称为公钥密码体制的系统。虽然密钥对的公共部分可以以分散的方式分发,但是私钥是一个基本上集中的概念。这一事实导致了一点阻抗不匹配:在许多区块链系统(包括以太坊)的设计中,私钥的集中性往往是事后才想到的。钱包常常让人觉得像是协议的尴尬的小玩意;而且,以太坊(和区块链一般)的私钥管理工具的安全性和可用性常常缺乏。在企业内部尤其如此:试着想象一家大公司使用笔记本电脑作为所有账户的钥匙。私钥管理是任何区块链消费者需要解决的第一个问题。»金库作为区块链钱包的平台保险库可以帮上忙。金库的存在是为了解决秘密管理问题。而且,由于Vault可以从一台笔记本电脑扩展到一个高度可用、全球复制的数据中心,因此它可以用作个人钱包或企业区块链使用的促成因素。Vault的设计允许它通过多种形式的认证来代理多种形式的身份验证。由于使用Vault作为以太坊钱包的平台,我可以轻松地添加MFA支持—使Vault成为第一个独立的带有MFA的以太坊钱包。使用Vault作为以太坊钱包平台的另一个好处是,我们可以毫无风险地获得分层确定性钱包的所有好处—使用此保险库插件,我可以非常快速、轻松地基于独立派生的私钥创建许多以太坊帐户。»用于保险库的以太坊插件Vault Ethereum插件是一个秘密后端的实现。这个插件提供了以太坊钱包的许多功能。它支持公共和私人连锁。它可以通过提供部署智能合约的机制来支持智能合约的持续开发实践。它使您能够对任意数据进行签名和验证签名。当然,您可以发送ETH。一些功能(创建帐户、签名和验证)无需访问以太坊节点即可实现。其他功能(部署合同和发送事务)将需要访问以太坊RPC接口。启用TLS后,对保险库的身份验证是安全的,签名事务时不会泄漏任何凭据或密钥材料。这意味着Vault可以和笔记本电脑在不同的机器上运行——这是基于RPC的钱包无法实现的。»支持MFA的以太坊桌面钱包为了演示使用Vault作为区块链钱包平台的强大功能,让我们使用Vault以太坊插件构建一个支持MFA的以太坊桌面钱包。为了让这个练习集中在这个用例上,我将做一些假设:您已经安装了Vault,并且正在使用TLS进行传输安全。这意味着您没有在开发模式下使用Vault。您有一个可以与之通信的以太坊RPC端点。对于这个练习,我将在:8545在私有链上运行。您可以使用任何RPC端点(包括Infura的安全、可信和集中式端点)。如果这些假设被证明有问题,您可以使用这些说明创建一个保险库和以太坊游乐场。»关于管理员权限的旁注要安装插件、配置装载、启用身份验证方法和管理策略,您需要在Vault中具有相当强大的访问权限。但是,您不需要使用Vault根令牌。如果创建具有以下权限的管理用户,则可以在本练习中执行所有操作:路径"sys/plugins/catalog*"{功能=sudo,"创建","读取","更新","删除","列表"]}路径"sys/auth*"{功能=sudo,"创建","读取","更新","删除","列表"]}路径"sys/mounts*"{功能=sudo,"创建","读取","更新","删除","列表"]}路径"sys/policy*"{能力=创建","读取","更新","删除","列表"]}路径"auth/userpass/users*"{能力=创建","删除","列表"]}»安装Vault Ethereum插件首先,让我们下载并验证插件的真实性。注意:我使用Keybase PGP来签署我的版本。$猫/抓_插件.sh#!/垃圾桶/垃圾桶函数抓取插件{echo"操作系统:$1"echo"版本:$2"wget—进度=杆:力-O./$1.ziphttps://github.com/immutability-io/vault-ethereum/releases/download/v$2/保险库-以太坊2$1_amd64.zipwget—进度=杆:力-O./sha256总额https://github.com/immutability-io/vault-ethereum/releases/download/v2美元/SHA256总额wget—进度=杆:力-O/沙256总和.sighttps://github.com/immutability-io/vault-ethereum/releases/download/v2美元/SHA256总和.sigkeybase pgp验证-d./SHA256总和.sig-i./SHA256总额如果[[$?-式2]];则echo"插件验证失败:签名无法验证!"出口2金融机构房间/SHA256总和.sigrm./SHA256总额}抓取插件$1$2$/抓斗_插件.sh达尔文0.0.4签名已验证。由Immustability在15小时前签署(美国东部时间2018-02-20 17:23:15-0500)。PGP指纹:CF34990C53EF89590B5A3CE9C2312012442E3A134。$解压达尔文.zip档案文件:达尔文.zip充气:SHA256SUM充气:保险库以太坊我们将把插件写到vaultplugins目录,并在插件目录中注册它。插件目录的位置配置在保险库.hcl文件。这是我的:$cat~/etc/vault.d美元/保险库.hcl"default_lease_ttl"="24小时""max_lease_ttl"="24小时"后端""文件{"路径"="/Users/immutability/etc/vault.d/data"}"api地址"="https://localhost:8200英寸侦听器"tcp"{"地址"="本地主机:8200""tls_cert_file"="用户/不变性/etc/vault.d"/保险库.crt""tls_client_ca_file"="用户/不变性/etc/vault.d"/根.crt""tls_key_file"="用户/不变性/etc/vault.d"/保险库.key"}"plugin_directory"="/Users/immutability/etc/vault.d/vault_plugins"注意api地址的配置。此设置对于插件在装载期间与Vault服务器通信至关重要。首先我们移动插件:$mv vault-ethereum/Users/immutability/etc/vault.d/vault\u插件然后我们在目录中注册插件。我们将使用插件存档中的SHA256SUM:$echo$主页/用户/不变性$vault write sys/plugins/catalog/ethereum plugin\sha_256="$(cat SHA256SUM)"\command="vault以太坊--ca cert=$HOME/etc/vault.d/根.crt--client cert=$HOME/etc/vault.d/保险库.crt--客户端密钥=$HOME/etc/vault.d/保险库.key"最后,我们必须挂载插件作为一个秘密后端。(注意:我们必须已对Vault进行了身份验证,并有权写入/sys/mounts*)plugin-plugin name=ethereum现在我们的插件已经安装并启用了。我们将插件配置为管理用户。为了正确演示Vault管理对以太坊后端的访问的能力,我们将首先创建一个不允许进行任何插件管理的非管理用户。»创建受MFA保护的身份验证后端当我们仍然是管理员时,我们将启用Userpass身份验证后端,使用Duo的免费服务为MFA配置它,创建一个名为muchwow的用户,最后,将该用户附加到允许他们访问以太坊后端的策略上。我们还为这个用户建立了一个相当短的TTL-他们必须在10分钟前更新他们的会话令牌,否则他们将不得不重新认证。政策,以太坊_根.hcl,如下所示:$cat以太坊_根.hcl路径"以太坊"{能力=创建","读取","更新","删除","列表"]}路径"auth/userpass/users/muchwow/password"{功能=更新"]}使用密码短语时应始终小心。Vault的好处之一是它提供了多种形式的身份验证,这意味着您可以避免处理某些类型的密码短语时的尴尬。$vault auth启用userpass成功!已在以下位置启用userpass身份验证方法:userpass/$vault策略写入以太坊以太坊_根.hcl成功!已上载策略:以太坊$read-s密码;保险库写入身份验证/userpass/users/muchwow\策略=以太坊\ttl=10米\最大长度=60米\password=$PASSPHRASE;取消设置PASSPHRASE最后,我们配置MFA。我不会在这里讨论注册或设备注册流程。我正在使用Duo的MFA服务,这是目前唯一在OSS版本的Vault中支持的服务。配置MFA需要从Duo获取API密钥。$vault write auth/userpass/mfa_config type=duo成功!数据写入:auth