Tangem Wallet 如何备份私钥
为了避免因丢失加密钱包而失去加密资产的访问权限,你需要通过创建副本来备份私钥。通常,这一步是通过助记词来完成的。然而,助记词极其不安全,因为任何人只要拿到助记词就能直接使用你的资产。
这也是 Tangem Wallet 提供安全私钥克隆方案的原因。你可以将私钥克隆到一张或两张备份 Tangem Card 上,无需担心其中某一张丢失或被盗。
那么,这种备份方式到底有多安全?下面我们来详细解析 Tangem Wallet 是如何实现这一点的。
私钥的生成
在激活前,Tangem Wallet 并没有私钥(Kpriv,如下图所示)。购买 Tangem Wallet 时,你收到的包装尚未激活,也没有生成私钥,因此可以完全确保全球范围内不存在未被记录的私钥副本。毕竟,无法复制一个尚未存在的东西。
在钱包激活过程中,Tangem 芯片会通过认证的硬件随机数发生器(TRNG)生成一组数字序列,并据此生成新的私钥,如下图所示。想了解详细流程,可阅读我们的文章 如何为加密钱包生成私钥(含/不含助记词)。
在此阶段,只有唯一一份私钥。之后,你需要安全地创建一到两个备份副本。
备份准备
在备份过程中,必须以防止被窃取的方式将私钥传输到其他卡片上,并且用户必须始终掌控私钥副本的数量。
因此,私钥备份流程包含两个子步骤:
- 首先,确保私钥被传输到另一张 Tangem Card 上。
- 传输过程中,私钥必须防止被拦截,即必须加密,确保只有接收卡能够解密。
卡片生产时,芯片会生成专属的密钥对:Kcardpriv(私钥)和 Kcardpub(公钥)。这些密钥仅属于该卡,与未来持卡用户的钱包无关,仅用于证明卡片的真实性,并告知 App 该卡由 Tangem 生产。
该密钥对中的公钥会由 Tangem 使用厂商私钥 KTangempriv 签名,生成 Cert_Card 证书,用于卡片验证。
厂商公钥 KTangempub 也会写入芯片。该公钥对所有卡片都相同,作为源卡与目标卡之间“信任链”的起点。

第一个挑战:双向认证
在备份过程中,为确保每张卡都能“确认”对方是真正的 Tangem Wallet 卡,需要通过卡片的密钥和签名建立加密“信任链”。
激活时,每张卡会为与其他卡通信生成一次性密钥对——Klinkpub 和 Klinkpriv,并用自己的 Kcardpriv 私钥对公钥进行签名,生成 Sign_Attest 签名。

随后,卡片会将 Sign_Attest、Klinkpub 和 Kcardpub 信息发送给另一张卡。
这样就建立了如下信任链:KTangempub — Kcardpub — Klinkpub。每张卡都知道厂商公钥 KTangempub,并用它验证 Cert_Card 证书。如果匹配对方卡的 Kcardpub,则用该公钥验证 Sign_Attest 签名。
如果 Sign_Attest 与对方卡的 Klinkpub 匹配,说明通信另一端的卡确实由 Tangem 生产,且 没有人篡改其 Klinkpub 密钥,可据此计算共享的 Ktrans 备份密钥。

第二个挑战:获取共享加密密钥
此时,双方卡片需要生成一个共享对称密钥 Ktrans,源卡用来加密用户私钥,目标卡用来解密。由于它们之间的通信通道由不可信设备提供,无法直接在一张卡上生成密钥后传给另一张卡。这个问题通过 Diffie–Hellman 密钥协议得到解决。
卡片刚刚完成了经过验证和信任的 Klinkpub 密钥交换,每张卡用自己的 Klinkpriv 和对方的 Klinkpub 生成对称 Ktrans 加密密钥,最终两张卡得到的 Ktrans 是完全一致的。这正是Diffie–Hellman 协议的“魔法”。
如果攻击者控制了用户手机并能“窃听”卡片交换过程,他们只能获取 Klinkpub 和 Kcardpub 公钥,因为卡片只会传输这些内容。Klinkpriv 密钥始终不可访问,因此攻击者无法生成相同的 Ktrans。

加密密钥交换
利用获得的 Ktrans 对称密钥,第一张卡会加密包含用户私钥、访问码以及私钥备份数量(2 或 3 张卡)的数据集。
随后卡片将加密后的 ENC 消息发送给第二张卡,第二张卡用相同的 Ktrans 进行解密。如果此时有人截获了 ENC,也无法获知任何内容,因为没有 Ktrans 密钥就无法解密数据包。

为第三张卡完成备份的流程完全相同,只是卡片会生成新的 Klink 密钥对,因此 Ktrans 密钥也会与第二张卡备份时不同。
Tangem 芯片固件仅允许完成一次备份。无论是给出还是接收私钥后,卡片都不会再发起备份流程,且该私钥将无法恢复。
如果你对 Tangem Wallet 进行恢复出厂设置,芯片会遗忘 Kpriv 密钥。此时你可以重新激活钱包,生成新密钥并完成新的备份。但请注意,重置后旧密钥会被彻底销毁。