Urgent.News

What's breaking now, across thousands of outlets.

Tech

Building a True Zero-Knowledge File Sharing Tool with Client-Side Encryption

Building a True Zero-Knowledge File Sharing Tool with Client-Side Encryption Most “secure” file sharing tools still hold the encryption keys or can decrypt your files on their servers. I wanted something different — a tool where even I, as the operator, mathematically cannot access the contents. So I built SendShield Files . The Core Idea Files are encrypted entirely in the browser before they…

The article outlines the creation of a new file sharing tool called SendShield Files, which aims to provide a truly zero-knowledge service. Traditional file sharing tools often retain the encryption keys or have the capability to decrypt files on their servers. SendShield Files seeks to eliminate this vulnerability by ensuring that even the tool's operator cannot access the contents of the shared files.

At its core, SendShield Files encrypts files entirely on the user's browser before they leave their device. The encryption key remains solely on the user's machine and never reaches the server. The process involves the browser generating a random file key, splitting the file into 16 MiB chunks, and then encrypting each chunk using AES-256-GCM with the Web Cryptography API.

The decryption key is placed in the URL fragment, which, according to RFC 3986, is not sent to the server in the HTTP request. This ensures that the server only stores the ciphertext, resulting in a zero-knowledge architecture where the provider cannot decrypt the files, even if they desired to do so.

The tool offers two main ways to share files: by directly sending a file or by requesting files through a drop portal. In the first method, users choose a file, optionally set an expiration time (between 10 minutes and 90 days), and add an optional Argon2id passphrase. The browser then encrypts the file and shares the link, with the key stored in the URL fragment.

In the second method, users create a request link that uploaders can use to send sensitive documents. The uploaders encrypt their files using the provider's X25519 public key on their own browsers, and only the provider can decrypt the submissions.

SendShield Files uses AES-256-GCM for chunked encryption, Argon2id for passphrase wrapping, and X25519 for file requests. The crypto library is open source for those who wish to review the implementation: https://github.com/SendShield-Files/crypto

However, the tool is still in the early stages and has a few limitations. It is not yet self-hostable, large files may strain the browser's memory, there are no team or workspace features, and the user experience can still be improved for non-technical users. The author is currently seeking feedback from developers, particularly regarding any red flags in the crypto approach, the potential friction of the UX for normal users, and what would make users prefer this tool over existing alternatives.

The article provides several links for further information: a Product Hunt post at https://producthunt.com/products/sendshield-files, the main site at https://sendshieldfiles.com, and security details at https://sendshieldfiles.com/security.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Reconciling Payments When Webhooks Never Arrive

Designing a recovery path for asynchronous transactions that remain stuck in processing. Webhooks provide a fast way to learn that an external payment changed state.

  • Webhooks may fail to deliver payment status updates due to network issues or provider errors
  • Reconciliation creates local records with transaction details and status tracking
  • Combining webhooks and reconciliation ensures reliable payment lifecycle management

Combining Automated Payment Rails with Human Fallback

Designing one transaction lifecycle that can move safely between API-based payouts and operational fulfillment. Payment coverage is rarely uniform. One destination may support an immediate API payout.

  • Automated and manual fulfillment treated as distinct strategies within unified customer lifecycle
  • Routing layer determines fulfillment method based on destination and payment method
  • Manual fallback should only occur when appropriate, not for every provider error

More from Saturday 10 October →