01
先把“钱包”拆开
对象一旦混在一起,安全建议就会变成口号。
你打开钱包 App,看见一个地址和余额,很容易以为“币就在这个软件里”。 但真正的结构分成链上与链外:余额记录在以太坊状态中;秘密留在你的签名环境里; 钱包只是把两边接起来的工具。[1]
账户
由地址索引的一条链上状态记录。它可以持有 ETH,也可能由代码控制;账户不是 App。
地址
20 字节公开标识,用来定位账户与接收资产。可以分享,但分享会暴露活动关联。
私钥
经典 EOA 的签名秘密。复制私钥,就复制了控制能力;链上没有“改密码”按钮。
公钥
由私钥单向计算出的椭圆曲线点,可验证签名并参与地址生成,不负责保密。
钱包
生成或导入密钥、构造待签名内容、连接网络并展示状态的界面或签名系统。
助记词
常见钱包把根随机性编码成人可抄写的词组。它通常能恢复整棵密钥树,不只一个地址。
可以公开
链上与身份层
- 地址与 EIP-55 大小写
- 余额、交易、合约交互
- 公钥或签名恢复结果
需要谨慎
设备与元数据
- 扩展公钥与地址集合
- 钱包历史与联系人
- 待签名域、金额、授权
绝不可分享
签名与恢复根
- 助记词、BIP39 passphrase
- 私钥、扩展私钥
- 硬件签名设备的解锁凭证
- 钱包密码 / PIN
- 通常只保护这台设备上的 App、加密密钥文件或硬件设备。忘记后可用恢复材料重建;它不是助记词,也不会改变链上私钥。
- BIP39 passphrase
- 参与“助记词 → seed”计算的可选输入。任何不同字符都会得到另一棵有效钱包;遗失时通常没有“密码错误”提示,只有完全不同的地址。
- 资产
- ETH 是账户状态里的余额;代币通常是合约存储中的记录。卸载钱包不会删除资产,泄露控制秘密却可能让别人改变这些记录。
所有互动只使用抽象标签和固定演示值。不要把真实助记词、私钥、passphrase 或钱包密码输入任何教程、聊天、搜索框或“验证网站”。
02
从一个秘密,到一个地址
地址不是随机用户名;它是数学关系的公开末端。
经典 EOA 的私钥是 secp256k1 曲线阶范围内的非零整数。钱包必须用密码学安全随机源生成它; 人脑编词、生日、键盘轨迹都不是随机源。公钥由标量乘法得到,地址再由公钥哈希得到。
公钥 Q = d × G
EOA 地址 = 最后 20 字节 ( Keccak-256( x || y ) )
Interactive · 01
逐步查看地址派生链
私钥是控制秘密
它不是“256 个随便的比特”,而是曲线阶范围内安全随机选出的非零整数。真实值必须一直留在受控签名环境中。
当前:私密。 这一步能产生签名,任何副本都具有同等控制能力。
为什么只能向前算?
由 d 计算 Q = dG 很快;从 Q 反推出 d,
则对应椭圆曲线离散对数问题。在目前可行计算范围内,这条路被认为不可行。
哈希又把公钥压成 20 字节地址,因此公开地址不会直接暴露私钥。
常见未压缩公钥编码以 0x04 开头;以太坊地址计算使用后面的 64 字节
x || y,不把这个格式前缀放进 Keccak-256。随后取哈希最右侧 20 字节并加 0x。
[1]
EIP-55 只帮你发现一部分输错
地址本体是 20 字节;十六进制字母的大小写可以按地址哈希编码成校验模式。 这不增加地址长度,也不证明“对方就是你想找的人”,只是在支持 EIP-55 的软件中降低随机抄错仍被接受的概率。 [8]
攻击者通常不会逆向破解曲线;他们会偷走现成私钥、骗你签名、替换收款地址,或让备份在火灾与遗忘中同时失效。安全工程的重点因此落在人、设备与流程。
03
签名证明的是“授权”
不是加密,不是口令,也不是一张可以放心点掉的弹窗。
签名器先对明确编码的内容求哈希,再用私钥生成 ECDSA 签名。 网络或合约用签名恢复/验证签名者,确认“这份内容被对应密钥授权”,却不需要看见私钥。
用户侧 · SIGN
公开传递
网络 / 合约侧 · VERIFY
Interactive · 02
你究竟在签哪一种内容?
交易签名:签名覆盖的是规范编码后的字段集合,不是钱包界面的一张截图。
ECDSA 签名里有什么?
- 消息摘要 z
- 待签内容按明确规则编码后得到的哈希。编码或任意字段改变,摘要就改变,原签名不再对应。
- 签名 nonce k
- 每次签名内部使用的临时秘密。若重复、偏置或泄露,私钥可能被恢复。成熟实现使用安全随机方案或 RFC 6979 一类确定性生成法,用户不应自行选择。
- r 与 s
- ECDSA 的两个标量。Homestead 之后,以太坊交易要求低
s值以消除一种签名可塑性表示。 - v / yParity
- 帮助从签名恢复公钥的分支信息。传统交易的
v可按 EIP-155 编入 chain ID;现代 typed transaction 通常把yParity单独保存。
签名也不是万能登录:离线签名可被合约兑换成资产权限,后果可能比链上交易更隐蔽。
三种签名,三个不同边界
ERC-191 为已签数据定义前缀,使它不会被直接当作一笔 RLP 交易;
personal_sign 属于其中一个版本。EIP-712 再把复杂数据做成有类型的结构,并加入域分离,
让钱包有机会展示名称、chain ID、验证合约和字段。[9][10]
但“结构化”不等于“安全”。EIP-712 规范本身明确不提供完整重放保护;应用仍要正确使用
chainId、verifyingContract、nonce、deadline 等业务边界。
你也仍需读懂授权额度、接收方和有效期。
任何能让你签名的页面都在请求某种授权。看不懂对象、目标域、额度或截止时间,就取消;“不花 Gas”只说明签名发生在链外,不说明它没有资产后果。
04
12 个词不是魔法
BIP39 把机器生成的随机性变成人能抄写的编码。
助记词不是从词典里随意挑词,也不是把一句名言“哈希一下”。 BIP39 先生成 128–256 位熵,附加一小段 SHA-256 校验和,再按 11 位切块映射到 2048 词表。 [4]
词数 MS = ( ENT + CS ) / 11
12 词 = 128 位熵 + 4 位校验;24 词 = 256 位熵 + 8 位校验
Interactive · 03
拆解助记词的位结构
12 词结构:校验和主要帮助发现一部分抄写错误,不加密词组,也不能阻止偷看者恢复钱包。
从助记词到 seed
password = NFKD(mnemonic),
salt = NFKD("mnemonic" + passphrase),
iterations = 2048, output = 64 bytes )
passphrase 不是“给同一钱包加一道登录密码”。它参与计算,所以每个不同 passphrase 都产生另一棵有效密钥树。 拼写、空格、大小写或 Unicode 规范化差异都可能把你带到另一组地址。没有服务器帮你判断哪个才是“正确答案”。
不要自己编助记词;不要把助记词截图、复制到云笔记或发给自己;不要在尚未设计独立备份时随意启用 BIP39 passphrase。多一个秘密,也多一个永久丢失点。
24 词一定比 12 词更安全吗? MISCONCEPTION 01
在正确生成与保管的前提下,24 词承载更高熵;但现实安全常由恶意签名、钓鱼、备份泄露和设备妥协决定。错误生成或拍照上传的 24 词,不会因为更长而安全。
校验和能修复助记词吗? MISCONCEPTION 02
不能。BIP39 校验位很短,只能排除部分错误组合,既不定位错词,也不证明来源可信。恢复测试必须在受控环境中完成。
所有钱包都使用 BIP39 吗? MISCONCEPTION 03
不是。BIP39 是广泛采用的应用层约定,不是以太坊协议强制规则。某些智能账户、托管系统、MPC 钱包或恢复方案可能不向用户暴露 BIP39 助记词。
05
一颗种子,长出一棵密钥树
HD 的价值是可重复派生;风险是根泄露会放大到整棵树。
BIP32 的 Hierarchical Deterministic Wallet 把 seed 变成主扩展私钥与 chain code, 再按索引递归派生子节点。只备份根材料,理论上就能重建大量账户;同理,根材料泄露也会暴露所有后代。 [5]
IL → master private key · IR → master chain code
Interactive · 04
读懂常见以太坊派生路径
m/44′/60′/0′/0/0m/44′/60′/0′/0/1m/44′/60′/0′/0/2当前路径:m/44′/60′/0′/0/0。三个带撇号层级使用 hardened derivation;最后两层通常是普通派生。
撇号代表 hardened derivation
普通子公钥可以从父扩展公钥继续派生,便于“只看不签”的系统生成地址; hardened 子节点则不能只靠父扩展公钥派生。BIP44 在 purpose、coin type 与 account 三层使用 hardened 派生, 后两层通常使用普通派生。[6]
extended public key 包含公钥与 chain code,能展开一整个普通派生子树,因此会暴露大量地址关联。 更严重的是:父扩展公钥若与其某个非 hardened 子私钥同时泄露,可以推回父扩展私钥。 它应当被当作敏感元数据,而不是随手粘贴的收款地址。
为什么恢复后有时“余额不见了”?
seed 只决定密钥树;钱包还要知道使用哪条派生路径、扫描哪些账户与地址、连接哪条网络。 不同软件的默认路径或账户发现策略可能不同。恢复后看到零余额,先核对软件来源、派生路径与网络, 不要立即把助记词交给在线“恢复服务”。
m/44′/60′/… 中的 60 是 SLIP-44 为 Ether 分配的 coin type;以太坊主网 chain ID 是 1。一个服务于钱包派生,一个服务于网络与重放边界,不能混用。
06
攻击者不解数学题
他们寻找泄露的秘密、失效的恢复与未经理解的授权。
安全模型要从“会发生什么坏事”开始,而不是从购买哪一款设备开始。 同一个控制根同时面临丢失、复制、诱骗、设备入侵与错误恢复;每类风险需要不同防线。
Interactive · 05
选择一种失败场景
AVAILABILITY FAILURE
唯一恢复副本消失
设备损坏、纸张受潮或住所灾害同时消灭签名器与备份。链上资产仍在,但没有人再能满足控制规则。
核心对策:彼此独立、离线、可读且经过演练的恢复副本。
可用性:只防偷、不防丢,会把保险箱变成永久封印。
建立这些习惯
- 在可信设备与官方来源中初始化钱包
- 根备份离线保存,至少考虑一种地点级灾害
- 在签名设备屏幕上核对网络、地址、金额与合约
- 日常交互钱包与长期储存钱包分层
- 先做小额测试,再做大额迁移或新地址收款
- 定期检查代币授权与智能账户恢复规则
不要这样做
- 截图、云同步、邮件或聊天发送助记词
- 把真实秘密输入网站来“验证是否正确”
- 只看地址首尾几位就批准大额转账
- 认为硬件钱包能自动识别所有恶意意图
- 把无限 token allowance 当作一次连接权限
- 在慌乱中相信主动联系你的“官方客服”
硬件钱包解决哪一部分?
它把私钥生成与签名隔离在专用设备中,即使电脑被控制,私钥也不必离开设备。 但设备签出的内容仍可能是恶意的;如果屏幕只显示哈希、数据被截断,或你没有核对目标, 隔离签名不能替你理解授权。ethereum.org 也把离线私钥与逐项核对交易列为不同的安全措施。 [3]
授权不会因为“断开网站”而自动消失
钱包与网站断开通常只是前端会话结束。已经写进代币合约的 allowance、已签名但仍有效的 permit, 或智能账户中的 session key,可能继续有效。安全退出要看具体授权规则:必要时撤销、降低额度、等待过期, 或把资产迁往未受影响的控制域。
不要只改钱包 App 密码。使用可信、未受影响的签名环境把资产和关键权限迁移到全新的控制根;同时检查代币授权、跨链资产、质押与智能账户恢复角色。旧根一旦被复制,就无法“收回副本”。
07
备份不是抄完就算
可恢复、保密、可继承,三者要同时成立。
一份没有验证过的备份只是希望。真正的恢复设计要回答: 哪些材料能重建控制权、谁能接触、哪些灾害会同时毁掉副本、你是否记得派生路径与 passphrase。
Interactive · 06
检查恢复计划是否形成闭环
尚未形成闭环:从“识别恢复根”开始;不要在本页记录任何具体秘密或地点。
安全的恢复演练怎么做?
- 先创建一个完全独立、没有真实资产的测试钱包。
- 记下用于验证的公开地址,不记录或上传真实秘密。
- 清除测试设备上的钱包状态,再从备份恢复。
- 核对恢复出的地址、账户序号与派生路径是否一致。
- 确认流程后,再设计高价值钱包;不要拿主钱包做第一次演练。
把词组任意分成几段会改变风险,却没有自动带来标准化纠错、门限恢复或完整性保护。需要门限备份时,应选用经过审计、明确支持的方案,并把恢复演练纳入流程;不要自创密码学。
还要为“未来的你”留什么?
除根秘密外,恢复可能需要钱包类型、使用的 passphrase 约定、派生路径、智能账户地址、 guardian 或多签成员、硬件设备兼容信息。说明文档不应包含足以直接控制资产的全部材料, 但要让授权继承者知道如何在不向陌生人暴露秘密的前提下重建流程。
08
控制权不只有一把私钥
“谁能签名”正在扩展为“什么规则允许状态改变”。
本章的私钥—地址—签名模型准确描述经典 EOA,却不是所有现代账户的最终形态。 合约钱包可以把控制规则写成代码:多签、限额、延迟、guardian、设备密钥轮换与 session key。
单密钥控制
规则简单、兼容性强;根私钥丢失或泄露时,协议没有内建恢复与撤销。
多方共同授权
例如 2-of-3 签名,降低单点失败;同时引入成员协调、升级与继承治理。
可编程验证
可支持 passkey、限额、恢复、批处理与赞助 Gas;安全边界转向合约代码与角色配置。
分布式或托管控制
用户可能看不到完整私钥;要理解谁能冻结、恢复、合谋或拒绝服务。
账户抽象让账户提供自己的验证逻辑,而不只接受固定 EOA 规则。 ERC-4337 通过 UserOperation、Bundler 与 EntryPoint 实现高层交易系统; EIP-7702 则允许 EOA 委托代码。它们能改善恢复与权限管理,也把新的风险引入实现代码、升级权与恢复角色。 [14]
“没有助记词”可能降低钓鱼面,却不自动消除账户接管。你仍要问:验证密钥在哪里、恢复由谁触发、是否有延迟和限额、升级权归谁、某个服务离线后还能否取回控制。
把所有钱包放进同一套问题
- 谁能授权?
- 单私钥、多个签名者、设备凭证、guardian,还是托管机构?
- 授权了什么?
- 单笔交易、结构化消息、长期 token allowance、session key,还是升级实现?
- 如何撤销?
- 换控制根、链上撤销、等待过期、时间锁恢复,还是完全不可撤销?
- 如何恢复?
- 离线备份、门限成员、社会恢复、机构流程,还是没有任何恢复路径?
09
把控制链闭合
从随机秘密到状态改变,每一步都有不同的公开性与失败方式。
现在可以把第五章压成一句话: 安全随机性生成密钥,公钥导出地址,签名授权具体内容,钱包组织这些能力,恢复方案保证控制权不会随设备一起消失。
分清六个对象
账户、地址、钱包、私钥、公钥与助记词不再混成“钱包账号”。
讲清单向链
能从私钥讲到 secp256k1、公钥、Keccak-256、20 字节地址与 EIP-55。
理解签名边界
知道签名证明授权而不加密内容,并能区分交易、ERC-191 与 EIP-712。
设计恢复闭环
能解释 BIP39、BIP32、派生路径与不同失败场景对应的防线。
六题校准
1. “钱包里存着 ETH”为什么不准确?
2. 标准 12 词 BIP39 助记词的位结构是什么?
3. BIP39 passphrase 输入错一个字符,通常会怎样?
4. 关于 EIP-712,哪项最准确?
5. 为什么扩展公钥需要比普通公钥更谨慎?
6. 助记词疑似泄露后,只修改钱包 App 密码够吗?
下一章会把“签名授权”放进一笔真实交易:钱包如何构造字段、节点如何恢复发送者、交易如何进入交易池、验证者如何打包,以及区块确认究竟确认了什么。
10
术语与一手资料
课程给你地图,规范告诉你边界。
核心术语
secp256k1 ELLIPTIC CURVE
以太坊经典 EOA 签名使用的椭圆曲线。私钥是标量,公钥是曲线点;安全性依赖从公钥反推私钥的困难。
Keccak-256 HASH FUNCTION
以太坊广泛使用的 256 位哈希函数。名称常与标准 SHA3-256 混用,但两者填充规则不同;地址派生使用 Keccak-256。
ECDSA DIGITAL SIGNATURE
椭圆曲线数字签名算法。用私钥对摘要签名,用公钥验证;以太坊还利用恢复信息从签名恢复公钥/地址。
签名 nonce / k EPHEMERAL SECRET
每次 ECDSA 签名内部的临时秘密,不是账户交易 nonce。复用或偏置可能暴露私钥。
BIP39 MNEMONIC TO SEED
规定如何由熵与校验和生成助记词,以及如何用 PBKDF2-HMAC-SHA512 将助记词和可选 passphrase 转成 seed。
BIP32 HD KEY TREE
规定如何从单一 seed 生成主扩展密钥,并递归派生普通或 hardened 子密钥。
BIP44 / SLIP-44 PATH CONVENTION
BIP44 定义五层路径语义;SLIP-44 分配 coin type,Ether 为 60。两者是钱包互操作约定,不是 EVM 共识规则。
domain separation SIGNING BOUNDARY
让相同结构或内容在不同应用、合约、网络或版本中得到不同待签摘要,减少签名被跨域复用的机会。
官方与标准原文
-
01
ethereum.org — Ethereum accounts 账户、密钥对、公钥到地址、钱包与账户区别的官方基础说明。
-
02
ethereum.org — Ethereum wallets 钱包作为账户交互工具、钱包类型与基础安全责任。
-
03
ethereum.org — Security and scam prevention 恢复词、硬件钱包、交易核对、授权额度与常见诈骗的官方安全建议。
-
04
BIP-39 — Mnemonic code for deterministic keys 熵、校验和、词数、NFKD、PBKDF2-HMAC-SHA512 与 passphrase 的规范来源。
-
05
BIP-32 — Hierarchical Deterministic Wallets 扩展密钥、chain code、普通与 hardened 派生、主密钥生成和安全含义。
-
06
BIP-44 — Multi-account hierarchy
m / purpose′ / coin_type′ / account′ / change / index的五层结构。 -
07
SLIP-44 — Registered coin types 为 BIP44 路径维护 coin type 登记;Ether 对应索引 60。
-
08
ERC-55 — Mixed-case checksum address encoding 以大小写编码地址校验信息的算法、兼容性与误检概率。
-
09
ERC-191 — Signed Data Standard 已签数据前缀、版本字节、intended validator、结构化数据与 personal_sign。
-
10
EIP-712 — Typed structured data hashing and signing 类型哈希、domain separator、可读结构化签名与安全考虑。
-
11
EIP-155 — Simple replay attack protection 传统交易签名中 chain ID 的引入与跨链重放边界。
-
12
EIP-2 — Homestead hard-fork changes 交易签名低
s规则与签名可塑性动机。 -
13
RFC 6979 — Deterministic DSA and ECDSA 无需外部高质量随机源的确定性 ECDSA 临时值生成程序。
-
14
ethereum.org — Account abstraction 智能账户、恢复规则、EIP-7702 与 ERC-4337 的当前官方概览。
目录 PDF 把第五章压缩为三大主题:密钥与地址、数字签名、助记词与钱包安全。现有课程将每章扩展为五课;本课是第五章的总装与安全实践课,因此从零重建完整控制链,再把重点落到恢复与签名前判断。