保护你的钱包

来自Bitcoin Wiki
Nefario讨论 | 贡献2011年2月22日 (二) 13:34的版本 e钱包
跳转至: 导航搜索

简介

安全的钱包可以做到以下两点:

  1. 保护你的钱包不会遗失。
  2. 保护你的钱包不被偷窃。

在当前情况下,你的钱包还没有充分得到保护(因为你的在线密码太简单):

  1. 弄一个新的安全的钱包, 用更为复杂的密。

技术背景

Bitcoin交易发送Bitcoins到特定的公共密钥。Bitcoin地址是一个公共密钥散列编码。为了使用收到Bitcoins,你需要收到有匹配的私钥的公钥。这像一个超级密码的帐户(公钥)关联排序。您的Bitcoin钱包包含您收到的消费交易所有必要的私钥。如果你没有备份删除你的钱包,你就没有权利去授权相关信息来要回你的钱包,你也将失去了与这些密钥相关的硬币。

The wallet contains a pool of queued keys. By default there are 100 keys in the keypool. The size of the pool is configurable using the undocumented "--keypool" command line argument. When you need an address for whatever reason (send, “new address”, generation, etc.), the key is not actually generated freshly, but taken from this pool. A brand new address is generated to fill the pool back to 100. So when a backup is first created, it has all of your old keys plus 100 unused keys. After sending a transaction, it has 99 unused keys. After a total of 100 new-key actions, you will start using keys that are not in your backup. Since the backup does not have the private keys necessary for authorizing spends of these coins, restoring from the old backup will cause you to lose Bitcoins.

创造一个新的地址可以产生一对新的公共和私人钥匙添加在你的钱包中。 每一对钥匙都是随机的数字,所以在产生之前都不可预知。如果你备份你的钱包然后创造超过一百个地址,每对钥匙都会和最新的地址有联系并且不在老的钱包中因为没对钥匙只有在创造后才能知道。任何从这些地址收到的钱将会遗失如果你从备份恢复了你的钱包。

因为接收的地址显示在UI中不只有唯一的地址,所以形势就变得较为混乱。每个Bitcoin都有一个新的公钥,而且,更重要的是,各派出交易还发送回新的钥匙给自己。当发送Bitcoins给任何人,你为自己生成一个新的密钥对,并同时发送Bitcoins到新的公钥和实际收件人的公钥。这是一个不愿透露姓名的功能- 它使跟踪Bitcoin交易要困难得多。

所以如果你备份了, 做了一百件事一上就会产生一个新的钥匙, 但是如果从备份处恢复, 你就会遗失部分bitcoin. Bitcoin不会删掉任何钥匙(要是不会被删除) – 它会创造一个新的钥匙且不在你的老备份中然后用它传送bitcoins。

制作一个新的钱包

既然这些钱包是分散的,或者被储存的, 在一(真实的或潜在的)不安全情形中,明智的做法是创建一个新的钱包和转让的全部余额Bitcoins的地址只包含在新创建的钱包.

例如,很有必要的事如果一个创建的12个字符密码的一个钱包。然而几年过去了,现在更容易钱包受损。只是重新加密是不安全的。人们需要一个新的钱包,让旧的钱包不值钱(支出的资金到新的钱包)。

创造一个安全的工作环境

Linux系统

第一步是制作一个新的用户 new user,输入:

sudo adduser new_user_name用户名

当你看到提示'输入新值,或为默认按Enter',只需要不停的按ENTER键。

然后切换用户到新用户。要获得新的用户,您可以使用您的系统,它基于Ubuntu是在'系统/退出'屏幕,或者如果您没有系统切换图标,你可以注销并登录为后面的交换机用户图标新用户。然后点击在新用户显示文件浏览器,然后持续上升文件夹,直到你看到新建的用户主目录文件夹,然后右键单击在别人,弹出属性对话框,然后单击权限选项卡,然后部分,设置为无文件夹的访问。

对于安全浏览,打开Firefox,然后进入编辑菜单,单击首选项。从左边开始,在常规选项卡上单击,在'启动/当Firefox启动时,弹出菜单,选择'显示空白页'。然后,单击内容选项卡,取消选择'自动载入图片',并取消选中'启用JavaScript。然后点击隐私标签,然后在'历史/ Firefox将'弹出菜单,选择'从不记住历史'。然后单击安全选项卡,在密码部分,取消'记住密码的网站'和取消'使用一个主密码'。然后点击高级选项卡,然后点击更新选项卡,然后在'自动检查更新'部分,取消'附加'和'搜索引擎'。

当JavaScript被禁用时,Linux下载页面将不会自动下载,所以你必须点击了'直接链接'的一部分“问题与下载?请使用'直接链接'或尝试另一个的镜像。”。 在您完成您的安全的新用户,为了维护安全,你应该只用它于bitcoin。

定位BitCoin的数据目录

Windows系统

开始 -> 运行 (或者点击 WinKey+R) 然后运行这个:

explorer %APPDATA%\BitCoin

BitCoin's 数据文件将会打开. 对于大多数用户来说,数据目录将会在这里:

C:\Documents and Settings\YourUserName\Application data\BitCoin (XP)

C:\Users\YourUserName\Appdata\Roaming\BitCoin (Vista and 7)

"AppData" 和"Application data" 默认为隐藏文件.

Linux

这个默认的bitcoin将会是这个文件:

~/.bitcoin/

你需要做的用“ls- a”来看看目录以点开始。

如果这不是它,你可以做这样的搜索:

find / -name wallet.dat -print 2>/dev/null

Mac系统

这个默认的bitcoin将会是这个文件:

~/Library/Application Support/Bitcoin/

备用

你只需要备用的文件夹是"wallet.dat"。确认BitCoin已关闭,将这个文件夹复制到安全的别处,并将其加密。 理想地,你可以把这个文件夹放在两个地方:一个放附近,另一个100+英里以外。

你可以不用关闭Bitcoin,用backupwalletJSON-RPC来指令备用。

一般解决方法

你的.dat文件夹不被 BitCoin加密。任何人可以很轻易的进入将你的币偷走。 如果有人有机会偷走,你可以使用这些加密程序中的一个。

  • 7-zip - 支持强加密文档.
  • AxCrypt
  • TrueCrypt - Volume-based on-the-fly 加密 (高级用户)
  • WinRar - 常用存档软件,支持验证记录和加密.

还有一个 open source encryption software.开源加密软件

复杂的密码

蛮力密码破解已走过了漫长的距离,以前认为安全的随机密码[排列] [0-9]8个字符[!-~]只要能平凡的解决现在的(使用适当的硬件)...推荐的长度是至少12个字符长。

如果您使用密码的注册文件除了一个,它是不可能可以被破解的加密的文件10年前甚至使用暴力方法,从现在起,如果连一个12字符的密码可能太短。

假设任何加密文件存储在线(如Gmail时,保管箱)将被存储在某个地方永远无法被抹去。

储存档案

O   最简单的地方存储你的wallet.dat适当加密档案文件被发电子邮件给自己的档案。像给分布式网络使用非常全面的数据丢失的可能性很小。人只要加密文件名字在档案,如:“的个人笔记”或“汽车保险”。      另一个解决方法是用一个文件存储服务就像Dropboxothers,包括更安全SpiderOak

Linux系统解答

Linux用户可以通过运行'crontab -e'添加这个:

 01 */1 * * * /usr/local/bin/backupwallet.sh

这cron在backupwallet.sh运行01分钟每小时。记得添加一个换行符的最后一行后crontab文件,否则最后一行不会运行。


backupwallet.sh:

 #!/bin/bash
 
 TS=$(date "+%Y%m%d-%H-%M")
 WALLET=/tmp/wallet${TS}
 WALLET_E=/tmp/wallet${TS}.crypt
 
 if
   echo -n making backup...
   bitcoind backupwallet $WALLET 
   ! -s "$WALLET" 
 then echo failed
 elif
   echo done
   echo -n encrypting....
   ! gpg -r myusername --output $WALLET_E --encrypt $WALLET
 then echo failed
 elif
   echo done
   echo -n copying to distant server...
   ! scp $WALLET_E user@myserver.org:~/wallets/
 then echo failed
 else echo done
 fi
 
 rm -f $WALLET $WALLET_E

外壳脚本:   

  • 调用bitcoind backupwallet才能创造出时间/ date-stamped钱包。
  • GPG数字加密钱包与你的公钥。
  • 复制结果备份的位置。

恢复

假设你的备份是最近不够,你还没有用完所有的keypool ...恢复一个钱包在一个新的(或旧)的位置,并重新扫描block链应该给你所有你的硬币。只要按照下列步骤:

  • 退出bitcoin(d)项。
  • 将您的个人资料备份到您的bitcoin目录注册wallet.dat。
  • 如果把现有的配置文件复制,删除文件 blkindex.dat,使客户端重新扫描块链。

而你将像新的一样。

删除纯文本钱包

一个好的做法是保持至少两个钱包,一为“经常帐”的日常交易,并作为“储蓄帐户”,您存储您的Bitcoins过半数。

“储蓄帐户”钱包应该备份只以加密的形式对这个钱包应该擦除所有明文副本。如果有人未经授权访问您的计算机(无论是身体上窃取或通过利用通过互联网系统漏洞),他们将只能花你的“经常帐”钱包硬币的收益。

在大多数操作系统,包括Windows,Linux和Mac OS X中,只需将文件删除wallet.dat 一般不会破坏它。很可能仍然是先进的工具可以用来恢复wallet.dat文件,即使它已被删除。

Linux的切碎命令可以用来在删除前覆盖随机数据的钱包文件,这个文件的特定复制然后将几乎不可能恢复。用切碎(和Windows类似的工具),但仍不能保证不存在其他副本上的某个地方你的HD隐藏。这将取决于您的系统配置和您已经安装了哪些软件包。有些系统恢复和备份工具,例如,创建文件系统定期快照,复制您的wallet.dat。

对于Windows系统,内置的命令密码/瓦特将撕碎所有以前删除的文件。 CyberShredder可以安全地删除的单个文件。

e钱包

eWallet 储存bitcoins会有适当风险。

其他请看