Skip to content

Commit 05ad476

Browse files
committed
Fix cross-section links
1 parent d534337 commit 05ad476

1 file changed

Lines changed: 16 additions & 23 deletions

File tree

draft-denis-ipcrypt.md

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ informative:
4646
seriesinfo:
4747
Cryptology ePrint Archive: Paper 2014/427
4848
target: https://eprint.iacr.org/2014/427
49-
eprint: 2014/427
5049
SKINNY:
5150
title: "The SKINNY Family of Block Ciphers and its Low-Latency Variant MANTIS"
5251
author:
@@ -60,7 +59,6 @@ informative:
6059
seriesinfo:
6160
CRYPTO: 2016
6261
target: https://eprint.iacr.org/2016/660
63-
eprint: 2016/660
6462
LRW2002:
6563
title: "Tweakable Block Ciphers"
6664
author:
@@ -71,7 +69,6 @@ informative:
7169
seriesinfo:
7270
Fast Software Encryption: 2002
7371
target: https://www.cs.berkeley.edu/~daw/papers/tweak-crypto02.pdf
74-
doi: 10.1007/3-540-45661-9_17
7572
IEEE-P1619:
7673
title: "IEEE Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices"
7774
author:
@@ -90,7 +87,6 @@ informative:
9087
seriesinfo:
9188
CRYPTO: 2005
9289
target: https://www.cs.ucdavis.edu/~rogaway/papers/subset.pdf
93-
doi: 10.1007/11535218_24
9490
KIASU-BC:
9591
title: "Tweaks and Keys for Block Ciphers: the TWEAKEY Framework"
9692
author:
@@ -101,7 +97,6 @@ informative:
10197
seriesinfo:
10298
Cryptology ePrint Archive: Paper 2014/831
10399
target: https://eprint.iacr.org/2014/831
104-
eprint: 2014/831
105100
XTS-AES:
106101
title: "The XTS-AES Mode for Disk Encryption"
107102
author:
@@ -112,14 +107,12 @@ informative:
112107
date: 2010
113108
seriesinfo:
114109
IEEE: 1619-2007
115-
doi: 10.1109/TC.2010.58
116110
IPCRYPT2:
117111
title: "ipcrypt2: IP address encryption/obfuscation tool"
118112
author:
119113
- ins: F. Denis
120114
date: 2025
121115
target: https://github.com/jedisct1/ipcrypt2
122-
license: ISC
123116

124117
--- abstract
125118

@@ -139,23 +132,23 @@ Deterministic mode produces a 16-byte ciphertext enabling format preservation. N
139132

140133
This document specifies methods for the encryption and obfuscation of IP addresses for both operational use and privacy preservation. The objective is to enable network operators, researchers, and privacy advocates to share or analyze data while protecting sensitive address information.
141134

142-
This work addresses concerns raised in {{!RFC7624}} regarding confidentiality in the face of pervasive surveillance. The security properties of these methods are discussed throughout this document and summarized in {{Security Considerations}}.
135+
This work addresses concerns raised in {{!RFC7624}} regarding confidentiality in the face of pervasive surveillance. The security properties of these methods are discussed throughout this document and summarized in {{security-considerations}}.
143136

144137
## Use Cases and Motivations
145138

146139
The main motivations include:
147140

148141
- **Privacy Protection:** Encrypting IP addresses prevents the disclosure of user-specific information when data is logged or measured, as discussed in {{!RFC6973}}.
149142

150-
- **Format Preservation:** Ensuring that the encrypted output remains a valid IP address allows network devices to process the data without modification. See {{Format Preservation}} for details.
143+
- **Format Preservation:** Ensuring that the encrypted output remains a valid IP address allows network devices to process the data without modification. See {{format-preservation}} for details.
151144

152-
- **Mitigation of Correlation Attacks:** Deterministic encryption reveals repeated inputs; non-deterministic modes use a random tweak to obscure linkability while keeping the underlying input confidential. See {{Non-Deterministic Encryption}} for implementation details.
145+
- **Mitigation of Correlation Attacks:** Deterministic encryption reveals repeated inputs; non-deterministic modes use a random tweak to obscure linkability while keeping the underlying input confidential. See {{non-deterministic-encryption}} for implementation details.
153146

154147
- **Privacy-Preserving Analytics:** Many common operations like counting unique clients or implementing rate limiting can be performed using encrypted IP addresses without ever accessing the original values. This enables privacy-preserving analytics while maintaining functionality.
155148

156149
- **Third-Party Service Integration:** IP addresses are private information that should not be sent in cleartext to potentially untrusted third-party services or cloud providers. Using encrypted IP addresses as keys or identifiers allows integration with external services while protecting user privacy.
157150

158-
For implementation examples, see {{Pseudocode and Examples}}.
151+
For implementation examples, see {{pseudocode-and-examples}}.
159152

160153
# Terminology
161154

@@ -211,12 +204,12 @@ The conversion algorithm is as follows:
211204
This specification defines two generic cryptographic constructions:
212205

213206
1. **128-bit Block Cipher Construction:**
214-
- Used in deterministic encryption (see {{Deterministic Encryption}})
207+
- Used in deterministic encryption (see {{deterministic-encryption}})
215208
- Operates on a single 16-byte block
216209
- Example: AES-128 treated as a permutation
217210

218211
2. **128-bit Tweakable Block Cipher (TBC) Construction:**
219-
- Used in non-deterministic encryption (see {{Non-Deterministic Encryption}})
212+
- Used in non-deterministic encryption (see {{non-deterministic-encryption}})
220213
- Accepts a key, a tweak, and a message
221214
- The tweak must be uniformly random when generated
222215
- Reuse of the same tweak on different inputs does not compromise confidentiality
@@ -225,22 +218,22 @@ Valid options for implementing a tweakable block cipher include, but are not lim
225218

226219
- **SKINNY** (see {{SKINNY}})
227220
- **DEOXYS-BC** (see {{DEOXYS-BC}})
228-
- **KIASU-BC** (see {{Implementing KIASU-BC}} for implementation details)
229-
- **AES-XTS** (see {{ipcrypt-ndx (AES-XTS)}} for usage)
221+
- **KIASU-BC** (see {{implementing-kiasu-bc}} for implementation details)
222+
- **AES-XTS** (see {{ipcrypt-ndx}} for usage)
230223

231224
Implementers MUST choose a cipher that meets the required security properties and provides robust resistance against related-tweak and other cryptographic attacks.
232225

233226
# Deterministic Encryption
234227

235228
Deterministic encryption applies a 128-bit block cipher directly to the 16-byte representation of an IP address. All instantiations documented in this specification (`ipcrypt-deterministic`, `ipcrypt-nd`, and `ipcrypt-ndx`) are invertible - encrypted IP addresses can be decrypted back to their original values using the same key. For non-deterministic modes, the tweak must be preserved along with the ciphertext to enable decryption.
236229

237-
For implementation details, see {{Pseudocode and Examples}}.
230+
For implementation details, see {{pseudocode-and-examples}}.
238231

239232
## ipcrypt-deterministic
240233

241234
The `ipcrypt-deterministic` instantiation employs AES-128 in a single-block operation. The key MUST be exactly 16 bytes (128 bits) in length. Since AES-128 is a permutation, every distinct 16-byte input maps to a unique 16-byte ciphertext, preserving the IP address format.
242235

243-
For test vectors, see {{ipcrypt-deterministic Test Vectors}}.
236+
For test vectors, see {{ipcrypt-deterministic-test-vectors}}.
244237

245238
~~~
246239
+---------------------+
@@ -279,7 +272,7 @@ To ensure IPv4 format preservation, implementers MUST consider using cycle-walki
279272

280273
# Non-Deterministic Encryption {#non-deterministic-encryption}
281274

282-
Non-deterministic encryption leverages a tweakable block cipher together with a random tweak. For implementation details, see {{Pseudocode and Examples}}.
275+
Non-deterministic encryption leverages a tweakable block cipher together with a random tweak. For implementation details, see {{pseudocode-and-examples}}.
283276

284277
## Encryption Process
285278

@@ -319,13 +312,13 @@ For test vectors, see {{ipcrypt-nd-test-vectors}} and {{ipcrypt-ndx-test-vectors
319312

320313
### ipcrypt-nd (KIASU-BC) {#ipcrypt-nd}
321314

322-
The `ipcrypt-nd` instantiation uses the KIASU-BC tweakable block cipher with an 8-byte (64-bit) tweak. For implementation details, see {{Implementing KIASU-BC}}. The output is 24 bytes total, consisting of an 8-byte tweak concatenated with a 16-byte ciphertext.
315+
The `ipcrypt-nd` instantiation uses the KIASU-BC tweakable block cipher with an 8-byte (64-bit) tweak. For implementation details, see {{implementing-kiasu-bc}}. The output is 24 bytes total, consisting of an 8-byte tweak concatenated with a 16-byte ciphertext.
323316

324317
Random sampling of an 8-byte tweak yields an expected collision for a specific tweak value after about 2^(64/2) = 2^32 operations (approximately 4 billion operations). If an `(input, tweak)` collision occurs, it indicates that the same input was processed with that tweak without revealing the input's value.
325318

326319
These collision bounds apply per cryptographic key. By rotating keys regularly, secure usage can be extended well beyond these bounds. The effective security is determined by the underlying block cipher's strength.
327320

328-
For test vectors, see {{ipcrypt-nd Test Vectors}}.
321+
For test vectors, see {{ipcrypt-nd-test-vectors}}.
329322

330323
### ipcrypt-ndx (AES-XTS) {#ipcrypt-ndx}
331324

@@ -383,7 +376,7 @@ This document does not require any IANA actions.
383376

384377
# Diagrams {#diagrams}
385378

386-
This appendix provides visual representations of the key operations described in this document. For implementation details, see {{Pseudocode and Examples}}.
379+
This appendix provides visual representations of the key operations described in this document. For implementation details, see {{pseudocode-and-examples}}.
387380

388381
## IPv4 Address Conversion Diagram {#ipv4-address-conversion-diagram}
389382

@@ -469,11 +462,11 @@ This appendix provides visual representations of the key operations described in
469462

470463
# Pseudocode and Examples {#pseudocode-and-examples}
471464

472-
This appendix provides detailed pseudocode for key operations described in this document. For a visual representation of these operations, see {{Diagrams}}.
465+
This appendix provides detailed pseudocode for key operations described in this document. For a visual representation of these operations, see {{diagrams}}.
473466

474467
## IPv4 Address Conversion
475468

476-
For a diagram of this conversion process, see {{IPv4 Address Conversion Diagram}}.
469+
For a diagram of this conversion process, see {{ipv4-address-conversion-diagram}}.
477470

478471
~~~pseudocode
479472
function IPv4To16Bytes(ipv4_address):

0 commit comments

Comments
 (0)