Armadilloフォーラム

ABOSアップデート後、OP-TEEが動かなくなる

nshmr

2024年2月13日 13時49分

2024年1月30日 に 「ABOSのアップデートに失敗する」で質問したものです。
ABOSを3.15.3-at.4から3.18.6-at.10にアップデート後、OP-TEEが動かなくなり、困っております。
実行しようとすると、TAがエラーコード:code 0xffff000f (TEEC_ERROR_SECURITY) になる状況です。
何か手順を忘れているのでしょうか?

Armadillo-IoT ゲートウェイ G4 セキュリティガイドのWebの最新版の
6. ソフトウェア実行環境の保護 に沿ってやり直しています。
この際、何箇所かセキュリティガイドの記載内容から変更しており、その内容を添付ファイル ”セキュリティガイドからの変更点.txt” に記載しています。
このうち、(a)以外は、セキュリティガイドの更新が必要と考えます。

コンテナ上に、tarballを展開後、

root@b1cb0fb95b47:/# tee-supplicant -d

は、エラーなく、動いているように見えます。

この後、xtestを実行してみると、

root@b1cb0fb95b47:/# xtest
Run test suite with level=0
 
TEE test application started over default TEE instance
######################################################
#
# regression+pkcs11+regression_nxp
#
######################################################
 
* regression_1001 Core self tests
  regression_1001 OK
 
* regression_1002 PTA parameters
  regression_1002 OK
 
* regression_1003 Core internal read/write mutex
    Number of parallel threads: 6 (2 writers and 4 readers)
    Max read concurrency: 2
    Max read waiters: 1
    Mean read concurrency: 1.5
    Mean read waiting: 1
  regression_1003 OK
 
* regressionE/LD:  init_elf:437 sys_open_ta_bin(cb3e5ba0-adf1-11e0-998b-0002a5d5c51b)
_1004 Test User Crypt TA
E/TC:? 0 ldelf_init_with_ldelf:126 ldelf failed with res: 0xffff000f
/home/atmark/JL/imx-optee-test/host/xtest/regression_1000.c:437: xtest_teec_open_session( &session, &crypt_user_ta_uuid, ((S
  regression_1004 FAILED   
 
(以下、略)

と、0xffff000f (TEEC_ERROR_SECURITY) が返ってきてFailします。
同様に、 optee_example_hello_worldを実行しようとしても、

root@b1cb0fb95b47:/# optee_example_hello_world
E/LD:  init_elf:437 sys_open_ta_bin(8aaaf200-2450-11e4-abe2-0002a5d5c51b)
E/TC:? 0 ldelf_init_with_ldelf:126 ldelf failed with res: 0xffff000f
optee_example_hello_world: TEEC_Opensession failed with code 0xffff000f origin 0x3

のようになります。

Armadillo-IoT G4を起動し、コンテナを起動、tarballを展開、tee-supplicant 、xtest、optee_example_hello_worldを実行した時の全ログを添付ファイル "コンテナ実行.log" として付けています。

コメント

アットマークテクノ 小田桐です。 いつもお世話になっております。

変更点の情報ありがとうございます。 今後のドキュメントのリリースに反映いたします。

こちらでもArmadillo IoT ゲートウェイ G4 を利用して再現実験をやってみました。 切り分けのためにインストールディスクイメージを利用して eMMC を初期化するするところから始めました。 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g4/disc-image

結果的に問題なく動きました。

xtest ログ (ファイルを添付)

regression_nxp_0011 OK
regression_nxp_1001 OK
+-----------------------------------------------------
35632 subtests of which 0 failed
126 test cases of which 0 failed
0 test cases were skipped
TEE test application done!

バージョン

armadillo:~# cat /etc/sw-versions
base_os 3.18.6-at.10
boot 2020.4-at22

単純に手順に問題があるのか、それとも、お客様の開発中のソフトウェアが影響しているのか、 もう少し切り分けるために質問があるのですが、ご開発中のソフトウェアはコンテナだけですか?

TAを読む処理で失敗しているようです。ファイルがないわけではないようなので、 optee 関連のファイルがすべて更新されているのを確認してください。

ファイル ファイルの説明
log.txt xtest log

アットマークテクノ 小田桐様
ご返事ありがとうございます。

こちらの環境でも、
1. インストールディスクイメージで初期化
2. 以前作成していた"initial_setup.swu"でアップデート
3. アカウント/ネットワーク/NTPの設定
の後、今回最初に問い合わせした時の、アップデートイメージで、opteeを動かすと相変わらずエラーがでましたが、
”Armadillo-IoT ゲートウェイ G4 セキュリティガイド”の6章に沿って、最初から全部やり直してみたところ(鍵の更新だけは行わず前回と同じものを使用)、エラーなく動くようになりました。

再び動くようになり、助かりました。

動かなかったイメージと動くようになったイメージの元になっているoutディレクトリの内容を比較してみたのですが、
xtestコマンドと、.taの全てが異なっていました。(それ以外のCA側のコマンドやライブラリ/インクルードファイルは一致していました。)
xtestが異なる原因ははっきりしませんが、
.taは、コンパイルする毎に、結果が異なる(署名時のseedが変わる?)ものでしょうか?

アットマークテクノ 小田桐です。
お世話になっております。

よかったです。
taが異なるのは、ストリップされた elf に含まれるなにかが変わったのかもしれません。
文字列ではタイムスタンプはなさそうで、gcc のバージョンが入っているようでした。