File Transfer
Air-Gapped QR File Transfer
Transfer files between two UltraLocked devices using animated QR codes. Completely air-gapped—works with airplane mode enabled, no network permissions needed. Fountain coding handles missed scans automatically.
How It Works
Air-gapped transfer uses a 4-phase protocol:
- Key Exchange — Both devices display and scan QR codes to establish encryption
- SAS Verification — Verbally confirm a 6-character code to prevent interception
- Transmission — Sender displays animated QR codes; receiver scans them
- Completion — File appears in receiver's vault with integrity verification
Starting a Transfer
To Send a File:
- Open any file in your vault
- Tap the Share button
- Select Send via QR
- Display your QR code for the receiver to scan
To Receive a File:
- Open your vault
- Tap Receive File
- Scan the sender's QR code
- Display your QR code for the sender to scan
SAS Verification
After key exchange, both devices display a 6-character code like A3F-7K2. This is your Short Authentication String (SAS).
You must verbally confirm these codes match.
- If codes match: Tap Confirm to proceed
- If codes don't match: Immediately cancel—someone may be intercepting
Always Verify Out Loud
SAS verification is your protection against man-in-the-middle attacks. Never skip this step. If someone is intercepting the transfer, they cannot fake matching codes on both devices.
Fountain Coding
Unlike traditional file transfer, UltraLocked uses fountain codes (Luby Transform) for reliability:
- No frame ordering required — Scan QR codes in any order
- Handles missed scans — Works with 50%+ packet loss
- No retransmission — Just keep scanning until complete
- Self-healing — Missed frames don't break the transfer
The sender displays animated QR codes in a loop. The receiver scans continuously until the progress bar reaches 100%. When complete, a large green checkmark appears on both devices.
Transfer Limits
| Constraint | Limit | |------------|-------| | Maximum file size | 250 KB | | Key exchange timeout | 120 seconds | | Session timeout | 10 minutes | | QR frame rate | 3 FPS |
Supported File Types
Any file under 250 KB can be transferred:
- Text files (.txt, .json, .md)
- Small images (.jpg, .png under 250 KB)
- PDF documents
- Small binary files
Encryption Details
All transfers use end-to-end encryption:
- P-256 ECDH — Elliptic curve key exchange
- AES-256-GCM — Authenticated encryption per frame
- HKDF-SHA256 — Key derivation from shared secret
- SHA-256 verification — File integrity check on receipt
Keys are ephemeral—generated fresh for each transfer and destroyed immediately after.
Troubleshooting
QR codes not scanning:
- Ensure good lighting on the sender's screen
- Hold devices 6-12 inches apart
- Clean camera lens
- Increase screen brightness
Transfer taking too long:
- Move to better lighting
- Reduce distance between devices
- Keep both devices steady
Key exchange timeout:
- Restart the transfer on both devices
- Ensure both devices have camera permissions
- Check that screens are clearly visible to cameras
Security Considerations
- No network access — Transfer works in airplane mode
- Ephemeral keys — Destroyed after transfer completes
- Visual confirmation — Both users see transfer progress
- Perfect Forward Secrecy — Compromise of one transfer doesn't affect others
- Memory protection — Session keys stored in secure memory
Still have questions?
Contact Support