Armadilloフォーラム

swuイメージを暗号化するように変更したい

tmygt

2023年12月8日 15時00分

https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev… に従ってinitial_setup.swuを作成し、アップデートを試していました。当初は暗号化をしていなかったのですが、やはり暗号化をしようと考えています。この場合、どのような手順を行えば暗号化を有効にできるのでしょうか?

また、後から暗号化を有効にした場合、すでに初回アップデートを実行したArmadillo IoT G4に対してのswupdateが出来なくなるのでしょうか?

コメント

at_dominique.m…

2023年12月11日 10時50分

tmygtさん

お世話になっています、
マルティネです。

逆の順番で回答します。

> また、後から暗号化を有効にした場合、すでに初回アップデートを実行したArmadillo IoT G4に対してのswupdateが出来なくなるのでしょうか?

はい。暗号化を有効した後に平文の(暗号化されてない)swu をインストールできますが、暗号化が設定されていない Armadillo に暗号化されているアップデートをインストールできません。インストールできたらだれでも内容を読めることになりますので、仕方がありません。

その Armadillo に一度鍵を転送していただければインストールできるようになります。鍵の転送については次に説明します。

> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev… に従ってinitial_setup.swuを作成し、アップデートを試していました。当初は暗号化をしていなかったのですが、やはり暗号化をしようと考えています。この場合、どのような手順を行えば暗号化を有効にできるのでしょうか?

マニュアルの説明不足ですみません。手順を間違えばインストールをインストールできなくなる恐れがありますので、お手数をかけしますがこういう風に聞いていただいた方が安心できます。
流れを一度読んでから、疑問なければ実行してください。何か不明な点があれば遠慮なく聞いてください。

1. 次のコマンドで鍵を ATDE で生成します:「mkswu --genkey --aes
このコマンドが暗号化用の鍵を生成して、~/mkswu/mkswu.conf に自動的に追加しますので、これから生成する SWU はまだインストールできません。

2. 暗号化の鍵を Armadillo に転送します。
2. a. initial_setup がすでにインストールされた場合は暗号化を有効するための swu で鍵を転送します。
以下の内容を setup_encryption.desc 等のファイルに保存してください。「mkswu setup_encryption.desc」で setup_encryption.swu を生成して、それをインストールしていただければ今後の暗号化されているアップデートもインストール可能となります。

# 暗号化の鍵を別の変数で保存して、mkswu に一時的に無効化させます。
ORIG_ENCRYPT_KEYFILE="$ENCRYPT_KEYFILE"
swdesc_option ENCRYPT_KEYFILE=""
 
# 任意のバージョン
swdesc_option component=setup_encryption version=1
 
# 鍵を転送します
# 暗号化されてない状態で swu に含まれますので、
# この swu を手に入れた場合に今後の暗号化を復号できます。
# (暗号化有効の initial_setup.swu と同じです)
swdesc_files --extra-os --dest /etc "$ORIG_ENCRYPT_KEYFILE"
 
# コンフィグファイルに暗号化を認識するように設定します。
swdesc_command --extra-os "sed -i -e 's/# aes-key-file/aes-key-file/' /etc/swupdate.cfg"

2. b. initial_setup がまだインストールされてない armadillo のためにも、「mkswu ~/mkswu/initial_setup.desc」で initial_setup.swu を更新してください。
initial_setup は一度しかインストールできませんし、上記の setup_encryption も initial_setup をインストールする前にインストールできませんので、どれかの方法で鍵を転送してください。

3. 暗号化を設定した上で動作確認してください(mkswu でswu を再生成してからインストールできるかどうかの確認)
何でもいいので、例えば「mkswu -o test.swu /usr/share/mkswu/examples/custom_script.desc」で test.swu を生成してインストールしてみてください。デフォルトでは /var/app/volumes/custom_script_app に日付を記載するスクリプトです。

問題あった場合にお知らせください。
$HOME/mkswu/mkswu.conf から ENCRYPT_KEYFILE=... の引数が設定されている行を削除しておけば暗号化無効に戻ります。

よろしくお願いします。

マルティネさん

回答ありがとうございます。教えていただいた手順で鍵を書き換え後、暗号化したswuで更新できることを確認しました。

swu自体が暗号化されているかどうかは、mkswu --show で確認しています。(ちょうどABOSの更新をしようと思っていたので、ABOSを更新するswuで試しました。)

$ mkswu --show ./armadillo/swu/test.swu 
# ./armadillo/swu/test.swu
 
# Built with mkswu 5.1
 
swdesc_tar baseos-x2-3.18.4-at.6.tar.zst --version base_os 3.18.4-at.6 --preserve-attributes
#  (encrypted)
 
swdesc_boot  --install-if different  --version boot 2020.4-at19 imx-boot_armadillo_x2_2020.04-at19
#  (encrypted)

また、swupdate実行後にABOSのバージョンが変わっていることも確認しています。
ご対応ありがとうございました。