暗号化ファイルの構成
ファイルのAES-256暗号化・復号化ツールは,ブラウザのWeb Crypto APIを使って選択したファイルをAES-GCMで暗号化します.出力される.encファイルは一般的なZIP暗号化ではなく,本ツール専用のコンテナです.先頭に形式を識別する情報を置き,鍵導出に使うソルト,暗号化に使うIV,元ファイル名,暗号文を順に格納します.
復号時はこの構造を読み戻し,同じパスワードから鍵を導出して元の内容を取り出します.
専用形式であるため,ほかの暗号化ソフトが自動的に開けるとは限りません.長期保管では,暗号化ファイルだけでなく,本ツールへアクセスできる環境と形式の情報も必要です.重要な原本を直ちに削除せず,別環境で復号できることを試してから保管方法を決めてください.
PBKDF2による鍵導出
入力したパスワードは,そのままAESの鍵として使われません.Web Crypto APIのPBKDF2へ渡し,ランダムな16バイトのソルト,SHA-256,100,000回の反復を使って256ビット鍵を導出します.ソルトがあることで,同じパスワードでも暗号化するたびに異なる鍵導出結果となり,あらかじめ作られた照合表の使い回しを難しくします.ソルト自体は秘密ではないため.enc内に保存されます.
反復処理はパスワード候補を試すコストを増やしますが,弱いパスワードを強い秘密へ変える魔法ではありません.短い単語,氏名,誕生日,使い回しのパスワードは避け,長く推測されにくい値を使ってください.100,000回という設定も,将来にわたりあらゆる攻撃へ十分であると保証するものではありません.非常に高い機密性や長期保管が必要なら,組織で承認された暗号化製品と鍵管理手順を優先してください.
AES-256-GCMと認証失敗
暗号化には256ビット鍵のAES-GCMを使い,暗号化ごとに12バイトのランダムIVを生成します.GCMは暗号化と同時に認証タグを作り,復号時に暗号文・鍵・IVの組合せが正しいかを検査します.パスワードが違う,または暗号文が途中で変化している場合は認証に失敗し,元データを返しません.
この性質は「誰が作ったファイルか」を証明する電子署名ではありません.正しいパスワードを知る人は同じ方式で別の暗号化ファイルを作れます.また,現在の独自形式では元ファイル名は暗号文とは別に保存され,AES-GCMの追加認証データにも含まれていません.そのためファイル名は秘匿されず,書き換えられても暗号文の認証失敗として検出されません.
内容の出所確認には,信頼できる経路でのハッシュ値や電子署名など別の仕組みが必要です.
暗号化と復号の操作手順
暗号化では,対象ファイルを選択し,パスワードと確認入力を一致させて処理を開始します.完了後に.encファイルを保存します.元ファイル名もコンテナに記録されるため,復号時のダウンロード名として利用されます.機密性の高い名称を隠したい場合は,暗号化前に一般的な名前へ変更してください.
復号では本ツールで作成した.encファイルを選び,暗号化時と同じパスワードを入力します.認証に成功すると元のバイト列をダウンロードできます.本ツールはパスワードを保存せず,再発行や回復の仕組みも持ちません.パスワードを失うと復号できないため,暗号化ファイルとは別の安全な場所へ記録します.復号後はファイルが開けることと内容が一致することを確認してください.
ファイルサイズとブラウザメモリ
現在の実装は,ファイル全体をArrayBufferとしてブラウザのメモリへ読み込み,暗号化後または復号後のデータもメモリ上に生成します.処理できる最大サイズは固定値ではなく,端末のメモリ,ブラウザ,開いているタブなどに左右されます.ファイルサイズと同じだけの空きメモリがあれば必ず成功するわけではなく,途中データを含む追加領域も必要です.
大容量ファイルでは処理時間が長くなったり,タブが応答しなくなったりすることがあります.最初は小さなコピーで動作を確認し,処理中はタブを閉じたり再読み込みしたりしないでください.数百MB以上や複数GBのファイルを日常的に扱う場合は,ストリーミング処理に対応したデスクトップ用暗号化ソフトの方が適しています.
安全に運用するための確認事項
ブラウザ内処理は,ファイル内容を暗号化サービスへアップロードする工程を減らせます.一方で,端末がマルウェアに感染している,ブラウザ拡張が入力を読める,共用端末にダウンロードが残る,クラウド同期フォルダへ自動保存されるといった別のリスクは残ります.「ローカル処理だから必ず安全」ではなく,信頼できる端末とブラウザを使い,処理後の保存先も管理してください.
暗号化前の原本,暗号化後の.enc,パスワードの3つを同じ場所へ無造作に置くと,暗号化の効果が下がります.パスワードは別経路で共有し,受信者が復号を確認した後に不要な平文コピーを整理します.重要なデータでは,暗号化直後に別ブラウザや別端末で復号試験を行い,必要に応じてSHA-256などのチェックサムも記録してください.
エラーが出たときの切り分け
復号に失敗した場合は,最初に暗号化時と同じパスワードかを確認します.大文字・小文字,全角・半角,前後の空白は別の文字です.パスワード管理アプリから貼り付ける場合は,余分な改行が入っていないかも確認します.次に,対象が本ツールで作成した.encであるか,ダウンロードや転送の途中でファイルサイズが変わっていないかを調べます.
AES-GCMの認証失敗は,誤ったパスワード,IV・ソルト・暗号文の破損などを同じように拒否します.エラー表示だけから原因を一意に決めることはできません.元の.encを再取得しても失敗する場合は,暗号化時の記録と照合します.壊れた暗号文の一部だけを救出する機能はありません.重要ファイルは複数媒体へバックアップし,各コピーのハッシュ値を記録しておくと転送破損を切り分けやすくなります.
パスワード共有の実務
.encをメール添付で送る場合,同じメール本文にパスワードを書くと,メールへアクセスした人が両方を取得できます.暗号化ファイルとパスワードは,組織が認める別経路で共有してください.ただし,経路を分けるだけで送信者の本人確認が完成するわけではありません.相手の連絡先が正しいか,なりすましでないかも確認します.
長いランダムなパスワードは手入力に向きません.安全なパスワード管理アプリを使い,必要な相手だけへ共有します.受信者が復号できたことを確認するまで,送信者は原本とパスワードを保持します.保管期限が終わったら,平文,暗号文,パスワードのどれを残すかをデータ分類と規程に基づいて決めます.
長期保管には専用形式の寿命も考える
暗号方式が強くても,復号できるソフトやブラウザ環境を失えば利用できません.本ツール独自の.encを数年・数十年保管する用途では,将来も同じ実装を利用できる保証がないことを考慮してください.法定保存や事業継続に必要な文書は,組織がサポート期間と移行手順を管理する標準的な暗号化製品を選ぶ方が適切です.
一時的な受け渡しに使う場合でも,暗号化直後に復号試験を行います.復号したファイルを元ファイルと比較し,必要なら双方のSHA-256が同じかを確認します.暗号化成功の表示だけで原本を削除せず,受信者側の確認までを一つの手順として扱ってください.暗号化はバックアップの代わりではありません.
端末故障や誤削除に備えるコピーと,閲覧を制限する暗号化は目的が異なるため,必要に応じて両方を設計します.利用を終えた共有リンクや一時保存ファイルも忘れずに整理してください.定期的な復号試験も長期保管の失敗を早く見つける助けになります.