forked from parc-ccnx-archive/ccnx-tlvencap-rfc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdraft-wood-icnrg-tlvencap.txt
More file actions
672 lines (441 loc) · 25.5 KB
/
Copy pathdraft-wood-icnrg-tlvencap.txt
File metadata and controls
672 lines (441 loc) · 25.5 KB
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
ICNRG Working Group M. Mosko
Internet-Draft C. Wood
Intended status: Informational PARC, Inc.
Expires: September 7, 2015 March 06, 2015
Encrypted Sessions In CCNx (ESIC)
draft-wood-icnrg-packetencap
Abstract
This document describes how to transport CCNx packets inside an
encrypted session between peers that share traffic secrets, such as
derived from CCNxKE. The peers create an outer naming context to
identify the encryption session in one direction between the consumer
and the producer. The consumer sends encrypted Interest messages to
the producer, who responds with encrypted Content Objects. Inside
the outer context, the consumer sends Interests with different names,
which the producer may respond to or may send InterestReturns for.
There does not need to be a naming relationship between the outer
names and the inner names. The inner content is still protected by
normal CCNx authentication mechanisms and possiby encrypted under
other schemes.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 7, 2015.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
Mosko & Wood Expires September 7, 2015 [Page 1]
Internet-Draft CCNx-PacketEncapsulation March 2015
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Conventions and Terminology . . . . . . . . . . . . . . . 3
2. Stateless packet keys . . . . . . . . . . . . . . . . . . . . 4
3. Inner and Outer Contexts . . . . . . . . . . . . . . . . . . 4
3.1. Outer Context Names . . . . . . . . . . . . . . . . . . . 5
3.2. Outer Packet . . . . . . . . . . . . . . . . . . . . . . 5
3.2.1. Consumer Outer Packet . . . . . . . . . . . . . . . . 6
3.2.2. Producer Outer Packet . . . . . . . . . . . . . . . . 6
3.3. Processing Chain . . . . . . . . . . . . . . . . . . . . 6
3.4. Transport State Machine . . . . . . . . . . . . . . . . . 7
4. Control Channel . . . . . . . . . . . . . . . . . . . . . . . 9
4.1. ESIC Control Packets . . . . . . . . . . . . . . . . . . 9
4.2. ESIC Control Messages . . . . . . . . . . . . . . . . . . 11
5. Security Considerations . . . . . . . . . . . . . . . . . . . 11
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.1. Normative References . . . . . . . . . . . . . . . . . . 11
6.2. Informative References . . . . . . . . . . . . . . . . . 12
Appendix A. Test Vectors . . . . . . . . . . . . . . . . . . . . 12
A.1. Sample Encryption TLVs . . . . . . . . . . . . . . . . . 12
A.2. Interest Encapsulation Examples . . . . . . . . . . . . . 12
A.3. Content Object Encapsulation Examples . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12
1. Introduction
CCNx packets [MESSAGES] contain a fixed header, optional hop-by-hop
headers, a CCNx Message, and a validation section. Encrypted
Sessions in CCNx (ESIC) describes how to to transport encrypted CCNx
packets inside other CCNx packets. The outer packet (the wrapper)
uses a CCNx name that identifies the encrypted session while the
inner (encrypted) portion remains hidden and private to an outside
observer.
ESIC defines a new field Encapsulated (T_ENCAP) that may occur in
both an Interest (T_INTEREST) and Content Object (T_OBJECT). The
T_ENCAP field contains the encryption of the inner CCNx Packet.
Mosko & Wood Expires September 7, 2015 [Page 2]
Internet-Draft CCNx-PacketEncapsulation March 2015
Because the use of an outer CCNxPacket, the total packet length of
the inner CCNxPacket may need to be limited to less than the maximum
of 64 KB. ESIC allows the use of a compressor before the encryptor,
so it is likely that a packet that would overflow the 64 KB limit
could be compressed by enough to allow for an outer CCNxPacket. This
consideration for the PacketLength is separate from concerns about
path MTU.
It is a requirement of ESIC that one inner packet fit in one outer
packet. This is because ESIC does not define a method to issue extra
outer interests to fetch extra outer content objects. It relies
entirely on Interests generated by the consumer application.
ESIC defines a control channel within the outer context by using
special names with the inner packets. These names allow signaling
between the two encryption endpoints for features such as alerts and
rekeying requests.
ESIC defines how to use a traffic secret (TS), such as derived from
CCNxKE, to encrypt multiple packets in a consumer-producer session.
Each direction will use separate derived keys. If one wishes to have
a reverse traffic flow (interests from producer fetching content
objects from the consumer), then one must share a second TS and use
it with the roles reversed, but otherwise it works exactly as in the
first case.
The mechanism by which this symmetric key is obtained is outside the
scope of this document; These keys could be pre-shared or derived
from an online key-exchange protocol [CCNxKE].
1.1. Conventions and Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in RFC
2119 [RFC2119].
The following terms are used:
o Inner Packet: A fully-formed CCNx packet (fixed header through
validation) that is carried encrypted inside a T_ENCAP TLV.
o Outer Packet: A fully-formd CCNx packet that carries the outer
context of an encrypted session.
o Outer Name: The name of the outer packet.
Mosko & Wood Expires September 7, 2015 [Page 3]
Internet-Draft CCNx-PacketEncapsulation March 2015
o Inner Name: The name of the inner packet (not visible in
transport).
o Control channel: the use of Inner Packets to convey control
signaling between encryption endpoints using a special Inner Name.
2. Stateless packet keys
ESIC assumes that the consumer and producer share a Traffic Secret
(TS), usually derived as per CCNxKE. Regardless of how the TS is
derived (TODO: it needs to meet some so-far unstated requirements),
there are four secrets derived from the TS, as per CCNxKE
Section 9.5. This specifies how to generate the Client Write Key,
Server Write Key, Client Write IV, and Server Write IV.
As per [RFC5288] for the use of AES-GCM, the GCM Nonce is composed of
a Salt and a Nonce_Explicit. The Salt comes from the Client/Server
Write IV and the Nonce_Explicit comes from the Outer Name chunk
number padded to an 8-byte sequence number. This defines the packet
key used for a specific chunk, and is unique in the consumer to
producer and producer to consumer directions.
TODO: Should we allow CCNxKE to specify the starting chunk number so
it does not always start at 0? It would need to be encoded in the
MoveToken.
3. Inner and Outer Contexts
The inner context is a CCNx packet with meaning to the consumer and
producer. They may be clear text or they make use additional
encryption, such as group keying, broadcast encryption, homomorphic
encryption, or something else. The consumer sends an Interest packet
with an Inner Name (plus other optional fields as normal) and
expectes to get back a Content Object or InterestReturn packet with
corresponding name and fields.
The outer context names the encryption session and sequences packets.
ESIC does not expect a one-to-one correspondence of outer name and
inner name. If a consumer, for example, sends 3 interests with outer
names NO1, NO2, NO3 and inner names NI1, NI2, and NI3, the producer
can return those names in any order. It could put content objects
with name NI3 in NO1, NI1 in NO2, and NI2 in NO3. ESIC does expect
normal CCNx processing rules to be followed for the inner packets,
therefore we would expect at most one inner packet returned for each
inner Interest. That inner packet could be either a Content Object
or Interest Return.
Mosko & Wood Expires September 7, 2015 [Page 4]
Internet-Draft CCNx-PacketEncapsulation March 2015
3.1. Outer Context Names
The outer context name is a routable prefix PREFIX followed by a
session ID (SID) followed by a ChunkNumber (Chunk). The chunk number
is a monotonically increasing number. The outer name is clear text,
visible to all observers.
The PREFIX and SID are derived outside of ESIC. In normal use with
CCNxKE, the PREFIX is either the same prefix as used in the key
exchagne or it is derived from within CCNxKE from Prefix2 or the
MoveToken. The SID is created by the producer and given to the
consumer inside CCNxKE.
OuterName := ccnx:/PREFIX/SID=sid/CHUNK=chunk
Chunk numbers are limited to 8 bytes and do not wrap around. When
the consumer gets near the end of the sequence number space, it must
request a re-keying via the control channel. Because CCNx in a pull-
driven model, the consumer is reponsible for the chunk number and
thus responsible for requesting the re-keying. The producer may also
request a re-keying for its own reasons.
3.2. Outer Packet
The outer packet will have a Fixed Header, per hop headers, a CCNx
Message with the Outer Name, and a Validation section (ValidationAlg
and ValidationPayload). The outer packet is visible to 3rd parties
in its entirety. Only the 'value' of T_ENCAP TLV field inside the
CCNx Message is encrypted. The T_ENCAP TLV Value is the AEAD
'plaintext' that will be converted to the 'ciphertext'. In the outer
packet, only the CCNx Message and the ValidationAlg are covered by
the authentication token
The Outer Packet has a Validation section. The ValidationAlg will
have a 0-length ValidationType of T_SESSION, which indidates that the
encryption context must be derived from the SID in the name.
The Associated Data (in AEAD) covered by the validation output is
from the beignning of the CCNx Message up to but not including the
T_ENCAP Value concatendated with the ValidationAlg TLV. That is, it
skips the T_ENCAP TLV Value.
The ValidationPayload contains the AEAD authentication token.
If the Producer cannot satisfy an Inner Packet Interest, it will
encapsualte an InterestReturn inside an OuterPacket of PacketType
ContentObject. That is, the InterestReturn is end-to-end signaling
about the inner context.
Mosko & Wood Expires September 7, 2015 [Page 5]
Internet-Draft CCNx-PacketEncapsulation March 2015
If the Producer has an error with the Outer Context, it may return an
InterestReturn for the outer context as normal for Interest
processing.
3.2.1. Consumer Outer Packet
The outer packet from the consumer to the producer will always be of
PacketType Interest. They may have any of the normal Interest per-
hop headers (e.g. InterestLifetime), which will be visible to 3rd
parties and not protected by the encryption or authentication.
The Outer Context has a T_INTEREST message type, which contains a
T_NAME of the Outer Name. It may have other additional metadata in
clear text. The T_INTEREST container is protected by the encryption
authenticator. Finally, the T_INTEREST has a T_ENCAP field that
contains the encryption of the Inner Packet. The encryption will use
the algorithm negotiated as part of the SID (i.e. AES-GCM).
3.2.2. Producer Outer Packet
The producer will only send PacketType ContentObject back to the
consumer. The Inner packet may be either an InterestReturn or a
ContentObject corresponding to the Inner Packet interest.
The outer packet may have per-hop headers (e.g.
RecommendedCacheTime) that affect the encrypted packet. These are
independent from the inner Per Hop headers. The outer MessageType is
always T_OBJECT. It may have normal metadata for a content object,
such as ExpiryTime, which affect only the outer packet. Finally, it
has a T_ENCAP that contains the wrapped inner Packet.
3.3. Processing Chain
The processing chain from the Source to the Sink is shown below. The
compression/decompression stages are optional and are not strongly
tied to the encrypted session. If used, we assume the compression
protocol is session specific to avoid state snooping (e.g. such as in
CRIME attack).
Mosko & Wood Expires September 7, 2015 [Page 6]
Internet-Draft CCNx-PacketEncapsulation March 2015
() indicates output of stage
+------------+ +-------------+ +-----------------+ +---------+
| Source | - | Compresser | - | Encypter/Framer | - | Channel |
|(CCNxPacket)| |(CCNxzPacket)| | (CCNxPacket) | | |
+------------+ +-------------+ +-----------------+ +---------+
+------------+ +--------------------+ +-------------+ +------+
| Channel | - | Deframer/Decrypter | - | Decompressor| - | Sink |
|(CCNxPacket)| | (CCNxzPacket) | | (CCNxPacket)| | |
+------------+ +--------------------+ +-------------+ +------+
o Source: The source of an Inner Packet.
o Compressor: Optional component to reduce the size before
encryption.
o Encrypter/Framer: Creates the ciphertext of the CCNx(z)packet to
produce the T_ENCAP, constructs the outer packet, computes the
authentication token and generates the ValidationPayload.
o Channel: Carries the wireformat outer packet
o Deframer/Decrypter: Verifies the authenticator, decrypts the
T_ENCAP, and passes the Inner Packet to the Decompressor.
o Decompressor: Optional component to expand the inner packet
o Sink: The sink of an Inner Packet.
The Encrypter/Framer will generate outer names with sequential outer
name chunk numbers.
The Deframer/Decryptor will extract the SID and chunk number from the
outer name and use those to create the packet key (see below). Using
the packet key, it will verify the authentication token and if
successful decrypt the T_ENCAP. The output of the T_ENCAP will then
be passed to the Sink.
3.4. Transport State Machine
TODO: this section needs a lot of review and implementation to make
sure we've covered everything that's needed.
ESIC uses a state machine to manage the ephemeral session such that
the Producer knows when the Consumer is finished with the SID. It
also will try to re-request packets that fail authentication before
sending its own InterestReturn up the Sink.
Mosko & Wood Expires September 7, 2015 [Page 7]
Internet-Draft CCNx-PacketEncapsulation March 2015
The protocol begins with each side knowing the four keys (see
Stateless Packet Keys below), the Session ID (SID), and the routable
prefix PREFIX.
The receiving process uses a replay buffer to prevent replay attacks.
The buffer tracks the last N out-of-order verified chunks plus the
cumulative verified chunk number. TODO: Sort this out how to avoid
replay attacks without requiring reliable in-order delivery.
Protocol of Encrypter/Framer:
o Initialize: set NextChunkNumber = 0, State = Waiting
o Waiting: Wait for packet from Source (or compressor). On packet
receive, State = Send
o Send:
* Generate packet key for NextChunkNumber
* Create outer packet with name /PREFIX/SID=sid/
CHUNK=NextChunkNumber and the input packet as cleartext in the
T_ENCAP.
* Run the AEAD scheme authenticating and encrypting. Note the
prior description of the split Associated Data before and after
the plaintext.
* Increment NextChunkNumber
* Send the packet
* State = Waiting
Protocol of the Deframer/Decrypter:
o Initialize the replay buffer to empty, State = Waiting.
o Waiting: wait for packet, on input from channel State = Receive
o Receive:
* Extract the SID and ChunkNumber from name
* If replay, drop
* Authenticate the packet
Mosko & Wood Expires September 7, 2015 [Page 8]
Internet-Draft CCNx-PacketEncapsulation March 2015
+ If failed on consumer, send InterestReturn to Source with "X
Error" (TBD)
+ If failed on producer, send failure message to Sink so it
can send end-to-end InterestReturn back over channel (if
desired) with "Y Error" (TBD)
* Add packet to replay buffer
* Decrypt packet
* Pass decrypted packet to Sink/Source (or decompressor)
4. Control Channel
The consumer and producer will need to exchange signaling about the
encryption context. Control and data traffic should be
indistinguishable to an external observer. Therefore, all control
signaling is done within the same outer names as data traffic.
Control signaling is done with a normal Inner Packet that pushes data
to the other side. We use an Interest with an Inner Name of the form
shown below, where '_direction_' is 'up' from the consumer to
producer or 'down' for the producer to consumer. This allows each
side to maintain its own sequence number space in the 'seqnum'. This
is similar to the use of the sequence number in the DTLS record
layer.
Like DTLS, ESIC control messages are unreliable, though they are
uniquely named.
The payload of the control Interest uses a TLV equivalent of the TLS
record format for handshake and alert messages. Application data is
never communicated in these records, as they use an Inner Packet with
a different Inner Name. Inside the payload, a TLV type of Alert (21)
or Handshake (22) indicates the purpose of the TLV value. One may
concatenate multiple records in to one payload.
ControlName := ccnx:/localhost/esic/_direction_/SID=sid/SEQNUM=seqnum
4.1. ESIC Control Packets
A control packet is a CCNx Interest Inner Packet. The name of the
control packet is as above in the /localhost/esic namesapce. The
Payload of the Interest is the actual data.
The ESIC control packet SHOULD be padded out to a length that is
indistinguishable from other traffic in the given _direction_.
Mosko & Wood Expires September 7, 2015 [Page 9]
Internet-Draft CCNx-PacketEncapsulation March 2015
The Payload of the Interest contains a set of TLV records using the
normal CCNx TLV encoding. The TLV types and values are defined in
the next section.
In the 'up' direction from the consumer to the producer, a control
packet can be inserted into the Interest stream as normal. The
producer may use this extra outer name to return its own control
message or send a "no-op" back to consume the extra name.
In the 'down' direction from the producer to the consumer, there is
no pre-allocated outer name available. The producer can only send
the consumer a control message if the consumer has outstanding
Interests up to the producer. If there is one or more oustanding
interests in the outer name space, the producer normally would send a
Content Object or Interest Return corresponding to some inner name.
In this case, the producer would instead inject a control packet
Interest in the downstream. This means the producer is now short one
outer Interest in the upstream direction. Therefore, whenever the
Deframer/Decrypter sees a control message in the downstream
direction, it MUST insert an upstream "no-op" packet, padded out to
statistically undetectable length, to give the producer back a
missing name slot.
We allow one ESIC control packet in one outer packet. However, we
allow multiple Alert messages to be encoded in the payload, so long
as it remains indistinguishable from other packets in the given
_direction_.
Example from a consumer to a producer, where "NO" means "name outer"
and "NI" means "name inner".
Consumer Producer
| >------- NO1 : NI1 (Interest) --------> |
| >------- NO2 : NI2 (Interest) --------> |
| <------- NO1 : NI1 (ContentObject) ---< |
| >------- NO3 : NI /local/esic/up/2/1 -> |
| <------- NO3 : no-op -----------------< | (no-op)
| <------- NO2 : NI2 (ContentObject) ---< |
Here is an example from a producer to a consumer. The producer uses
the second avaialble name NO2 to send a control message to the
consumer. The consumer must then send a no-op packet back up to the
producer so it can return the final data packet NI2 inside NO3.
Mosko & Wood Expires September 7, 2015 [Page 10]
Internet-Draft CCNx-PacketEncapsulation March 2015
Consumer Producer
| >------- NO1 : NI1 (Interest) --------> |
| >------- NO2 : NI2 (Interest) --------> |
| <------- NO1 : NI1 (ContentObject) ---< |
| <------- NO2 : NI /local/esic/dn/2/1 -< |
| >------- NO3 : -----------------------> | (no-op)
| <------- NO3 : NI2 (ContentObject) ---< |
TODO: Add examples with loss
4.2. ESIC Control Messages
ESIC adopts the TLS 1.3 Alert Protocol for its control messages. The
TLV type of the message inside the control packet payload is taken
from the enum AlertDescription. As per TLS 1.3, fatal Alert messages
are an immediate close of the ESIC session.
As per TLS 1.3, each party MUST send a close_nofity message closing
the write side of the connection. In ESIC, this means that when a
consumer is done requesting data, it should send a final
close_notify. The producer should then use this outer name to send
back its own close_notify. If for some reason the producer must
close before the consumer, it should inject its own close_notify
discarding all remaining data and the consumer should send back
upstream a close_notify.
The KeyUpdate messages function as per TLS 1.3 Sec 6.3.5.3. Either
side may generate a KeyUpdate message and begin transmitting with the
new key. The other side must update their own key and issue its own
KeyUpdate message. TODO: How do we track the key generation as in
TLS?
5. Security Considerations
It may be possible for an observer to identify which outer packets
contain a control (alert) message if the ACK response time shows
significant statistical timing different from the normal flow of
messages.
TODO.
6. References
6.1. Normative References
[CCNxKE] "TODO", n.d., <TODO>.
Mosko & Wood Expires September 7, 2015 [Page 11]
Internet-Draft CCNx-PacketEncapsulation March 2015
[MESSAGES]
"TODO", n.d., <TODO>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
6.2. Informative References
[RFC5288] Salowey, J., Choudhury, A., and D. McGrew, "AES Galois
Counter Mode (GCM) Cipher Suites for TLS", RFC 5288,
DOI 10.17487/RFC5288, August 2008,
<http://www.rfc-editor.org/info/rfc5288>.
[RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
"Session Traversal Utilities for NAT (STUN)", RFC 5389,
DOI 10.17487/RFC5389, October 2008,
<http://www.rfc-editor.org/info/rfc5389>.
Appendix A. Test Vectors
A.1. Sample Encryption TLVs
TODO
A.2. Interest Encapsulation Examples
TODO
A.3. Content Object Encapsulation Examples
TODO
Authors' Addresses
Marc Mosko
PARC, Inc.
Email: marc.mosko@parc.com
Christopher A. Wood
PARC, Inc.
Email: christopher.wood@parc.com
Mosko & Wood Expires September 7, 2015 [Page 12]