Skip to content

Commit 4a77633

Browse files
jonasnickapoelstra
authored andcommitted
Improve explanation of key cancellation attack in whitelist.md
1 parent 898c9f0 commit 4a77633

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/modules/whitelist/whitelist.md

+11-9
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ A less obvious scheme is to have a participant sign an arbitrary message with
3434
the sum of her key `P` and the whitelisted key `W`. Such a signature with the key
3535
`P + W` proves knowledge of either (a) discrete logarithms of both `P` and `W`;
3636
or (b) neither. This makes directly attacking participants' signing schemes much
37-
harder, but allows an attacker to whitelist arbitrary "garbage" keys by computing
38-
`W` as the difference between an attacker-controlled key and `P`. For Bitcoin,
39-
the effect of garbage keys is to "burn" stolen coins, destroying them.
37+
harder, but allows an attacker to whitelist arbitrary "cancellation" keys by
38+
computing `W` as the difference between an attacker-controlled key and `P`.
39+
Because to spend the funds the attacker must produce a signature with `W`, the
40+
coins will be unspendable until attacker and the legitimate participant owning
41+
`P` cooperate.
4042

41-
In an important sense, this "burning coins" attack is a good thing: it enables
43+
In an important sense, this "cancellation" attack is a good thing: it enables
4244
*offline delegation*. That is, the key `P` does not need to be available at the
4345
time of delegation. Instead, participants could choose `S = P + W`, sign with
4446
this to delegate, and only later compute the discrete logarithm of `W = P - S`.
@@ -47,7 +49,7 @@ the overall system security.
4749

4850
#### Signing with Tweaked-Difference-of-Keys
4951

50-
A modification of this scheme, which prevents this "garbage key" attack, is to
52+
A modification of this scheme, which prevents this "cancellation" attack, is to
5153
instead have participants sign some message with the key `P + H(W)W`, for `H`
5254
some random-oracle hash that maps group elements to scalars. This key, and its
5355
discrete logarithm, cannot be known until after `W` is chosen, so `W` cannot
@@ -60,8 +62,8 @@ delegation. However, we can get this back by introducing a new key, `P'`,
6062
and signing with the key `P + H(W + P')(W + P')`. This gives us the best
6163
of both worlds: `P'` does not need to be online to delegate, allowing it
6264
to be securely stored and preventing real-time attacks; `P` does need to
63-
be online, but its compromise only allows an attacker to whitelist "garbage
64-
keys", not attacker-controlled ones.
65+
be online, but its compromise only allows an attacker to whitelist keys he does
66+
not control alone.
6567

6668
### Our Scheme
6769

@@ -78,8 +80,8 @@ knows:
7880
1. The discrete logarithms of all of `W`, `P_i` and `Q_i`; or
7981
2. The discrete logarithm of `P_i` but of *neither* `W` nor `Q_i`.
8082
In other words, compromise of the online key `P_i` allows an attacker to whitelist
81-
"garbage keys" for which nobody knows the discrete logarithm; to whitelist an
82-
attacker-controlled key, he must compromise both `P_i` and `Q_i`. This is difficult
83+
"cancellation keys" for which the attacker alone does not know the discrete logarithm;
84+
to whitelist an attacker-controlled key, he must compromise both `P_i` and `Q_i`. This is difficult
8385
because by design, only the sum `S = W + Q_i` is used when signing; then by choosing
8486
`S` freely, a participant can delegate without the secret key to `Q_i` ever being online.
8587
(Later, when she wants to actually use `W`, she will need to compute its key as the

0 commit comments

Comments
 (0)