日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
GELI(8) FreeBSD システム管理者マニュアル GELI(8) 名称 geli -- 暗号化 GEOM クラスのための制御ユーティリティ 書式 利用者のカーネルに GEOM_ELI をコンパイルするためには、次の行をカーネル設 定ファイルに追加します: device crypto options GEOM_ELI もう一つの方法として、ブート時に GEOM_ELI モジュールをロードするために は、次の行を loader.conf(5) に追加します: geom_eli_load="YES" geli ユーティリティの使用法: geli init [-bdgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-J newpassfile] [-K newkeyfile] [-l keylen] [-s sectorsize] [-V version] prov geli label - an alias for init geli attach [-Cdprv] [-n keyno] [-j passfile] [-k keyfile] prov geli detach [-fl] prov ... geli stop - an alias for detach geli onetime [-dT] [-a aalgo] [-e ealgo] [-l keylen] [-s sectorsize] prov geli configure [-bBdDgGtT] prov ... geli setkey [-pPv] [-i iterations] [-j passfile] [-J newpassfile] [-k keyfile] [-K newkeyfile] [-n keyno] prov geli delkey [-afv] [-n keyno] prov geli kill [-av] [prov ...] geli backup [-v] prov file geli restore [-fv] file prov geli suspend [-v] -a | prov ... geli resume [-pv] [-j passfile] [-k keyfile] prov geli resize [-v] -s oldsize prov geli version [prov ...] geli clear [-v] prov ... geli dump [-v] prov ... geli list geli status geli load geli unload 解説 geli ユーティリティは、GEOM プロバイダで暗号化を設定するために使用されま す。 次は、最も重要な機能のリストです: • 利用可能な暗号ハードウェアがあるとき、crypto(9) フレームワーク を利用して、geli は、自動的にそれを利用します。 • 多くの暗号アルゴリズム (現在、AES-XTS, AES-CBC, Blowfish-CBC, Camellia-CBC と 3DES-CBC) をサポートします。 • 次のアルゴリズムの 1 つを利用して、オプションのデータ認証 (整合 性の検証) を実行することができます: HMAC/MD5, HMAC/SHA1, HMAC/RIPEMD160, HMAC/SHA256, HMAC/SHA384 または HMAC/SHA512。 • 次の最大 2 つまでの区分的なコンポーネントのユーザキーを作成する ことができます: プロンプトによって入力されるか、または 1 以上の パスファイルから読み込まれるパスフレーズ。キーファイルは、1 つ 以上のファイルから読み込まれます。 • ルートパーティションの暗号化を許可します。ユーザは、ルートファ イルシステムをマウントする前にパスフレーズを問い合わされます。 • 次でユーザキーのパスフレーズのコンポーネントを強化します: B. Kaliski, PKCS #5: Password-Based Cryptography Specification, Version 2.0., RFC, 2898. • 2 つの独立したユーザキー (例えば、"ユーザキー" と "会社キー") の使用を許可します。 • それは、速いです - geli は、セクタからセクタ (sector-to-sector) への簡単な暗号化を実行します。 • ユーザがすぐにキーの実体を破壊しなければならないなら、バック アップからキーを復旧することによってデータを元に戻すことができ るように、暗号化されたマスタキーを、バックアップして復旧するこ とができます。 • プロバイダは、最後のクローズで自動的にデタッチするために設定す ることができます、(それで、ユーザは、ファイルシステムをアンマウ ントした後に忘れずにプロバイダをデタッチする必要はありません)。 • スワップパーティションと一時的なファイルシステムのために役に立 つ、ランダムな、一時マスタキーでプロバイダをアタッチすることを 許可します。 • データの整合性 (データ認証) の検証を可能にします。 • 暗号化されたデバイスをサスペンド (suspend) して、レジューム (resume) することを許可します。 geli への最初の引数は、実行する動作を示します: init 暗号化される必要があるプロバイダを初期化します。最後のプロバイ ダのセクタは、メタデータを格納するために使用されます。また、 init サブコマンドは、自動的に /var/backups/<prov>.eli ファイル にメタデータを書き込みます。以下で説明される restore サブコマ ンドでメタデータを回復することができます。 追加オプションは、次を含みます: -a aalgo 与えられたアルゴリズムを使用してデータの整合性 の検証 (認証) を有効にします。これは、利用可能 な記憶域のサイズを減少させ、また、速度も遅くな ります。例えば、4096 バイトのセクタで HMAC/SHA256 アルゴリズムを使用するとき、最初の プロバイダの記憶域の 89% が利用可能となりま す。現在サポートしているアルゴリズムは、次の通 りです: HMAC/MD5, HMAC/SHA1, HMAC/RIPEMD160, HMAC/SHA256, HMAC/SHA384 と HMAC/SHA512。オプ ションが与えられないなら、認証されず、暗号化の みです。お勧めのアルゴリズムは、HMAC/SHA256 で す。 -b ルートパーティションがマウントされる前に、ブー トの間に、このパーティションを暗号解読しようと 試みます。これで、暗号化されたルートパーティ ションを使用することが可能となります。ブートの 後に取り除くことができる、CD-ROM ディスクまた は USB ペンドライブであるかもしれない、/boot/ ディレクトリでブート可能な暗号化されていない記 憶域をまだ必要とします。 -B backupfile デフォルトの /var/backups/<prov>.eli の代わり にメタデータバックアップに使用するファイル名。 バックアップを抑制するために、利用者は、 backupfile として none を使用することができま す。 -d この暗号化されたルートファイルシステムからブー トするためのパスフレーズを入力するとき、`*' 文 字をエコーします。これは、パスフレーズの長さを 見えるようにします。 -e ealgo 使用する暗号化アルゴリズム。現在サポートされて いるアルゴリズムは、次の通りです: AES-XTS, AES-CBC, Blowfish-CBC, Camellia-CBC, 3DES-CBC と NULL です。デフォルトの、そして、お勧めのア ルゴリズムは、AES-XTS です。NULL は、暗号化さ れていません。 -g この暗号化されたルートのファイルシステムからの ブートを有効にします。ブートローダは、暗号化さ れたパーティションからパスフレーズと loader(8) をロードためにプロンプトを出します。 -i iterations ユーザキーのパスフレーズのコンポーネントを処理 するとき、PKCS#5v2 と共に使用する繰り返しの 数。このオプションが指定されないなら、geli は、2 秒の暗号作業と等しい繰り返しの数を見つけ ます。0 が与えられたなら、PKCS#5v2 は、使用さ れません。パスフレーズのコンポーネントのすべて の部分が読み込まれた後に、PKCS#5v2 処理は、一 度実行されます。 -J newpassfile ユーザキーのパスフレーズのコンポーネント (また はその部分) を含むファイルを指定します。 newpassfile が - として与えられるなら、標準入 力が使用されます。(改行文字を除いた) 最初の行 だけが与えられたファイルから取られます。複数の ファイルに渡って分割された単一のパスフレーズを 再構築する効果があり、複数回、この引数を指定す ることができます。-P オプションと組み合わせる ことはできません。 -K newkeyfile ユーザキーのパスフレーズのコンポーネント (また はその部分) を含むファイルを指定します。 newkeyfile に - が与えられるなら、標準入力が使 用されます。複数のファイルに渡って分割された単 一のキーファイルを再構築する効果があり、複数 回、この引数を指定することができます。 -l keylen 与えられた暗号アルゴリズムで使用するデータキー の長さ。長さが指定されないなら、選択されたアル ゴリズムは、そのデフォルトキーの長さを使用しま す。 AES-XTS 128, 256 AES-CBC, Camellia-CBC 128, 192, 256 Blowfish-CBC 128 + n * 32, for n=[0..10] 3DES-CBC 192 -P ユーザキーのコンポーネントとしてパスフレーズを 使用しません。-J オプションと組み合わせること はできません。 -s sectorsize 復号化されたプロバイダのセクタサイズを変更しま す。初期化ベクタを要求する暗号化/復号化がセク タごとに行われるので、セクタサイズを増加させる ことによって、性能を向上させることができます。 より少ない数のセクタは、より少ない計算の作業を 意味します。 -T BIO_DELETE 呼び出しを通して渡しません (すなわ ち、TRIM/UNMAP)。これは、どのくらいの空間を利 用者が実際に使用していて、どのセクタがライブの データを含んでいるかを知っていることから攻撃者 を阻止することができますが、また、その性能と寿 命を低下する利用者が再要求している空間から (SSD など) 裏打ちされている格納を阻止します。 基本的なプロバイダは、TRIM が有効にされると き、削除されたセクタを実際に取り除くかどうか分 からないので、それは、少しのセキュリティを追加 すると見なされるべきではありません。 -V version 使用するメタデータのバージョン。このオプション は、より古い FreeBSD/GELI バージョンによって使 用されるプロバイダを作るとき、役に立ちます。ど のメタデータのバージョンがどの FreeBSD のバー ジョンによってサポートされるかを見つけるために は、「歴史」セクションを調べてください。メタ データのより古いバージョンを使用することは、利 用可能な機能の数を制限することに注意してくださ い。 attach 与えられたプロバイダをアタッチします。暗号化されたマスタキー は、メタデータからロードされ、与えられたパスフレーズ/キーファ イルを使用して復号化され、新しい GEOM プロバイダは、".eli" 接 尾辞がある与えられたプロバイダの名前を使用して作成されます。 追加オプションは、次を含みます: -C 暗号解読のドライラン (dry-run) を行ないます。これ は、デバイスを暗号解読せずにパスフレーズと key file を検証するために役に立ちます。 -d 指定されるなら、暗号解読されたプロバイダは、最後 のクローズで自動的にデタッチされます。これは、十 分でないメモリで助けることができるので、ユーザ は、ファイルシステムをアンマウントした後に、プロ バイダをデタッチすることを思い出す必要はありませ ん。プロバイダが書き込みのためにオープンされてい るときだけ動作するので、プロバイダのファイルシス テムが、読み込み専用でマウントされているなら、動 作しません。たぶん、より良い選択は、detach サブコ マンドのための -l オプションです。 -n keyno 使用するマスタキー (Master Key) のコピーのイン デックス番号を指定します (0 または 1 であるかもし れません)。インデックス番号が提供されないなら、す べてのキーが、テストされます。 -j passfile ユーザキーのパスフレーズのコンポーネント (または その部分) を含むファイルを指定します。詳しい情報 について、init サブコマンドのための -J オプション の説明を参照してください。 -k keyfile ユーザキーのパスフレーズのコンポーネント (または その部分) を含むファイルを指定します。詳細につい ては、init サブコマンドのための -K オプションの説 明を参照してください。 -p ユーザキーのコンポーネントとしてパスフレーズを使 用しません。-j オプションと組み合わせることはでき ません。 -r 読み込み専用のプロバイダをアタッチします。それ は、書き込みのためにオープンされません。 detach devfs エントリを削除して、メモリのマスタキーとデータキーをクリ アすることを意味する、与えられたプロバイダをデタッチします。 追加オプションは、次を含みます: -f 強制的にデタッチします - たとえプロバイダがオープンされて いてもデタッチします。 -l 最後にクローズでデタッチされたプロバイダをマークします。こ のオプションが指定されるなら、プロバイダは、それがオープン されている間にデタッチされませんが、たとえ読み込みのためだ けにオープンされていても、それが最後にクローズされるとき、 自動的にデタッチされます。 onetime ランダムな、一時 (短命の) マスタキーで与えられたプロバイダをア タッチします。コマンドは、暗号化されたスワップパーティション か、または一時的なファイルシステムを使用することができます。 追加オプションは、次を含みます: -a aalgo データの整合性の検証 (認証) を有効にします。詳 細については、init サブコマンドの説明を参照して ください。 -e ealgo 使用する暗号化アルゴリズム。詳細については、 init サブコマンドの説明を参照してください。 -d 最後のクローズでデタッチします。注意: このオプ ションは、ファイルシステムが作成された後に、プ ロバイダがデタッチされるように、一時的なファイ ルシステムに対して使用可能ではありません。それ は、まだスワップパーティションに使用することが できます (そして、使用されるべきです)。詳細につ いては、attach サブコマンドの説明を参照してくだ さい。 -l keylen 与えられた暗号アルゴリズムで使用するデータキー の長さ。詳細については、init サブコマンドの説明 を参照してください。 -s sectorsize 復号化されたプロバイダのセクタサイズを変更しま す。詳細については、init サブコマンドの説明を参 照してください。 -T TRIM/UNMAP passthru を無効にします。詳細につい ては、init サブコマンドの説明を参照してくださ い。 configure 与えられたプロバイダの設定を変更します。 追加のオプションは、次の通りです: -b 与えられたプロバイダで BOOT フラグを設定します。詳細につい ては、init サブコマンドの説明を参照してください。 -B 与えられたプロバイダから BOOT フラグを削除します。 -d この暗号化されたルートファイルシステムからブートするための パスフレーズを入力するとき、`*' 文字をエコーします。これ は、パスフレーズの長さを見えるようにします。 -D パスフレーズが、この暗号化されたルートファイルシステムから ブートするために入力されるとき、あらゆる文字のエコーを無効 にします。これは、パスフレーズの長さを隠します。 -g この暗号化されたルートのファイルシステムからのブートを有効 にします。ブートローダは、暗号化されたパーティションからパ スフレーズと loader(8) をロードためにプロンプトを出しま す。 -G この暗号化されたルートパーティションからのブートを非活性化 します。 -t TRIM/UNMAP passthru を有効にします。詳細については、init サブコマンドの説明を参照してください。 -T TRIM/UNMAP passthru を無効にします。 setkey 新しいユーザキーで暗号化され、選択されたスロットにマスタキーの コピーをインストールします。選択されたスロットが存在するなら、 既存のコピーを置き換えます。プロバイダには、それぞれ独立した ユーザキーで暗号化された 1 つまたは両方のスロットに格納するこ とができる、1 つのマスタキーがあります。init サブコマンドで、 キー番号 0 だけが初期化されます。いつでもユーザキーを変更する ことができます: アタッチされたプロバイダのため、デタッチされた プロバイダ、またはバックアップファイルに関してです。プロバイダ がアタッチされているとき、ユーザは、存在するパスフレーズ/キー ファイルを提供する必要はありません。 追加オプションは、次を含みます: -i iterations PKCS#5v2 で使用される繰り返しの数。0 が与えら れたなら、PKCS#5v2 は、使用されません。setkey サブコマンドでこのオプションを使用できるように するためには、1 つのキーだけが定義されなければ ならなくて、そしてこのキーが変更されなければな りません。 -j passfile 現在のユーザキーのパスフレーズのコンポーネント (またはその部分) を含むファイルを指定します。 -J newpassfile 新しいユーザキーのパスフレーズのコンポーネント (またはその部分) を含むファイルを指定します。 -k keyfile 現在のユーザキーのキーファイルのコンポーネント (またはその部分) を含むファイルを指定します。 -K newkeyfile 新しいユーザキーのキーファイルのコンポーネント (またはその部分) を含むファイルを指定します。 -n keyno 変更する (0 か 1 であるかもしれない) マスタ キーのコピーのインデックス数を指定します。プロ バイダがアタッチされ、キー番号が与えられないな ら、プロバイダをアタッチするために使用される キーは、変更されます。プロバイダがデタッチさ れ、(または、バックアップファイルで操作され)、 キー番号が与えられないなら、提供されたユーザ キーのパスフレーズ/キーファイルで成功して復号 化された最初のマスタキーのコピーは、変更されま す。 -p 現在のユーザキーのコンポーネントとしてパスフ レーズを使用しません。-j オプションと組み合わ せることはできません。 -P 新しいユーザキーのコンポーネントとしてパスフ レーズを使用しません。-J オプションと組み合わ せることはできません。 delkey 選択されたマスタキーのコピーを (ランダムデータで上書きして) 破 壊します。アタッチされたプロバイダのために破壊されたキーがある なら、たとえすべてのマスタキーのコピーが破壊されても、プロバイ ダは、デタッチされません。マスタキーがまだメモリにあるので、 setkey サブコマンドでも救うことができます。 追加のオプションは、次の通りです: -a (-f オプションを必要としな) すべてのマスタキーのコ ピーを破壊します。 -f 強制的にキーを破壊します。このオプションは、最後のマ スタキーのコピーを破壊するために必要とされます。 -n keyno マスタキーのコピーのインデックス数を指定します。プロ バイダがアタッチされ、キー番号が与えられないなら、プ ロバイダをアタッチするために使用されるキーは、破壊さ れます。プロバイダがデタッチされている (るか、また は、バックアップファイルで操作されている) ならキー番 号が与えられなければなりません。 kill このコマンドは、緊急事態でのみ使用されるべきです。与えられたプ ロバイダですべてのマスタキーのコピーを破壊して、強制的にそれを (それがアタッチされているなら) デタッチします。これは、間違い なく一方向コマンドです - 利用者にメタデータのバックアップがな いなら、利用者のデータは、永遠に失われます。プロバイダが -r フ ラグでアタッチされている場合、キーは、破壊されずに、プロバイダ だけがデタッチされます。 追加のオプションは、次の通りです: -a 指定されるなら、すべての現在のアタッチしているプロバイダ は、kill されます。 backup 与えられたプロバイダから与えられたファイルにメタデータをバック アップします。 restore 与えられたファイルから与えられたプロバイダにメタデータを復旧し ます。 追加のオプションは、次の通りです: -f メタデータは、正しいパーティションまたはスライスかがアタッ チされていることを保証するプロバイダのサイズを含んでいま す。異なったサイズがあるプロバイダにメタデータを復旧する試 みを行うなら、geli は、-f スイッチが使用されていないなら、 データを復旧することを拒否します。パーティションまたはスラ イスが成長されているなら、backup と restore を通してメタ データを移動する試みではなく、resize サブコマンドが、使用 されるべきです。 suspend 終了するためにすべての inflight (飛行中) 要求を待つことによっ て、デバイスをサスペンドし、カーネルメモリから (マスタキーと データキーのような) すべての機密事項の情報をクリアして、resume サブコマンドが実行されるまで、さらなるすべての I/O 要求をブ ロックします。この機能は、ラップトップのために役に立ちます: ラップトップをサスペンドしたいとき、アタッチされ暗号化されたデ バイスをそのままにしたくありません。暗号化されたデバイスに置か れたファイルシステムからオープンされたすべてのファイルとディレ クトリをクローズし、ファイルシステムをアンマウントし、デバイス をデタッチする代わりに、suspend サブコマンドを使用することがで きます。暗号化されたデバイスのファイルシステムからすべてのファ イルとディレクトリをクローズするのではなく、使用することができ ます。暗号化されたデバイスへのあらゆるアクセスは、マスタキーが resume サブコマンドを通して再びロードされるまで、ブロックされ ます。その結果、何かをクローズしたりアンマウントすることも必要 はありません。suspend サブコマンドは、デバイスが onetime サブ コマンドで作成されている状態で、動作しません。繊細なデータは、 まだ、ファイルシステムキャッシュ、などのような、暗号化されたデ バイスをサスペンドした後にメモリに存在することに注意してくださ い。 追加のオプションは、次の通りです: -a すべての geli デバイスをサスペンドします。 resume 以前にサスペンドされたデバイスをレジュームします。呼び出し側 は、このサブコマンドの実行で、デバイスをデッドロックに導く、サ スペンドされたデバイスをアクセスしないことを保証しなければなり ません。例えば、geli ユーティリティで格納されたファイルシステ ムを含むデバイスをサスペンドすることは、悪い考えです。 追加のオプションは、次の通りです: -j passfile ユーザキーのパスフレーズのコンポーネント (または その部分) を含むファイルを指定します。詳しい情報 については、init サブコマンドのための -J オプショ ンの説明を参照してください。 -k keyfile ユーザキーのキーファイルのコンポーネント (または その部分) を含むファイルを指定します。詳しい情報 については、init サブコマンドのための -K オプショ ンの説明を参照してください。 -p ユーザキーのコンポーネントとしてパスフレーズを使 用しません。-j オプションと組み合わせることはでき ません。 resize プロバイダがリサイズされたことを geli に通知します。古いメタ データブロックは、プロバイダの終わりの正しい位置に移動され、プ ロバイダのサイズは、更新されます。 追加のオプションは、次の通りです: -s oldsize それの前にプロバイダのサイズは、リサイズされまし た。 version 引数が与えられなければ、version サブコマンドは、ELI GEOM クラ スのバージョンと同様に geli ユーザランドユーティリティのバー ジョンを印刷 (表示) します。 GEOM プロバイダが指定されれば、version サブコマンドは、それら の各々によって使用されるメタデータのバージョンを印刷 (表示) し ます。 clear 与えられたプロバイダのメタデータをクリアします。警告: これは、 メタデータに格納された暗号化されたマスタキーのコピーを 0 で削 除します。 dump 与えられたプロバイダで保存されたメタデータをダンプします。 list geom(8) 参照。 status geom(8) 参照。 load geom(8) 参照。 unload geom(8) 参照。 追加オプションは、次を含みます: -v より冗長にします。 キーの要約 マスタキー init に関して、geli ユーティリティは、プロバイダのためのランダムなマスタ キーを生成します。マスタキーは、プロバイダの存続期間の間に決して変化しま せん。プロバイダのメタデータの各コピー、アクティブまたはファイルへのバッ クアップは、最大 2 まで、マスタキーの独立して暗号化されたコピーを格納する ことができます。 ユーザキー マスタキーの格納されたそれぞれのコピーは、パスフレーズおよび/またはキー ファイルから geli ユーティリティによって生成される、ユーザキーで暗号化さ れます。geli ユーティリティは、最初にコマンド行で指定された順序でキーファ イルのすべての部分を読み込み、次に、コマンド行で指定された順序で格納され たパスフレーズのすべての部分を読み込みます。パスフレーズの部分が指定され ないなら、システムは、パスフレーズを入力するようにユーザにプロンプトを出 します。パスフレーズは、オプションで、PKCS#5v2 によって強化されます。ユー ザキーは、連結されたキーファイルとパスフレーズで計算された要約です。 データキー 操作中に、1 つ以上のデータキーは、確定的にマスタキーからカーネルによって 派生され、メモリにキャッシュされます。与えられたプロバイダによって使用さ れるデータキーの数と方法は、GELI バージョンに依存して、プロバイダがデータ 認証を使用するように設定されたかどうかで、派生されます。 SYSCTL 変数 次の sysctl(8) 変数は、ELI GEOM のクラスの振る舞いを制御するために使用す ることができます。デフォルト値は、各変数の横に示されています。また、 /boot/loader.conf でいくつかの変数を設定することができます。 kern.geom.eli.version ELI GEOM クラスのバージョン番号。 kern.geom.eli.debug: 0 ELI GEOM のクラスのデバッグレベル。これは、0 から 3 (0 と 3 を含 んで) の間の数に設定することができます。0 に設定されるなら、最小 量のデバッグ情報が印刷 (表示) されます。3 に設定されるなら、最大 量のデバッグ情報が印刷 (表示) されます。 kern.geom.eli.tries: 3 ユーザがパスフレーズを問い合わせれる回数。これは、(ルートファイル システムがマウントされる前に)、ブート時にアタッチされるべきである プロバイダに使用されるだけです。0 に設定されるなら、ブート時にア タッチされるプロバイダは、無効にされます。この変数は、 /boot/loader.conf に設定されるべきです。 kern.geom.eli.overwrites: 5 破壊されるかとき、マスタキーがランダムな値で何回上書きされるかを 指定します。この操作の後で、それは、0 で満たされます。 kern.geom.eli.visible_passphrase: 0 1 に設定されるなら、(ルートファイルシステムがマウントされる前に) ブート時に入力パスフレーズは、目に見えるようになります。この代わ りとして、入力されたパスフレーズがログに記録され、dmesg(8) を通し て人目にさらされるので慎重に使用されるべきです。この変数は、 /boot/loader.conf に設定されるべきです。 kern.geom.eli.threads: 0 いくつのカーネルスレッドがソフトウェア暗号をするために使用される べきであるかを指定します。目的は、SMP システムに関する性能を増強 することです。0 に設定されるなら、CPU にバインドされたスレッド は、アクティブな CPU ごとに開始されます。 kern.geom.eli.batch: 0 1 に設定されるなら、バッチング (batching) を使用することによっ て、暗号操作を高速化することができます。バッチングは、1 つの割り 込みのための暗号要求のグループで応答による割り込みの数を減少しま す。暗号カードとドライバは、この機能をサポートしなければなりませ ん。 kern.geom.eli.key_cache_limit: 8192 どのくらいのデータキーをキャッシュするかを指定します。デフォルト の制限 (8192 のキー) によって、512 バイトのセクタがある 4TB のプ ロバイダのためのすべてのキーをキャッシュすることができ、1MB のメ モリを持ち回ります。 kern.geom.eli.key_cache_hits データキーを何回検索したかと、それが既にキャッシュにあるかを報告 します。この sysctl は、kern.geom.eli.key_cache_limit. で指定さ れた制限より少数のデータキーを必要とするプロバイダに対して更新さ れません。 kern.geom.eli.key_cache_misses データキーを何回検索したかと、それがキャッシュにないかを報告しま す。この sysctl は、kern.geom.eli.key_cache_limit で指定された制 限より少数のデータキーを必要とするプロバイダに対して更新されませ ん。 終了ステータス 終了ステータスは、成功すれば 0 で、コマンドが失敗するなら 1 です。 非推奨の注意 Blowfish-CBC と 3DES-CBC 暗号法アルゴリズムと HMAC/MD5 認証アルゴリズムの サポートは、FreeBSD 13.0 で削除されるでしょう。新しいボリュームは、これら のアルゴリズムを使用して作成することはできません。既存のボリュームは、推 奨されないアルゴリズムを使用する新しいボリュームに移動するべきです。 使用例 ユーザのペンドライブでファイルからのパスフレーズとランダムデータで暗号化 されるプロバイダを初期化します。4kB セクタサイズを使用します。プロバイダ をアタッチし、ファイルシステムを作成して、それをマウントします。作業を行 います。プロバイダをアンマウントして、それをデタッチします: # dd if=/dev/random of=/mnt/pendrive/da2.key bs=64 count=1 # geli init -s 4096 -K /mnt/pendrive/da2.key /dev/da2 Enter new passphrase: Reenter new passphrase: # geli attach -k /mnt/pendrive/da2.key /dev/da2 Enter passphrase: # dd if=/dev/random of=/dev/da2.eli bs=1m # newfs /dev/da2.eli # mount /dev/da2.eli /mnt/secret ... # umount /mnt/secret # geli detach da2.eli 暗号化されたプロバイダを作成しますが、2 つのユーザキーを使用します: 1 つ は、利用者の従業員のためと、1 つは、(従業員が "偶然に" 彼のパスフレーズを 忘れても、悲劇がないように) 会社のセキュリティ担当責任者として利用者のた めです: # geli init /dev/da2 Enter new passphrase: (利用者のパスフレーズを入力) Enter new passphrase: (セキュリティ担当責任者のパスフレーズを入力) Reenter new passphrase: # geli setkey -n 1 /dev/da2 Enter passphrase: (セキュリティ担当責任者のパスフレーズを入力) Enter new passphrase: (利用者の従業員が彼のパスフレーズを入力 ...) Reenter new passphrase: (... 二度目) 利用者は、利用者の会社でのセキュリティ担当責任者です。ユーザによって使用 される暗号化されたプロバイダを作成しますが、ユーザが彼らのパスフレーズを 忘れることがあるので、利用者自身のランダムキーとともにマスタキーをバック アップします: # dd if=/dev/random of=/mnt/pendrive/keys/`hostname` bs=64 count=1 # geli init -P -K /mnt/pendrive/keys/`hostname` /dev/ada0s1e # geli backup /dev/ada0s1e /mnt/pendrive/backups/`hostname` (暗号化されたマスタキーは、これによって再暗号化されるので、 キー番号 0 を使用します) # geli setkey -n 0 -k /mnt/pendrive/keys/`hostname` /dev/ada0s1e (ユーザは、彼のパスフレーズを入力することができます); Enter new passphrase: Reenter new passphrase: 暗号化されたスワップパーティションのセットアップ: # dd if=/dev/random of=/dev/ada0s1b bs=1m # geli onetime -d -e 3des ada0s1b # swapon /dev/ada0s1b.eli 下記の例は、どのようにブート時に、(ルートファイルシステムがマウントされる 前に)、アタッチされる 2 つのプロバイダを設定するかを示します。それらのひ とつは、パスフレーズと 3 つのキーファイルの部分を使用して、もうひとつは、 1 つの部分のキーファイルだけを使用しています: # dd if=/dev/random of=/dev/da0 bs=1m # dd if=/dev/random of=/boot/keys/da0.key0 bs=32k count=1 # dd if=/dev/random of=/boot/keys/da0.key1 bs=32k count=1 # dd if=/dev/random of=/boot/keys/da0.key2 bs=32k count=1 # geli init -b -K /boot/keys/da0.key0 -K /boot/keys/da0.key1 -K /boot/keys/da0.key2 da0 Enter new passphrase: Reenter new passphrase: # dd if=/dev/random of=/dev/da1s3a bs=1m # dd if=/dev/random of=/boot/keys/da1s3a.key bs=128k count=1 # geli init -b -P -K /boot/keys/da1s3a.key da1s3a プロバイダは、初期化され、今、/boot/loader.conf に、これらの行を加えなけ ればなりません: geli_da0_keyfile0_load="YES" geli_da0_keyfile0_type="da0:geli_keyfile0" geli_da0_keyfile0_name="/boot/keys/da0.key0" geli_da0_keyfile1_load="YES" geli_da0_keyfile1_type="da0:geli_keyfile1" geli_da0_keyfile1_name="/boot/keys/da0.key1" geli_da0_keyfile2_load="YES" geli_da0_keyfile2_type="da0:geli_keyfile2" geli_da0_keyfile2_name="/boot/keys/da0.key2" geli_da1s3a_keyfile0_load="YES" geli_da1s3a_keyfile0_type="da1s3a:geli_keyfile0" geli_da1s3a_keyfile0_name="/boot/keys/da1s3a.key" 1 つの keyfile だけがあるなら、インデックスは、省略されます: geli_da1s3a_keyfile_load="YES" geli_da1s3a_keyfile_type="da1s3a:geli_keyfile" geli_da1s3a_keyfile_name="/boot/keys/da1s3a.key" 暗号化だけではなく、HMAC/SHA256 を使用してデータの整合性の検証も設定しま す。 # geli init -a hmac/sha256 -s 4096 /dev/da0 Enter new passphrase: Reenter new passphrase: # geli attach /dev/da0 Enter passphrase: # dd if=/dev/random of=/dev/da0.eli bs=1m # newfs /dev/da0.eli # mount /dev/da0.eli /mnt/secret geli は、デフォルトで、メタデータを /var/backups/<prov>.eli ファイルに書 き込みます。メタデータが、何らかの方法で (例えば、偶然の上書きで) 失われ るなら、それを回復することができます。次の状況を考えてます: # geli init /dev/da0 Enter new passphrase: Reenter new passphrase: /var/backups/da0.eli で、メタデータのバックアップを見つける ことができ、次のコマンドで回復することができます: # geli restore /var/backups/da0.eli /dev/da0 # geli clear /dev/da0 # geli attach /dev/da0 geli: Cannot read metadata from /dev/da0: Invalid argument. # geli restore /var/backups/da0.eli /dev/da0 # geli attach /dev/da0 Enter passphrase: 暗号化されたファイルシステムが拡張されるなら、メタデータを移動して、更新 する必要があります: # gpart create -s GPT ada0 # gpart add -s 1g -t freebsd-ufs -i 1 ada0 # geli init -K keyfile -P ada0p1 # gpart resize -s 2g -i 1 ada0 # geli resize -s 1g ada0p1 # geli attach -k keyfile -p ada0p1 2 つのファイルに分けられたパスフレーズでプロバイダを初期化します。それら の 2 つのファイルを使用するか、または geli のプロンプトでパスフレーズとし て ``foobar'' を入力することによって、プロバイダにアタッチすることができ ます: # echo foo > da0.pass0 # echo bar > da0.pass1 # geli init -J da0.pass0 -J da0.pass1 da0 # geli attach -j da0.pass0 -j da0.pass1 da0 # geli detach da0 # geli attach da0 Enter passphrase: foobar ラップトップですべての geli デバイスをサスペンドし、ラップトップをサスペ ンドし、次に、ラップトップをレジュームした後に、デバイスを 1 つずつレ ジュームします: # geli suspend -a # zzz <利用者のラップトップをレジュームする> # geli resume -p -k keyfile gpt/secret # geli resume gpt/private Enter passphrase: 暗号化モード geli は、2 つの暗号化モードをサポートします: 予測できない IV と共に IEEE P1619 と CBC として標準化された XTS。geli によって使用される CBC モード は、モード ESSIV とよく似ています。 データ認証 geli は、認証アルゴリズムが指定されるとき、データの整合性を検証することが できます。データの改変/変更が検出されるとき、geli は、少しもデータも返し ませんが、代わりに、エラー (EINVAL) を返します。改変されたデータのオフ セットとサイズは、コンソールに印刷 (表示) されます。利用者のデータの保護 を提供する geli が、どの攻撃に対抗するか知ることは、重要です。データがそ の場で変更されるか、または変更なしでディスク上の 1 つの場所から別の場所ま でコピーされるなら、geli は、そのような変更を検出することができはずです。 攻撃者が暗号化されたデータを思い出すことができるなら、将来、彼は、予告な しで所有しているデータで変更を上書きすることができます。言い換えれば、 geli は、反復攻撃に対して利用者のデータを保護しません。 すべてのセクタとそれらの対応するチェックサムが適切に一貫した状態に初期化 されることを確実にするために、最初の使用の前にすべてのプロバイダに書き込 むことをお勧めします。はじめてプロバイダがアタッチされる直前で、このよう に初期化される前に生じる、データ認証エラーを安全に無視することができま す。 関連項目 crypto(4), gbde(4), geom(4), loader.conf(5), gbde(8), geom(8), crypto(9) 歴史 geli ユーティリティは、FreeBSD 6.0 で登場しました。Camellia ブロック暗号 のサポートは、FreeBSD 7.0 で Yoshisato Yanagisawa によって実装されまし た。 与えられた FreeBSD バージョンによってサポートされる最も大きい GELI メタ データのバージョンは、次の通りです: FreeBSD GELI version version 6.0 0 6.1 0 6.2 3 6.3 3 6.4 3 7.0 3 7.1 3 7.2 3 7.3 3 7.4 3 8.0 3 8.1 3 8.2 5 9.0 6 10.0 7 作者 Pawel Jakub Dawidek <pjd@FreeBSD.org> FreeBSD 11.4 May 23, 2019 FreeBSD 11.4