はじめに
Jetson Nanoを外に持ち出す場合にデータを暗号化したい場合がある。JetPack 4.2はSDカードにイメージを焼くタイプなので、このSDカードをそのまま暗号化するのは面倒だ。そこで1つのファイル上に暗号化ファイルシステムを構築してマウントすることを考える。
概要
次の手順で使用することができる。
- パッケージ
cryptsetup
のインストール - カーネルモジュール
dm-crypt
のインストール - (持ち運び用の)ファイルを用意
- ファイルをマウント
上記を行うためのスクリプトはgithub
に置いたので以下に使い方を説明する。
パッケージ cryptsetup のインストール
cryptsetupはaptを使ってインストールする。
sudo apt install cryptsetup
カーネルモジュール dm-crypt のインストール
カーネルモジュールdm-crypt
はカーネルの再コンパイルを要するので、コンパイル済みのものをgithubに置いた。またモジュールと共にインストール用のスクリプトinstall.sh
を作成した。これを実行すればインストールされる。行っていることはモジュールの複製とdepmod -a
である。
git clone https://github.com/yamamo-to/jetson_nano.git
cd jetson_nano/crypt_example
sudo ./install.sh
(持ち運び用の)ファイルを用意
持ち運び用のファイルを用意するのは少々面倒なのでこれもスクリプトmake_enc_file.sh
を作成した。
下記の例は、持ち運び用のファイルcryptfile
を10MiBのサイズで作成する。
sudo ./bin/make_enc_file.sh cryptfile 10
作成する際にアルファベットの大文字で「YES」と入力する必要がある。
また暗号化用のパスワード(パスフレーズ)は3回入力することになる。1回目は最初の入力、2回目は確認用、3回目はフォーマット用である。
yamamo-to@jetson-nano:~/Documents/jetson_nano/crypt_example$ sudo ./bin/make_enc_file.sh cryptfile 10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.187049 s, 56.1 MB/s
WARNING!
========
This will overwrite data on /dev/loop1 irrevocably.
yamamo-to@jetson-nano:~/Documents/jetson_nano/crypt_example$ sudo ./bin/make_enc_file.sh cryptfile 10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.186083 s, 56.4 MB/s
WARNING!
========
This will overwrite data on /dev/loop1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/loop1:
Verify passphrase:
---
Start ext4 format
Enter passphrase for /dev/loop1:
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 8192 1k blocks and 2048 inodes
Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
マウント
作成したcryptfile
を/mnt/test
にマウントする。
sudo mkdir /mnt/test
sudo ./bin/mount_enc_file.sh cryptfile /mnt/test
アンマウント
sudo ./bin/umount_enc_file.sh /mnt/test
まとめ
- Jetson Nanoで暗号化ファイルシステムを作成しマウントした。
- 暗号化ファイルシステムを効率よく利用するために次の3つのスクリプトを作成した。
- 暗号化ファイル作成スクリプト
make_enc_file.sh
- 暗号化ファイルマウント用スクリプト
mount_enc_file.sh
- 暗号化ファイルアンマウント用スクリプト
umount_enc_file.sh
- 暗号化ファイル作成スクリプト