本文へスキップ

ファイルの暗号化・復号

File Encrypt & Decrypt

パスフレーズからAES-256-GCMでどんなファイルでも暗号化し、ここで作ったファイルを復号します。

ファイルをメールやチャットで送ると、それは読める形で他人のディスクに載ります。別の経路で伝えるパスフレーズであらかじめ暗号化しておけば、通信中のコピーも保存されたコピーも、あなたなしでは意味を持ちません。ここではそれをAES-256-GCMで、すべてタブの中で行います。

🔒 ブラウザの中だけで動きますencryptaesfileprivacy

ファイルはこのタブの中で、ブラウザ自身の暗号機能を使って暗号化されます。ファイルもパスフレーズもアップロードされず、どちらについても — このページも含めて — 何も保存されません。

暗号化するファイルを置いてください

どんなファイルでも、ブラウザがメモリーに載せられる大きさなら大丈夫です。

ファイルに何をしているのか

暗号
AES-256-GCM、128ビットのタグ
鍵
256ビット、ファイルごとに導出
鍵の導出
PBKDF2 with HMAC-SHA-256、600,000回の反復
ソルト
無作為な 16バイト、ファイルごとに新しく
ノンス
無作為な 12バイト、暗号化のたびに新しく

出来上がるのは 38 バイトのヘッダー — 目印、パラメーター、ソルト、ノンス — とそれに続く暗号文です。ヘッダーも中身と一緒に認証されるので、途中で反復回数を書き換えると、こっそり弱くなるのではなく復号が失敗します。ファイル名は中のどこにも保存しません。

Argon2id ではなく PBKDF2 なのは、ブラウザ自身が備えていて頼れるからです。Argon2id のほうが GPU には強いものの、このプロジェクトが検証できない WebAssembly ビルドを同梱することになります。その取引は隠さずに書いておきます。

パスフレーズをなくせば、そのファイルもなくなります。復旧も、ヒントも、裏口もありません。作るのが難しいからではなく、裏口こそがこれの守ろうとしている相手だからです。

使い方

  1. ファイルを置いてパスフレーズを決めます

    パスフレーズはPBKDF2と、そのつど新しく引く無作為なソルトで鍵に伸ばされます。だから、同じファイルを同じパスフレーズで2回暗号化しても、別のバイト列になります。

  2. パスフレーズは別に送ります

    ファイルと同じメールに書いたパスフレーズは、何も守りません。別の経路を使うか、一度で消える秘密メモを使ってください。

  3. 受け取った側で復号します

    このページが作ったものは、このページが復号します。GCMは復号しながら認証もするので、通信の途中で書き換えられたファイルは、壊れた出力を返すのではなく、そこではっきり失敗します。

よくある質問

パスフレーズを忘れたらどうなりますか。

そのファイルは失われます。復旧用の鍵もリセットも裏口もありません。だからこそ使う価値があります。失っては困るものを暗号化する前に、パスフレーズをどこかに書き留めてください。

このページがなくても他の人が開けますか。

この容器はこのツール独自の形式です。ソルト・IV・パラメータの入った小さなヘッダーに、GCMの暗号文が続きます。ページに仕様を書いてあり、書き直すのも造作ありませんが、zipでもOpenPGPのファイルでもありません。だから受け取る側には、このページかその仕様が要ります。

ファイルサイズの上限はありますか。

上限はブラウザのメモリです。ファイルはサーバーへ流すのではなく、タブの中に保持するからです。デスクトップでは通る非常に大きいファイルが、スマートフォンでは失敗することがあります。

ファイル名やサイズは隠れますか。

ファイル名は暗号化した容器の中に入るので隠れます。サイズは隠れません。暗号文の長さは平文の長さについていきますし、それはこの種のどのツールでも同じです。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。