Privacy-preserving location sharing with end-to-end encryption
coord.is
1#set document(
2 title: "Encryption Documentation - Coords",
3 author: "Allison Bentley",
4)
5#set page(margin: 1in)
6#set text(font: "Source Sans 3", size: 11pt)
7#set heading(numbering: "1.")
8
9#align(center)[
10 #text(size: 18pt, weight: "bold")[Encryption Documentation]
11
12 #text(size: 14pt)[Coords iOS Application]
13
14 #v(0.5em)
15
16 Bundle ID: `sh.bentley.Transponder`
17
18 #datetime.today().display("[month repr:long] [day], [year]")
19]
20
21#v(2em)
22
23= Overview
24
25This document describes the cryptographic functionality used in the Coords iOS application for the purpose of U.S. Export Administration Regulations (EAR) compliance.
26
27= Encryption Algorithms Used
28
29The application uses the following standard cryptographic algorithms:
30
31#table(
32 columns: (auto, auto, auto),
33 inset: 8pt,
34 align: left,
35 [*Algorithm*], [*Standard*], [*Purpose*],
36 [Ed25519], [RFC 8032 (IETF)], [Digital signatures for user identity verification],
37 [X25519], [RFC 7748 (IETF)], [Elliptic curve Diffie-Hellman key exchange],
38 [AES-256-GCM], [NIST SP 800-38D], [Authenticated encryption of location data],
39)
40
41= Implementation
42
43The cryptographic algorithms are implemented via a bundled Rust library (`transponder_core`) rather than Apple's CryptoKit or Security framework. The implementations use well-established, audited cryptographic libraries from the Rust ecosystem.
44
45= Purpose of Encryption
46
47The encryption in this application is used solely for:
48
49+ *User Authentication* — Ed25519 digital signatures verify user identity when sharing location data with friends. Each user generates a keypair that serves as their cryptographic identity.
50
51+ *Personal Data Protection* — X25519 key exchange derives a shared secret, which is then used with AES-256-GCM to encrypt location data. This provides end-to-end encryption where only the intended recipient can decrypt the data.
52
53= Exemption Qualification
54
55This use of encryption qualifies for export exemption under EAR §740.17(b)(1) for the following reasons:
56
57- All algorithms used are publicly available, international standards published by IETF and NIST
58- No proprietary or non-standard cryptographic algorithms are used
59- Encryption is used exclusively for authentication and protection of personal user data
60- The application does not provide encryption as a service to third parties
61- The application is not designed for government or military use
62
63= Data Flow
64
65*Key Exchange* (out-of-band, no server involvement):
66
67#figure(
68 ```
69 User A User B
70 | |
71 |------------------ Public key via QR code or coord:// link ->|
72 |<- Public key via QR code or coord:// link --------------------|
73 | |
74 |-- Derive shared secret (X25519) |
75 | Derive shared secret (X25519) --|
76 ```,
77)
78
79#v(1em)
80
81*Location Sharing* (server only sees encrypted data):
82
83#figure(
84 ```
85 User A Server User B
86 | | |
87 |-- Sign (Ed25519) ------->| |
88 |-- Encrypt (AES-GCM) ---->| |
89 | |-- Encrypted blob --->|
90 | | Decrypt (AES-GCM)
91 | | Verify (Ed25519)
92 ```,
93)
94
95= Contact Information
96
97Developer: Allison Bentley \
98Developer Website: https://bentley.sh \
99
100Application: Coords \
101Bundle Identifier: `sh.bentley.Transponder` \
102Website: https://coord.is
103
104#v(2em)
105
106#line(length: 100%)
107
108#text(size: 9pt, fill: gray)[
109 This document is provided for U.S. export compliance purposes under the Export Administration Regulations (EAR). The cryptographic functionality described herein is limited to authentication and personal data protection as defined in EAR §740.17(b)(1).
110]