Skip to content

Commit 17115d8

Browse files
committed
Add some text about Crypto Offset
- and move section AAD Construction behind definitions.
1 parent 7da7f9e commit 17115d8

File tree

1 file changed

+117
-101
lines changed

1 file changed

+117
-101
lines changed

eesp.org

Lines changed: 117 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -533,106 +533,6 @@ specification MUST specify the length of the ICV and the comparison
533533
rules and processing steps for validation.
534534

535535

536-
** AAD Construction
537-
Additional Authenticated Data (AAD) includes the Base
538-
Header, any Optional Headers and Peer Header.
539-
540-
#+caption: EESP AAD
541-
#+name: eesp-aad
542-
#+begin_src
543-
0 1 2 3
544-
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
545-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
546-
| | |
547-
~ Base Header ~ |
548-
| | |
549-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Int
550-
| | egr
551-
~ Peer Header (variable) ~ ity
552-
| | |
553-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Pro
554-
| | tec
555-
~ Encrypted Payload Data (variable) ~ ted
556-
| | |
557-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
558-
~ Integrity Check Value-ICV (variable) ~
559-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
560-
#+end_src
561-
562-
Additionally, if a Crypt Offset is used, the AAD includes the
563-
associated data exposed due to the offset. Payload Data covered
564-
by the Crypt Offset is transmitted in the clear, but is still
565-
included in the AAD.
566-
567-
#+caption: EESP Tunnel Mode AAD with Crypt Offset
568-
#+name: eesp-aad-crypt-offset
569-
#+begin_src
570-
0 1 2 3
571-
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
572-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
573-
| | |
574-
| Base Header ~ |
575-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++|
576-
| Crypt Offset Optional Header | |
577-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++| Int
578-
| | egr
579-
~ Peer Header (variable) ~ ity
580-
| | |
581-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++| Pro
582-
| Plaintext Payload Data (variable) | tec
583-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++| ted
584-
| | |
585-
~ Encrypted Payload Data (variable) ~ |
586-
| | |
587-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+++--+
588-
~ Integrity Check Value-ICV (variable) ~
589-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++
590-
#+end_src
591-
592-
As an example consider a Tunnel mode SA, with replay protection
593-
enabled and 8 bytes explicit IV carrying an IPv4 UDP packet with
594-
crypto offset 8 (8x4 = 32 bytes). [eesp-aad-crypt-offset-example]
595-
596-
#+begin_src
597-
#+caption: EESP Tunnel Mode AAD with Crypt Offset example
598-
#+name: eesp-aad-crypt-offset-example
599-
0 1 2 3
600-
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
601-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
602-
|1|Version|Flags| Opt Len (4) | Session ID | |
603-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
604-
| SPI | |
605-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
606-
| Crypt Offset(2) |Opt Len (4)|POffset (7)|CryptOff(8)| F | R | |
607-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Int
608-
| Sequence number 63-32 | egr
609-
| Sequence number 31-0 | ity
610-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
611-
| IV 63-32 | Pro
612-
| IV 31-0 | tec
613-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ted
614-
| Payload Info Header (Next header 4) Plain text) | |
615-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
616-
| IP + UDP Headers 28 bytes Plain text | |
617-
+---------------------------------------------------------------+ |
618-
| Remaining Encrypted Payload Data | |
619-
~ ~ |
620-
| | |
621-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
622-
| |
623-
~ Integrity Check Value-ICV (variable) ~
624-
| |
625-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
626-
#+end_src
627-
628-
The AAD specifications apply to all EESP cipher suites used with
629-
EESP. This document updates [[RFC4106]] to define EESP-specific
630-
handling of Additional Authenticated Data (AAD) when using
631-
AES-GCM. For AES-GMAC [[RFC4543]], the AAD includes all headers,
632-
i.e. the entire EESP payload except the Integrity Check Value (ICV).
633-
This document also updates AAD processing for the
634-
ENCR_CHACHA20_POLY1305 cipher suite, as specified in [[RFC7634]].
635-
636536
** Full and Optimized Packet Formats
637537

638538
# :NOTE: What is "resulting" referring to?
@@ -913,7 +813,7 @@ and counter associated with the sequence number subspace identified
913813
with the subspace ID field.
914814

915815
The receiver MUST drop any packet received with a subpace ID value
916-
greater or equal to N. i Receiving such packets is an auditable
816+
greater or equal to N. Receiving such packets is an auditable
917817
event. The audit log entry for this event SHOULD include the SPI value,
918818
subpace ID value, current date/time, Source Address, Destination Address,
919819
and (in IPv6) the cleartext Flow ID.
@@ -1041,6 +941,20 @@ This option is typically used for within one Datacenter use case
1041941
such as [[PSP]]. When enabled full packet format, with Payload Info
1042942
Header MUST be used; for the intermediate router to have Next Header.
1043943

944+
The Crypt Offset can vary on a per packet basis. The maxinum
945+
allowed Crypt Offset MUST be negotiated by IKEv2 or any other
946+
appropriate protocol. Packets with a Crypt Offset bigger than
947+
the negotiated maximum MUST be dropped by the receiver.
948+
Receiving such packets is an auditable event. The audit log entry
949+
for this event SHOULD include the SPI value, subpace ID value,
950+
current date/time, Source Address, Destination Address, and
951+
(in IPv6) the cleartext Flow ID.
952+
953+
The receiver SHOULD check the ICV value in this case. The action
954+
in case of a correct ICV value depends on local policy. However,
955+
it is recommented to tear down the connection as it can't be
956+
considered as secure anymore.
957+
1044958
NOTE: This is for the use in Datacenters ONLY. It might be moved to
1045959
a separate document that defines the 'EESP use for Datacenters'.
1046960

@@ -1278,6 +1192,108 @@ packets.
12781192
the Security Architecture document.
12791193
#+end_src
12801194

1195+
** AAD Construction
1196+
Additional Authenticated Data (AAD) includes the Base
1197+
Header, any Optional Headers and Peer Header.
1198+
1199+
#+caption: EESP AAD
1200+
#+name: eesp-aad
1201+
#+begin_src
1202+
0 1 2 3
1203+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
1204+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
1205+
| | |
1206+
~ Base Header ~ |
1207+
| | |
1208+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Int
1209+
| | egr
1210+
~ Peer Header (variable) ~ ity
1211+
| | |
1212+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Pro
1213+
| | tec
1214+
~ Encrypted Payload Data (variable) ~ ted
1215+
| | |
1216+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
1217+
~ Integrity Check Value-ICV (variable) ~
1218+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1219+
#+end_src
1220+
1221+
Additionally, if a Crypt Offset is used, the AAD includes the
1222+
associated data exposed due to the offset. Payload Data covered
1223+
by the Crypt Offset is transmitted in the clear, but is still
1224+
included in the AAD.
1225+
1226+
#+caption: EESP Tunnel Mode AAD with Crypt Offset
1227+
#+name: eesp-aad-crypt-offset
1228+
#+begin_src
1229+
0 1 2 3
1230+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
1231+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
1232+
| | |
1233+
| Base Header ~ |
1234+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++|
1235+
| Crypt Offset Optional Header | |
1236+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++| Int
1237+
| | egr
1238+
~ Peer Header (variable) ~ ity
1239+
| | |
1240+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++| Pro
1241+
| Plaintext Payload Data (variable) | tec
1242+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++| ted
1243+
| | |
1244+
~ Encrypted Payload Data (variable) ~ |
1245+
| | |
1246+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+++--+
1247+
~ Integrity Check Value-ICV (variable) ~
1248+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++
1249+
#+end_src
1250+
1251+
As an example consider a Tunnel mode SA, with replay protection
1252+
enabled and 8 bytes explicit IV carrying an IPv4 UDP packet with
1253+
crypto offset 8 (8x4 = 32 bytes). [eesp-aad-crypt-offset-example]
1254+
1255+
#+begin_src
1256+
#+caption: EESP Tunnel Mode AAD with Crypt Offset example
1257+
#+name: eesp-aad-crypt-offset-example
1258+
0 1 2 3
1259+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
1260+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
1261+
|1|Version|Flags| Opt Len (4) | Session ID | |
1262+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
1263+
| SPI | |
1264+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
1265+
| Crypt Offset(2) |Opt Len (4)|POffset (7)|CryptOff(8)| F | R | |
1266+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Int
1267+
| Sequence number 63-32 | egr
1268+
| Sequence number 31-0 | ity
1269+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
1270+
| IV 63-32 | Pro
1271+
| IV 31-0 | tec
1272+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ted
1273+
| Payload Info Header (Next header 4) Plain text) | |
1274+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
1275+
| IP + UDP Headers 28 bytes Plain text | |
1276+
+---------------------------------------------------------------+ |
1277+
| Remaining Encrypted Payload Data | |
1278+
~ ~ |
1279+
| | |
1280+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
1281+
| |
1282+
~ Integrity Check Value-ICV (variable) ~
1283+
| |
1284+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1285+
#+end_src
1286+
1287+
The AAD specifications apply to all EESP cipher suites used with
1288+
EESP. This document updates [[RFC4106]] to define EESP-specific
1289+
handling of Additional Authenticated Data (AAD) when using
1290+
AES-GCM. For AES-GMAC [[RFC4543]], the AAD includes all headers,
1291+
i.e. the entire EESP payload except the Integrity Check Value (ICV).
1292+
This document also updates AAD processing for the
1293+
ENCR_CHACHA20_POLY1305 cipher suite, as specified in [[RFC7634]].
1294+
1295+
1296+
12811297
** Algorithms
12821298

12831299
# :NOTE: Not all AEAD algorithms provide both services, e.g.

0 commit comments

Comments
 (0)