概念と基礎知識

v1.0.0 — 保守終了 以前のv0.x (Zig)資料 →

Amuletは保守終了した実験的プロジェクトです。このページは既存利用者向けに当時の概念を保存していますが、保証境界移行手順を優先してください。新規production利用は推奨しません。


1. ターミナルとは「対話」の窓

ターミナル(コマンドライン、コンソールとも呼ばれます)は、文字を使ってコンピュータに直接命令を出すための窓口です。

  • macOS / Linux: ターミナル.appzsh, bash
  • Windows: PowerShellコマンドプロンプト, Windows Terminal

Amuletは、このターミナル上で動く CLI(Command Line Interface)ツール です。マウスでボタンをクリックする代わりに、コマンド(文字列)を打ち込んで操作します。


2. ディスクとメモリの決定的な違い

セキュリティを理解する上で、一番大切なのが 「情報の保存場所」 です。

場所 特徴 セキュリティ的な性質
ディスク (SSD/HDD) 電源を切ってもデータが残る(ファイル) 「痕跡」が残る。うっかり盗まれたり、AIに読み取られるリスクがある。
メモリ (RAM) 実行中プロセスが使う一時的な作業領域 永続保存を減らせるが、特権プロセス、debug、swap、ホスト侵害からは露出し得る。

Amuletの答え

多くのツールは .env という ファイル(ディスク) にパスワードを書き込みますが、これは「鍵をかけずに机の上に置く」ようなものです。

Amuletはシークレット値を暗号化したvaultとしてディスクに置き、unseal時には平文を出力します。これは保存時の偶発的な露出を減らせますが、呼び出し元、shell、下流process、swap構成、logが平文を保存・露出する可能性は残ります。


3. 「標準入出力」と「パイプ」

Amuletを使いこなす鍵は、Unix/Linuxの伝統的な仕組みである 「標準入出力」 です。

  • 標準入力 (stdin): プログラムに情報を「流し込む」入り口。
  • 標準出力 (stdout): プログラムが結果を「吐き出す」出口。

パイプ | というバケツリレー

ターミナルでは、|(パイプ)という記号を使って、あるプログラムの「出口」を別のプログラムの「入り口」に繋ぐことができます。

echo -n "my-secret-key" | amulet seal MY_KEY

このコマンドでは、

  1. echo が秘密の文字列を吐き出し、
  2. そのままファイルに書き込むことなく、
  3. 空中(メモリ経由) で直接 amulet に渡しています。

このpipelineでは平文ファイルを作らずに受け渡せます。ただし、zero-traceを保証するものではありません。


4. Windows ユーザーの方へ

Windowsの PowerShell でも、同じようにパイプを使った操作が可能です。ただし、文字の扱い(エンコーディング)に少し癖があります。

  • Unix系: echo -n "value" | ...
  • PowerShell: echo "value" | ... (デフォルトで末尾に改行が入ることがあるため、Amuletではこれらを適切に処理するよう設計されています)

Windows環境でも同じstdin/stdoutのworkflowを使えますが、ホスト侵害や平文出力に関する制限は同じです。


5. Amulet の立ち位置(AI時代のセキュリティ)

最近では、GitHub Copilot や ChatGPT などの AIアシスタント がコードをスキャンして助けてくれます。これは非常に便利ですが、一つ大きなリスクがあります。

「AIは、プロジェクト内にある .env ファイルや平文の秘密情報を、学習データやプロンプトとして読み取ってしまう可能性がある」 ということです。

Amuletが低減できること

値をvault内で暗号化しておくことで、誤コミットや通常のプロジェクトファイルだけを読むAIツールへの偶発的な露出を減らせます。Amuletを実行できる、同じuser sessionを観測できる、または復号credentialへアクセスできるagentからは保護できません。


次のステップ

既にAmuletを利用している場合は、保証境界移行手順を確認してください。インストールページは歴史資料・復旧資料としてのみ残しています。