Armadilloフォーラム

eMMC 暗号化について

otani818

2022年10月18日 15時08分

以前のコメントにあるように、
https://armadillo.atmark-techno.com/forum/armadillo/3856

現状ではSDブートなどでeMMCの内容が参照できてしますが、
SDブートを完全に無効にするリスクは避けたいところです。

そこで eMMCの暗号化ですが、
埋め込んだパスワード等が解析される可能性があっても構わないので
(丸見えよりはマシですから・・)
G3Lのルートファイルシステム /dev/mmcblk2p2 を暗号化する方法について
具体的な情報や手順などがあればご教授ください。

よろしくお願いします。

コメント

追伸です。

こちらを参考に Armadillo G3L で試しています。
https://wiki.archlinux.org/title/Dm-crypt/System_configuration

■PC側
1.PC側に cryptsetup 環境をインストール
2.cryptsetupで暗号キーファイル"crypto_keyfile.bin"を作成
3.キーファイルを initramfs の "/" に埋め込む
4.3をマージしたカーネルを作成
5.4をArmadillo /dev/mmcblk2p1 にコピー

■Armadillo SDブート作業
5.SDブート状態で ctyprsetup をapt installする
6.cryptsetupで eMMC:/dev/mmcblk2p2 を暗号化フォーマット
7.6を/mntにマウントして、ルートファイルシステムを展開

みたいな流れになるのかと思います。

cryptsetupを使うには カーネルモジュール dm_mod が必要ですが、
dm-mod.ko(?)が見当たりません。
G3Lで dm_mod (cryptsetup) は利用できますか?
カーネルのmenuconfigから探し出せないので・・・

よろしくお願いします。

at_dominique.m…

2022年10月19日 16時06分

otani818さん

お世話になっています、
アットマークテクノのマルティネです。

G3Lのディスク暗号化を基本的にサポートしていませんが、頑張ればできない理由はないです。
# 遅くなるかもしれませんが…

あまりいい返事ではありませんが、変わりに Armadillo IoT G4 でセキュアーブートを有効にしたらそちらでサポートしています。
その場合はハードウェアの鍵を使ってますのでセキュアーブートも必要です。

> cryptsetupを使うには カーネルモジュール dm_mod が必要ですが、
> dm-mod.ko(?)が見当たりません。
> G3Lで dm_mod (cryptsetup) は利用できますか?
> カーネルのmenuconfigから探し出せないので・・・

探しているのは CONFIG_DM_CRYPT ですね。
デフォルト状態では CONFIG_MD と CONFIG_BK_DEV_DM も無効になっていますので、まずはその二つから有効にしてください。
https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt が参考になるかもしれません。

よろしくお願いします。

マルティネさま

>> カーネルのmenuconfigから探し出せないので・・・
> 探しているのは CONFIG_DM_CRYPT ですね。
CONFIG_DM_CRYPT でした、見つかりました。

> G3Lのディスク暗号化を基本的にサポートしていませんが、頑張ればできない理由はないです。
> # 遅くなるかもしれませんが…

「動作が実用レベルかどうか」も含めて試してみたいと思っています。
また分からない点や経過を報告します。

ありがとうございました。

その後あまり試せていませんが、
cryptsetup でluksFormat してルートファイルシステムを展開できることは確認出来ています。

これでブートさせるには、initramfsを調整することになるので
実機上で mkinitramfs を実行すると、それらしき cpio.gz ファイルが作成されますが、
正規の initramfs.cpio.gz の中身とディレクトリ構成が違うようです。

Armadillo G3L の initramfs.cpio.gz はどのように生成していますか。
手作業で必要なモジュール等を入れ込むのも出来なくはないですが、
生成用スクリプト等があれば助かります。

よろしくお願いします。

at_kojiro.yamada

2022年10月25日 11時49分

> Armadillo G3L の initramfs.cpio.gz はどのように生成していますか。
> 手作業で必要なモジュール等を入れ込むのも出来なくはないですが、
> 生成用スクリプト等があれば助かります。
>
> よろしくお願いします。
>

ほとんど更新しないことを想定していたため
高度なことはしていません。
initramfs_x1-v1.0.0.cpio.gz をベースにして、
スクリプト等を人の手で追加して作っています。

initramfs用のrootfsをgit で管理していて
rootfsを更新したら以下のようにして cpio.gz を生成しています。

cd root
find . -print | cpio -R 0:0 -H newc -o | gzip > ../"initramfs.cpio.gz"
cd ..

initramfs_x1-v2.1.0.cpio.gz を以下のコマンドで展開すると
上記gitで管理しているrootfsと同じディレクトリができます。

mkdir root
cd root
gzip -dc ../initramfs_x1-2.1.0.cpio.gz | cpio -idm
cd ..

参考になれば幸いです。

>
> ほとんど更新しないことを想定していたため
> 高度なことはしていません。
> initramfs_x1-v1.0.0.cpio.gz をベースにして、
> スクリプト等を人の手で追加して作っています。
>
やはり、そうですよね。。。

/etc/cryptsetup-initramfs/conf-hook を設定して mkinitramfs を実行すると
busybox向けcryptsetupのモジュール群が抽出されていたので、
それを適当にマージして initramfs.cpio.gz を作ってみます。

ありがとうございました。