关于比特币的“冷存储”和Armory的使用

转自:http://8btc.com/thread-1164-1-1.html

  最近随着比特币话题的火热,又有一批人卖房或倾产换成比特币入圈,这一次与以前不同的是,以前倾产入圈的人都是技术人员,有足够的能力来保护好自己的比特币财产,而现在入圈的,多了一些对比特币安全不在行的人。要知道,QQ被盗,你可以找腾讯申诉回来;网银被盗,你可以报警,追回来的希望还是相对比较高,同时QQ和网银对盗号木马都有各种设防,比特币客户端是没有设防的,被盗了也不知道从哪下手去找回来。卖房买比特币这种行为属于个人投资,我不发表意见,但是为了帮助新手们不至于一时大意,比特币都被盗走或丢失,我打算再写一篇文章,着重谈论一下“冷存储”,因为冷存储是防网络黑客的最有效方法。注意,冷存储只是防网络盗窃,并不防现实生活中的窃取。

    在网上我见过一些人他们并不懂,或没懂透,对于保护比特币表现非常焦虑,总在挖空心思发明各种方法防盗防丢失,而实际上看他说出来的那些手段,根本没搔到痒处,尽在穷折腾。而且这样穷折腾的结果恐怕防不住黑客反而会成功地把自己给“防”了,如果不幸真发生这种事情,我只能说:别有一番异样的悲摧。所以我们要采取最简单有效的方法,就够了。

    关于比特币的安全入门可以参考我的另一篇文章:《如何保护好我们的比特币(bitcoin)http://8btc.com/thread-819-1-1.html

    如果是囤币,或是持有大量的比特币,那么不要怕麻烦,一定要采用冷存储的方式。冷存储是指离线生成比特币私钥,并离线保存,离线使用。这样私钥没有在联网的机子上出现,再厉害的黑客也无法通过网络盗走你的私钥。

    关于比特币地址与私钥的基本知识可以参考这篇文章,这里就不赘述。《彻底玩转比特币地址和私匙http://www.8btc.com/privkey

    那么要如何离线生成私钥呢?这里的离线是指通过不联网的机器生成私钥,不是单指在本地生成。如果采用Armory客户端,这个客户端本身的工作方式就是可以离线操作的,可以离线生成私钥并可以离线发送比特币。只是这个客户端没有中文版,而且也没找到中文教程,貌似也没有人谈论使用这个客户端的心得。所以在这里做一个简单的使用介绍。

    Armory与其它客户端一样有MAC、Linux、Windows版本。安装包没分在线端和离线端,安装后电脑上同时有在线端和离线端,用户在使用的时候自行区分运行。其中Armory在线端基于bitcoin-QT客户端,所以还要先安装bitcoin-QT,而且在线端对系统的要求比较高,至少要4G内存。Windows版目前只支持64位系统,Mac和Linux版有32位及64位版本。离线端可以独立运行,对机器要求不高。

    分别在电脑上安装Armory之后,在下图的菜单中可以看到这样的快捷启动图标(其它系统类似)。
<ignore_js_op>




下面要在离线端和在线端分别进行设置。

离线端:
这台电脑永远不要联接网络,在这台电脑上创建钱包,生成地址或导入私钥。
这时候钱包的标志是“Encryptde”,表示这是有私钥的钱包。
根据“先备份后使用”的原则备份好私钥后就可以启用钱包里的BTC地址了。

<ignore_js_op>




根据上图所示进入钱包设置界面,如下图。
在这里可以生成地址,导入私钥,导出私钥。(导入私钥的地址可以删掉,自行生成的地址不能删除)
还有一个关键应用:生成“只看钱包”供“在线端”使用。
<ignore_js_op>




在线端/联网端:

     在“联网端”的机器上运行Armory,界面跟“离线端”是一样的,先进行设置:
      主界面点“File”-“Setting”调出设置界面。
    “Bitcoin Install Dir”一栏选中你的QT客户端所在的安装目录。
    “Bitcoin Home Dir”一栏选中QT客户端的工作目录。

<ignore_js_op>




    然后Armory就开始同步链块,“Synchronizing with Network ”一栏就是同步的进度,如果之前在QT客户端下同步过了,那这一步会很快。
    “Scanning Transaction History”这一步是运算出钱包余额等相关资料。我的电脑是4G内存,刚够基本要求,结果在这一步跑了几个小时,跑的时候逛吃内存。现在终于明白为什么几乎没什么普通用户使用Armory,因为它对内存占用特别大,一旦运行,几乎干不了其它事。你必须要搞一台高配电脑来运行它。

    按下图两个步骤,导入刚才在离线端生成的“只看钱包”。

<ignore_js_op>




等“Scanning Transaction History”的进程跑完就可以使用了。
在这里的钱包标志是“Watching-Only”,表示不包含BTC私钥。

<ignore_js_op>




    完成上面的设置步骤之后,就可以进行发送比特币的操作。

    步骤如下:
1.在联网端
  点击“Offline Transactions”, 之后点击“Create New Offline Transaction”创建一个新事务。
  然后点击“Send Bitcoins”来填写发送比特币的数量和接收地址。 这时“Send”按键是灰的,不可点击。
  点“Create Unsigned Transaction” 创建一个“未签证”的事务。 
  点“Save to file…” 会生成一个 “.unsigned.tx”为后缀的文件。
  把这个文件拷贝到离线端。

2.在离线端
  点击“Offline Transactions”, 后点“Sign Offline Tranasaction”打开签证界面。
  点“Load file...”载入刚才那个“.unsigned.tx”文件。
  点“Sign”进行签证。
  点“Save to file…”保存为一个“.signed.tx”为后缀的文件。 
  把这个签证好的文件拷贝到联网端。

3.回到联网端
  如果刚才这边的操作过程没有动,把“.signed.tx”文件放在与“.unsigned.tx”相同的目录,那么可以点 “Next Step” 继续操作,然后要弹出的窗口中把已签证的事务广播出去,完成交易。
  如果联网端被关掉了,那么打开之后按 “Offline Transactions” ,之后点击“Broadcast Transaction”再载入已签证的事务文件,确认后点“Ready to Broadcast!”就可以完成交易。


    这样只要你保证离线端的电脑不连接到互联网,那么你的私钥就不会在网上出现过,也就不会从网络被盗走。
    但是有的朋友也担心这样在两台电脑之间用U盘传递文件,会传播木马。这个理论上是有可能的。那么你把离线端的操作系统改成Windows以外的系统,或者设置一下让系统不要自动运行和不要双击运行U盘里的程序就行了。而且现在随便一个杀软件都可以灭掉靠U盘传播的木马。


============ 分割线 ================


  用Armory客户端,意味着需要两台电脑专用,其中一台还要高配置,如果我不想用这种方式,那么要怎么进行冷存储呢?

  我们可以按下面的步骤来操作:

一、首先是准备工作:
    你需要一台用于离线制作私钥的电脑,制作完私钥之后这台电脑的系统要删掉。所以你同时还需要懂得安装系统和格式化硬盘。如果需要把私钥打印到纸上保存,那么还需要一台打印机直联电脑。

以Windows系统为例,安装完操作系统之后还需要准备以下软件:

生成私钥:
有BTC客户端bitcoin-qt,Multibit等。
可以生成个性化地址的:vanitygen,
另外还有 脑钱包。


生成二维码的工具:erweimadayin 或其它同类软件

文本处理软件:Office或其它你认为满足要求的软件

其它工具:如果是打印到纸上,那么有必要对私钥进行一定程度的加密,可以用工具也可以用某种方法,总之要事先准备好。

在断网之前不要运行BTC客户端,因为一运行就会自动生成钱包。做完这一切之后就断开网络,如果用笔记本,那么要特别注意断开WIFI。


二、生成私钥

有三类方法,选一种就可以。

1.运行比特币客户端,新建一批地址,然后导出私钥。

  Bitcoin-qt客户端导出私钥的方法可以见我前面提到的《如何保护好我们的比特币》一文。
  Multibit客户端导出私钥可以直接通过菜单栏上选“工具”-“导出私钥”来操作。若是要打印到纸上,那不要选择对导出的私钥加密码。

2.用vanitygen生成私钥,详见我的另一篇文章《手把手教你如何拥有个性化的BTC地址http://8btc.com/thread-886-1-1.html

3.用脑钱包生成私钥。
  脑钱包是一个工具,根据你的提供的字符串生成私钥,这样只要你记住字符串,就什么时候都可以得到那个特定的私钥。你只要保证这个字串不会跟别人想的一样,不会被别人试出来,不会忘记,那么就是靠谱的保存方法。
  脑钱包程序的获得可以在电脑离线之前把这两个网页之一“另存为”保存到本地。
  http://p2pbucks.com/tools/brainwallet/index.html
  http://brainwallet.org/
  在本地可以通过浏览器打开运行,根据提示生成私钥就行了。

  脑钱包的一个应用例子可以参考:《脑钱包狂想曲http://8btc.com/forum.php?mod=viewthread&tid=817 主要是发挥你的想象力,但不要作茧自缚。


三、保存私钥

   除了脑钱包你记得方法就行,上面其它方式得到的私钥要保存起来。
   有两种保存途径,第一是保存到U盘等电子介质上(可靠性自己评估),第二是打印到纸上。
  如果是保存到电子介质上,那么可以直接保存,也可以压缩加密再保存(事先要准备相应的工具)。
  如果是打印到纸上,那么为了避免纸张被人看到或拍到泄露私钥,有必要对私钥进行一定程度的加密,例如在特定的位置上加某些字母,或是某种可逆的方法打乱顺序,或是用工具加密。这部分就靠你自己的想象力,原则有一点:不要把自己给防住了。为了以后导入私钥方便,可以把加密后的私钥制作成二维码一起打印到纸上。

四、验证私钥
  保存好了,那么你要怎么保证这些私钥和地址是有效且不出差错的呢?
  那就逆操作一遍。证明你的备份保存能够得回正确的私钥。把私钥在离线电脑上的另一个客户端上导入,对比地址是否正确,同进也可以对每个地址进行签名,然后把签名拿到其它地方进行验证。

五、删除操作系统
  做完第四步,证明私钥有效,地址有效,能从备份得到正确的私钥。那就删除操作系统,把整个硬盘都格式化。这样,就算你那个操作系统有木马也无所谓,私钥是断网后生成的,窃取你的私钥也没机会传出去。

六、启用
  某一天,你要用启用这些地址上的比特币。如果是电子介质保存的,那么有点麻烦,要在一台离线的电脑上操作,取出一个私钥,然后删掉操作系统,以免暴露整一批私钥。

  如果是从纸上导回,可以单独导回一个私钥。建议私钥用一次就作废,例如有A、B两个冷存储地址,A上有100BTC,你想转出20个,剩下的80个还是冷存储,那么把20BTC转出的同时把其余的80BTC转到冷地址B上(客户端都支持同时给多个地址发币的),A地址作废不再使用,这样可以最大限度地保障安全。

注意:如果你是用手机的扫描二维码,由于现在的手机应用节操不齐,你要保证这个应用不会收集你扫描的内容。

其它扩展:
    以上的方法是一个比较典型的过程,实现的手段可以很多,也可以做得很简单,就看你有什么办法去实现。你如果有一个树莓派,因为它的“硬盘”其实就是一个SD卡,换一个SD卡就相当于换一个操作系统,所以只要有一张专用的SD卡保存操作系统专用来处理离线私钥并且保管好就行了,这也是一个非常不错的解决方案。


如果觉得本文对你有帮忙,可以捐助 BTC:1N9shXD3V4DrAjBt9oqvZXPYf81DVvoooo

posted on 2015-10-29 14:59  liuhaitao  阅读(3455)  评论(0编辑  收藏  举报

导航