Military-grade security

ファイルの暗号化/復号化について

Learn how SendFilesEncrypted protects your files with zero-knowledge encryption

The Encryption Journey

Your files are protected every step of the way

📄
Your File
Unencrypted
🔐
Your Browser
AES-256 Encryption
🔒
Our Servers
Encrypted Only

Step-by-Step Process

1

You Upload a File

sendfilesencrypted.comでは、ファイルのセキュリティに配慮しており、オンラインでファイルを共有する際の安全性を確保したいと考えています。

2

Browser Generates a Key

そのため、無料のファイル暗号化機能を実装しました。

3

File is Encrypted

Sendfilesencrypted.comで共有するすべてのファイルは、サーバーにアップロードされる前に暗号化されます。これにより、共有する各ファイルにセキュリティのレイヤーが追加され、人や脅威がそれらにアクセスするのを防ぎます。

4

Encrypted File is Uploaded

同様に、すべてのファイルは、アップロード時に指定したパスワードを使用してブラウザで復号化されます。これにより、攻撃者がファイルにアクセスした場合に、ファイルが完全に暗号化されます。

5

Recipient Downloads

ファイルをサーバーにアップロードして保存する前に、ファイルを暗号化する方法は次のとおりです。

Technical Details

For security experts and the technically curious

🔐

AES-256-GCM

コードはファイルを複数の小さなファイルに分割します。各ファイルは、アップロードに使用したパスワードとファイルのグループごとに一意のコードを使用して暗号化されます。これにより、ファイルのセキュリティがさらに強化されます。このプロセスの後、暗号化されたファイルの各部分がアップロードされ、サーバーに保存されます。これにより、開発者でさえあなたのファイルにアクセスできなくなります。

🔑

PBKDF2 Key Derivation

600,000 iterations transform your password into a secure encryption key, making brute-force attacks computationally infeasible.

🛡️

Zero-Knowledge Architecture

次に、ファイルを復号化する方法を説明します。

🔒

TLS Transport

元の各ファイルは、サーバーに保存されている暗号化されたファイルの多くに変換されたことを忘れないでください。各ピースはブラウザにダウンロードされ、入力したパスワードとファイルブロックの一意のコードを使用して、元のファイルの他の多くの復号化されたピースに結合される各ピースを復号化し、作成してダウンロードします。元のファイル。

See the Code

Our encryption implementation is transparent. Here's a simplified version of how we encrypt your files:

encryption.js
// Derive encryption key from password
async function deriveKey(password, salt) {
  const encoder = new TextEncoder();
  const keyMaterial = await crypto.subtle.importKey(
    'raw',
    encoder.encode(password),
    'PBKDF2',
    false,
    ['deriveBits', 'deriveKey']
  );

  return crypto.subtle.deriveKey(
    {
      name: 'PBKDF2',
      salt: salt,
      iterations: 600000,  // High iteration count
      hash: 'SHA-256'
    },
    keyMaterial,
    { name: 'AES-GCM', length: 256 },
    false,
    ['encrypt', 'decrypt']
  );
}

// Encrypt file data
async function encryptFile(fileData, password) {
  const salt = crypto.getRandomValues(new Uint8Array(16));
  const iv = crypto.getRandomValues(new Uint8Array(12));
  const key = await deriveKey(password, salt);

  const encrypted = await crypto.subtle.encrypt(
    { name: 'AES-GCM', iv: iv },
    key,
    fileData
  );

  return { encrypted, salt, iv };
}

This is a simplified example. Our actual implementation includes additional security measures.

⚠️

Important Security Note

パスワードがないと、ファイルを復号化できず、ファイルが破損していて読み取りが不可能になります。

あなたが読んだものが好きですか?

Send your first encrypted file in seconds. No account required.

今すぐ暗号化されたファイルを送信する