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(公钥)。这些密钥仅属于该卡,与未来持卡用户的钱包无关,仅用于证明卡片的真实性,并告知 App 该卡由 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.