Megatech Photos uses end-to-end encryption.
Your data is encrypted on your device before it leaves it, using keys that only you control.
Only encrypted data (ciphertext) is stored on our servers. Decryption is only possible on your device.
This document describes the architecture and cryptographic design used to achieve this.
Your data is encrypted locally in your browser using the Web Crypto API before upload.
All encryption keys are derived or generated on your device and never leave your device in plain form.
Only encrypted data and encrypted keys are stored on our servers.
When you create an account, your client generates a random 256-bit AES-GCM key.
This master key is used to encrypt all your files.
This key never leaves your device unencrypted.
Your password is used to derive a key using PBKDF2:
PBKDF2 with SHA-256This derived key (wrapping key) is used to encrypt your master key.
crypto.subtle.generateKeycrypto.subtle.deriveKeycrypto.subtle.encryptcrypto.getRandomValuesArrayBufferAES-256-GCMcrypto.subtle.decryptAES-GCM provides integrity + confidentialityThis system is designed to protect your data against the following threats:
In all of these cases, attackers only gain access to encrypted data (ciphertext), not usable files.
End-to-end encryption does not protect against all threats.
Security depends on keeping your device and credentials secure.
crypto.subtle.generateKey for key generationcrypto.subtle.deriveKey for PBKDF2crypto.subtle.encrypt / decryptcrypto.getRandomValues for randomnessThe cryptographic implementation used by Megatech Photos is publicly available for independent review.
This repository contains the exact client-side encryption logic used in the application, allowing anyone to verify how keys are derived and how data is encrypted before upload.
View the source code on GitHub
If Megatech Photos shuts down, your encrypted files remain decryptable using your password and recovery key.
AES-256-GCMPBKDF2Only you can see your files.
Deutch (German)
English UK (English UK)
English US (English US)
Español (Spanish)
Español LATOM (Spanish LATOM)
Hrvatski (Croatian)
Norsk (Norwegian)
Português do Brasil (Portuguese, Brazilian)
Svenska (Swedish)
Türkçe (Turkish)
български (Bulgarian)
Українська (Ukrainian)
हिंदी (Hindi)
แบบไทย (Thai)
中国人 (Chinese)
日本語 (Japanese)
台湾人 (Chinese, Taiwan)