科普 | 如何妥善备份你的以太坊钱包

2023-12-14 18:50

本文主要是介绍科普 | 如何妥善备份你的以太坊钱包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

新世界大门

当你打开数字货币新世界大门时,你需要学会一项在这世界生存的技能, 如何妥善的备份你的钱包 。

在过去的世界中,当你把密码弄丢时,你仅需要向服务商提交忘记密码的申请,稍过一会,你就会收到一封邮件,拿起键盘,输入你的新密码。这过程就像魔法一样,你重新获得账户的支配权。

这么理所当然的功能,在新世界中,你再也见不着踪影。

这是你看到数字货币诸多不方便的一面,也是它令人着迷的另一面。因为这是人类历史上,第一次通过技术彻底、纯粹地保障「私有财产神圣不可侵犯」。而这一切,都建立在你如何妥善地保管你的私钥的基础上。

私钥,即财富。

钱包生成机制

在数字货币世界中,你的钱包由私钥,公钥构成。在学会保管钱包前,你需要明白私钥与公钥的生成机制: 非对称加密算法。

在 1976 年以前,所有的加密方式都是同一种模式:
1. 甲方选择一种加密规则,对信息进行加密;
2. 乙方使用同一种规则,对信息进行解谜;

由于加密与解密皆为同一种规则,被称为「对称加密算法」。此加密算法的最大弱点就是甲乙双方都需要了解解密规则,而保存和传递解密规则的过程存在极高的安全风险。

直到 1977 年,Ron Rivest、Adi Shamir 和 Leonard Adleman 设计了一种非对称加密算法,此算法以他们三人名字命名,被称为「RSA 算法」。

以上图为例,解释非对称加密模式的流程:
1. Bob 与 Alice 通过非对称算法生成各自的私钥和公钥(公钥可以通过私钥推导);
2. Bob 想给 Alice 发送一份加密信息;
3. Bob 用 Alice 的公钥对信息进行加密;
4. 加密的信息仅能通过 Alice 的私钥解密;

当前数字货币(比特币、以太币等)采用的是「椭圆曲线算法」,椭圆曲线算法同样也是非对称算法,相比起 RSA 算法有更多的优势,比如安全性能高、计算量小、存储空间占用小、带宽要求低等。

每一个钱包账户包含一份密钥对,即私钥与公钥。私钥(k)是一个数字,通常是随机选出的。有了私钥,我们就可以使用椭圆曲线乘法这个单向加密函数生成一个公钥(K)。有了公钥(K),我们就可以使用一个单向加密哈希函数生成该账户地址(A)。

当你发生交易时,每笔交易都需要一个有效的签名才会被存储在区块链。只有有效的私钥才能产生有效的数字签名,因此拥有钱包账户的私钥就拥有了该账户的支配权。

钱包形态

在了解钱包的生成机制后,我们很快就明白一点,我们备份钱包,就是备份私钥,但因保管方式不同,所表现的形态也不一样。

目前常见的私钥形态:
1. Private Key
2. Keystore && Password
3. Mnemonic Seed

Private Key

Private Key 就是一份随机生成的 256 位二进制数字,你甚至可以用硬币、铅笔和纸来随机生成你的私钥:掷硬币 256 次,用纸和笔记录正反面并转换为 0 和 1,随机得到的 256 位二进制数字可作为私钥。这 256 位二进制数字,就是私钥原始的状态。

Keystore && Password

在以太坊官方钱包中,私钥与公钥将会以加密(创建钱包时设置的密码,请务必记住!)的方式保存为一份 JSON 文件,存储在 /Users/yourname/Library/Ethereum/keystore 中。 这份 JSON 文件就是 keystore,所以你需要同时备份 keystore 和对应的 password。

Mnemonic code

Mnemonic code 由 BIP 39 提案提出,目的是通过随机生成 12 ~ 24 个容易记住的单词,单词序列通过 PBKDF2 与 HMAC-SHA512 函数创建出随机种子,该种子通过 BIP-0032 提案的方式生成确定性钱包。

BIP 39 定义助记码创建过程如下:
1. 创造一个 128 到 256 位的随机顺序(熵)。 
2. 提出 SHA256 哈希前几位,就可以创造一个随机序列的校验和。 
3. 把校验和加在随机顺序的后面。 
4. 把顺序分解成 11 位的不同集合,并用这些集合去和一个预先已经定义的 2048个单词字典做对应。 
5. 生成一个 12 至 24 个单词的助记码。

所以当你记住 12 ~ 24 个助记码后,就相当于记住私钥。助记码要比私钥更方便记忆和保管。目前支持助记码的钱包有 imToken 和 jaxx 。

钱包备份方式

因为钱包的形态多样(本质一样),所以备份的方式也同样多点,但最终的目的: 防盗,防丢,分散风险 。

  • 防盗:分离备份,假如 keystore 或密码被盗,但对应的密码 和 keystore 依然安全;

  • 防丢:多处备份,降低丢失所有对应的 keystore && password 、助记码、私钥等等风险;

  • 分散风险:将资金适当分散,降低损失程度,同时采取多重签名方式,提取超过限制金额,需要多把私钥授权;

下面为大家介绍常见的备份方式:
1. 多处和分离备份 keystore && password
2. 纸钱包
3. 脑钱包
4. 多重签名

多处和分离备份 keystore && password

  1. 打开以太坊官方钱包,在菜单栏中选择 ACCOUNTS -> BACKUP -> ACCOUNTS,你会看到一个 keystore 文件夹,在里面保存你创建过的钱包账户,以 UTC--2016-08-16....... 格式命名的 JSON 文件,这就是你的 keystore 文件。
  2. 将 keystore 文件放置多处安全的位置,如离线的 USB 以及你信任的云存储服务商。
  3. keystone 对应的 password,你应该采用强密码,同样多处且与 keystore 分离备份。

纸钱包备份

纸钱包实质就是将 keystore 或 私钥以纸质化形式保存,一般为二维码形式。

你可以通过命令行的方式

cat /Users/yourname/Library/Ethereum/keystore/<key_file> | qrencode -o keystore.png

也可以到 MyEtherWallet: Open Source JavaScript Client-Side Ether Wallet 离线提交你的 keystore 或 私钥,就可以直接打印对应的二维码纸钱包。

脑钱包

我们所说的脑钱包并不是由用户自身输入自定义的词句生成私钥(因为这并不安全),而是通过BIP 39 提案的方式生成足够随机的,可记忆的助记码。这是一个方案,但不是一个非常好的方案,因为人类的大脑并不总是靠谱。

多重签名

多重签名是一个不错的选择,它的优势是当你需要提取超过限制的金额时,需要多把私钥同时授权,同时提升防盗,防丢的安全性。

在以太坊官方钱包中,你可以在 Wallet Contracts 下方中选择 Add Wallet Contract,前提是你用来创建 Wallet Contract 的 account 有不少于 0.02 ETH,足以支付交易所需的费用。

当你选择 MULTISIGNATURE WALLET CONTRACT ,将会看到如下提示:

“This is a joint account controlled by X owners. You can send up to Y ether per day. Any transaction over that daily limit requires the confirmation of Z owners.”

X 代表此钱包合约由多少账户控制
Y 代表在单个账户授权情况下,每日可提款的上限
Z 代表突破提款上限,需要多少账户授权

默认我们采取 X = 3 ,Z =2 的方式,钱包合约由三个账户管理,需突破取款上限需要两个账户同时授权。

采取多重签名的机制后,你可以多处且分离的方式保管你的 keystore 和 password,提升防盗,防丢的安全性。

关于更多多重签名的详情可看官方文档: Account Management — Ethereal Homestead 0.1 documentation

结语

不管你用任何方式备份钱包,达到 防盗,防丢,分散风险 的目的即可。

参考:

  • Account Management — Ethereum Homestead 0.1 documentation
  • Technical background of version 1 Bitcoin addresses - Bitcoin Wiki
  • GitHub - bitcoinbook/bitcoinbook: Mastering Bitcoin - Unlocking digital currencies
  • wallets - What is the recommended way to safely store Ether? - Ethereum Stack Exchange
  • accounts - How to backup mist wallets? - Ethereal Stack Exchange
  • security - Is there a way to generate ethereum paper wallets? - Ethereum Stack Exchange
  • contract design - How can I create a multi signature address on Ethereal? - Ethereal Stack Exchange
  • Do you need to backup ETH Wallet Contracts? - Support - DAOhub.org

这篇关于科普 | 如何妥善备份你的以太坊钱包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493626

相关文章

为备份驱动器制定备份计划:维护数据的3大方法

时间:2014-02-26 14:49 来源:网管之家 字体:[大 中 小]   您可能已经对您的电脑进行了备份,但其实这样还是远远不够的,其并非如您所认为的那样安全。您企业备份驱动器上的文件可能与您的主系统上的文件一样,容易受到灾难的影响。根据最近流行的恶意软件CryptoLocker的感染途径显示,连接到PC的外置驱动器——辅助硬盘驱动器,例如,用于备份的外部USB硬盘驱动器,可以像

使用shell脚本安装mysql8,进行主从备份配置

思路 在3台主机上安装mysql进行主从备份配置 使用rpm包yum安装mysql 首先,我们要准备好安装文件,首先下载rpm包 wget -P "/opt/" https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm 然后执行安装(默认已配置阿里云的yum仓库 yum -y install mysql80

数据库系统 第38节 数据库备份

数据库备份是确保数据安全和完整性的重要手段。它涉及创建数据库的副本,以便在数据丢失或损坏的情况下可以恢复。数据库备份可以采取多种形式,包括完全备份、增量备份和差异备份。下面将详细说明每种备份类型,并提供相应的源代码示例。 1. 完全备份 完全备份是数据库的完整副本,包括所有数据和数据库对象(如表、索引、视图等)。这种备份通常用于初始备份或在长时间间隔后进行备份。 示例代码(Python):

Linux tar命令详解使用:掌握高效数据压缩与备份

tar 是 Linux 中用于创建、提取和管理归档文件的命令。 一、tar 的基本用法 tar [选项] [归档文件] [文件或目录...] 选项:用于指定 tar 的操作(如创建、解压缩等)。归档文件:要创建或解压缩的目标文件。文件或目录:要打包或提取的文件或目录。 二、tar 的常用选项 tar 命令有多个选项,以下是一些常用的选项: -c:创建新的归档文件(create)。-x

备份还原 本地所有的Docker 镜像并且在另一台机器上还原

备份命令 并且显示进度 backup_docker_images.sh sudo yum install jq chmod +x backup_docker_images.sh sudo ./backup_docker_images.sh #!/bin/bash# 指定备份目录backup_dir="/app/dockerImageBackup/Images"# 创建备份目录,如果不

中秋国庆请客喝酒,面子与钱包双赢的红酒选择

平时生活中,总少不了各种聚会,不管是朋友小聚,还是正式的商务宴请,酒都是少不了的,而现在,越来越多的人都喜欢选择红酒来助兴。 喝红酒的人不少,懂红酒的人却不多。有时候真的很尴尬,明明环境菜都不错,就是红酒太难喝,每一口都要鼓足勇气才能下咽。 其实,酒也是饭局的重要组成部分,如果酒不好喝,客人事后也是会暗暗吐槽的。所以,一个好的饭局,酒一定也是好的。 这里说的“好”,既要面子上

使用NetBackup GUI 图形化进行oracle备份和恢复

转载  一、环境介绍: 这个实验都是在vmware workstation里完成的。由于NetBackup7只能装在64位的系统上,所以这里采用了64位的rhel5.5系统,以及oracle 10gr2 for linux_x64的软件包。数据库的数据文件存储在ASM中。安装rhel、oracle、netbackup这里不提,可以参考网上其他博文。NetBackup的服务端、客户端以及媒体服

MySQL灾难恢复策略:构建稳健的备份与恢复机制

在现代企业环境中,数据的安全性和可靠性至关重要。灾难恢复计划(Disaster Recovery Plan, DRP)是确保在发生灾难性事件后,能够迅速恢复业务的关键策略。对于依赖MySQL数据库的系统,实现有效的灾难恢复计划尤为重要。本文将详细介绍如何在MySQL中实现灾难恢复计划,包括备份策略、恢复机制和最佳实践。 1. 灾难恢复计划的重要性 灾难恢复计划对于保护企业免受数据丢失和业务中断

mongodb 复制数据库 备份数据库

不得不说mongodbs数据库还是挺折腾人的 //将数据库备份到路径 mongodump --port 端口号 -u 用户名  -p密码 -d 数据库 -o /usr/local/(备份到这个路径) //将数据库导入到Mongodb mongorestore --port 端口号  -u 用户名 -p密码 -d 数据库 --dir /usr/local/文件/(将这个文件导入到数据库)

Linux shell编程学习笔记77:tar命令——快照 备份(下)

0 前言 在 Linux shell编程学习笔记76:tar命令——快照 & 备份(上)-CSDN博客https://blog.csdn.net/Purpleendurer/article/details/141862585?spm=1001.2014.3001.5501 中我们研究了 tar命令 的功能、格式、选项说明。 现在我们来实践一下。 1 应用实例 1.1 创建演示