【CentOS7】IoTのための暗号化デバイスの作り方
暗号化デバイスの作成の流れ
- 必要ソフトのインストール(cryptsetup、dumpなど)
- 暗号化デバイス用のパーティションを作成(parted)
- 暗号化の設定をし暗号化ファイルシステムをマウント
1.必要ソフトのインストール
作業のため管理者権限が必要となるのでsudo -iなどを実行して
root権限でコマンドを打ってください
まずは必要なソフトをインストールしましょう
Ubuntuの場合はaptにしてください
# yum install cryptsetup cryptsetup-libs
2.暗号化デバイス用のパーティションを作成
partedコマンドで暗号化するFSを作成します。
まずはどのディスクにパーティションを作成するか決めます。
lsblkでデバイス名を確認し作りたいディスクを決めてください
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk sda1 8:1 0 1G 0 part /boot sda2 8:2 0 19G 0 part centos-root 253:0 0 17G 0 lvm / centos-swap 253:1 0 2G 0 lvm [SWAP] sr0 11:0 1 4.3G 0 rom
今回はsdaのディスクに作成します。
以下のコマンドを打ち込むとGNU Partedのウィザードが起動するのでここで操作します
# parted /dev/sda
printで現在のパーティションの情報が見れます
(parted) print モデル: VMware, VMware Virtual S (scsi) ディスク /dev/sda: 32.2GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 1049kB 1075MB 1074MB primary xfs boot 2 1075MB 21.5GB 20.4GB primary lvm
次にmkpartでパーティションの作成を行います。
今回は簡単にディスクの最後に追加しますが、
メインのパーティションの拡張性を考えたい場合は
1-boot, 2-暗号化FS, 3-メイン
となるような構造にするといいです。
(parted) mkpart パーティションの種類? primary/プライマリ/extended/拡張? primary ファイルシステムの種類? [ext2]? ext3 開始? 21.6GB 終了? 22.6GB
日本語になってて見づらいですが、
- パーティションをprimaryにするかextendedにするか
- FSを何にするか
- パーティションの開始位置
- パーティションの終了位置
を聞かれています。
今回は1GB分の暗号化FSを作成したいので 終了位置-開始位置=1GB となるように設定しました。
printと打ち込むとパーティションが作成されていると思います。
確認ができたら、qと打ちこんでpartedを抜けてください
3.暗号化の設定をし暗号化FSをマウント
次にcryptsetupコマンドで暗号化設定をしていきます。
手順は以下の通りです。
- 暗号化するパーティション名を確認
- 暗号化
- 認証してマウント
まずはlsblkで先ほど作成したパーティション名を確認します。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk sda1 8:1 0 1G 0 part /boot sda2 8:2 0 19G 0 part centos-root 253:0 0 17G 0 lvm / centos-swap 253:1 0 2G 0 lvm [SWAP] sda3 8:3 0 1G 0 part sr0 11:0 1 4.3G 0 rom
sda3を暗号化します。
# cryptsetup luksFormat /dev/sda3 WARNING! ======== This will overwrite data on /dev/sda3 irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase for /dev/sda3: Verify passphrase:
確認がでますが英語の指示通り大文字でYESと入力してください。
その後パスワードの入力が求められますが、これは
rootパスのような扱いなのでバレないようなパスワードにしてください。
これでsda3を暗号化できたので認証してみます。
luksOpenで認証できます。
認証が成功したら /dev/mapper/デバイス名 とデバイスとして表示されるようになります。
今回はhimitsuという名前を付けたいので /dev/mapper/himitsuとなります。
# cryptsetup luksOpen /dev/sda3 himitsu Enter passphrase for /dev/sda3: # ls /dev/mapper centos-root centos-swap control himitsu
あとは/mntなどにディレクトリを作成するなどしてそこにマウントしてください。
# mkdir /mnt/himitsu # mount -w /dev/mapper/himitsu /mnt/himitsu
これで作業は完了ですが、luksAddKeyで鍵を追加できるのでこれを利用して
IoT機器のハードウェア情報から生成した鍵を使うことでコピーガードをしたりできます。
マウントした場所に暗号化したいファイルやプログラム置き、起動時に
ハードウェア情報(MACアドレスなど)を取得して公開鍵を生成し認証などができたら
製品として売りやすいですしIoT界隈で必須技術になりそうですね!