主页 > imtoken怎么注册 > 比特币钱包及其安全性简介

比特币钱包及其安全性简介

imtoken怎么注册 2023-09-09 05:08:22

前两天介绍了一些关于TEE、区块链和比特币钱包的东西! 可能你对比特币钱包不是很了解,(本文来自知乎内容,整理,编辑)

TEE的账本和比特币硬件钱包应用

TEE与区块链技术---Rivetz

1、首先,比特币可以理解为一个256bit的私钥。 可以理解为这个私钥是一个随机数,不能重复。 历史上数次由随机数导致的丢币事件(例如blockchain.info曾经有过2-3次随机数事件),都是因为程序错误。 私钥决定了比特币的归属,必须加以保护。

2、地址可以理解为一个256bit的公钥,也就是存放比特币的地方。 地址由上述私钥成对生成,但地址不能计算出私钥。 比特币地址以1开头,通过私钥计算出对应的地址后,即可向该地址转入比特币。 只有私钥的持有者才能使用这个地址上的比特币。 地址是公开的。 拥有该地址的私钥就拥有转移到该地址的比特币。

3.区块链,区块链是一个“账本”。 实际上,它是中本聪为比特币设计的一种数据结构,旨在“将比特币账户的存储去中心化”。 因此,本质上,区块链上记录的所有信息就是A转给B 5个比特币,就这么简单。 这个分类账必须是自我验证的:因此,

① 本账本设计成区块结构,每隔一段时间会产生一个新的区块,并将账户添加到新的区块中,区块中的账户不能再修改;

② 这个账本中的账户不要设计成链表(一种来回链接的数据结构)比特币的安全性,这样每个账户都可以尽快查询到上一个账户进行验证,并顺着链。 预验证,最后任何一笔交易都可以验证到原来的原始交易(即最初被挖出的交易); 这样就实现了去中心化和自我验证,这就是区块链数据结构的目的。

什么比特币钱包最安全_比特币的安全性_英文邮件性勒索比特币

账户以分散的方式存储在区块链上,即存储在比特币网络的每个节点上,而不是私钥或地址上。 那么,地址的当前余额是多少? 这种问题需要在区块链上问,区块链上有比特币历史上所有的账户,而且账户都是公开的。

比特币钱包:比特币钱包实际上是一个“私钥、地址和区块链数据的管理工具”。 比如私钥的随机数一定要生成吧? 生成后还要计算地址对吧? 是否需要维护相关的区块链数据? 收支账目也得列吧? 它必须能够收款,并且必须能够付款,对吗? 所有这些都必须通过工具来完成,我们统称为“比特币钱包”。

根据区块链数据的维护方式,我们可以将钱包分为:

1、全节点(如bitcoin-core核心钱包),维护所有区块链数据(目前50GB以上),完全去中心化,同步所有数据;

2、SPV轻钱包,只维护与自身相关的区块链数据,基本是去中心化的(依赖于比特币网络上的其他全节点),只同步与自身相关的数据;

3、中心化钱包,不依赖比特币网络,只依赖自己的中心化服务器,不同步数据,所有数据都从自己的中心化服务器获取;

从去中心化的角度,我们希望更多的人使用全节点钱包,这样比特币网络上的节点就会更多。 但由于区块链数据量大,严重影响了正常的用户体验,因此,SPV轻钱包模式越来越受欢迎,越来越多的钱包解决方案开始转向SPV。 由于中心化钱包不依赖于比特币网络,因此在流量和体验上具有优势。 但由于依赖第三方中心化服务,如果服务不可用,钱包将不可用,用户也需要信任第三方服务。

根据使用的硬件设备,我们可以将钱包分为:

比特币的安全性_什么比特币钱包最安全_英文邮件性勒索比特币

1、电脑钱包,钱包软件运行于PC操作系统(Windows、MacOS、Linux等);

2、手机钱包、Android、iOS等;

3. 在线钱包(如blockchain.info),运营和云服务,私钥加密存储在服务器上,通过浏览器访问;

4、硬件钱包,运行在专门定制的硬件上,可能需要配合电脑或手机使用;

除了上述分类方法外,还有一种所谓的“链上、链下”分类方法,产生的“钱包”称为“链下钱包”。 其实本质上,我们并没有比特币交易叫做“链下交易”,也不应该把这种服务叫做“链下钱包”,我们应该称之为“银行”或者“链下钱包” . 在这种情况下,你手上的所谓比特币其实只是平台上的一个数字,并不是比特币网络上真正的比特币,而是平台欠你的钱,所以我们应该避免把这样的平台称为“钱包”越多越好。 比如交易所其实就是存托平台,各种理财平台、云计算平台等也是存托平台。 这些平台都属于“链下”的范畴,我们应该称它们为“银行”或“存币平台”,而不是“链下钱包”。

我们知道私钥的安全可以通过TEE技术来保证,也可以通过SE的USB屏蔽来保证,那么除了私钥的安全之外,如何保证交易的安全呢?

我们知道,数字货币不能像金属货币(如黄金)那样仅通过实物转移来转移所有权——也就是说,当 A 将一块黄金交给 B 时,A 一定不再拥有这块黄金。 A将数字货币转账(签名)给B后,A仍可将同一笔交易转账给C,因为A持有私钥,且两次签名均为有效签名,构成“双花”。 因此,必须有一种机制来保证每笔交易只能被使用一次,即只有没有被使用过的签名交易才能成为有效签名。 以往的加密货币无法有效解决双花问题,因此无法摆脱对第三方中心化机构认证(第三方信任)的依赖。

UTXO:Unspent TXO(未花费的交易输出):只有“尚未花费”的交易签名才能成为有效签名。 UTXO(Unspent Transaction Outputs)是未花费的交易输出,是比特币交易生成和验证的核心概念。 交易构成了一套链式结构。 所有合法的比特币交易都可以追溯到一笔或多笔交易的输出。 这些链条的源头是挖矿奖励,终点是当前未花费的交易产出。 所有未花费的输出都是整个比特币网络的 UTXO。 比特币规定每笔新交易的输入必须是某笔交易未花费的输出,每笔输入还需要用之前输出对应的私钥进行签名,每个比特币节点都会将当前的UTXO存储在整个区块链上,全网节点通过UTXO和签名算法验证新交易的合法性。 这样,节点就不需要追溯历史来验证新交易的合法性。

什么比特币钱包最安全_比特币的安全性_英文邮件性勒索比特币

假设你是Alice,你有一个比特币钱包,里面有一个比特币地址,里面有一个UTXO,UTXO里面有10BTC的余额。 现在你想转10个BTC给Bob(不考虑手续费),那么生成的Transaction就很简单了(用你的UTXO作为输入,Bob的地址作为输出)。

现在,情况变得有点复杂,你只需要转 5 BTC 给 Bob,那么 Transaction 就会变得有点复杂(1 input 还是指你的 UTXO,2 outputs,1 是给 Bob 的地址 5BTC,另一个给自己地址 5BTC)。

问题来了。 转给我的5个BTC是用原来的地址还是新创建的地址? 这是比特币中的标准策略,称为:更改地址。 现在让我们看看为什么比特币会制定这样的政策? 在没有改地址政策之前,我们的转账方式是这样的:

所有剩余的 BTC 都被转回发送地址。 因为比特币的区块链是公开查询的,所以你可以通过这种方式轻松追踪A的支付行为和他的财富状况,没有任何隐私可言。 所以比特币推出了变更地址政策(非强制),在新模式下的工作方式如下:

为每个转移的余额创建一个新地址。 其实上图中的C是用户A的另一个地址。

在一个Transaction的输出中,输出是有序的(index),总是把目标地址放在最前面(index为0)会导致交易行为泄露。 为了进一步增强隐私性,会在此基础上增加shuffleOutputs(洗牌)功能,打乱Transaction中outputs的顺序,随机排列。 经过几次这样的转账,你就无法追查到A的交易行为。

这是一个完美的解决方案,并已被广泛使用。 但是,这给钱包的安全带来了巨大的风险,这也是我们今天文章的主要观点。

现在我们大多数人使用比特币钱包的标准步骤是(没有研究在线钱包和交易所,它们有额外的安全问题):

比特币的安全性_什么比特币钱包最安全_英文邮件性勒索比特币

1.下载一个比特币钱包(PC或移动端)

2.备份钱包(钱包里的钥匙)

3.各种转入转出

我们觉得很安全,因为我已经备份了我的钱包,即使我的电脑死了或者我的手机丢了,我仍然可以用备份来恢复。 恩,那就对了! 但前提是你不执行转出操作! 一旦您执行转账操作,您的钱包可能会为您生成一个新地址,而这个新地址可能不会包含在您的备份中!

假设你的钱包里有100BTC,你进行了多次转账操作,一共转出了50BTC。 突然有一天你的手机丢了(钱包在手机里),你赶紧买了一部新手机,装了一个新钱包,拿出备份恢复了,却发现钱包余额变成了0. 因为您没有备份您剩余的50BTC所在地址,所以这是转账过程中生成的新地址!

以下是笔者的手机钱包转账。 红框内的地址是新生成的地址比特币的安全性,笔者上次备份时没有。

我们这里说是可能的,因为现在不同的钱包采用不同的模型。 目前通用的机型分为以下几种:

单地址钱包,这种类型是最原始的没有找零地址方案的钱包; 随机地址池钱包,这类钱包一开始会随机给你生成一个地址池,比如包含100个地址(有的可以通过-keypool参数设置池的大小)。 100次转账范围内,无需生成新地址。 但是随着次数的增加,还是会出现同样的问题; level指定地址池钱包(HD钱包),通过密码生成主私钥,再通过主私钥生成若干个子私钥; 可定制,支持多种模式钱包;

什么比特币钱包最安全_英文邮件性勒索比特币_比特币的安全性

怎么解决?

如果不关心隐私问题(因为大部分人不关心交易行为的泄露,因为地址本身是匿名的,他们更关注币种的安全性),可以使用单地址钱包。 在线钱包也是如此。

对于使用比特币钱包的用户,要看钱包类型(尤其是非HD钱包,目前大部分都在使用非HD钱包)。 通常需要更多的备份。 一定要记住,要么不转账,要么转账后可能需要马上备份!

附录():

HD钱包全称Hierarchical Deterministic Bitcoin Wallet

传统钱包的问题在于,一个钱包可能持有一堆关键地址,每个地址都有一些比特币。 这样在备份钱包的时候,需要备份所有的密钥。 但是如果后面生成了新的地址,就需要重新备份。 事实上,每次生成新地址时,都需要进行备份。 HD 钱包允许您从一个主(根)密钥创建大量子密钥。 这意味着一旦你控制了主密钥,你就可以生成所有的子密钥,并且主密钥和子密钥形成了一个树状结构。 所以你不需要经常备份你的钱包,你只需要在创建钱包的时候备份一次,因为你可以从主密钥重新创建所有的子密钥。

HD Wallet 还带来了一些新功能,例如从父公钥生成所有子公钥而不需要任何私钥。 具体来说,您的主私钥备份在纸钱包中并离线存储在安全的地方。 你手头有主公钥,有了这个公钥,你就可以生成所有的子公钥。 举一个实际的例子,我们想开一家接受比特币支付的在线商店。 您可以离线存储您的私钥,只将公钥放在公网的服务器上。 你的网站可以使用这个公钥为网站上的每个产品生成一个支付地址,或者为你的每个客户生成一个唯一的地址,甚至为每笔交易生成一个地址(如何使用取决于你的想象)。 而且因为私钥是离线存储的,所以没有人可以侵入你的服务器并窃取比特币。

HD 钱包还有一个额外的好处,就是让您可以控制组织中的谁控制哪些密钥。 与商业组织的组织结构类似,HD 钱包也将密钥组织成树状结构。 你可以为你的组织中的每个分支部门创建一个密钥,把私钥给这个分支部门,这个部门就可以在它的分支上花钱,而你,因为你有主私钥,所以你可以看到和在整棵树上花费硬币。

想让你的会计师看到所有的交易,但不想让他花你的钱? 没问题,你可以把任意层级的公钥给他,他可以看到该层级下的所有交易,也不能消费任何币。