web-dev-qa-db-ja.com

LUKS-cryptsetupを使用してkeyFileを変更します

cryptsetupユーティリティは、luksChangeKeyオプションを使用して既存のパスフレーズを変更するオプションを提供します。これには、マニュアルページで提案されている古いキーファイルとその他のパラメータが必要です。

  luksChangeKey <device> [<new key file>]

          Changes  an  existing  passphrase. The passphrase to be changed must be supplied interactively or via
          --key-file.  The new passphrase can be supplied interactively or in a file given as positional  argu‐
          ment.

          If  a  key-slot is specified (via --key-slot), the passphrase for that key-slot must be given and the
          new passphrase will overwrite the specified key-slot. If no key-slot is specified and there is  still
          a  free  key-slot,  then the new passphrase will be put into a free key-slot before the key-slot con‐
          taining the old passphrase is purged. If there is no free key-slot, then the key-slot  with  the  old
          passphrase is overwritten directly.

          WARNING:  If a key-slot is overwritten, a media failure during this operation can cause the overwrite
          to fail after the old passphrase has been wiped and make the LUKS container inaccessible.

          <options> can be  [--key-file,  --keyfile-offset,  --keyfile-size,  --new-keyfile-offset,  --new-key‐
          file-size, --key-slot, --force-password, --header].

実行すると、パスフレーズの入力を求められます。しかし、私は別のキーファイルを使用する必要があります。

新しいキーファイルを提供するオプションはどこにありますか?マニュアルページから、私は理解することができます、

  • --keyfile:古いキーファイル
  • --keyfile-offset:古いキーファイルのオフセット
  • --keyfile-size:古いキーファイルのオフセット
  • --new-keyfile-offset:新しいキーファイルオフセット
  • --new-key‐file-size:新しいキーファイルのサイズ

luksAddKey(新しいキー)を使用してからluksRemoveKey(前のキー)を使用してパスフレーズを変更する別の方法があることを私は知っています。しかし、私は特にluksChangeKeyを求めています。

1
user2255299

@studiohackが投票した理由がわからない/私の答えを削除した(そして、ここに直接通信を送信する方法がわからず、superuser.comからの支払いがないため、ここでの時間は限られています)。

しかし、ANSWERは正しかった/正しいです-実際のバージョンのcryptsetup1.7.3では機能しない可能性があるという通知がある場合のみ:

そして、luksAddKey OR luksChangeKeyコマンドを使用する場合は独立しています-パラメーターは同じように機能します:

それは例えばでうまく働いていました。 cryptsetup1.6.6を使用したDebianJessieでのこの例(昨年見つけたリファレンスはもうわかりませんでした):

echo -n "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" | \
cryptsetup luksAddKey --key-file - --keyfile-offset 0 --keyfile-size 32 \
                      --new-keyfile-offset 32 --key-slot 0 /dev/sda2
  • キーファイル:-( STDIN)
  • キーの使用:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy(バイトオフセット0から32バイトサイズ)
  • キーの追加:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(バイトオフセット32から32バイトサイズ)

しかし、cryptsetup1.7.3を使用したDebianStretchでは動作しなくなったようです(残りの情報は質問ではなく、実際の動作の説明でした)。

2
Reiner030

答えはあなたの質問にあります、ただ注意深く読んでください:

5つの名前付きパラメーター(古いキーファイル用に3つ、新しいキーファイル用に2つ)があり、さらに1つ欠落している名前なしパラメーター:

luksChangeKey <device> [<new key file>]

したがって、コマンド(すべてのオプションを使用する場合)は次のようになります。

luksChangeKey <device> --keyfile <oldkeyfile> --keyfile-offset <oldoffset> --keyfile-size <oldsize> --new-keyfile-offset <newoffset> --new-key‐file-size <newsize> <newkeyfile>
                                                                                                                                                                   ^^^^^^^^^^^^

そして、より可能性の高い短い形式:

luksChangeKey <device> --keyfile <oldkeyfile> <newkeyfile>
                                              ^^^^^^^^^^^^
1
Daniel Alder