1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
|
Delivery-date: Fri, 28 Mar 2025 12:45:25 -0700
Received: from mail-yw1-f188.google.com ([209.85.128.188])
by mail.fairlystable.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
(Exim 4.94.2)
(envelope-from <bitcoindev+bncBDI23FE35EIBBSPYTO7QMGQES4SJRHQ@googlegroups.com>)
id 1tyFdr-0006ke-UB
for bitcoindev@gnusha.org; Fri, 28 Mar 2025 12:45:25 -0700
Received: by mail-yw1-f188.google.com with SMTP id 00721157ae682-6f2bc451902sf35565467b3.3
for <bitcoindev@gnusha.org>; Fri, 28 Mar 2025 12:45:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=googlegroups.com; s=20230601; t=1743191117; x=1743795917; darn=gnusha.org;
h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
:list-id:mailing-list:precedence:x-original-sender:mime-version
:subject:references:in-reply-to:message-id:to:from:date:sender:from
:to:cc:subject:date:message-id:reply-to;
bh=vdcBGBqMIisLFXtaSDaB7UBBJ6reKBiAA44FE3+XasM=;
b=pAh+aWt4zu3fysZT77X++OioP0dpvbnKGj2vjSroVsqyZbemBAlGbH9DlmLzo3UwI6
KK/3pOjMzUneGBNcZZPsgYK2Sc5INiKtpQxZFufM9A8GW9GCnGi4mp7FRZZQxrb8DHsL
o3gbmN6xhXJtzckisaxMEaD5A+gpkn4SKdwmb43Rgpyz3vGz+w16bW9Bm7c2uc3kMfJZ
/AmfSLfab/Zea0HgBB4MDw4DFNW40YlvD8IAoB9ADNc3Oh3QYv9uT+dqvG7NNvsEzrMP
+F2s5GnCnl/G4S6eNIqSCCJb66v3wvv3BIiLNEzD+1gCLc3DHeTXYVV6U9CTqxydP1+V
TuDg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1743191117; x=1743795917; darn=gnusha.org;
h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
:list-id:mailing-list:precedence:x-original-sender:mime-version
:subject:references:in-reply-to:message-id:to:from:date:from:to:cc
:subject:date:message-id:reply-to;
bh=vdcBGBqMIisLFXtaSDaB7UBBJ6reKBiAA44FE3+XasM=;
b=fvwufQJMB1uJzHliEJZkFvSqYbIliQGgAwJZWgCdB7DyWlK8zD5Ob2hT8uiGUK7o+G
3SrvMfrcVfsgoiRDb1Stnxzzb55AlYZcfOpcZf+4Yg5PPqJyRSzHHwkXwnEbVo7QGA3o
jDOK1YWVQzI20SqmBMYWLkxzNb/YWOacdpr8HXv6HYXX0dHdqA/mOemBuQ8NwEm6C5Al
AsVtFsYYa/Slo/Q8w3FKAKENC4N1q9D7P38lum+mMRj7AwAxFCTufFFWVQDUms/M6Vna
YpJq2pqRjf47nmjXIzgglRoO2orixK0za6/SwK+5n9q3d4fJvA8LuL+kuRA+aRdBc7no
PJaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1743191117; x=1743795917;
h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
:list-id:mailing-list:precedence:x-original-sender:mime-version
:subject:references:in-reply-to:message-id:to:from:date:x-beenthere
:x-gm-message-state:sender:from:to:cc:subject:date:message-id
:reply-to;
bh=vdcBGBqMIisLFXtaSDaB7UBBJ6reKBiAA44FE3+XasM=;
b=CVENa7ylQ+tlQVSeN452/DIDXgV7bYlQL/a2R3KmJmBLufeYaEBnh+UQ9KKDyV2R5g
+g1OQVrZyWMRUsMvDY24SN4+4bF6NChqYZTGpLZuEoPHLIeJ17Xn4FwGmVcGxEIu0kL4
Im5uf9xe/lLHwhnKMuCJlNJD6NoLE2BoRH5j4IPJAu/mrSxKvl8UqQAmFqOllPbcKUx5
pXat7W9sgAQFgqO4BYk6MS2mfq6nkIQdIlv7K5gN2hweSlacZrt9VBzo9OYg0NvetzCQ
6tZH4b9RLB/JAprPqP7paye+fJj7BuCnZGLwQNu6MIZYl1HL1Gxb/AfI6PSRiBehdKaT
JoHA==
Sender: bitcoindev@googlegroups.com
X-Forwarded-Encrypted: i=1; AJvYcCXlcWEupeOHEQy/8GGiMMHJ/GzUnfbNRSA8yZMz1DEXk3Y64G9/x065PAFFleo1r+urXGJnY1VPYD0P@gnusha.org
X-Gm-Message-State: AOJu0YydYdWT11u7G8/sV7FwHkgrRzU5OvVu8OkoZki2+q0WqC23QZd/
0p18Ljf8crTpOGqkocqeZ4RnBYVKJ1rplI/dvyBa8zeheJ/njiEK
X-Google-Smtp-Source: AGHT+IEYpyAUwwIOrEkZH9+u6gU576p4t4TeHKwaN1cJLtzT88a1r0scugAA2NGJvCWMIJE8Trs0ew==
X-Received: by 2002:a05:6902:2006:b0:e5e:14d4:e63d with SMTP id 3f1490d57ef6-e6b838d3265mr670683276.9.1743191117321;
Fri, 28 Mar 2025 12:45:17 -0700 (PDT)
X-BeenThere: bitcoindev@googlegroups.com; h=ARLLPAKPWK2T0oZaaKdfiKNLpM68HNXPvlYWkgLInKHAYNj4IQ==
Received: by 2002:a25:aa4d:0:b0:e60:8901:aead with SMTP id 3f1490d57ef6-e6942e6855fls621127276.2.-pod-prod-07-us;
Fri, 28 Mar 2025 12:45:13 -0700 (PDT)
X-Received: by 2002:a05:690c:6e09:b0:6fd:3d82:f900 with SMTP id 00721157ae682-70257275106mr9299177b3.20.1743191112870;
Fri, 28 Mar 2025 12:45:12 -0700 (PDT)
Received: by 2002:a05:690c:f09:b0:6fe:b496:fc0e with SMTP id 00721157ae682-70210e65fc6ms7b3;
Fri, 28 Mar 2025 12:28:55 -0700 (PDT)
X-Received: by 2002:a05:690c:fd3:b0:6fb:968b:d8f5 with SMTP id 00721157ae682-70257302dc5mr7950227b3.36.1743190133880;
Fri, 28 Mar 2025 12:28:53 -0700 (PDT)
Date: Fri, 28 Mar 2025 12:28:53 -0700 (PDT)
From: waxwing/ AdamISZ <ekaggata@gmail.com>
To: Bitcoin Development Mailing List <bitcoindev@googlegroups.com>
Message-Id: <d0a0e344-d777-49bc-8b3c-a3462f0d6836n@googlegroups.com>
In-Reply-To: <CALiT-Zrq0Nr9uNWDTMj3=VJ6TCcmeL3s+Jau+nEGHqYqFcfB+g@mail.gmail.com>
References: <450755f1-84c5-4f32-abe0-67087ae884d6n@googlegroups.com>
<1c7130d4-cbac-4404-968c-9eb7b4e2e4cbn@googlegroups.com>
<CALiT-Zrq0Nr9uNWDTMj3=VJ6TCcmeL3s+Jau+nEGHqYqFcfB+g@mail.gmail.com>
Subject: Re: [bitcoindev] Re: UTXO probing attack using payjoin
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_161136_807255403.1743190133581"
X-Original-Sender: ekaggata@gmail.com
Precedence: list
Mailing-list: list bitcoindev@googlegroups.com; contact bitcoindev+owners@googlegroups.com
List-ID: <bitcoindev.googlegroups.com>
X-Google-Group-Id: 786775582512
List-Post: <https://groups.google.com/group/bitcoindev/post>, <mailto:bitcoindev@googlegroups.com>
List-Help: <https://groups.google.com/support/>, <mailto:bitcoindev+help@googlegroups.com>
List-Archive: <https://groups.google.com/group/bitcoindev
List-Subscribe: <https://groups.google.com/group/bitcoindev/subscribe>, <mailto:bitcoindev+subscribe@googlegroups.com>
List-Unsubscribe: <mailto:googlegroups-manage+786775582512+unsubscribe@googlegroups.com>,
<https://groups.google.com/group/bitcoindev/subscribe>
X-Spam-Score: -0.5 (/)
------=_Part_161136_807255403.1743190133581
Content-Type: multipart/alternative;
boundary="----=_Part_161137_1217636125.1743190133581"
------=_Part_161137_1217636125.1743190133581
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Hi /dev/fd0 and all,
> The original transaction can be replaced by the attacker, and it would=20
only cost a few hundred sats or nothing if it's payjoin transaction. I=20
think such attacks could still be effective if the attacker has the budget=
=20
and motivation to spy on someone's wallet.
That is true but it is also directly addressed with a mitigation in the=20
section on the attack in BIP78; (already linked here but just to repeat:=20
https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#user-content=
-span_idprobingattackspanOn_the_receiver_side_UTXO_probing_attack=20
)
specifically it says "When the receiver detects an original transaction=20
being broadcast, or if the receiver detects that the original transaction=
=20
has been double spent, then they will reuse the UTXO that was exposed for=
=20
the next payjoin.".
However it is unclear whether that's part of the protocol specification, or=
=20
whether it should be. So there's at least something to discuss there.
In the blog post on substack, I don't see any discussion of whether the=20
mitigations proposed make sense. I think they do. Also that blog post=20
discusses altering the sender code to prevent sending the tx. An=20
implementation might differ, but at least in BIP78 it should be the=20
receiver who broadcasts the initial non-payjoin version after a short=20
timeout. That difference connects with the next point also:
One other important thing that is discussed in BIP78, there is a=20
difference between a "merchant" (or in any case, payment-receiving-server)=
=20
case vs. a peer to peer payments case. In the latter case you cannot simply=
=20
continuously ask for more and more "invoices" (payjoin urls) from the=20
counterparty. In the former case, you certainly can, and the mitigations=20
mentioned make sense there to prevent the "utxo collection" algorithm of=20
continuously failing to complete or double spending, across multiple=20
payment amounts.
> It was costless in the demo which could be fixed by bullbitcoin
Yeah I see a couple of related things there, BIP77 is more nuanced on the=
=20
"receiver broadcasts original after short delay" saying that an expiration=
=20
MAY be set and applied by receivers, which relates ack to the earlier point=
=20
that for a p2p payment arranged with both parties live is not exposed to a=
=20
repeated request attack, hence it may not be needed. I do think it comes=20
back to the "don't change the currently available utxo until it gets used"=
=20
statement in that BIP78 section mentioned above.
With that nuance even your modified-code-sender could be argued not to be=
=20
an issue, though I think I prefer the BIP78 inclusion of "receiver=20
broadcasts after an expiration" being a requirement, not a "MAY".
> Payjoin should only be used with trusted senders.
I mean, obviously, I don't agree with that.
And then there's the 10000ft view: if an attacker doesn't mind spending=20
coins, they can just .. do sender-side actual payjoins, over and over, to=
=20
try to collect utxos. After all the very first blockchain analysis paper by=
=20
Meiklejohn et al focused on exactly this; see how much info you can get by=
=20
actually paying at a merchant.
I think that whether this is a problem or not is deeply tied to that=20
inevitable conflict between the desire for privacy and the desire for=20
scalability/low cost. To never co-spend utxos means a wallet fragments to=
=20
infinite utxos. But to cospend maximally (as a naive merchant *might* do -=
=20
receive 1000 payments then send all of them at the same time into a cold=20
wallet) wipes out, at least most of the time, the privacy gain from not=20
reusing addresses in the first place. A payjoin based merchant flow, in the=
=20
simplest version, would end up linking the 1000 anyway (think a chain of=20
1000 payjoins with 1 merchant in and 1 merchant out), but with=20
substantially more deniability/lack of certainty at each step in terms of=
=20
both utxo and amount, and never being hit with "huge transaction during fee=
=20
spike". It should at least be *better*.
If those 1000 payjoins were an attacker, he only really learns about the=20
first utxo, if you snowball like that. To "read" your current wallet, he=
=20
somehow has to pay for a huge range of different amounts to try to entice=
=20
you to spend *different* utxos; it's not easy, but equally it's ridiculous=
=20
to claim that it doesn't leak anything.
Cheers,
AdamISZ/waxwing
On Thursday, March 27, 2025 at 9:19:38=E2=80=AFAM UTC-3 /dev /fd0 wrote:
> Hi jbesraa,
>
> > While the possibility of UTXO probing via Payjoin is a valid concern=20
> regarding privacy, it's important to note that it might not always come=
=20
> without cost for the attacker. The Payjoin recipient > needs to validate=
=20
> the initial request, ensuring the sender's inputs are broadcastable. This=
=20
> means the recipient could, in practice, broadcast the initial transaction=
=20
> even if the sender aborts the > Payjoin.
>
> > Furthermore, implementing strategies like maintaining a set of 'seen=20
> inputs' can make such probing attempts more easily detectable and less=20
> effective.
>
> The original transaction can be replaced by the attacker, and it would=20
> only cost a few hundred sats or nothing if it's payjoin transaction. I=20
> think such attacks could still be effective if the attacker has the budge=
t=20
> and motivation to spy on someone's wallet.
>
> /dev/fd0
> floppy disk guy
>
>
> On Wed, Mar 26, 2025 at 11:54=E2=80=AFPM jbesraa <jbe...@gmail.com> wrote=
:
>
>> While the possibility of UTXO probing via Payjoin is a valid concern=20
>> regarding privacy, it's important to note that it might not always come=
=20
>> without cost for the attacker. The Payjoin recipient needs to validate t=
he=20
>> initial request, ensuring the sender's inputs are broadcastable. This me=
ans=20
>> the recipient could, in practice, broadcast the initial transaction even=
if=20
>> the sender aborts the Payjoin. Furthermore, implementing strategies like=
=20
>> maintaining a set of 'seen inputs' can make such probing attempts more=
=20
>> easily detectable and less effective. While these measures don't elimina=
te=20
>> the privacy considerations entirely, they do highlight that recipients h=
ave=20
>> potential defenses and that probing isn't necessarily a risk-free endeav=
or=20
>> for the attacker.
>>
>> On Tuesday, March 25, 2025 at 1:48:15=E2=80=AFPM UTC+2 /dev /fd0 wrote:
>>
>> Hi everyone,=20
>>
>> Sometimes we are curious and want to know about UTXOs in other wallets.=
=20
>> Payjoin allows you to do this and the recipient would never doubt it=20
>> because it's a privacy tool. It's possible to find UTXO in recipient's=
=20
>> wallet without sending any bitcoin. It's called UTXO probing attack and=
=20
>> described in BIP 77-78.
>>
>> I have shared a demo with all the details in this [post][0]. I have used=
=20
>> bullbitcoin wallet for testing this because it was the only [wallet][1]=
=20
>> which supports payjoin v2 (send, receive) and testnet3.
>>
>> I think users should be aware of this tradeoff and the information they=
=20
>> share with the sender in payjoin. Payjoin should only be used with trust=
ed=20
>> senders.
>>
>> [0]:=20
>> https://uncensoredtech.substack.com/p/utxo-probing-attack-using-payjoin
>> [1]: https://en.bitcoin.it/wiki/PayJoin_adoption
>>
>> /dev/fd0
>> floppy disk guy
>>
>> --=20
>> You received this message because you are subscribed to the Google Group=
s=20
>> "Bitcoin Development Mailing List" group.
>> To unsubscribe from this group and stop receiving emails from it, send a=
n=20
>> email to bitcoindev+...@googlegroups.com.
>> To view this discussion visit=20
>> https://groups.google.com/d/msgid/bitcoindev/1c7130d4-cbac-4404-968c-9eb=
7b4e2e4cbn%40googlegroups.com=20
>> <https://groups.google.com/d/msgid/bitcoindev/1c7130d4-cbac-4404-968c-9e=
b7b4e2e4cbn%40googlegroups.com?utm_medium=3Demail&utm_source=3Dfooter>
>> .
>>
>
--=20
You received this message because you are subscribed to the Google Groups "=
Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to bitcoindev+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/=
d0a0e344-d777-49bc-8b3c-a3462f0d6836n%40googlegroups.com.
------=_Part_161137_1217636125.1743190133581
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div>Hi /dev/fd0 and all,</div><div><br /></div><div>> The original tran=
saction can be replaced by the attacker, and it would=20
only cost a few hundred sats or nothing if it's payjoin transaction. I=20
think such attacks could still be effective if the attacker has the=20
budget and motivation to spy on someone's wallet.</div><div><br /></div><di=
v>That is true but it is also directly addressed with a mitigation in the s=
ection on the attack in BIP78; (already linked here but just to repeat: htt=
ps://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#user-content-sp=
an_idprobingattackspanOn_the_receiver_side_UTXO_probing_attack )</div><div>=
<br /></div><div>specifically it says "When the receiver detects an origina=
l transaction being broadcast, or if
the receiver detects that the original transaction has been double=20
spent, then they will reuse the UTXO that was exposed for the next=20
payjoin.".</div><div><br /></div><div>However it is unclear whether that's =
part of the protocol specification, or whether it should be. So there's at =
least something to discuss there.</div><div><br /></div><div>In the blog po=
st on substack, I don't see any discussion of whether the mitigations propo=
sed make sense. I think they do. Also that blog post discusses altering the=
sender code to prevent sending the tx. An implementation might differ, but=
at least in BIP78 it should be the receiver who broadcasts the initial non=
-payjoin version after a short timeout. That difference connects with the n=
ext point also:</div><div><br /></div><div>One other important thing that i=
s discussed=C2=A0 in BIP78, there is a difference between a "merchant" (or =
in any case, payment-receiving-server) case vs. a peer to peer payments cas=
e. In the latter case you cannot simply continuously ask for more and more =
"invoices" (payjoin urls) from the counterparty. In the former case, you ce=
rtainly can, and the mitigations mentioned make sense there to prevent the =
"utxo collection" algorithm of continuously failing to complete or double s=
pending, across multiple payment amounts.</div><div><br /></div><div>> I=
t was costless in the demo which could be fixed by bullbitcoin</div><div><b=
r /></div><div>Yeah I see a couple of related things there, BIP77 is more n=
uanced on the "receiver broadcasts original after short delay" saying that =
an expiration MAY be set and applied by receivers, which relates ack to the=
earlier point that for a p2p payment arranged with both parties live is no=
t exposed to a repeated request attack, hence it may not be needed. I do th=
ink it comes back to the "don't change the currently available utxo until i=
t gets used" statement in that BIP78 section mentioned above.</div><div><br=
/></div><div>With that nuance even your modified-code-sender could be argu=
ed not to be an issue, though I think I prefer the BIP78 inclusion of "rece=
iver broadcasts after an expiration" being a requirement, not a "MAY".</div=
><div><br /></div><div>> Payjoin should only be used with trusted sender=
s.</div><div><br /></div><div>I mean, obviously, I don't agree with that.</=
div><div><br /></div><div>And then there's the 10000ft view: if an attacker=
doesn't mind spending coins, they can just .. do sender-side actual payjoi=
ns, over and over, to try to collect utxos. After all the very first blockc=
hain analysis paper by Meiklejohn et al focused on exactly this; see how mu=
ch info you can get by actually paying at a merchant.</div><div><br /></div=
><div>I think that whether this is a problem or=C2=A0 not is deeply tied to=
that inevitable conflict between the desire for privacy and the desire for=
scalability/low cost. To never co-spend utxos means a wallet fragments to =
infinite utxos. But to cospend maximally (as a naive merchant *might* do - =
receive 1000 payments then send all of them at the same time into a cold wa=
llet) wipes out, at least most of the time, the privacy gain from not reusi=
ng addresses in the first place. A payjoin based merchant flow, in the simp=
lest version, would end up linking the 1000 anyway (think a chain of 1000 p=
ayjoins with 1 merchant in and 1 merchant out), but with substantially more=
deniability/lack of certainty at each step in terms of both utxo and amoun=
t, and never being hit with "huge transaction during fee spike". It should =
at least be *better*.</div><div><br /></div><div>If those 1000 payjoins wer=
e an attacker, he only really learns about the first utxo, if you snowball =
like that. To "read"=C2=A0 your current wallet, he somehow has to pay for a=
huge range of different amounts to try to entice you to spend *different* =
utxos; it's not easy, but equally it's ridiculous to claim that it doesn't =
leak anything.</div><div><br /></div><div>Cheers,</div><div>AdamISZ/waxwing=
</div><br /><div class=3D"gmail_quote"><div dir=3D"auto" class=3D"gmail_att=
r">On Thursday, March 27, 2025 at 9:19:38=E2=80=AFAM UTC-3 /dev /fd0 wrote:=
<br/></div><blockquote class=3D"gmail_quote" style=3D"margin: 0 0 0 0.8ex; =
border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div dir=3D"=
ltr">Hi jbesraa,<div></div></div><div dir=3D"ltr"><div><br>>=C2=A0While =
the possibility of UTXO probing via Payjoin is a valid concern regarding pr=
ivacy, it's important to note that it might not always come without cos=
t for the attacker. The Payjoin recipient > needs to validate the initia=
l request, ensuring the sender's inputs are broadcastable. This means t=
he recipient could, in practice, broadcast the initial transaction even if =
the sender aborts the > Payjoin.<br><br>>=C2=A0Furthermore, implement=
ing strategies like maintaining a set of 'seen inputs' can make suc=
h probing attempts more easily detectable and less effective.<br><br></div>=
</div><div dir=3D"ltr"><div>The original transaction can be replaced by the=
attacker, and it would only cost a few hundred sats or nothing if it's=
payjoin transaction. I think such attacks could still be effective if the =
attacker has the budget and motivation to spy on someone's wallet.</div=
><div><br></div><div>/dev/fd0</div><div>floppy disk guy<br></div><div><br><=
/div></div><br><div class=3D"gmail_quote"></div><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Wed, Mar 26, 2025 at 11:54=E2=80=
=AFPM jbesraa <<a href data-email-masked rel=3D"nofollow">jbe...@gmail.c=
om</a>> wrote:<br></div></div><div class=3D"gmail_quote"><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex">While the possibility of UTXO probing vi=
a Payjoin is a valid concern=20
regarding privacy, it's important to note that it might not always come=
=20
without cost for the attacker. The Payjoin recipient needs to validate=20
the initial request, ensuring the sender's inputs are broadcastable.=20
This means the recipient could, in practice, broadcast the initial=20
transaction even if the sender aborts the Payjoin. Furthermore,=20
implementing strategies like maintaining a set of 'seen inputs' can=
make
such probing attempts more easily detectable and less effective. While=20
these measures don't eliminate the privacy considerations entirely, the=
y
do highlight that recipients have potential defenses and that probing=20
isn't necessarily a risk-free endeavor for the attacker.<br><br><div><d=
iv dir=3D"auto">On Tuesday, March 25, 2025 at 1:48:15=E2=80=AFPM UTC+2 /dev=
/fd0 wrote:<br></div><blockquote style=3D"margin:0px 0px 0px 0.8ex;border-=
left:1px solid rgb(204,204,204);padding-left:1ex">Hi everyone, <br><br>Some=
times we are curious and want to know about UTXOs in other wallets. Payjoin=
allows you to do this and the recipient would never doubt it because it=
9;s a privacy tool. It's possible to find UTXO in recipient's walle=
t without sending any bitcoin. It's called UTXO probing attack and desc=
ribed in BIP 77-78.<br><br>I have shared a demo with all the details in thi=
s [post][0]. I have used bullbitcoin wallet for testing this because it was=
the only [wallet][1] which supports payjoin v2 (send, receive) and testnet=
3.<br><br>I think users should be aware of this tradeoff and the informatio=
n they share with the sender in payjoin. Payjoin should only be used with t=
rusted senders.<br><br>[0]: <a href=3D"https://uncensoredtech.substack.com/=
p/utxo-probing-attack-using-payjoin" rel=3D"nofollow" target=3D"_blank" dat=
a-saferedirecturl=3D"https://www.google.com/url?hl=3Den&q=3Dhttps://unc=
ensoredtech.substack.com/p/utxo-probing-attack-using-payjoin&source=3Dg=
mail&ust=3D1743274526874000&usg=3DAOvVaw0wLolOGKRzZQnbyCOXEZdP">htt=
ps://uncensoredtech.substack.com/p/utxo-probing-attack-using-payjoin</a><br=
>[1]: <a href=3D"https://en.bitcoin.it/wiki/PayJoin_adoption" rel=3D"nofoll=
ow" target=3D"_blank" data-saferedirecturl=3D"https://www.google.com/url?hl=
=3Den&q=3Dhttps://en.bitcoin.it/wiki/PayJoin_adoption&source=3Dgmai=
l&ust=3D1743274526874000&usg=3DAOvVaw0YkPehwJD4ULQZ5hkAlz3U">https:=
//en.bitcoin.it/wiki/PayJoin_adoption</a><br><br>/dev/fd0<br>floppy disk gu=
y</blockquote></div>
<p></p></blockquote></div><div class=3D"gmail_quote"><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex">
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;Bitcoin Development Mailing List" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href data-email-masked rel=3D"nofollow">bitcoindev+...@googlegro=
ups.com</a>.<br>
To view this discussion visit <a href=3D"https://groups.google.com/d/msgid/=
bitcoindev/1c7130d4-cbac-4404-968c-9eb7b4e2e4cbn%40googlegroups.com?utm_med=
ium=3Demail&utm_source=3Dfooter" target=3D"_blank" rel=3D"nofollow" dat=
a-saferedirecturl=3D"https://www.google.com/url?hl=3Den&q=3Dhttps://gro=
ups.google.com/d/msgid/bitcoindev/1c7130d4-cbac-4404-968c-9eb7b4e2e4cbn%254=
0googlegroups.com?utm_medium%3Demail%26utm_source%3Dfooter&source=3Dgma=
il&ust=3D1743274526874000&usg=3DAOvVaw2y1OIOOeaGSVvx7iAWRU-y">https=
://groups.google.com/d/msgid/bitcoindev/1c7130d4-cbac-4404-968c-9eb7b4e2e4c=
bn%40googlegroups.com</a>.<br>
</blockquote></div>
</blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;Bitcoin Development Mailing List" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:bitcoindev+unsubscribe@googlegroups.com">bitcoind=
ev+unsubscribe@googlegroups.com</a>.<br />
To view this discussion visit <a href=3D"https://groups.google.com/d/msgid/=
bitcoindev/d0a0e344-d777-49bc-8b3c-a3462f0d6836n%40googlegroups.com?utm_med=
ium=3Demail&utm_source=3Dfooter">https://groups.google.com/d/msgid/bitcoind=
ev/d0a0e344-d777-49bc-8b3c-a3462f0d6836n%40googlegroups.com</a>.<br />
------=_Part_161137_1217636125.1743190133581--
------=_Part_161136_807255403.1743190133581--
|