How Firefox Send Integrated with the Firefox Web Browser

This article explores how Mozilla’s discontinued Firefox Send service integrated with the Firefox Web Browser to provide seamless, end-to-end encrypted file sharing. It covers the transition from an experimental browser extension to a web-based tool, the use of built-in browser APIs for client-side encryption, the integration with Firefox Accounts for expanded storage limits, and how the browser handled decryption keys locally to ensure user privacy.

Origin as a Firefox Test Pilot Extension

Firefox Send began its life in 2017 as part of the Firefox Test Pilot program. This program allowed users to install experimental features directly into the Firefox browser via a specialized add-on. During this phase, Firefox Send was tightly integrated into the browser's interface, allowing users to test encrypted file transfers and provide telemetry data to Mozilla developers before the service was spun off into a standalone web application in 2019.

Client-Side Encryption via the Web Crypto API

The core of Firefox Send's security relied directly on the capabilities of the web browser itself. Instead of encrypting files on Mozilla's servers, Firefox Send utilized the native Web Crypto API built into the Firefox browser.

When a user selected a file to upload, the browser executed JavaScript code locally on the user's machine to encrypt the file using the AES-GCM (128-bit) algorithm. The file was broken down into chunks, encrypted inside the browser's memory, and only then uploaded to Mozilla’s cloud storage. Because the browser handled the encryption before transit, Mozilla servers never had access to the unencrypted data.

URL Fragment Key Management

To ensure the recipient could decrypt the file without Mozilla ever seeing the password, Firefox Send relied on standard browser behavior regarding URL fragments (everything following the # symbol in a web address).

  1. Upon encrypting a file, the uploader's browser generated a unique decryption key.
  2. This key was appended to the generated sharing link as a URL fragment.
  3. By standard web protocol design, browsers do not send URL fragments to web servers when requesting a page.
  4. When the recipient opened the link, their browser downloaded the encrypted file from Mozilla's servers and then used the key hidden in the URL fragment to decrypt the file locally within their own browser.

Firefox Accounts and Toolbar Integration

While Firefox Send functioned as a web application accessible by any modern browser, it featured deep ecosystem integration with the Firefox Web Browser through Firefox Accounts.

In the Firefox browser toolbar, clicking the Firefox Account avatar menu provided direct shortcuts to Firefox Send alongside other Mozilla services like Firefox Monitor and Firefox Lockwise. If a user was already signed into their Firefox Account for browser syncing (bookmarks, passwords, and history), they were automatically authenticated on the Firefox Send platform.

This browser-level authentication unlocked several features:

  • Increased File Limits: Unauthenticated users could only send files up to 1GB. Users logged into their browser's Firefox Account could send files up to 2.5GB.
  • Download Controls: Authenticated users could set links to expire after a specific number of downloads (from 1 to 100) rather than just a single download.
  • Time Limits: Users with an account could keep files active for up to 7 days, compared to the 24-hour limit for unregistered users.
  • Management Dashboard: The browser synced a list of active uploads, allowing the sender to revoke access and delete files from Mozilla's servers at any time.

Discontinuation of the Service

In July 2020, Mozilla temporarily suspended and subsequently shut down Firefox Send permanently. Because the browser-based client-side encryption was completely private, Mozilla had no visibility into the files being shared. Malicious actors exploited this privacy to use Firefox Send as a content delivery network for malware, ransomware, and phishing attacks. Because the abuse undermined the safety of the broader web ecosystem, Mozilla removed the Firefox Send integrations from the browser and decommissioned the service.