Tangem Wallet 如何备份私钥

Author logo
Andrey Lazutkin
Post image

为了防止因丢失加密钱包而失去对加密资产的访问权限,你需要通过创建副本来备份私钥。通常,这一步是通过助记词完成的。但问题在于,助记词极其不安全,因为任何人只要获得它就能访问你的资产
 

这也是 Tangem Wallet 提供安全私钥克隆方案的原因。你可以将私钥克隆到一张或两张备份 Tangem Card,无需担心其中某一张丢失或被盗。

那么,这种备份方式到底有多安全?下面来详细解析 Tangem Wallet 是如何实现这一点的。
 

私钥的生成

在激活前,Tangem Wallet 并没有私钥(如图中的 Kpriv)。当你购买 Tangem Wallet 时,收到的产品尚未激活,也没有生成私钥,因此可以完全确定全球范围内不会有任何该私钥的副本存在。毕竟,无法复制一个尚未存在的东西。
 

在钱包激活过程中,Tangem 芯片会通过认证的硬件真随机数生成器(TRNG)生成一组数字序列,并据此生成新的私钥(如图所示)。想了解详细流程,可阅读我们的文章 如何为加密钱包生成私钥(含/不含助记词)

在此阶段,只有唯一一份私钥。之后,你需要安全地创建一到两份备份副本。

备份前的准备

在备份过程中,私钥需要以防止被窃取的方式传输到其他卡片上,并且用户必须始终掌控私钥副本的数量。

因此,私钥备份流程包含两个关键环节:

  1. 首先,确保私钥被转移到另一张 Tangem Card 上。
     
  2. 传输过程中,私钥必须防止被拦截,即必须加密,只有接收卡才能解密。

在卡片生产时,芯片会生成一对专属密钥对:Kcardpriv(私钥)和 Kcardpub(公钥)。这些密钥仅用于每张卡的身份认证,与未来用户的钱包无关。它们的作用是让卡片证明自身为 Tangem 原厂产品。

该密钥对中的公钥会由 Tangem 使用厂家私钥 KTangempriv 进行签名,生成 Cert_Card 证书,用于卡片验证。

厂家公钥 KTangempub 也会写入芯片。此密钥对所有卡片都相同,是源卡与目标卡之间“信任链”的起点。

 

How Tangem Wallet backs up private keys

 

第一步挑战:双向认证

为了让每张卡在备份过程中都能“确认”对方也是正品 Tangem Wallet,需要通过卡片密钥和签名建立加密“信任链”。

激活时,每张卡会生成一对一次性通讯密钥对——KlinkpubKlinkpriv,并用自己的 Kcardpriv 私钥对该公钥签名,生成 Sign_Attest 签名。

 

How Tangem Wallet backs up private keys_2

随后,卡片会将 Sign_Attest、Klinkpub 和 Kcardpub 信息发送给另一张卡。

这样就形成了如下信任链:KTangempub — Kcardpub — Klinkpub。所有卡片都知道厂家公钥 KTangempub,并用它验证 Cert_Card 证书。如果匹配对方的 Kcardpub,则用该公钥验证 Sign_Attest 签名。 

 

如果 Sign_Attest 能验证对方的 Klinkpub,就说明通讯另一端的卡确实由 Tangem 生产,且 Klinkpub 密钥未被篡改,可用于计算共享的 Ktrans 备份密钥。

NEW_03_en.png

第二步挑战:生成共享加密密钥

此时,两张卡需要生成一个共享对称密钥 Ktrans,源卡用它加密用户私钥,目标卡用它解密。由于它们之间的通讯通道是由不可信设备提供,无法直接在一张卡上生成密钥后传给另一张卡。这个问题通过 Diffie–Hellman 密钥协议解决。
 

卡片刚刚交换了已验证且可信的 Klinkpub 密钥,每张卡用自己的 Klinkpriv 和对方的 Klinkpub 共同生成对称 Ktrans 加密密钥,最终两张卡得到的 Ktrans 完全一致。这正是 Diffie–Hellman 协议的精妙之处。
 

如果攻击者控制了用户手机并试图“窃听”卡片交换过程,他们只能 获得 KlinkpubKcardpub 公钥,因为卡片只会传输这些内容。Klinkpriv 密钥不会泄露,攻击者无法生成相同的 Ktrans。

 

How Tangem Wallet backs up private keys_3

 

加密密钥交换

利用获得的 Ktrans 对称密钥,第一张卡会加密一组数据,其中包含用户私钥、访问码以及私钥备份数量(2 或 3 张卡)。
 

卡片将加密后的 ENC 消息发送给第二张卡,后者用同一个 Ktrans 解密。如果此时有人截获了 ENC,没有 Ktrans 密钥也无法解密包内内容。
 

How Tangem Wallet backs up private keys_4

为第三张卡完成备份的流程完全相同,只是卡片会生成新的 Klink 密钥对,因此 Ktrans 密钥也与备份第二张卡时不同。


Tangem 芯片固件允许只进行一次备份。无论是给出还是接收私钥后,卡片都将停止启动备份流程,且该私钥无法恢复。
 

如果你对 Tangem Wallet 执行恢复出厂设置,芯片会遗忘 Kpriv 密钥。此时可重新激活钱包,生成新密钥并完成新备份。但请注意,旧密钥在重置后会被销毁。

Author logo
作者 Andrey Lazutkin

Chief Technology Officer at Tangem.

Author logo
經審核 Andrey Lazutkin

Chief Technology Officer at Tangem.