Skip to content
HexaTransfer
Back to blog
GDPR & Compliance

Privacy by Design Principles for File Transfer Tools

How to apply privacy by design principles to file transfer tools, ensuring data protection is built into every stage of the sharing process.

Privacy by Design in a file transfer tool means the default configuration already protects personal data without the user touching a single setting. GDPR Article 25 codifies two flavors: data protection by design (Article 25(1)) requires you to build appropriate technical measures into the product from the planning phase, and data protection by default (Article 25(2)) requires the out-of-the-box configuration to process only what's necessary, share with only those who need it, and retain only as long as required. For a transfer tool, that translates to client-side encryption enabled by default, sub-30-day expiry, minimal metadata collection, and one-click revocation.

The seven Cavoukian principles applied to transfers

Ann Cavoukian's 1990s framework — proactive not reactive, privacy as default, embedded into design, full functionality, end-to-end security, visibility and transparency, respect for user privacy — maps directly onto file transfer architecture. Proactive: detect weak ciphers in the codebase before deployment via automated SAST scanning. Default: AES-256-GCM enabled with no opt-out. Embedded: encryption happens in the upload pipeline, not as a separate step. Full functionality: encrypted files still support previews via client-side decryption. End-to-end: the platform never touches plaintext. Visibility: publish the encryption spec. Respect: give users control over retention and expiry.

Article 25(1): design-phase obligations

Article 25(1) requires measures "both at the time of determination of the means for processing and at the time of the processing itself." That means privacy obligations at architecture design, not retrofitted. Choose a transport protocol (HTTPS with TLS 1.3), a cipher suite (AES-256-GCM or XChaCha20-Poly1305), a key derivation function (PBKDF2-SHA-256 at 600,000 iterations or Argon2id), and a storage region (EU) before writing the first line of code. Document the choices in an architecture decision record so future engineers understand the constraints.

Article 25(2): default-configuration obligations

Article 25(2) spells out four defaults: limit the amount of personal data collected, limit the processing, limit the retention period, and limit accessibility. For a transfer tool, that cashes out as: ask only for sender and recipient emails (not full name, phone, address); process the file once and delete; retain 7 days not forever; restrict access to the specific recipients, not a public URL indexed by search engines. Contrast with WeTransfer Free's public shareable links — convenient but not Article 25(2)-compliant without additional safeguards.

Data minimization in the upload flow

The sender's upload form is where minimization starts. Bad design: ask for sender name, company, phone, recipient name, recipient company, message. Each field is a personal data point stored and analyzed. Good design: email-only, optional message field, no tracking pixels. SwissTransfer and HexaTransfer both implement minimal forms; WeTransfer and Dropbox Transfer collect more. Strip EXIF metadata from images server-side if client-side stripping isn't available. Don't log filenames if they carry personal data — hash them for the audit trail and store the mapping server-side only.

Default-on encryption with no performance excuses

AES-256-GCM in modern browsers via Web Crypto API runs at roughly 200-500 MB/s on a 2020-era laptop. A 100 MB file encrypts in well under a second. Libsodium's XChaCha20-Poly1305 runs similarly fast. The performance excuse for making encryption opt-in is gone. Use per-file keys derived from a user-held secret — a password or a random key embedded in the URL fragment (after the #, so servers never see it). Reference Firefox Send's 2017-2019 architecture for a proven pattern: URL fragment carried the key, server saw only ciphertext.

Pseudonymization where possible

Article 4(5) defines pseudonymization. Under Recital 28, it's encouraged throughout the regulation. For file transfers, pseudonymization means replacing direct identifiers in system metadata: sender@company.com becomes an SHA-256 hash for the audit log, with the mapping table stored separately under stricter access controls. Recipients similarly. If an attacker compromises the audit log alone, they see hashes, not a contact graph. The mapping table — smaller and in a separate vault — is protected with different keys and access policies.

Transparency through published architecture

Article 25 doesn't mandate open source, but transparency is a privacy-by-design principle. Publish: the encryption spec (cipher, KDF, iterations, authentication tag length), the data flow diagram, the sub-processor list with jurisdictions, the retention schedule, the breach notification timeline, and the audit log schema. Proton, Tresorit, and HexaTransfer all publish technical whitepapers. Cryptographic claims that can't be verified — vague "military-grade encryption" — are red flags. If the provider won't name the cipher, assume weak security.

User control as a default, not a premium feature

Privacy by Design goes sideways when controls are locked behind paid tiers. Password-protected links shouldn't cost extra. Download limits shouldn't be premium. Link revocation shouldn't require contacting support. The minimum viable privacy posture — expiry, password, revocation, download notifications — should be free, with paid tiers adding scale (storage, team management) or convenience (branded links, longer retention). This is both a GDPR posture and a commercial one: users trust products that give them control without a paywall.

Logging that respects the principle

Audit logs are themselves personal data. Over-log and you've created a new breach surface. Under-log and you can't meet Article 33 or demonstrate compliance under Article 5(2). The balance: log event type, timestamp, file ID hash, actor ID hash, outcome. Don't log full IPs — truncate to /24 (IPv4) or /64 (IPv6). Don't log user agents in full — extract browser family and major version. Retain for the minimum period needed for security and compliance (typically six months), then roll off. Encrypt the log pipeline end-to-end; log access itself becomes an event.

Testing the posture before launch

Run a data flow audit with a fresh engineer who wasn't involved in the build. Ask: for each system, what personal data passes through? Where is it stored? How long? Who can access it? How is access logged? How is it deleted? Compare answers to the Article 25 commitments documented in the DPIA. Penetration test against the stated architecture — does the server actually see only ciphertext? Is the URL fragment key really out of logs? Services with shaky privacy-by-design claims fail these tests quickly. Services with solid ones — HexaTransfer's 7-day expiry with client-side AES-256-GCM — survive because the architecture does what the docs say.

Build the privacy in; don't bolt it on. Try it at hexatransfer.com — free, no account, 10 GB max.

Send large files securely with end-to-end encryption

Transfer files up to 10 GB for free with end-to-end encryption. No account required. Your files are encrypted in your browser before upload — no one else can read them.

Send a file