<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nonce on Time Friend</title><link>https://time-friend.com/zh/tags/nonce/</link><description>Recent content in Nonce on Time Friend</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 27 Jun 2026 17:29:00 +0000</lastBuildDate><atom:link href="https://time-friend.com/zh/tags/nonce/index.xml" rel="self" type="application/rss+xml"/><item><title>Cardano SecondFi 签名事件: 一条链上交易, Ed25519 私钥为何泄露</title><link>https://time-friend.com/zh/archive/secondfi-ed25519-nonce-signature-leak/</link><pubDate>Sat, 27 Jun 2026 17:29:00 +0000</pubDate><guid>https://time-friend.com/zh/archive/secondfi-ed25519-nonce-signature-leak/</guid><description>&lt;p&gt;6 月底, Cardano 生态的 SecondFi 钱包(前身是知名的 Yoroi)出事, 圈内一片哗然。没有智能合约被黑, 没有私钥从设备上被偷走, 甚至没有钓鱼——攻击者只是&amp;quot;读&amp;quot;了区块链。短短三天, 374 个钱包约 1600 万 ADA(当时约 240 万美元)被洗劫一空, 官方又紧急把约 1.29 亿 ADA 转移到第三方托管抢救。&lt;/p&gt;
&lt;p&gt;更反常的是官方的警告: &lt;strong&gt;&amp;ldquo;请不要把助记词恢复到其他 Cardano 钱包&amp;rdquo;&lt;/strong&gt;。通常只有助记词泄露才需要换钱包, 这次为什么反过来?&lt;/p&gt;
&lt;p&gt;因为这次的&amp;quot;伤&amp;quot;, 伤在签名上。&lt;/p&gt;
&lt;h2 id="签名也会受伤"&gt;签名也会&amp;quot;受伤&amp;quot;&lt;/h2&gt;
&lt;p&gt;Cardano 用的是 Ed25519 签名。要理解它为什么出事, 先看签名是怎么算出来的:&lt;/p&gt;


&lt;div class="mermaid-wrap"&gt;
&lt;pre class="mermaid" role="img" aria-label="Mermaid diagram"&gt;flowchart TB
 A[交易哈希 M] --&amp;gt; C
 B[密钥材料 kR&amp;lt;br/&amp;gt;保密] --&amp;gt; C
 C[&amp;#34;nonce r = SHA-512(kR || M)&amp;lt;br/&amp;gt;保密且不可预测&amp;#34;] --&amp;gt; D[签名运算]
 E[私钥] --&amp;gt; D
 D --&amp;gt; F[签名 → 永久上链]&lt;/pre&gt;
&lt;/div&gt;


&lt;script type="module"&gt;
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
mermaid.initialize({
 startOnLoad: false,
 theme: 'base',
 themeVariables: {
 background: '#1d1f21',
 primaryColor: '#282c34',
 primaryBorderColor: '#3e4147',
 primaryTextColor: '#c9cacc',
 lineColor: '#5a5f66',
 edgeLabelBackground: '#1d1f21'
 }
});
mermaid.run({ querySelector: 'pre.mermaid' });
&lt;/script&gt;


&lt;p&gt;签名靠一个&amp;quot;一次性秘密&amp;quot;保护, 在 Ed25519 里叫 &lt;strong&gt;nonce r&lt;/strong&gt;: 它必须既保密、又不可预测。正确实现里, r 由密钥材料加交易哈希一起推导出来, 别人算不出 r, 也就没法从公开签名反推私钥。&lt;/p&gt;</description></item></channel></rss>