Resources

How it Works

April 14, 2023

How It Works

We take your privacy seriously. We do not track you or your data, and we do not aggregate or sell your personal data for profit. All files uploaded to our servers are encrypted to ensure your privacy and security. We use 128-bit AES-GCM encryption via the Web Crypto API to encrypt files in the browser before uploading them to the server. Additionally, we use HTTPS/TLS encryption for all communications to, from, and among our servers, including file uploads, file downloads, and API requests. We perform regular reviews of our security infrastructure and apply patches and upgrades immediately as required.

File Encryption

Medical File Share uses 128-bit AES-GCM encryption via the Web Crypto API to encrypt files in the browser before uploading them to the server.

Steps:

Uploading

Generate a new secret key using crypto.getRandomValues.

Derive more keys via HKDF SHA-256 using the secret key:

  • a series of encryption keys for the file, via ECE (AES-GCM)
  • an encryption key for the file metadata (AES-GCM)
  • a signing key for request authentication (HMAC SHA-256)

Encrypt the file and metadata using their respective encryption keys.

Upload the encrypted data and signing key to the server.

Receive an owner token and share URL from the server and store them in local storage.

Append the secret key to the share URL as a #fragment and present it to the user interface.

Downloading

When you click on the share URL link, the browser loads the share URL page and retrieves an authentication nonce. The secret key required to access the encrypted file is imported from the URL fragment.

Next, the same three keys used for encryption and decryption are derived. Using its signing key, the browser signs the authentication nonce and requests the metadata.

Once the encrypted metadata is retrieved, the browser decrypts it and presents the information on the page. To download the encrypted file, the browser sends another authenticated request.

Once the browser receives permission to download the file, it downloads and decrypts it. Depending on the browser settings, the file will either prompt a save dialog or be automatically saved to a specified location on the device.

This process ensures secure and authenticated access to encrypted files.

Passwords

A password may optionally be set to authenticate the download request. When a password is set the following steps occur.

Sender

The original signing key derived from the secret key is discarded

A new signing key is generated via PBKDF2 from the user entered password and the full share url (including secret key fragment)

The new key is sent to the server, authenticated by the owner token

The server stores the new key and marks the record as needing a password

Downloader

The browser loads the share url page.

The user is prompted for the password and the signing key is derived

The browser requests the metadata using the key to sign.

If the password was correct the metadata is returned, otherwise a 401.

Encrypt any file

Medical File Share is a free, open-source, and easy-to-use file sharing service for medical professionals.

  • Fully Auditable Code
  • Fully Encrypted
  • Just Copy & Paste
orb dark svg