forked from juga0/privacy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
draft-ietf-dhc-dhcpv6-privacy.xml
755 lines (635 loc) · 37.5 KB
/
draft-ietf-dhc-dhcpv6-privacy.xml
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
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<rfc category="info" docName="draft-ietf-dhc-dhcpv6-privacy-05"
ipr="trust200902">
<front>
<title abbrev="DHCPv6 Privacy considerations">Privacy considerations for
DHCPv6</title>
<author fullname="Suresh Krishnan" initials="S." surname="Krishnan">
<organization>Ericsson</organization>
<address>
<postal>
<street>8400 Decarie Blvd.</street>
<city>Town of Mount Royal</city>
<region>QC</region>
<country>Canada</country>
</postal>
<phone>+1 514 345 7900 x42871</phone>
<email>[email protected]</email>
</address>
</author>
<author fullname="Tomek Mrugalski" initials="T." surname="Mrugalski">
<organization abbrev="ISC">Internet Systems Consortium,
Inc.</organization>
<address>
<postal>
<street>950 Charter Street</street>
<city>Redwood City</city>
<region>CA</region>
<code>94063</code>
<country>USA</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author fullname="Sheng Jiang" initials="S." surname="Jiang">
<organization>Huawei Technologies Co., Ltd</organization>
<address>
<postal>
<street>Q14, Huawei Campus, No.156 BeiQing Road</street>
<city>Hai-Dian District, Beijing</city>
<region></region>
<code>100095</code>
<country>P.R. China</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<date />
<area>Internet</area>
<workgroup>dhc</workgroup>
<abstract>
<t>DHCPv6 is a protocol that is used to provide addressing and
configuration information to IPv6 hosts. This document describes the
privacy issues associated with the use of DHCPv6 by the Internet users.
It is intended to be an analysis of the present situation and does not
propose any solutions.</t>
</abstract>
</front>
<middle>
<section anchor="intro" title="Introduction">
<t>DHCPv6 <xref target="RFC3315"></xref> is a protocol that is used to
provide addressing and configuration information to IPv6 hosts. DHCPv6
uses several identifiers that could become a source for gleaning
information about the IPv6 host. This information may include device
type, operating system information, location(s) that the device may have
previously visited, etc. This document discusses the various identifiers
used by DHCPv6 and the potential privacy issues <xref
target="RFC6973"></xref>. In particular, it also takes into
consideration the problem of pervasive monitoring <xref
target="RFC7258"></xref>.</t>
<t>Future works may propose protocol changes to fix the privacy issues
that have been analyzed in this document. Protocol changes are out of
scope for this document.</t>
<t>The primary focus of this document is around privacy considerations
for clients to support client mobility and connection to random
networks. The privacy of DHCPv6 servers and relay agents are considered
less important as they are typically open for public services. And, it
is generally assumed that relay agent to server communication is
protected from casual snooping, as that communication occurs in the
provider's backbone. Nevertheless, the topics involving relay agents and
servers are explored to some degree. However, future work may want to
further explore privacy of DHCPv6 servers and relay agents.</t>
</section>
<section title="Terminology">
<t>Naming convention from <xref target="RFC3315"></xref> and related is
used throughout this document. In addition the following terminology is
used: <list hangIndent="8" style="hanging">
<t hangText="Stable identifier">- Any property disclosed by a DHCPv6
client that does not change over time or changes very infrequently
and is unique for said client in a given context. Examples include
MAC address, client-id, and a hostname. Some identifiers may be
considered stable only under certain conditions, for example one
client implementation may keep its client-id stored in stable
storage while another may generate it on the fly and use a different
one after each boot. Stable identifiers may or may not be globally
unique.</t>
</list></t>
</section>
<section anchor="identifiers" title="Identifiers in DHCPv6 options and fields">
<t>In DHCPv6, there are many options that include identification
information or that can be used to extract identification
information about the client. This section enumerates various
options or fields and the identifiers conveyed in them, which
can be used to disclose client identification. The attacks that
are enabled by such disclosures are detailed in Section 5.</t>
<section anchor="src-addr" title="Source IPv6 address">
<t>Although IPv6 link-local address is technically not a part
of DHCPv6, it appears in the DHCPv6 transmissions, so it is
mentioned here for completeness.</t>
<t>If the client does not use privacy extensions
(see <xref target="RFC4941"/>) or similar solutions and its
IPv6 link-local address is based on physical link-layer
address, this information is disclosed to the DHCPv6 server
and to anyone who manages to intercept this transmission.</t>
<t>There are multiple cases where IPv6 link-local addresses
are used in DHCPv6. Initial client transmissions are always
sent from the IPv6 link-local addresses even when the server
unicast option (see Sections 22.12 and 18 of <xref
target="RFC3315"/> for details) is enabled. If there are relay
agents, they forward client's traffic wrapped in Relay-forward
and store original source IPv6 address in peer-address field.</t>
</section>
<section anchor="duid" title="DUID">
<t>Each DHCPv6 client and server has a DHCPv6 Unique Identifier (DUID)
<xref target="RFC3315"></xref>. The DUID is designed to be unique
across all DHCPv6 clients and servers, and to remain stable after it
has been initially generated. The DUID can be of different forms.
Commonly used forms are based on the link-layer address of one of the
device's network interfaces (with or without a timestamp), on the
Universally Unique IDentifier (UUID) <xref target="RFC6355"></xref>.
The default type, defined in Section 9.2 of <xref
target="RFC3315"></xref> is DUID-LLT that is based on link-layer
address. It is commonly implemented in most popular clients.</t>
<t>It is important to understand DUID lifecycle. Clients and servers
are expected to generate their DUID once (during first operation) and
store it in a non-volatile storage or use the same deterministic
algorithm to generate the same DUID value again. This means that most
implementations will use the available link-layer address during its
first boot. Even if the administrator enables link-layer address
randomization, it is likely that it was not yet enabled during the
first device boot. Hence the original, unobfuscated link-layer address
will likely end up being announced as client DUID, even if the
link-layer address has changed (or even if being changed on a periodic
basis). The exposure of the original link-layer address in DUID will
also undermine other privacy extensions such as <xref
target="RFC4941"></xref>.</t>
</section>
<section title="Client Identifier Option">
<t>The Client Identifier Option (OPTION_CLIENTID) <xref
target="RFC3315"></xref> is used to carry the DUID of a DHCPv6 client
between a client and a server. There is an analogous Server Identifier
Option but it is not as interesting in the privacy context (unless a
host can be convinced to start acting as a server). See <xref
target="duid"></xref> for relevant discussion about DUIDs.</t>
</section>
<section title="IA_NA, IA_TA, IA_PD, IA Address and IA Prefix Options">
<t>The Identity Association for Non-temporary Addresses (IA_NA) option
<xref target="RFC3315"></xref> is used to carry the parameters and any
non-temporary addresses associated with the given IA_NA. The Identity
Association for Temporary Addresses (IA_TA) option <xref
target="RFC3315"></xref> is analogous to the IA_NA option but for
temporary addresses. The IA Address option <xref
target="RFC3315"></xref> is used to specify IPv6 addresses associated
with an IA_NA or an IA_TA and is encapsulated within the Options field
of such an IA_NA or IA_TA option. The Identity Association for Prefix
Delegation (IA_PD) <xref target="RFC3633"></xref> option is used to
carry the prefixes that are assigned to the requesting router. IA
Prefix option <xref target="RFC3633"></xref> is used to specify IPv6
prefixes associated with an IA_PD and is encapsulated within the
Options field of such an IA_PD option.</t>
<t>To differentiate between instances of the same type of IA
containers for a client, each IA_NA, IA_TA and IA_PD options have an
IAID field with a unique value for a given IA type. It is up to the
client to pick unique IAID values. At least one popular implementation
uses last four octets of the link-layer address. In most cases, that
means that merely two bytes are missing for a full link-layer address
reconstruction. However, the first three octets in a typical
link-layer address are vendor identifier. That can be determined with
high level of certainty using other means, thus allowing full
link-layer address discovery.</t>
</section>
<section title="Client FQDN Option">
<t>The Client Fully Qualified Domain Name (FQDN) option <xref
target="RFC4704"></xref> is used by DHCPv6 clients and servers to
exchange information about the client's fully qualified domain name
and about who has the responsibility for updating the DNS with the
associated AAAA and PTR RRs.</t>
<t>A client can use this option to convey all or part of its domain
name to a DHCPv6 server for the IPv6-address-to-FQDN mapping. In most
case a client sends its hostname as a hint for the server. The DHCPv6
server may be configured to modify the supplied name or to substitute
a different name. The server should send its notion of the complete
FQDN for the client in the Domain Name field.</t>
</section>
<section title="Client Link-layer Address Option">
<t>The Client link-layer address option <xref target="RFC6939"></xref>
is used by first-hop DHCPv6 relays to provide the client's link-layer
address towards the server.</t>
<t>DHCPv6 relay agents that receive messages originating from clients
may include the link-layer source address of the received DHCPv6
message in the Client Link-Layer Address option, in relayed DHCPv6
Relay-Forward messages.</t>
</section>
<section title="Option Request Option">
<t>DHCPv6 clients include an Option Request option <xref
target="RFC3315"></xref> in DHCPv6 messages to inform the server about
options the client wants the server to send to the client.</t>
<t>The content of an Option Request option are the option codes for
options requested by the client. The client may additionally include
instances of those options that are identified in the Option Request
option, with data values as hints to the server about parameter values
the client would like to have returned.</t>
</section>
<section title="Vendor Class and Vendor-specific Information Options">
<t>The Vendor Class option, defined in Section 22.16 of <xref
target="RFC3315"></xref>, is used by a DHCPv6 client to identify the
vendor that manufactured the hardware on which the client is
running.</t>
<t>The Vendor-specific Information option, defined in Section 22.17 of
<xref target="RFC3315"></xref>, includes enterprise number, which
identifies the client's vendor and often includes a number of
additional parameters that are specific to a given vendor. That may
include any type of information the vendor deems useful. It should be
noted that this information may be present (and different) in both
directions: client to server and server to client communications.</t>
<t>The information contained in the data area of this option is
contained in one or more opaque fields that identify details of the
hardware configuration, for example, the version of the operating
system the client is running or the amount of memory installed on the
client.</t>
</section>
<section title="Civic Location Option">
<t>DHCPv6 servers use the Civic Location option <xref
target="RFC4776"></xref> to deliver location information (the civic
and postal addresses) from the DHCPv6 server to DHCPv6 clients. It may
refer to three locations: the location of the DHCPv6 server, the
location of the network element believed to be closest to the client,
or the location of the client, identified by the "what" element within
the option.</t>
</section>
<section title="Coordinate-Based Location Option">
<t>The GeoLoc options <xref target="RFC6225"></xref> are used by
DHCPv6 server to provide coordinate-based geographic location
information to DHCPv6 clients. They enable a DHCPv6 client to obtain
its location.</t>
</section>
<section title="Client System Architecture Type Option">
<t>The Client System Architecture Type option <xref
target="RFC5970"></xref> is used by DHCPv6 client to send a list of
supported architecture types to the DHCPv6 server. It is used by
clients that must be booted using the network rather than from local
storage, so the server can decide which boot file should be provided
to the client.</t>
<t><!--Client Network Interface Identifier [RFC5970] seems not in use. It provides information about the level of UNDI support.--></t>
</section>
<!--<section title="Options for Home Network/Agent Dynamic Discovery">
<t>A set of DHCPv6 options <xref target="RFC6610"></xref> are used to
deliver the home agent information (the home agent's IPv6 address,
IPv6 home network prefix, or FQDN information) to the mobile node
(DHCPv6 client), including MIPv6 Home Network ID FQDN option, Home
Network Information options, MIPv6 Home Network Prefix option, MIPv6
Home Agent Address option, MIPv6 Home Agent FQDN option. They contains
the information of target home networks for which the client is
requesting configuration information.</t>
</section>-->
<section title="Relay Agent Options">
<t>A DHCPv6 relay agent may include a number of options. Those option
contain information that can be used to identify the client. Those
options are almost exclusively exchanged between the relay agent and
the server, thus never leaving the operators network. In particular,
they're almost never present in the last wireless hop in case of WiFi
networks. The only exception to that rule is somewhat infrequently
used Relay Supplied Options option <xref target="RFC6422"></xref>.
This fact implies that the threat model related relay options is
slightly different. Traffic sniffing at the last hop and related class
of attacks typically do not apply. On the other hand, all attacks that
involve operator's intfrastructure (either willing or coerced
cooperation or infrastructure being compromised) usually apply.</t>
<t>The following subsections describe various options inserted by the
relay agents.</t>
<section title="Subscriber ID Option">
<t>A DHCPv6 relay may include a Subscriber ID option <xref
target="RFC4580"></xref> to associate some provider-specific
information with clients' DHCPv6 messages that is independent of the
physical network configuration.</t>
<t>In many deployments, the relay agent that inserts this option is
configured to use client's link-layer address as Subscriber ID.</t>
</section>
<section title="Interface ID Option">
<t>A DHCPv6 relay includes the Interface ID <xref
target="RFC3315"></xref> option to identify the interface on which
it received the client message that is being relayed.</t>
<t>Although in principle Interface ID can be arbitrarily long with
completely random values, it is sometimes a text string that
includes the relay agent name followed by interface name. This can
be used for fingerprinting the relay or determining client's point
of attachment.</t>
</section>
<section title="Remote ID Option">
<t>A DHCPv6 relay includes a Remote ID option <xref
target="RFC4649"></xref> to identify the remote host end of the
circuit.</t>
<t>The remote-id is vendor specific, for which the vendor is
indicated in the enterprise-number field. The remote-id field may
encode the information that identified DHCPv6 clients:</t>
<t><list style="symbols">
<t>a "caller ID" telephone number for dial-up connection</t>
<t>a "user name" prompted for by a Remote Access Server</t>
<t>a remote caller ATM address o a "modem ID" of a cable data
modem</t>
<t>the remote IP address of a point-to-point link</t>
<t>an interface or port identifier</t>
</list></t>
</section>
<section title="Relay-ID Option">
<t>Relay agent may include Relay-ID <xref target="RFC5460"></xref>,
which contains a unique relay agent identifier. While its intended
use is to provide additional information for the server, so it would
be able to respond to leasequeries later, this information can be
also used to identify client's location within the network.</t>
</section>
</section>
</section>
<section title="Existing Mechanisms That Affect Privacy">
<t>This section describes deployed DHCPv6 mechanisms that can affect
privacy.</t>
<section title="Temporary addresses">
<t><xref target="RFC3315"></xref> defines a mechanism for a client to
request temporary addresses. The idea behind temporary addresses is
that a client can request a temporary address for a specific purpose,
use it, and then never renew it. i.e. let it expire.</t>
<t>There are a number of serious issues, both related to protocol and
its implementations, that make temporary addresses nearly useless for
their original goal. First, <xref target="RFC3315"></xref> does not
include T1 and T2 renewal timers in IA_TA (a container for temporary
addresses). However, in section 18.1.3 it explicitly mentions that
temporary addresses can be renewed. Client implementations may
mistakenly renew temporary addresses if they are not careful (i.e., by
including the IA_TA with the same IAID in Renew or Rebind requests,
rather than a new IAID - see <xref target="RFC3315"></xref> Section
22.5), thus forfeiting short liveness. <xref target="RFC4704"></xref>
does not explicitly prohibit servers to update DNS for assigned
temporary addresses and there are implementations that can be
configured to do that. However, this is not advised as publishing a
client's IPv6 address in DNS that is publicly available is a major
privacy breach.</t>
</section>
<section title="DNS Updates">
<t>The Client FQDN Option<xref target="RFC4704"></xref> used along
with DNS Update <xref target="RFC2136"></xref> defines a mechanism
that allows both clients and server to insert into the DNS domain
information about clients. Both forward (AAAA) and reverse (PTR)
resource records can be updated. This allows other nodes to
conveniently refer to a host, despite the fact that its IPv6 address
may be changing.</t>
<t>This mechanism exposes two important pieces of information: current
address (which can be mapped to current location) and client's
hostname. The stable hostname can then by used to correlate the client
across different network attachments even when its IPv6 address keeps
changing.</t>
</section>
<section title="Allocation strategies">
<t>A DHCPv6 server running in typical, stateful mode is given a task
of managing one or more pools of IPv6 resources (currently
non-temporary addresses, temporary addresses and/or prefixes, but more
resource types may be defined in the future). When a client requests a
resource, server must pick a resource out of configured pool.
Depending on the server's implementation, various allocation
strategies are possible. Choices in this regard may have privacy
implications.</t>
<t>Iterative allocation - a server may choose to allocate addresses
one by one. That strategy has the benefit of being very fast, thus
being favored in deployments that prefer performance. However, it
makes the resources very predictable. Also, since the resources
allocated tend to be clustered at the beginning of an available pool,
it makes scanning attacks much easier.</t>
<t>Identifier-based allocation - some server implementations use a
fixed identifier for a specific client, seemingly taken from the
client's MAC address when available or some lower bits of client's
source IPv6 address. This has a property of being convenient for
converting IP address to/from other identifiers, especially if the
identifier is or contains MAC address. It is also convenient, as a
returning client is very likely to get the same address, even if the
server does not retain previous client's address. Those properties are
convenient for system administrators, so DHCPv6 server implementors
are sometimes requested to implement it. There is at least one
implementation that supports it. The downside of such allocation is
that the client now discloses its identifier in its IPv6 address to
all services it connects to. That means that correlation of activities
over time, location tracking, address scanning and OS/vendor discovery
attacks apply.</t>
<t>Hash allocation - it's an extension of identifier-based allocation.
Instead of using the identifier directly, it is hashed first. If the
hash is implemented correctly, it removes the flaw of disclosing the
identifier, a property that eliminates susceptibility to address
scanning and OS/vendor discovery. If the hash is poorly implemented
(e.g., can be reversed), it introduces no improvement over
identifier-based allocation. Even a well implemented hash does not
mitigate the threat of correlation over time.</t>
<t>Random allocation - a server can pick a resource pseudo-randomly
out of an available pool. This allocation scheme essentially prevents
returning clients from getting the same address or prefix again. On
the other hand, it is beneficial from privacy perspective as addresses
and prefixes generated that way are not susceptible to correlation
attacks, OS/vendor discovery attacks, or identity discovery attacks.
Note that even though the address or prefix itself may be resilient to
a given attack, the client may still be susceptible if additional
information is disclosed other way, e.g., the client's address may be
randomized, but it still can leak its MAC address in the client-id
option.</t>
<t>Other allocation strategies may be implemented.</t>
</section>
</section>
<section title="Attacks">
<section title="Device type discovery (fingerprinting)">
<t>The type of device used by the client can be guessed by the
attacker using the Vendor Class option, Vendor-specific Information
option, the Client Link-layer Address option, and by parsing the
Client ID option. All of those options may contain OUI
(Organizationally Unique Identifier) that represents the device's
vendor. That knowledge can be used for device-specific vulnerability
exploitation attacks. See Section 3.4 of <xref
target="I-D.ietf-6man-ipv6-address-generation-privacy"></xref> for a
discussion about this type of attack.</t>
</section>
<section title="Operating system discovery (fingerprinting)">
<t>The operating system running on a client can be guessed using the
Vendor Class option, the Vendor-specific Information option, the
Client System Architecture Type option, or by using fingerprinting
techniques on the combination of options requested using the Option
Request option. See Section 3.4 of <xref
target="I-D.ietf-6man-ipv6-address-generation-privacy"></xref> for a
discussion about this type of attack.</t>
</section>
<section title="Finding location information">
<t>The physical location information can be obtained by the attacker
by many means. The most direct way to obtain this information is by
looking into a message originating from the server that contains the
Civic Location or GeoLoc option. It can also be indirectly inferred
using the Remote ID option, the Interface ID option (e.g., if an
access circuit on an Access Node corresponds to a civic location), or
the Subscriber ID option (if the attacker has access to subscriber
info).</t>
<t>Another way to discover client's physical location is to use
geolocation services. Those services typically map IP prefixes into
geographical locations. Those services are usually based on known
locations of the subnet, so they may reveal client's location as
precise as they can locate a network it is connected to. They usually
are not able to discover specific physical location within a network.
That is not awlays true and it depends on the quality of the apriori
information available in the geolocation services databases. It should
be noted that this threat is general to the DHCPv6 mechanism.
Regardless of the allocation strategy used by the DHCPv6 server
implementation, the addresses assigned will always belong to the
subnet the server is configured to manage. Cases of using ULA (Unique
Local Addresses) assigned by the DHCPv6 server are out of scope for
this document.</t>
</section>
<section title="Finding previously visited networks">
<t>When DHCPv6 clients connect to a network, they attempt to obtain
the same address they had used before they attached to the network.
They do this by putting the previously assigned address(es) in the IA
Address option(s). <xref target="RFC3315"></xref> does not exclude
IA_TA in such a case, so it is possible that a client implementation
includes an address contained in an IA_TA for the Confirm message. By
observing these addresses, an attacker can identify the network the
client had previously visited.</t>
</section>
<section title="Finding a stable identity">
<t>An attacker might use a stable identity gleaned from DHCPv6
messages to correlate activities of a given client on unrelated
networks. The Client FQDN option, the Subscriber ID option, and the
Client ID option can serve as long-lived identifiers of DHCPv6
clients. The Client FQDN option can also provide an identity that can
easily be correlated with web server activity logs.</t>
<t>It should be noted that in general case, the MAC addresses as such
are not available in the DHCPv6 packets. Therefore they cannot be used
directly in a reliable way. However, they may become indirectly
available using other mechanisms: client-id contains link-local
address if DUID-LL or DUID-LLT types are used, source IPv6 address may
use EUI-64 that contains MAC address, some access technologies may
specify MAC address in dedicated options (e.g., cable modems use MAC
addresses in DOCSIS options). Relay agents may insert additional
information that are used to help the server to identify the client.
This could be Remote-Id option, Subscriber-Id option, client
link-layer address option or vendor specific information options.
Options inserted by relay agents usually traverse only relay-server
path, so they typically can't be eavesdropped by intercepting client's
transmissions. This depends on the actual deployment model and used
access technologies.</t>
</section>
<section title="Pervasive monitoring">
<t>Pervasive Monitoring (PM) is widespread (and often covert)
surveillance through intrusive gathering of protocol
artefacts, including application content, or protocol metadata
such as headers. Active or passive wiretaps and traffic
analysis, (e.g., correlation, timing or measuring packet
sizes), or subverting the cryptographic keys used to secure
protocols can also be used as part of pervasive monitoring. PM
is distinguished by being indiscriminate and very large scale,
rather than by introducing new types of technical
compromise. See <xref target="RFC7258"></xref> for a
discussion about PM.</t>
<t>In the DHCPv6 context, PM approach can be used to collect
any identifiers discussed in <xref
target="identifiers"/>. DHCPv4 and DHCPv6 are especially
susceptible as the initial message sent (SOLICIT in case of
DHCPv6) is one of the very first packets sent when visiting a
network. Furthermore, in certain cases this packet can be
logged even on networks that do not support IPv6 (some
implementations initiate DHCPv6 even without receiving RA with
M or O bits set). This may be an easily overlooked attack
vector when IPv6-capable device connects to an IPv4 only
network, gains only IPv4 connectivity, but still leaks its
stable identifiers over DHCPv6.</t>
<t>Using PM approach, attacks discussed in Sections 5.1, 5.2,
5.3, 5.4, 5.5, 5.7, 5.8 and possibly 5.9 apply.</t>
</section>
<section title="Finding client's IP address or hostname">
<t>Many DHCPv6 deployments use DNS Updates <xref
target="RFC4704"></xref> that put client's information (current IP
address, client's hostname) into the DNS, where it is easily
accessible by anyone interested. Client ID is also disclosed, albeit
in not easily accessible form (SHA-256 digest of the client-id). As
SHA-256 is considered irreversible, DHCID can't be converted back to
client-id. However, SHA-256 digest can be used as an unique identifier
that is accessible by any host.</t>
</section>
<section title="Correlation of activities over time">
<t>As with other identifiers, an IPv6 address can be used to correlate
the activities of a host for at least as long as the lifetime of the
address. If that address was generated from some other, stable
identifier and that generation scheme can be deduced by an attacker,
the duration of the correlation attack extends to that of the
identifier. In many cases, its lifetime is equal to the lifetime of
the device itself. See Section 3.1 of <xref
target="I-D.ietf-6man-ipv6-address-generation-privacy"></xref> for
detailed discussion.</t>
</section>
<section title="Location tracking">
<t>If a stable identifier is used for assigning an address and such
mapping is discovered by an attacker (e.g., a server that uses
IEEE-identifier-based IID to generate IPv6 address), all scenarios
discussed in Section 3.2 of <xref
target="I-D.ietf-6man-ipv6-address-generation-privacy"></xref> apply.
In particular both passive (a service that the client connects to can
log the client's address and draw conclusions regarding its location
and movement patterns based on the prefix it is connecting from) and
active (an attacker can send ICMPv6 echo requests or other probe
packets to networks of suspected client locations) can be used. To
give specific example, by accessing a social portal from
tomek-laptop.coffee.somecity.com.example,
tomek-laptop.mycompany.com.example and tomek-laptop.myisp.example.com,
the portal administrator can draw conclusions about tomek-laptop's
owner's current location and his habits.</t>
</section>
<section title="Leasequery & bulk leasequery">
<t>Attackers may masquerade to be an access concentrator, either as a
DHCPv6 relay agent or as a DHCPv6 client, to obtain location
information directly from the DHCPv6 server(s) using the DHCPv6
Leasequery <xref target="RFC5007"></xref> mechanism.</t>
<t>Location information is information needed by the access
concentrator to forward traffic to a broadband-accessible host. This
information includes knowledge of the host hardware address, the port
or virtual circuit that leads to the host, and/or the hardware address
of the intervening subscriber modem.</t>
<t>Furthermore, the attackers may use the DHCPv6 bulk leasequery <xref
target="RFC5460"></xref> mechanism to obtain bulk information about
DHCPv6 bindings, even without knowing the target bindings.</t>
<t>Additionally, active leasequery <xref target="RFC7653"></xref> is a
mechanism for subscribing to DHCPv6 lease update changes in near
real-time. The intent of this mechanism is to update an operator's
database, but if misused, an attacker could defeat the server's
authentication mechanisms and subscribe to all updates. He then could
continue receiving updates, without any need for local presence.</t>
</section>
</section>
<section anchor="security" title="Security Considerations">
<t>In current practice, the client privacy and client authentication are
mutually exclusive. The client authentication procedure reveals
additional client information in their certificates/identifiers. Full
privacy for the clients may mean the clients are also anonymous to the
server and the network.</t>
</section>
<section anchor="privacy-consider" title="Privacy Considerations">
<t>This document in its entirety discusses privacy considerations in
DHCPv6. As such, no dedicated discussion is needed.</t>
</section>
<section title="IANA Considerations">
<t>This draft does not request any IANA action.</t>
</section>
<section anchor="acks" title="Acknowledgements">
<t>The authors would like to thank Stephen Farrell, Ted Lemon,
Ines Robles, Russ White, Christian Schaefer, Jinmei Tatuya,
Bernie Volz, Marcin Siodelski, Christian Huitema, Brian
Haberman, Robert Sparks, Peter Yee, Ben Campbell and other
members of DHC WG for their valuable comments.</t>
<t>This document was produced using the xml2rfc tool <xref
target="RFC7749"></xref>.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include='reference.RFC.3315'?>
<?rfc include='reference.RFC.6973'?>
<?rfc include='reference.RFC.7258'?>
<?rfc include='reference.I-D.ietf-6man-ipv6-address-generation-privacy'?>
</references>
<references title="Informative References">
<?rfc include='reference.RFC.2136'?>
<?rfc include='reference.RFC.3633'?>
<?rfc include='reference.RFC.4580'?>
<?rfc include='reference.RFC.4649'?>
<?rfc include='reference.RFC.4704'?>
<?rfc include='reference.RFC.4776'?>
<?rfc include='reference.RFC.4941'?>
<?rfc include='reference.RFC.5007'?>
<?rfc include='reference.RFC.5460'?>
<?rfc include='reference.RFC.5970'?>
<?rfc include='reference.RFC.6225'?>
<?rfc include='reference.RFC.6355'?>
<?rfc include='reference.RFC.6422'?>
<?rfc include='reference.RFC.6939'?>
<?rfc include='reference.RFC.7653'?>
<?rfc include='reference.RFC.7749'?>
</references>
</back>
</rfc>