保护你的钱包

来自Bitcoin Wiki
跳转至: 导航搜索

简介

钱包的安全性分为两个独立的目标:

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

如果你的钱包没有充分得到保护,请这样做(比如你的密码太弱):

  1. 生成一个又新又安全的钱包,制定完备的长期保护措施。

技术背景

比特币的交易把比特币赋予到特定的公共密钥。比特币地址是一个公共密钥的散列编码。为了能接收比特币,你需要对你接收到的公共密钥进行私有密钥匹配。这有点像和账户关联的某种超长密码。你的比特币钱包含许多私钥,他们的作用是使你收到的交易请求生效。如果你在没有备份的情况下删除了你的钱包,你就失去了你对这些比特币的授权信息,同时也将永远失去与这些密钥相关联的比特币。

密钥池内初始有100个密钥。密钥池的大小可以用"--keypool"参量来查询。事实上,当你需要一个地址时(不论什么原因,比如发送,创造、生成新址等等),密钥不是新生成的,而是从密钥池里取走的。系统会生成一个全新的密钥地址把密钥池填满至100。所以当一个密钥池的备份第一次生成时,它包含你所有旧的密钥加上100个未使用的密钥。发送了一个交易请求后,它包含99个未使用的密钥。这样100次新密钥生成过后,你将会开始使用不在你的备份文件内的密钥。由于备份文件并不包含授权这些比特币的私有密钥,还原备份将会导致比特币的丢失。

创造一个新的地址会在你的钱包中添加一对新的公共和私有密钥。 每一对密钥都几乎是随机数,所以在生成前都不可预知。如果你备份了你的钱包,然后创造超过100个新地址,每对密钥都会和最新的地址相关联,并且不在原本的钱包中,因为每对密钥只有在创造后才能知道。如果你从你的备份文件中进行了恢复,你将会失去从这些新地址收到的比特币。

因为在用户界面中显示的地址并不是你钱包中所有的地址,所以形势就变得更加混乱。每个比特币的生成都是新的公共密钥生成的过程,而且,更重要的是,各个交易还会发送回新的密钥给自己。当发送比特币给别人时,你为自己生成一个新的密钥,并同时发送比特币到新的公共密钥和实际收件人的公共密钥。这是一个匿名功能,它使跟踪比特币交易变得更加困难。

所以如果你备份了, 做了100宗以上的交易就会产生一个新的密钥, 但是如果从备份处恢复, 你就会遗失部分比特币。比特币不会删掉任何密钥——它会创造一个新的密钥(不在你原先的备份中)然后用它传送比特币。

制作一个新的钱包

在钱包被分享,或者被储存的折中条件下,明智的做法是创建一个新的钱包,并将全部剩余比特币转移到新创建钱包的地址中。

例如,某人根据建议创建了一个由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"文件。确认比特币软件已关闭,将这个文件夹复制到安全的地方,并将其加密。 比如,你可以把这个文件夹放在两个地方:一个放在手边,另一个放在100英里以外。

使用backupwalletJSON-RPC来进行备份不必关闭比特币软件,

通用的解决方案

你的.dat文件夹不被比特币软件加密。任何人可以很轻易的进入,并将你的比特币偷走。 你担心你的钱包被人偷走,你可以使用以下加密软件中的一个。

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

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

密码强度

暴力破解密码技术已经今非昔比,以前认为安全的随机密码8位阵列现在使用适当的硬件条件可以很轻松的破解。推荐的长度是至少12个字符。

如果你在密码之外还使用了加密文件,它便不太可能被暴力方法破解。十年后的今天可能12个字符的密码也不够长。

我们假设任何储存在网络上的文件(如Gmail,Dropbox等)将被存储在某个地方,并且永远无法被抹去。

档案储存

最简单的存储“wallet.dat”的方法是将加密过的此文件发送给自己的email地址。Gmail这样的邮件服务提供商运用一种很复杂的分散式储存技术使得数据丢失几乎无虞。

你也可以通过更改文件名使得它看上去不那么“吸引人”,比如:“个人记事本”、“汽车保险”等。另一个解决方法是使用在线文件存储服务Dropboxothers,包括更安全的SpiderOak

Linux系统解答

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

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

这会使backupwallet.sh在每小时的第一分钟运行。记得添加一个换行符的最后一行后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

Shell script脚本:   

  • 调用bitcoind backupwallet才能创造出时间/ date-stamped钱包。
  • GPG用公共密钥对你的钱包进行加密。
  • 将结果复制到你备份的位置。

恢复

假如你的备份足够新,而且你还没有用完你密钥池中的密钥,将钱包恢复在新的,或者原先的位置,并重新扫描你的区块链会使你恢复原先的比特币。按照以下步骤操作:

  • 退出bitcoin(d)。
  • 将你的wallet.dat复制到你比特币软件的profile文件夹内。
  • 如果你覆盖了已有文件,删除“blkindex.dat”文件,使客户端重新扫描区块链。

然后就万事大吉了。

删除纯文本钱包

一个好的做法是保持至少两个钱包,一为“现有帐户”的日常交易,并作为“储蓄帐户”,存储你大多数的比特币。

“储蓄帐户”钱包应该只以加密的形式备份并且对应该删除这个钱包的所有纯文本副本。如果有人未经授权访问你的计算机(无论是事实上的窃取或通过互联网系统的漏洞),他们也只能使用你的“现有帐户”钱包硬币的收益。

在大多数操作系统,包括Windows,Linux和Mac OS X中,仅仅删除“wallet.dat”文件并不会破坏它。即使它已被删除,有很多工具仍然可以用来恢复wallet.dat文件。

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

在Mac OS下,点击“清理废纸篓”会永久删除废纸篓里的文件,但这并不能保证你的系统中没有这个文件的备份。

对于Windows系统,内置的命令cipher /w 将永久删除所有以前废弃的文件。 CyberShredder可以安全地删除的单个文件。

电子钱包

电子钱包 储存比特币会有适当风险。

其他请看