Privacy-preserving location sharing with end-to-end encryption coord.is
at master 110 lines 4.0 kB view raw
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]