summaryrefslogtreecommitdiff
path: root/5a/9c3cb334ab87d89f42fe8653c11339a834a109
blob: de1fa6795bdbe7bf0de0da032c31c57a99164465 (plain)
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
Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191]
	helo=mx.sourceforge.net)
	by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <mh.in.england@gmail.com>) id 1Y5YXb-0007fv-7Z
	for bitcoin-development@lists.sourceforge.net;
	Mon, 29 Dec 2014 11:31:15 +0000
Received-SPF: pass (sog-mx-1.v43.ch3.sourceforge.com: domain of gmail.com
	designates 74.125.82.45 as permitted sender)
	client-ip=74.125.82.45; envelope-from=mh.in.england@gmail.com;
	helo=mail-wg0-f45.google.com; 
Received: from mail-wg0-f45.google.com ([74.125.82.45])
	by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
	(Exim 4.76) id 1Y5YXC-0004Lw-VX
	for bitcoin-development@lists.sourceforge.net;
	Mon, 29 Dec 2014 11:31:15 +0000
Received: by mail-wg0-f45.google.com with SMTP id b13so18654390wgh.4
	for <bitcoin-development@lists.sourceforge.net>;
	Mon, 29 Dec 2014 03:30:44 -0800 (PST)
MIME-Version: 1.0
X-Received: by 10.194.61.168 with SMTP id q8mr107190448wjr.53.1419852642829;
	Mon, 29 Dec 2014 03:30:42 -0800 (PST)
Sender: mh.in.england@gmail.com
Received: by 10.194.188.9 with HTTP; Mon, 29 Dec 2014 03:30:42 -0800 (PST)
In-Reply-To: <3685166.ROb67lzbMM@coldstorage>
References: <CANEZrP1tGYOsShk5Z91_JwH7E0pX8WcyT_-ZBkrWBqZAyrcd1A@mail.gmail.com>
	<3685166.ROb67lzbMM@coldstorage>
Date: Mon, 29 Dec 2014 11:30:42 +0000
X-Google-Sender-Auth: ih4LrnGfE13t_X8OcClXaPAOtW0
Message-ID: <CANEZrP0GsuiCF4oHGnTnVXwUsc0dNBOTtusr_CFn+29SxYYwHw@mail.gmail.com>
From: Mike Hearn <mike@plan99.net>
To: Thomas Zander <thomas@thomaszander.se>
Content-Type: multipart/alternative; boundary=047d7bacbeb668ce86050b593498
X-Spam-Score: -0.5 (/)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
	sender-domain
	0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
	(mh.in.england[at]gmail.com)
	-0.0 SPF_PASS               SPF: sender matches SPF record
	1.0 HTML_MESSAGE           BODY: HTML included in message
	0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
	not necessarily valid
	-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
	0.0 TIME_LIMIT_EXCEEDED    Exceeded time limit / deadline
X-Headers-End: 1Y5YXC-0004Lw-VX
Cc: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Subject: Re: [Bitcoin-development] Cartographer
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Mon, 29 Dec 2014 11:31:15 -0000

--047d7bacbeb668ce86050b593498
Content-Type: text/plain; charset=UTF-8

>
> Can you explain further where limitations and problems were hit?
>

Well, look at the feature list :)

The biggest need from my POV is querying support. It's awkward to try and
retrofit flexible key=value pair queries onto DNS, it just wasn't designed
for that. With HTTP it's easy. This will become more important in future as
the protocol evolves. For example, some nodes will soon stop serving the
block chain because they start pruning. Today this is managed with a hack:
pruning nodes just stop providing *all* services to the p2p network. This
takes them out of the DNS seeds entirely. But they can actually still
provide download of the parts of the chain they still have, and they can
provide transaction filtering and relay support, along with misc other
things.

With the current DNS protocol you get an all or nothing choice - so
probably seeds that only support it will elect to only show nodes that have
the entire block chain, because that's what Bitcoin Core would find most
useful. SPV wallets have slightly different needs.

In theory you could come up with a pile of hacks to specify what the client
needs in the DNS query, but then you have a v2 protocol anyway and might as
well go the whole way.

Additionally, with DNS it's awkward to provide extra data in the responses
beyond IP address and it's VERY awkward to sign the responses. Signing the
responses has a couple of benefits. The biggest is, in future it'd be nice
to have an authenticated and encrypted network, to raise the bar for sybil
and MITM attacks. DNS seeding can't be upgraded to support that with any
reasonable level of effort. And DNS is awkward to configure/set up.
Actually DNS is just awkward, period.

The second benefit of signing is it provides audibility. If you see a seed
give bad answers, you can now prove it to other people.

There is also the previously discussed issue that DNS seeds sometimes get
blocked by aggressive networks because they start serving IPs that are
infected with malware i.e. they look like fast-flux sites.

Using a simple HTTP based protocol fixes all of these problems in one go.

Now, re: privacy.

Firstly, Peter, get help. I'm serious. You are starting to sound like an
auto-generated parody of yourself. When you can't debate something as
boring as HTTP vs DNS without trying to raise an angry mob using bizarre
conspiracy theories, that's not normal.

I don't think the "DNS has caches" issue is worth worrying about for a lot
of reasons:

   1. Full nodes try as hard as they can to open ports and advertise their
   IP addresses to everyone. Even if you change the defaults to disable that,
   you're about to connect to a bunch of random computers with no reputation
   anyway.

   2. Lists of stale IP addresses are hardly useful to regular people and
   network operators can identify Bitcoin users by looking for traffic on port
   8333, so it's unclear what threat model is being addressed here.

   3. The biggest users of the seeds are all SPV wallets. Every single one
   of these already phones home to check for online updates.

   4. DNS proxying only hides part of the IP address. If you're serious
   about this you want to be doing lookups via Tor. Whilst it's possible to
   use the DNS seeds via Tor in a reasonable way with exit diversity (and
   bitcoinj does), doing it requires low level Tor protocol programming
   <https://github.com/bitcoinj/bitcoinj/blob/42f9d7c193fcd56fda7691b0ea934bae9d23f2d6/core/src/main/java/org/bitcoinj/net/discovery/TorDiscovery.java#L260>
   that is out of reach for most implementors. An HTTP lookup is trivial with
   any HTTP stack that supports SOCKS.

   5. ISPs also deploy transparent HTTP caches. The Cartographer protocol
   uses HTTP with inline signing so responses can be cached, once the right
   headers are being set.

tl;dr it's unclear that DNS caching actually solves any real privacy
problem but regardless, you can get the same distributed caching with HTTP
as with DNS. So in the end it makes little difference.

I believe that Cartographer is a better protocol all round and there are no
costs beyond the one-time upgrades, but even if for some reason you
disagree with the five privacy points above, I think the benefits still
massively outweigh the costs.

--047d7bacbeb668ce86050b593498
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote"><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #c=
cc solid;padding-left:1ex">Can you explain further where limitations and pr=
oblems were hit?<br></blockquote><div><br></div><div>Well, look at the feat=
ure list :)</div><div><br></div><div>The biggest need from my POV is queryi=
ng support. It&#39;s awkward to try and retrofit flexible key=3Dvalue pair =
queries onto DNS, it just wasn&#39;t designed for that. With HTTP it&#39;s =
easy. This will become more important in future as the protocol evolves. Fo=
r example, some nodes will soon stop serving the block chain because they s=
tart pruning. Today this is managed with a hack: pruning nodes just stop pr=
oviding <b>all</b> services to the p2p network. This takes them out of the =
DNS seeds entirely. But they can actually still provide download of the par=
ts of the chain they still have, and they can provide transaction filtering=
 and relay support, along with misc other things.=C2=A0</div><div><br></div=
><div>With the current DNS protocol you get an all or nothing choice - so p=
robably seeds that only support it will elect to only show nodes that have =
the entire block chain, because that&#39;s what Bitcoin Core would find mos=
t useful. SPV wallets have slightly different needs.</div><div><br></div><d=
iv>In theory you could come up with a pile of hacks to specify what the cli=
ent needs in the DNS query, but then you have a v2 protocol anyway and migh=
t as well go the whole way.</div><div><br></div><div>Additionally, with DNS=
 it&#39;s awkward to provide extra data in the responses beyond IP address =
and it&#39;s VERY awkward to sign the responses. Signing the responses has =
a couple of benefits. The biggest is, in future it&#39;d be nice to have an=
 authenticated and encrypted network, to raise the bar for sybil and MITM a=
ttacks. DNS seeding can&#39;t be upgraded to support that with any reasonab=
le level of effort. And DNS is awkward to configure/set up. Actually DNS is=
 just awkward, period.</div><div><br></div><div>The second benefit of signi=
ng is it provides audibility. If you see a seed give bad answers, you can n=
ow prove it to other people.</div><div><br></div><div>There is also the pre=
viously discussed issue that DNS seeds sometimes get blocked by aggressive =
networks because they start serving IPs that are infected with malware i.e.=
 they look like fast-flux sites.</div><div><br></div><div>Using a simple HT=
TP based protocol fixes all of these problems in one go.</div><div><br></di=
v><div>Now, re: privacy.=C2=A0</div><div><br></div><div>Firstly, Peter, get=
 help. I&#39;m serious. You are starting to sound like an auto-generated pa=
rody of yourself. When you can&#39;t debate something as boring as HTTP vs =
DNS without trying to raise an angry mob using bizarre conspiracy theories,=
 that&#39;s not normal.</div><div><br></div><div>I don&#39;t think the &quo=
t;DNS has caches&quot; issue is worth worrying about for a lot of reasons:<=
/div><div><ol><li>Full nodes try as hard as they can to open ports and adve=
rtise their IP addresses to everyone. Even if you change the defaults to di=
sable that, you&#39;re about to connect to a bunch of random computers with=
 no reputation anyway.<br><br></li><li>Lists of stale IP addresses are hard=
ly useful to regular people and network operators can identify Bitcoin user=
s by looking for traffic on port 8333, so it&#39;s unclear what threat mode=
l is being addressed here.<br><br></li><li>The biggest users of the seeds a=
re all SPV wallets. Every single one of these already phones home to check =
for online updates.<br><br></li><li>DNS proxying only hides part of the IP =
address. If you&#39;re serious about this you want to be doing lookups via =
Tor. Whilst it&#39;s possible to use the DNS seeds via Tor in a reasonable =
way with exit diversity (and bitcoinj does), doing it requires <a href=3D"h=
ttps://github.com/bitcoinj/bitcoinj/blob/42f9d7c193fcd56fda7691b0ea934bae9d=
23f2d6/core/src/main/java/org/bitcoinj/net/discovery/TorDiscovery.java#L260=
">low level Tor protocol programming</a> that is out of reach for most impl=
ementors. An HTTP lookup is trivial with any HTTP stack that supports SOCKS=
.<br><br></li><li>ISPs also deploy transparent HTTP caches. The Cartographe=
r protocol uses HTTP with inline signing so responses can be cached, once t=
he right headers are being set.</li></ol><div>tl;dr it&#39;s unclear that D=
NS caching actually solves any real privacy problem but regardless, you can=
 get the same distributed caching with HTTP as with DNS. So in the end it m=
akes little difference.</div></div><div><br></div><div>I believe that Carto=
grapher is a better protocol all round and there are no costs beyond the on=
e-time upgrades, but even if for some reason you disagree with the five pri=
vacy points above, I think the benefits still massively outweigh the costs.=
</div></div></div></div>

--047d7bacbeb668ce86050b593498--