1
2

More than 3 years have passed since last update.

NXP SE050検証(I2C経路暗号化)(NXP SE050 encrypting I2C transmission)

Posted at

はじめに

2019/12/14に開かれた IoTSecJPにてお時間をいただき
セキュアエレメントとIoTデバイスセキュリティ
と題してお話させていただきました。
その内容をベースにまとめていきたいと思います。

I2C通信の暗号化

ホストマイコンからI2Cで鍵情報を送る際、ロジアナで読み取られないようにI2C経路を暗号化したい。
ATECC608Aでは、IOProtectionKeyというもので暗号化、復号を行いI2C経路を守る仕組みを備えていた。

同じようなことがSE050 でできないか。
image.png

現状のNXP SE050を動作させるテストコードNXP SE050検証(ESP32へのポーティング編)(Porting NXP SE050 to ESP32)は実行すると、下記の警告が出る。

       sss:WARN :Communication channel is Plain.
       sss:WARN :!!!Not recommended for production use.!!!

まずはこれが出なくなるようにしたい。

NXP SE050の暗号化の整理

NXPのドキュメントSE050 - User Guidelinesによると、以下のようになるらしい。

5.1.2セッション
SE050では、次のいずれかのセキュアオブジェクトとのセッションを開くことができます。
•userID(UserIDセッションを開くため)
•AES128キー(SCP03セッションを開くため)
•ECKeyペアまたはEC公開キー(FastSCPセッションを開くため)
UserIDセッションはプレーンな通信を使用していますが、SCP03またはFastSCPセッションはSCP03の安全なメッセージに依存しているため、エンドツーエンドの保護を提供します(セキュリティの推奨事項を参照)。

ユーザーが上記を使用してセッションを開いた場合:

•バインドされていないユーザーのアクセス権は適用されなくなります
•ユーザーは、セッションを開くために使用された認証オブジェクトIDによって認識され、バインドされたユーザーになります。
デフォルトでは、SCP03またはFastSCPセッションが確立されると、アプレットレベルのSCPがこの特定のセッションにエンドツーエンドで適用されます。
アプレットレベルのSCPはSCP03secureメッセージングを使用しています。 SCP03とFastSCPセッションの違いは認証方法です。SCP03は対称暗号に基づいており、FastSCPは認証に非対称暗号を使用しています。認証されたユーザーセッションは、セッションを安全に使用するための推奨事項を提供します。
Platform SCPが使用される場合、アプレットレベルのSCPはPlatform SCPチャネル内にラップされることに注意してください。

絵にすると下記のようになるようだ。

image.png
platformSCP03とSecureObjectの設定は重ね掛けができるようだ。
今回、PlatformSCP03の暗号化を試してみる。

PlatformSCP03の設定ポイント

まず、デフォルトで設定されているENC,MAC,DEKの鍵を見つける必要がある。
SE050 Configurationsを見ると、
5ページに「default platform SCP Keys」という項目があり、デフォルトの3点セットの値がわかる。
それぞれの定義はNXPのPlug&Trust MW内、ex_sss_tp_scp03_keys.hにある。
これがデフォルトだと設定ファイルex_sss_auth.h上で”Development Board”用になっているので、今回手元にある“SE050C1”用に置き換える。

そうして、いくつかPlatformSCP03の定義を追加してビルドできた。
ソースコードはNXP-SE050-Test-PlatformSCP03に置いた。

実行させたところ。

       App:INFO :PlugAndTrust_v02.12.04_20200228
       App:INFO :If you want to over-ride the selection, use ENV=EX_SSS_BOOT_SSS_PORT or pass in command line arguments.
       sss:INFO :atr (Len=35)
      00 A0 00 00    03 96 04 03    E8 00 FE 02    0B 03 E8 08
      01 00 00 00    00 64 00 00    0A 4A 43 4F    50 34 20 41
      54 50 4F
       App:WARN :#####################################################
       App:INFO :uid (Len=18)
      04 00 50 01    4A 66 D8 75    07 78 E6 04    7E 91 0A 94
      66 80
       App:WARN :#####################################################
       App:INFO :Applet Major = 3
       App:INFO :Applet Minor = 1
       App:INFO :Applet patch = 0
       App:INFO :AppletConfig = 6FFF
       App:INFO :With    ECDAA
       App:INFO :With    ECDSA_ECDH_ECDHE
       App:INFO :With    EDDSA
       App:INFO :With    DH_MONT
       App:INFO :With    HMAC
       App:INFO :With    RSA_PLAIN
       App:INFO :With    RSA_CRT
       App:INFO :With    AES
       App:INFO :With    DES
       App:INFO :With    PBKDF
       App:INFO :With    TLS
       App:INFO :With    MIFARE
       App:INFO :With    I2CM
       App:INFO :SecureBox = 010B
       App:INFO :ex_sss Finished

通信が平文である警告が消えたが、デフォルトのままだと3つの鍵が公開情報なので、適切に鍵を置き換えなくてはならない。
鍵置き換えのデモが、Plug&Trust MW内の「SE05X Rotate PlatformSCP Keys Demo」となる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2