Tangem 如何为私钥生成高强度熵

本文有以下語言版本:

Author logo
Patrick Dike-Ndulue
Post image

无助记词模式下,Tangem Wallet 通过内置于安全元件的硬件 True Random Number Generator(真随机数生成器)获取熵,该芯片已通过德国 BSI PTG.2(AIS 31)标准认证。


如果你选择使用助记词,则熵由经过审计的随机数生成方法产生:

  • 在 Android 上,我们采用 SecureRandom,这是一种加密安全的伪随机数生成器(CSPRNG),其输出通过 BoringSSL/Conscrypt 进入内核熵池。该熵池由中断时序、传感器及 SoC 的硬件 TRNG 共同提供种子。这意味着攻击者无法预测或还原你的密钥材料。
     
  • 在 iOS 上,我们使用系统提供的 SecRandomCopyBytes API,可生成适用于加密密钥的安全随机字节。熵来源于 Secure Enclave 的硬件真随机数生成器(TRNG)。
     

什么是加密钱包中的熵?

熵是钱包用于生成私钥的原始随机性。以比特为单位,熵越多,可生成的密钥空间越大。

钱包在初始化时生成一次熵。之后的每个密钥、地址和签名都基于固定的数学规则生成,不再引入新的随机性。

因此,生成过程具有不可逆性。如果熵不足,任何后续操作都无法增强助记词的安全性。
 

私钥需要多少熵?

如果熵不足,攻击者可利用密钥生成过程中的模式或偏差,比起穷举全部数学空间,更高效地猜测密钥。 


私钥必须在任何对手看来都完全随机;熵低就意味着有效搜索空间大大缩小,把原本天文级难度的问题变成有可能被计算或分析攻破的目标。

实际应用中,这种随机性来自高质量熵源,输入到加密安全的随机数生成器。如果熵源薄弱(如仅依赖时间戳、进程 ID 或系统噪声不足),生成的私钥就会带有隐藏结构。

现实中确有攻击者利用这一点,例如通过设备上熵不足的 RNG 恢复 Bitcoin 私钥,有效熵甚至降至 32 位,导致大规模密钥被盗。

足够的熵可确保密钥安全性与底层算法相匹配。以 secp256k1 椭圆曲线密钥为例(Bitcoin 及许多项目采用),该曲线对抗数学攻击约等于 128 位安全性,因此私钥至少需要相同数量的熵,才能避免成为安全短板。

Tangem 如何在无助记词模式下生成熵?

在无助记词模式下,Tangem Card 在安全元件芯片内生成私钥。芯片内置硬件真随机数生成器,通过物理过程(如热噪声、振荡器抖动)产生随机性。具体流程如下:
 

步骤 1:TRNG 采集物理噪声。 

硬件真随机数生成器从硅片内不可预测的微观变化中采集熵,包括晶体管级别的热噪声、量子效应产生的电子噪声、高频振荡器的时序抖动等。此阶段输出的是带有偏差和相关性的原始比特流。
 

步骤 2:消除偏差。 TRNG 采用条件算法(如加密哈希或白化处理)去除模式,使输出在所有可能值上均匀分布。同时持续对原始流进行健康检测,若噪声源退化则自动停止。该步骤与第一步结合,由 CC EAL 认证库实现,库随芯片出厂,未经任何修改,并通过严格认证测试。
 

步骤 3:芯片提取 256 位数据。 从处理后的输出中截取 256 位序列,作为候选私钥,仅此而已。
 

步骤 4:芯片校验候选值是否在曲线阶范围内。 椭圆曲线私钥必须是特定范围内的有效标量。以 secp256k1 为例,私钥需为 1 到 n-1 之间的整数,n 为基点阶,略小于 2^256。

若候选值为零,或等于/大于 n,则判为无效,芯片会丢弃并重新采集。发生概率约为 2^-128,极低。
 

步骤 5:该值成为主密钥。 这一步让流程无需助记词。这 256 位直接作为主私钥进入密钥体系,无需助记词。 

步骤 6:芯片计算公钥。 公钥通过将私钥与 secp256k1 的生成点 G 相乘获得,这是一个单向不可逆过程。

步骤 7:由公钥推导地址。 以 Bitcoin 为例,指定路径下的压缩公钥依次经过 SHA-256 和 RIPEMD-160,得到 20 字节哈希,编码方式决定地址类型。

BIP-84 路径下的密钥生成 bech32 编码的 P2WPKH 地址,BIP-44 路径生成 Base58Check 编码的 P2PKH 地址。两条路径的密钥不同,因此对应不同地址。
 

步骤 9:私钥始终留在受保护内存中。 私钥始终保存在安全元件芯片内,整个生命周期不外泄。芯片内部完成交易签名,仅输出签名结果,密钥不会传到手机、App 或网络。
 

Tangem 如何为助记词生成熵?

在助记词模式下,Tangem App 在手机上生成助记词。App 从平台加密随机数生成器请求随机字节,iOS 使用 SecRandomCopyBytes,Android 使用 SecureRandom

这两种接口都是加密安全的伪随机数生成器,种子由操作系统熵池提供,设备在启动和运行时不断从硬件熵源补充。

App 再将这些字节按 BIP-39 标准转换为助记词:先加校验和,分成 11 位一组,每组对应 2048 个单词表中的一个。12 个单词编码 128 位熵,24 个单词编码 256 位熵。

 

无助记词模式消除了最大丢失风险——即助记词被他人发现、拍照或销毁。助记词模式则便于在其他钱包迁移,但会在芯片外产生密钥副本。


用户为何无法自行检测熵?

40 位熵生成的密钥与 256 位熵生成的密钥在表面上没有任何区别,都能生成有效地址,助记词数量和格式也一致。
 

用户在家无法自行检测熵水平,这也是熵缺陷能在出厂产品中潜伏多年的原因。因此,验证工作必须在购买前完成,依赖厂商公开的审计报告和具体技术解答。
 

熵攻击的原理是什么?

攻击者无法通过公钥地址直接计算出私钥,这需要解决离散对数问题,目前在现实条件下不可行。


但如果熵薄弱,攻击者无需计算,只需遍历有缺陷生成器可能产生的密钥集合,推导其对应地址,再与区块链上的余额进行比对。

地址即为检索目标。这也是熵攻击能精准找到有余额钱包、而忽略空钱包的原因。

 

选择钱包时应注意什么

选择硬件钱包时,应优先考虑具备强大且可验证熵生成能力的设备,因为这直接决定了私钥的不可预测性。


近期的熵攻击事件说明,开源固件并不等于更高安全性。大多数用户无法自行审计源码,而高级攻击者却能据此发现并利用隐蔽漏洞。

最佳做法是尽量减少关键固件的非必要暴露,并交由权威安全专家独立审计。最终,安全性取决于架构设计、全面测试与独立验证。——Andrey Lazutkin,CTO

建议选择配备认证安全元件、且固件经独立审计的硬件钱包。固件负责指导安全元件的使用,若实现存在缺陷,即便硬件再安全也会被攻破。因此每次固件升级都应由可靠专家审查。

Tangem 的安全架构已通过 Kudelski Security、Riscure 和 Cure53 等顶级实验室的独立评测,为钱包整体安全性提供保障。

Author logo
作者 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
經審核 Andrey Lazutkin

Chief Technology Officer at Tangem.