ハウツー
送信前に機密内容を暗号化する方法
パスワード一覧やAPIキー、短い機密メモをプレーンテキストのままメールで送ると、メッセージを傍受した人や、途中のメールボックスにアクセスできる人が誰でも直接読めてしまいます。このガイドでは強力なパスフレーズを生成し、内容をローカルでAES-256-GCM暗号化するため、実際にメールやチャットアプリを通って移動するのは、誰かのサーバーに置かれてスキャンやコピーを待つファイルではなく、読めない暗号文になります。
手順
- パスワード生成ツールを開き、長さを最低20文字に設定し、すべての文字種を有効にしてパスフレーズを生成します。一時的な場所にコピーしておきます。暗号化した内容を運ぶのとは別のチャネル、たとえば電話や、他の用途ですでに使っているメッセージアプリを通じて、相手に共有することになります。
- AES暗号化ツールを開き、保護したいテキスト(パスワード一覧の内容、APIキー、設定ファイル、または任意の短いメモ)を入力欄に貼り付け、ステップ1のパスフレーズを貼り付けて、暗号化をクリックします。ツールはPBKDF2でパスフレーズから鍵を導出し、AES-256-GCMで暗号化します。どちらもブラウザ内で実行され、暗号文のテキストブロックが返されます。
- その暗号文ブロックをメールやチャットメッセージの本文に直接貼り付けます。何も添付する必要はありません。機密内容は今や読めないテキストとして移動します。別途、もう一方のチャネルを通じてパスフレーズを相手に伝え、相手に同じツールへ暗号文とパスフレーズを貼り付けて復号をクリックし、元の内容を復元してもらいます。
オンライン暗号化サービスにファイルをアップロードする方法との比較
ファイルを暗号化してくれると謳う多くのサービスは、あなたのファイルをサーバーで受け取り、そこで暗号化し、結果をダウンロードさせる仕組みで動いています。処理にかかる数秒間だけだとしても、平文の内容は自分が管理していないシステムを通過します。ここのAES暗号化ツールとパスワード生成ツールは、Web Crypto APIを使ってブラウザ内で完全に動作します。暗号化はGCMモードのAES-256を使い、パスフレーズはPBKDF2-SHA-256で31万回の反復によって鍵に引き伸ばされ、毎回新しいランダムなソルトと初期化ベクトルが使われます。平文もパスフレーズも暗号文も、処理中に一切サーバーへ送られません。
保護を無効にしないパスフレーズの共有方法
暗号化はパスフレーズが暗号文とは別に移動して初めてメッセージを保護します。同じメールスレッドで両方を送ったり、同じチャットで続けて送ったりすると、そのスレッドを読む人に必要なものすべてを与えてしまいます。本当に機密性の高い内容であれば、電話でパスフレーズを読み上げる、暗号化テキストを運ぶのとは無関係のメッセージアプリで送る、直接手渡しするといった方法を取ってください。そのあとは会話の中に残さず、パスワードマネージャーに保管してください。
この方法がカバーしない範囲
AES暗号化ツールは約1 MBまでのテキストを受け付けますが、任意のバイナリファイルを直接ドロップすることはできません。パスワードのエクスポートや設定ファイル、テキストとして開いてコピーできる内容であればうまく機能します。写真や小さな文書のような本物のバイナリ添付ファイルの場合は、まずBase64ツールでファイルをテキストのブロックに変換できます。そのあと、エンコーダーが前に付けるデータURIの接頭辞を手動で取り除いてから、同じように暗号化することになります。Base64はデータをおよそ3分の1増やすため、サイズの上限はさらに下がり、これは小さいファイルにしか向きません。PDFを保護したい場合は、PDFパスワードツールでファイル自体に実際のパスワードを追加するほうが適しています。文書そのものを暗号化するもので、同等のテキストサイズ制限はありません。
このガイドで使うツール
よくある質問
暗号化するパスフレーズやテキストはサーバーに送られますか?
いいえ。パスワード生成ツールとAES暗号化ツールは、crypto.getRandomValuesとWeb Crypto APIのcrypto.subtleを使い、ブラウザ内だけで完全に動作します。入力したものはどの時点でもどこにも送信されません。ブラウザの開発者ツールを開いてネットワークパネルを見ながら一連の処理を実行することで、自分で確認できます。
パスフレーズを紛失したらどうなりますか?
それなしでは暗号文を復元できません。復元手段もバックドアもありません。31万回の反復を行うPBKDF2は、本当にランダムな20文字のパスフレーズを総当たりで破ることを非現実的にします。共有した会話の中だけでなく、パスワードマネージャーにパスフレーズを保管してください。そうすればそのメッセージ1つを失っても内容まで失うことにはなりません。