Armadilloフォーラム

eMMCを公開させない方法

bdaddr

2019年4月11日 15時31分

現在、Armadillo-X1を利用しています。
製品化に向けて、
アクセスには、etherからsshの公開鍵でアクセスする方法のみを考えており、
eMMCの内容を外部から見れないようにしたいと考えています。
シリアルポートやSDカードをmountしての内部の確認をできないようにしたいと考えております。
Armadillo-X1では、SDカードから起動すれば、eMMCをmountして、内容を確認できてしまいますが、
何か防止する方法はありますでしょうか?

なお、シリアルポートに関しては、カーネルを構築時にdisableにすれば良いので、どうにかなると考えています。

コメント

古関です。

どこまでセキュリティ対策が必要かにもよりますが、
例えば、eMMCをcryptfsのようなもので暗号化する案があります。

場合によっては、SDブートやJTAGまで無効にした方がいいかもしれません。
これらは、i.MX7Dのe-fuse設定を変更する事で無効にできます。

注意事項として、fuseですので、一度切ってしまうのと元に戻せません。
SDブートやJTAGを無効にしてしまうと弊社での解析が一切できないため基本的に製品保証の対象外となります。

U-Bootにはe-fuse設定機能(fuseコマンド)がありますが、
弊社の標準イメージではこの機能を無効にしています。

次のようにu-bootのコードを修正しビルドしたU-Bootを書き込むことで
fuseコマンドを有効にすることができます。
---------------------------------------------------------------------
diff --git a/include/configs/x1.h b/include/configs/x1.h
index 5797bd26d8..cf8519f71b 100644
--- a/include/configs/x1.h
+++ b/include/configs/x1.h
@@ -29,7 +29,7 @@
#define CONFIG_BOARD_EARLY_INIT_F
#define CONFIG_BOARD_LATE_INIT

-#undef CONFIG_CMD_FUSE
+#define CONFIG_CMD_FUSE
#define CONFIG_MD5
#define CONFIG_CMD_MD5SUM
---------------------------------------------------------------------

Armadillo-X1では、i.MX7Dのmanufacture mode を無効にすることでSDブートを止めることができます。

e-fuseのアドレスや仕様に関してはi.MX7のリファレンスマニュアルを参照してください。
https://www.nxp.com/products/processors-and-microcontrollers/arm-based-…

ご回答ありがとうございます。
cryptfsでは、rc.localなどで、mountするところは、パスワードが平文ですので、
簡単に解読できてしまうので、NGです。

SDブートをできないようにできれば、解決です。
もとに戻せないということは、SDブートを二度とできないということで、
今回はこちらを採用しようと思います。

ご存知でしたら、下記の部分をもう少し詳しく教えていただけますでしょうか。
> Armadillo-X1では、i.MX7Dのmanufacture mode を無効にすることでSDブートを止めることができます。

よろしくお願いします。

古関です。

> ご存知でしたら、下記の部分をもう少し詳しく教えていただけますでしょうか。
> > Armadillo-X1では、i.MX7Dのmanufacture mode を無効にすることでSDブートを止めることができます。

リファレンスマニュアルの以下ですね。
USDHC Boot eFUSE Descriptions
0x490[23]: Disable SDMMC Manufacture mode
(OTP Bank2 Word1)

fuseコマンドを有効にしたU-Bootで次のコマンドを実行することで、
SDブートを無効にすることができます。
(※ 手元にSDブートできなくなっても良いArmadillo-X1が無かったので、
   Armadillo-IoT G3で動作確認しています、搭載SoCは同じi.MX7Dなので同じです)

=> fuse read 2 1
Reading bank 2:

Word 0x00000001: 00000000

=> fuse prog 2 1 0x00800000