hat.sh:ブラウザでファイルを暗号化——誰も信頼しなくていい

· nologin.tools
tools review privacy encryption

Hero image

クラウドストレージ、ファイル共有サービス、「安全」を標榜するアップロードツール——これらすべてに共通することがあります。ファイルが他者のサーバーを経由するということです。サービス提供者の暗号化方式、鍵管理の仕組み、従業員のモラル、さらにはデータ開示請求への対応まで、見ず知らずの企業にそれだけの信頼を預けなければなりません。

では、ファイルがデバイスを離れる前に暗号化が完了していたとしたら?サーバーが平文を一切目にしないまま、ブラウザ内ですべてが処理されるとしたら、どうでしょうか。

それを実現しているのが hat.sh です。

hat.sh が実際にできること

hat.sh はブラウザベースのファイル暗号化ツールです。ファイルをページにドラッグし、パスワード(または公開鍵)を入力すると、暗号化された .enc ファイルが生成されます。復号は逆の手順——.enc ファイルを同じページにドラッグしてパスワードを入力すれば、元のファイルに戻ります。処理はすべてJavaScriptでローカルに完結しており、ファイルの内容がネットワークに送信されることはありません。バックエンドもなく、データベースもありません。

使用している暗号化方式はAES-256-GCMです。Signal、WhatsApp、そして多くの現代的なTLS接続でも採用されているアルゴリズムです。これは認証付き暗号化であり、ファイルが途中で改ざんされた場合、復号は明確に失敗します。静かに壊れたファイルをhat.shが受け入れることはありません。

hat.shには2つのモードがあります:

  • パスワードベースの暗号化:パスワードを設定すると、ツールがPBKDF2で暗号化鍵を導出します。パスワードを持つ人なら誰でも復号できます。
  • 公開鍵暗号化:鍵ペアを生成して公開鍵を共有すると、誰でもあなただけが秘密鍵で開けるファイルを暗号化できます。X25519鍵交換とAES-256-GCMを組み合わせた方式です。

公開鍵モードはチームでの活用に特に有効です。たとえばジャーナリストが公開鍵を公開しておけば、情報提供者はhat.shでドキュメントを暗号化してから送信できます。送信者側に特別な設定は一切不要です。

ログイン不要、アップロード不要、アカウント不要

このツールのプライバシー設計は、驚くほどシンプルです。ソースコードはGitHubに公開されており、MITライセンスのもとで誰でもブラウザで実行されているJavaScriptを確認できます。テレメトリーもなく、ファイルのメタデータを含む分析リクエストもなく、攻撃対象になりうるサーバーサイドコンポーネントもありません。

典型的な「安全な」ファイル共有サービスと比較してみましょう:

機能典型的な暗号化アップロードサービスhat.sh
ファイルがサーバーに送信されるはいいいえ
アカウントが必要多くの場合不要
サーバーが平文を参照できる実装によって異なるいいえ
ソースコードが監査可能まれはい(MIT)
オフラインで動作いいえはい(初回ロード後)

VirusTotal のようなツールは、設計上ファイルを外部サーバーに送信します——それがその目的だからです。hat.shはその逆で、ファイルの内容がどこにも送られないことがこのツールの核心です。

hat.sh が活躍するシーン

フリーランスの会計士が税務書類をクライアントに送る必要があるとします。メールは平文です。多くのファイル共有リンクは有効期限が切れたり、インデックスに登録されたりします。シンプルな手段が必要です——Webページを開き、共有パスワードでファイルを暗号化し、送信するだけ。

あるいは、リポジトリの認証情報をローテーションしている開発者が、チームメンバーに .env ファイルを一度だけ安全に共有する必要があるとしましょう。一度きりの転送のためにGPG鍵のインフラを構築したくはありません。hat.shなら使い捨てパスワードで暗号化し、.enc ファイルをSlack、Discord、またはメールで送れます。パスワードなしでは、暗号化されたファイルは意味をなしません。

セキュリティ研究者にとっても、公開鍵モードは実用的な価値があります。自分のWebサイトに公開鍵を掲載しておけば、誰でも暗号化ファイルを送れます——受信者側には何もインストール不要です。PGPキーサーバーも、GPGクライアントも、Web of Trust の複雑な仕組みも、一切必要ありません。

クライアントサイド暗号化の技術的な誠実さ

クライアントサイド暗号化には、正直に向き合うべき重要な制限があります。Webサイト自体が侵害された場合、悪意のあるJavaScriptが暗号化の前にパスワードやファイルを盗み出す可能性があります。これは、ブラウザベースの暗号化ツールが本質的に抱える緊張関係です。

hat.shはいくつかの方法でこれに対応しています。まず、オープンソースのコードにより、誰でもJavaScriptを監査できます。次に、リポジトリをダウンロードしてhat.shをローカル——完全なエアギャップ環境——で実行できます。そして、セキュリティ要件が非常に高いユーザー向けに、セルフホスティング用のDockerセットアップも用意されています。

多くのユースケース——機密文書を同僚に送る、クラウドストレージにアップロードする前にバックアップを暗号化する、設定ファイルを保護する——では、CDNの侵害は脅威モデルに含まれません。ブラウザベースの暗号化は、ファイルを平文で送信するよりも実質的なセキュリティ向上をもたらします。

ブラウザが暗号処理をどのように扱うかに興味があれば、Web Crypto API仕様を参照してみてください。hat.shが内部で使用しているプリミティブが文書化されています。これはカスタム実装ではなくブラウザのネイティブ機能——つまり暗号操作は、解釈実行されるJavaScriptではなく、最適化されたC++コードで実行されます。

hat.sh と同種のノーログインツールの比較

CyberChef はご存知でしょうか。これも完全にブラウザで動作し、AES暗号化も処理できます。ただし、CyberChefはエンコーディング、圧縮、ハッシュなど数百の操作を備えた汎用データ変換ツールです。その幅広さは強みですが、技術的でないユーザーには複雑に映ることもあります。

hat.shは一つのことに特化しています——安全な転送や保管のためにファイルを暗号化することです。AESが何か知らなくても、URLを渡せば1分以内に使い方がわかる。そのシンプルさそのものが機能です。

Wormhole は関連するが別の問題を解決します——エンドツーエンドの暗号化でP2Pファイル転送を実現しますが、双方が同時オンラインである必要があり、ファイルはリレーサーバーを経由します。hat.shは静的な暗号化ファイルを生成するので、どんなチャネルでも非同期に送信できます。

使い始めるには

hat.shを初めて使うのに必要な時間は、約30秒です:

  1. hat.sh を開く
  2. ファイルをページにドラッグ(またはクリックしてファイルを選択)
  3. 「Password」モードを選んで強力なパスフレーズを入力
  4. Encrypt をクリック——.enc ファイルがダウンロードされます
  5. .enc ファイルをどんな手段でも送信し、パスワードは別ルートで共有

復号するには:

  1. hat.sh を開く
  2. .enc ファイルをページにドラッグ
  3. パスワードを入力
  4. 元のファイルが自動的にダウンロードされます

アカウントなし、インストールなし、第三者への信頼なし。暗号化されたファイルはただのバイト列です——Dropboxに保存しても、メールで送っても、公開しても構いません。パスワードなしでは、それは意味不明なデータにすぎません。


プライバシーツールにはしばしばトレードオフがあります。強固なセキュリティには複雑な操作が伴い(GPGがその典型)、使いやすさを求めるとデータを他者のサーバーに預けることになります。hat.shは別の可能性を示しています——透明性があり、オープンソースで、適切に設計されたWebアプリなら、その両方を実現できるという可能性を。ブラウザがより高機能になり、Web Crypto APIが成熟するにつれ、このパターンに従うツールはさらに増えていくでしょう。サーバーはコードを配信するだけで、すべての機密処理はあなたのマシンで行われる——そんな未来が近づいています。