如何让DAPP用户恢复丢失的私钥

在以太坊上,私钥用于访问帐户、签署消息等。一旦你失去对私钥的访问权,你将失去对该帐户存储的所有资金的访问权。这与丢失信用卡密码有什么不同?你不能要求银行给你一个新的密码,因为以太坊上不存在银行。你的资金仍被记入你在区块链上的地址,但你无法提取它们。

以太坊区块链上的账户和dapp服务旨在去中心化,没有人代表你保管访问代码。

将你的私钥存储在数据库中的服务可以随时访问你的资金,就像银行一样,这与以太坊社区试图实现的目标正好相反。

那么,我们如何协调以太坊的去中心化调用要求和用户对支持服务的需求呢?

对于去中心化的服务提供者来说,作为金融保管人也具有很强的法律含义。我们自己的案例:DAPACT正在低收入国家现有贷款代理的基础上建立一个信贷服务平台。我们将自己定义为一家软件公司,一个合法注册的为本地贷方提供即插即用技术的平台。

获得用户资金将使我们成为金融服务提供商而不是软件公司,这意味着当地金融监管机构会对我们进行审查。这最终将转化为要求在每个有DAPACT的国家都有某种银行执照和资本存款。

在纯DAPPS服务中,一旦你丢失了你的私钥,就绝对没有办法重新访问你的资金。用户需要注意将他们的恢复密码备份到安全的地方。最有效的办法是把密码写三次,把硬拷贝放在不同的地方。

某些用户往往会丢失或根本不备份这个密码短语。这对所有DAPPS开发人员来说都是一个重大问题,尤其是对于DAPACT,因为我们处理的是那些对技术了解不多的人群。因此,必须为我们的用户提供可恢复性解决方案。

必须向用户提供适合其理解去中心化系统的私钥可恢复性解决方案。

此类可恢复性解决方案应遵循以下三个标准:

  • 外部特性:去中心化服务提供程序不能访问私钥。
  • 可定制:即使在私钥丢失的情况下,用户也应该能够理解和配置恢复选项。
  • 安全:不应该有简单的方法通过恢复选项劫持另一个人的帐户。只有真正拥有帐户的人才能恢复帐户。

现有解决方案

以下是以太坊社区的用户体验设计师正在实施、改进或探索的解决方案的概述,从最新推出的开始。

多人签名

多人签名钱包允许设置多个所有者n。如果需要少于n个所有者,其余所有者可以在失去访问权的情况下替换所有者。然而,此解决方案需要至少3个所有者或所有者设备(交易需要2个确认)以及所有者之间的高度信任。

助记符

助记词(又称种子短语或密码短语)是一系列可以从密码学上派生私钥的单词。用户需要自己备份恢复记忆,并确保其安全,以便在丢失时重新生成私钥。

此恢复选项是以太坊地址和钱包的标准配置。在高级DAPPS用户中,助记法已经成为一种很好理解的机制,但是知识较少的用户应该有不同的选择。记忆法和保存它们的地方一样安全。写在一张纸上,它们会暴露在火灾和洪水、被盗等灾害中。

生物特征数据

该行业的一个可行解决方案是指纹、虹膜扫描或人脸识别等生物特征数据。生物特征数据不能像纸上的密码一样“丢失”。如果苹果和三星在生物识别领域投入了这么多资金,那它一定是一个伟大的解决方案,对吧?

这个选项的问题是,一旦一个人的生物特征数据向公众公开,就再也不能用它来保护一个帐户,因为你不能像改变密码或切换帐户那样真正地改变你的指纹。随着人脸识别成为主流,甚至在Github上有一个基于OpenCV的repo协议,这种可能性变得越来越可信。

生物识别的另一个缺点是,不同的指纹传感器会变得相当模糊,不完全匹配——例如,如果用户割伤自己,那么可能会出现问题。

社会关系恢复

用户可以确定一组能够代表他们恢复对其帐户的访问权限的朋友(即,他们中的每个人都拥有一个签名,这些签名组合在一起可以授予对该帐户的访问权限)。只有当所有朋友都同意时,帐户所有者才被替换。

这个解决方案最大的问题是,朋友组可以一起工作,从所有者那里窃取对帐户的访问权,即使所有者没有要求他们这样做。这就是为什么理想情况下,小组成员不应该知道小组中还有谁。

微信成功实现了某种社会恢复方案,允许密码恢复:当用户丢失密码时,微信要求用户在联系人列表中选择一个大名单中的人。知道微信包含合理的银行信息,这无疑是DAPPS的一个好线索。

标准KYC程序

与现代银行对新客户执行KYC程序的方式类似,用户可以向KYC提供商表明自己的身份,以便重新获得资金。但是,用户需要执行一次已经设置好的过程,以便提供者知道地址背后的标识。

此解决方案已用于令牌交换操作(例如nimiq)。KYC验证通常由第三方提供商(如IDNOW)处理,这是一项成本高昂且有点违反区块链原则的工作。

瘫痪证明

这个新概念也被称为时间锁恢复和最后手段恢复。如果对帐户的访问丢失,可以将其进行标记。此外,标记为“丢失”的人可能会存入押金。现在开始一个时间段,在此时间段之后,帐户将被替换。在此期间,实际账户所有人可以通过交易证明账户实际上没有丢失。如果是这样,攻击者将丢失转移到帐户的存款。

随着越来越多的设计师进入区块链空间,人们希望有一个伟大的头脑会想出密码密钥管理的杀手用户体验。或者谁知道呢,也许是一个中年历史学家提出了一些古老的骑士把戏来获得安全黄金定律。

目前,根据我们的3个标准(外部性、可定制性、安全性),许多解决方案(或它们的组合)显示出良好的潜力。一旦社区同意可接受的可恢复性解决方案,就需要在整个生态系统中一致地采用通用的设计语言和标准化的最佳实践,以便DAPPS用户习惯于可恢复性模式。

======================================================================

分享一些比特币、以太坊、EOS、Fabric等区块链相关的交互式在线编程实战教程:

  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深入浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • Hyperledger Fabric 区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • Hyperledger Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是如何让DAPP用户恢复丢失的私钥