Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

なくした LUKS キーまたはパスフレーズを復元する

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7

Issue

  • LUKS キーをなくしました。データを復元するにはどうすれば良いですか?
  • LUKS 暗号化を行ったドライブのパスフレーズを忘れました。どのように対処すれば良いですか?
  • luks パスワードを忘れた場合にデータをどのように復元することができますか?

Resolution

(A) その他のパスフレーズまたはキーファイルは利用できますか?

LUKS は、ドライブごとにキー (パスフレーズまたはファイル) を最大 8 個設定できます。

  1. blkid コマンドを実行してデバイス名を確認します。
    このコマンドは LUKS デバイスだけを表示します。

    blkid -t TYPE=crypto_LUKS -o device
    

    例:

    [root]# blkid -t TYPE=crypto_LUKS -o device
    /dev/vdb1
    
  2. LUKS ヘッダーから、追加されているキースロットの数を確認します。
    先ほど確認したデバイス名を使用します。

    cryptsetup luksDump /dev/<NAME> | grep Key.Slot
    

    例:

    [root]# cryptsetup luksDump /dev/vdb1 | grep Key.Slot
    Key Slot 0: ENABLED
    Key Slot 1: DISABLED
    Key Slot 2: DISABLED
    Key Slot 3: DISABLED
    Key Slot 4: DISABLED
    Key Slot 5: DISABLED
    Key Slot 6: DISABLED
    Key Slot 7: DISABLED
    
  3. 1 つ以上のキースロットが有効になっている場合は、他の人が有効なキーを持っていませんか?

(B) そのデバイスは今も開いていますか?

システムが起動したままで、デバイスが現在開いて (アンロックされた) 場合は、root がマスターキーを使用して新しいキーを追加できます。

(RHEL 5 の場合の注意: root はマスターキーをファイルに抽出できますが、RHEL 5 の cryptsetup は、マスターキーを読み込んで新しいキーを追加することをサポートしていません。代わりに、ディスクを閉じて、(マスターキーファイルと一緒に) RHEL 6 マシンまたは RHEL 7 マシンに移行する必要があります。)

  1. 開いている暗号化デバイスを確認します。
    このコマンドは、LUKS で暗号化されたデバイスへの開いたマッピングだけを示します。

    dmsetup ls --target crypt
    

    例:

    [root]# dmsetup ls --target crypt
    vdc-decrypted    (253, 2)
    luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c    (253, 1)
    

    最初の列は、/dev/mapper/ 接頭辞がないマップのファイル名 (<MAP>) です。
    出力が表示されない場合は (C) に進みます。

  2. 上の出力で探しているマップを見つけ、その名前 (<MAP>) を書き留めます。
    システムには LUKS デバイスが 1 つだけしかない場合は、次の手順に進みます。
    システムに複数の LUKS デバイスがある場合は、lsblkfindmntdfmount/etc/fstab を使用して、正しいデバイスを特定します。

    例:

    [root]# mount | grep vdc
    /dev/mapper/vdc-decrypted on /opt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
    [root]# lsblk | grep -B1 luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c
    └─vdb1                                        252:17   0 1023M  0 part
      └─luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c 253:1    0 1021M  0 crypt /cryptstor
    [root]# lsblk /dev/vdc
    NAME            MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
    vdc             252:32   0   2G  0 disk
    └─vdc-decrypted 253:2    0   2G  0 crypt /opt
    [root]# findmnt /dev/mapper/luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c
    TARGET     SOURCE                                                FSTYPE OPTIONS
    /cryptstor /dev/mapper/luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c ext4   rw,relatime,seclabel,data=ordered
    
  3. LUKS マスターキーを抽出し、新しいキーを追加するのに使用します。
    マスターキーの扱いには注意してください。デバイスへのフルクセスが可能になります。

    dmsetup table <MAP> --showkeys
    

    マスターキーは 5 列目の 16 進法の文字列です。ただし、これを cryptsetup luksAddkey <DEVICE> --master-key-file で使用するには、バイナリーに変換する必要があります。

    • RHEL 6 および RHEL 7 の場合:
      マスターキーを抽出し、バイナリーに変換し、以下のコマンドを実行して luksAddKey に直接パイプを追加します。

      cryptsetup luksAddKey <DEVICE> --master-key-file <(dmsetup table --showkey /dev/mapper/<MAP> | awk '{print$5}' | xxd -r -p)
      

      例:

      [root]# lsblk | grep -B1 luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c
      └─vdb1                                        252:17   0 1023M  0 part
        └─luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c 253:1    0 1021M  0 crypt /cryptstor
      [root]# cryptsetup luksAddKey /dev/vdb1 --master-key-file <(dmsetup table --showkey /dev/mapper/luks-ec013cf7-ad72-4dcf-8a1e-0548016a3e2c | awk '{print$5}' | xxd -r -p)
      Enter new passphrase for key slot:
      Verify passphrase:
      [root]# cryptsetup luksDump /dev/vdb1 | grep ENABLED
      Key Slot 0: ENABLED
      Key Slot 1: ENABLED
      
    • RHEL 5:
      最後の手順を行う RHEL 6 または RHEL 7 システムに移行するために、gpg で暗号化したファイルにキーを保存します。

      例:

      [root@rhel5]# dmsetup table --showkey vdb-open | awk '{print $5}'
      3c8e2d74f66d684547fdb0421cb3ced6
      [root@rhel5]# dmsetup table --showkey vdb-open | awk '{print $5}' | gpg -aco  masterkey.gpg --force-mdc --cipher-algo aes256
      Enter passphrase:
      Repeat passphrase:
      [root@rhel5]# cat masterkey.gpg
      -----BEGIN PGP MESSAGE-----
      Version: GnuPG v1.4.5 (GNU/Linux)
      
      jA0ECQMClT4LaE+j9PNg0lYBM0QAV1jOEPVIZuEhOnB2iStT+51BTzMxlg99uu9L
      FmynvHQZ71M/0JXoEpBmEvJUXS0NB1deTCFfNb7BDGuYQZDKSCunQo/F0o2m1l5x
      ZLq83BcDdg==
      =p7Zd
      -----END PGP MESSAGE-----
      
              Transfer masterkey.gpg to RHEL 6/7 system.
              Make sure masterkey.gpg can be decrypted on other system.
      
      [root@rhel6]# gpg -d masterkey.gpg
      gpg: AES256 encrypted data
      gpg: encrypted with 1 passphrase
      3c8e2d74f66d684547fdb0421cb3ced6
      
              Once certain masterkey is intact on other system, close the
              LUKS device on the RHEL 5 system and move/migrate the disk
              to the new system.
      
      [root@rhel5]# cryptsetup luksClose vdb-open
      
              After that, add a new key using the decrypted master key.
      
      [root@rhel6]# blkid -t TYPE=crypto_LUKS -o device
      /dev/vdb
      [root@rhel6]# cryptsetup luksAddKey /dev/vdb --master-key-file <(gpg -d masterkey.gpg | xxd -r -p)gpg: AES256 encrypted data
      gpg: encrypted with 1 passphrase
      Enter new passphrase for key slot:
      Verify passphrase:
      [root@rhel6]# cryptsetup luksDump /dev/vdb | grep ENABLED
      Key Slot 0: ENABLED
      Key Slot 1: ENABLED
      
              After adding new key, close the device and move it back
              to the RHEL 5 system, if desired.
      

(C) (A) も (B) も有効ではありません。

  • 暗号化の本質はデータを保護することです。既知のキーがなく、デバイスがアンロックされない場合、データはなくなったのも同様です。

  • 現在の LUKS または dm-crypt の実装における暗号化の短所を将来的に発見するか、高度な量子コンピューターがない場合に唯一可能なオプションは、辞書の単語を総当たりで攻撃する、つまりパスワードの推測です。

  • 辞書攻撃の実現可能性は、完全に、キーを作成したユーザーに依存します。なぜなら、LUKS は、膨大な (RHEL 7 では 512 文字) 平文テキストのパスフレーズと、非常に大きな (RHEL 7 では 8 MiB) のキーファイルを許可しており、新しい行や任意のバイナリーデータを追加することもできるためです。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments