wiki:dm-crypt

cryptsetup と dm-crypt でパーティションの暗号化

概要

詳しい話は  http://opentechpress.jp/kernel/04/06/09/1353250.shtml など

  • device-mapper を使ってパーティションを暗号化するので,マッパーデバイスを作成する際にパスワードを求められる
    # cryptsetup -y create <NAME> <DEVICE>
    Enter passphrase:
    Verify passphrase:
    # mount -t <TYPE> <DEVICE> <MOUNTPOINT>
    
    • ブートプロセス中,localmount が動く前にパスワードが求められるという,Apache の mod_ssl のようなことが起こる
  • swap や tmp なら /dev/urandom を鍵にしてしまえば良い (-d オプションで可能)
  • 暗号化アルゴリズム
    • カーネルがサポートしていればどれでもいけるのかも
      • AES や Blowfish (CBC Mode も可) を使うのが一般的
  • パスワードハッシュ関数
    • カーネルがサポートしていればどれでもいけるのかも
      • MD5,SHA-1,SHA-256,SHA-512 あたりが一般的

構築

  1. カーネル構築
    Device Drivers --> RAID and LVM Support --> 
    [*] Multiple devices driver support (RAID and LVM)           
    <*> Device mapper support
    <*> Crypt target support
    
    Cryptographic Options --> 
     <*> AES cipher algorithims
    
  2. cryptsetup インストール
    # emerge sys-fs/cryptsetup
    
  3. 暗号化して利用するパーティションにマッパーデバイスをマッピング.パスワードを求められるが,初回は好きなパスワードを設定する
    # cryptsetup -y create <好きなデバイス名> <デバイスの実態 (例えば /dev/hda4)>
    
  4. マッパーデバイスを通してファイルシステムを作る.これを見て分かる通り,既存ファイルシステムは破壊される
    # mkreiserfs /dev/mapper/<さっきcreateしたデバイス名>
    
  5. マウントする.マウント時にはパスワードは求められない.あくまでマッパーデバイスを作るときにだけパスワードを求められることに注意
    # mount /dev/mapper/<さっきcreateしたデバイス名> /mnt/point
    

起動時のマウント

Gentoo Linux の場合.

  1. /etc/conf.d/cryptfs を編集
    mount=<createしたデバイス名>
    source='<デバイスの実態 (例えば /dev/hda4)>'
    options='-y'
    

あとは localmount あたりが何とかしてくれる. ただし起動時にパスワード入力必須.