分离密钥靓号地址:无需信任卖家的购买方式
生成靓号地址的人同时也生成了它的私钥——除非搜索是在公钥上进行的。本文讲解分离密钥(split-key)购买的原理、背后的算术、它能和不能保护什么,以及如何自行验证。
本页目录
每一家出售现成靓号地址的店铺都有同一个漏洞,任何条款都无法堵上:为了造出这个地址,卖家先造出了它的私钥。 他们可以告诉你副本已删除,却无法向你证明。
分离密钥购买不去争论这个前提,而是直接取消它。卖家照样做昂贵的工作——GPU 每秒筛查数百万个候选地址——却始终不曾拥有你最终拿到的那把钥匙。
背后的算术
TRON 的密钥位于 secp256k1 曲线上:私钥是一个数 d,对应的公钥是点 d·G。关键性质在于这个映射是可加的:
`` (d + s)·G = d·G + s·G ``
于是搜索可以一分为二:
- 你的浏览器随机选取
d,只把公开的一半P = d·G发出去。 - 矿场尝试偏移量
s = 1, 2, 3, …,计算P + s·G并逐一检查地址。它永远不知道d,因此也永远不知道d + s。 - 矿场返回那个命中你图案的
s。 - 你的浏览器计算
d + s——这正是被找到的那个地址的私钥。
偏移量可以明文传输,因为它单独毫无价值:没有 d 它只是一个数字,而从 P 反推 d 就是离散对数问题,secp256k1 的安全性正建立在它之上。
双方各自知道什么
| 你 | 卖家 | |
|---|---|---|
你的一半 d | 知道 | 不知道 |
公开的一半 P | 知道 | 知道 |
偏移量 s | 知道 | 知道 |
最终密钥 d + s | 知道 | 不知道 |
不存在任何一个环节,使完整的密钥出现在卖家的硬件上。不在内存里,不在日志里,不在备份里——这些碎片在那里从未相遇。
它不能保护什么
分离密钥不是万灵药,暗示它是的店铺卖给你的是安心,而不是安全。
- 它不能验证卖家的代码。 你的浏览器必须真的在本地生成密钥。打开开发者工具,在下单时观察 Network 标签,确认离开页面的是 128 个十六进制字符的公钥,绝不是 64 个字符的私钥。
- 它不能弥补糟糕的随机数。 如果
d来自可预测的来源,最终密钥同样可预测。任何现代浏览器的crypto.getRandomValues都没问题;手敲出来的"随机"数字则不行。 - 它不能消除地址投毒。 好记的结尾也让骗子更容易做出相似地址。每次转账前仍要核对完整地址。
- 它不会替你备份。 这是真正的代价,而且相当苛刻:卖家无法恢复你的那一半,因为他从未持有过。丢了,地址就永久消失。
为什么它比现货更花时间
货架上的地址是提前生成的,所以即时交付。分离密钥地址在有人用你的公钥去搜索之前根本不存在,别人的订单也无法复用。请预留该图案长度所需的搜索时间,再加上启动 GPU 的时间。
四到五个字符用这种方式并不划算:你自己的笔记本用浏览器内的免费生成器几秒就能找到,而且根本不存在第二方。分离密钥大致从七个字符起才物有所值——那时的搜索需要你宁愿租用而非自购的硬件。
如何验证它确实生效
偏移量返回后,你的浏览器应先做两件事再显示任何内容:由 d + s 推导出地址,并与承诺给你的地址比对。若不一致,密钥就是错的,不应显示任何东西。
你可以独立重复这项检查。把密钥导入 TronLink,比对它显示的地址全部 34 个字符。钱包是从密钥本身推导地址的,所以吻合即证明密钥正确——无需信任任何网站。
常见问题
偏移量需要保密吗?
不需要,也没有必要。偏移量只是一次加法的一半,另一半从未离开你的浏览器。公开它并不会让攻击者得到任何他无法从地址自行算出的信息。
卖家能不能搜出一把他自己也能用的密钥?
对你的订单不能。矿场拿到的是 P,而从 P 出发所能到达的每一个地址,都需要你的 d 才能动用资金。他当然可以另外生成一个无关的地址塞给你——正因如此,你的浏览器才要核对交付的密钥是否推导出承诺的那个地址。
如果我弄丢了自己的那一半怎么办?
地址就此丢失,没有找回途径。这不是条款,而是算术事实:卖家握着一个加法的一半,无法重建另一半。密钥一显示就立刻保存,并且存放在生成它的浏览器之外的地方。
这和多重签名钱包一样吗?
不一样。多重签名意味着多把密钥都能为同一个账户授权交易。分离密钥只是一次性的构造技巧:两个数字相加一次,得到的是一把普通的单一私钥,对应一个普通的 TRON 账户。
HaoKey 提供这种方式吗?
提供,目录中的每一个靓号都可以——就在普通购买按钮旁边的"无需信任"选项。我们的安全页面把它列为三条免于把密钥托付给我们的出路中的第一条。