Skip to content

Commit 26f3987

Browse files
committed
Add FAQ page with comprehensive questions and answers
1 parent 4d42511 commit 26f3987

2 files changed

Lines changed: 172 additions & 0 deletions

File tree

www/_config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ navigation:
9595
url: /playground/
9696
- title: Code Examples
9797
url: /code-examples/
98+
- title: FAQ
99+
url: /faq/
98100
- title: Developer Resources
99101
url: /resources/
100102
- title: Community

www/pages/faq.md

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
---
2+
layout: page
3+
title: Frequently Asked Questions
4+
description: Answers to common questions about IPCrypt, its implementation, and use cases.
5+
permalink: /faq/
6+
---
7+
8+
# Frequently Asked Questions
9+
10+
This page provides answers to common questions about IPCrypt, its implementation, and use cases.
11+
12+
## General Questions
13+
14+
### What is IPCrypt?
15+
16+
IPCrypt is a specification that defines well-defined methods for encrypting and obfuscating IP addresses. It provides both deterministic format-preserving and non-deterministic constructions that apply uniformly to both IPv4 and IPv6 addresses.
17+
18+
### Why was IPCrypt created?
19+
20+
IPCrypt was developed to address privacy concerns raised in [RFC6973](https://datatracker.ietf.org/doc/html/rfc6973) and [RFC7258](https://datatracker.ietf.org/doc/html/rfc7258) regarding pervasive monitoring and data collection, while maintaining the operational utility of IP addresses in network operations and analytics.
21+
22+
### Is IPCrypt a standard?
23+
24+
IPCrypt is currently a proposed solution, not yet a standardized protocol. It is being developed as an IETF Internet-Draft with the goal of providing a consistent approach to IP address encryption and obfuscation.
25+
26+
### How does IPCrypt differ from other IP address anonymization techniques?
27+
28+
Unlike ad-hoc mechanisms like simple hashing, truncation, or tokenization, IPCrypt provides:
29+
- Cryptographically sound methods with known security properties
30+
- Consistent implementation across different platforms
31+
- Format preservation when needed
32+
- Correlation protection through non-deterministic modes
33+
- Full invertibility (ability to decrypt)
34+
- Comprehensive documentation
35+
36+
## Technical Questions
37+
38+
### What encryption modes does IPCrypt support?
39+
40+
IPCrypt supports three encryption modes:
41+
42+
1. **ipcrypt-deterministic**: Format-preserving encryption using AES-128 that always produces the same output for the same input and key.
43+
2. **ipcrypt-nd**: Non-deterministic encryption using KIASU-BC with an 8-byte tweak, producing a 24-byte output.
44+
3. **ipcrypt-ndx**: Non-deterministic encryption using AES-XTS with a 16-byte tweak, producing a 32-byte output.
45+
46+
### How does the deterministic mode preserve IP address format?
47+
48+
The deterministic mode uses AES-128 in a single-block operation to encrypt the IP address. The result is then converted back to an IP address format, preserving the structure while changing the actual values.
49+
50+
### Can IPCrypt handle both IPv4 and IPv6 addresses?
51+
52+
Yes, IPCrypt operates by converting both IPv4 and IPv6 addresses to a standard 16-byte representation before encryption, allowing it to handle both address types uniformly.
53+
54+
### What key size does IPCrypt use?
55+
56+
IPCrypt uses a 128-bit (16-byte) key for all encryption modes.
57+
58+
### How secure is IPCrypt?
59+
60+
IPCrypt relies on established cryptographic primitives like AES-128 and AES-XTS, which have been extensively analyzed and are widely trusted. The security of IPCrypt depends on the security of these underlying primitives and proper key management.
61+
62+
## Implementation Questions
63+
64+
### What programming languages have IPCrypt implementations?
65+
66+
IPCrypt has been implemented in multiple programming languages, including:
67+
- Python
68+
- C
69+
- Rust
70+
- JavaScript
71+
- Go
72+
- Zig
73+
- PHP
74+
- D
75+
76+
### How do I install IPCrypt?
77+
78+
Installation depends on the programming language you're using. For example:
79+
- Python: `pip install ipcrypt`
80+
- JavaScript: `npm install ipcrypt`
81+
- Rust: `cargo add ipcrypt-rs`
82+
- Go: `go get github.com/jedisct1/go-ipcrypt`
83+
84+
For other languages, see the [Implementations](/implementations/) page.
85+
86+
### Are all implementations compatible with each other?
87+
88+
Yes, all implementations follow the same specification and produce identical results for the same inputs. This ensures interoperability across different programming languages and platforms.
89+
90+
### How do I generate a secure key for IPCrypt?
91+
92+
You should use a cryptographically secure random number generator to create a 16-byte key. For example:
93+
94+
```python
95+
import os
96+
key = os.urandom(16)
97+
```
98+
99+
Never use predictable keys or hardcoded values in production environments.
100+
101+
## Use Case Questions
102+
103+
### When should I use the deterministic mode?
104+
105+
Use the deterministic mode when:
106+
- You need to preserve the IP address format
107+
- You need to perform lookups or joins on the encrypted addresses
108+
- Correlation between datasets is acceptable for your use case
109+
110+
### When should I use the non-deterministic modes?
111+
112+
Use the non-deterministic modes when:
113+
- Format preservation is not required
114+
- You need to prevent correlation between different datasets
115+
- Maximum privacy protection is required
116+
117+
### Can IPCrypt be used for GDPR compliance?
118+
119+
IPCrypt can be part of a GDPR compliance strategy by helping to pseudonymize IP addresses. However, encryption alone may not be sufficient for full compliance, and you should consult with legal experts for your specific situation.
120+
121+
### Is IPCrypt suitable for logging applications?
122+
123+
Yes, IPCrypt is well-suited for logging applications where you want to:
124+
- Count unique clients
125+
- Implement rate limiting
126+
- Analyze traffic patterns
127+
- All without exposing actual IP addresses
128+
129+
### Can IPCrypt be used with existing systems?
130+
131+
IPCrypt can be integrated with existing systems through various methods:
132+
- As a preprocessing step before storing data
133+
- As a middleware component in data processing pipelines
134+
- As a library integrated directly into applications
135+
- As a service that other applications can call
136+
137+
## Performance Questions
138+
139+
### How fast is IPCrypt?
140+
141+
IPCrypt is designed to be efficient, with performance primarily dependent on the underlying AES implementation. High-performance implementations like the C version can process millions of IP addresses per second on modern hardware.
142+
143+
### Does IPCrypt have any memory requirements?
144+
145+
IPCrypt has minimal memory requirements, typically just a few kilobytes for the implementation and key storage.
146+
147+
### Can IPCrypt be used in high-throughput environments?
148+
149+
Yes, IPCrypt is suitable for high-throughput environments like logging systems, CDNs, and traffic analyzers. The deterministic mode is particularly efficient for these use cases.
150+
151+
## Getting Help
152+
153+
### Where can I report issues or ask questions?
154+
155+
You can report issues or ask questions on the [GitHub repository]({{ site.github_repo }}/issues).
156+
157+
### How can I contribute to IPCrypt?
158+
159+
You can contribute to IPCrypt by:
160+
- Implementing it in additional programming languages
161+
- Improving existing implementations
162+
- Reporting bugs or suggesting enhancements
163+
- Helping with documentation
164+
- Sharing your use cases and experiences
165+
166+
See the [Community](/community/) page for more information.
167+
168+
### Where can I find more resources?
169+
170+
Check out the [Resources](/resources/) page for additional documentation, guides, and examples.

0 commit comments

Comments
 (0)