LoginSignup
0
0

More than 3 years have passed since last update.

NXP SE050検証(証明書プロビジョニング)(NXP SE050 certificate provisioning)

Posted at

はじめに

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

証明書の書き込み

SE050を使ってWEBサーバーへつなぐテストを行いたいが、SE050で生成したパブリックキーへ署名して、証明書を作成し、書き戻してTLSセッションで利用できるようにしなくてはならない。

前回、NXP SE050検証(証明書読み出し)(NXP SE050 cerificate extraction by using ESP32)でプリセットされていた証明書を読み込んだが、今回は同様に証明書を作成し書き戻してみる。

ユーザーが使えるObjectIDはex_sss_objid.hに定義されている。

#define EX_SSS_OBJID_CUST_START             0x00000001u
#define EX_SSS_OBJID_CUST_END               0x7BFFFFFFu

この範囲で、下記のように定義してみた。

#define OBJID_usr_key (EX_SSS_OBJID_CUST_START + 0x10000002u)
#define OBJID_usr_cert (EX_SSS_OBJID_CUST_START + 0x10000003u)
#define OBJID_signer_cert (EX_SSS_OBJID_CUST_START + 0x10000004u)
#define OBJID_root_cert (EX_SSS_OBJID_CUST_START + 0x10000005u)

OBJID_usr_keyはPrime256v1のキーペア
OBJID_usr_certは上記の公開鍵を署名してできた証明書
OBJID_signer_cert、OBJID_root_certはそれぞれ中間証明書、ルート証明書となり、すべての証明書チェーンをSE050内に収めてみる。

Linuxだとssscliというものがあるが、これらをシリアル通信で設定できるcliツールを作ってみた。
ソースはNXP-SE050-provisioning-cli

cliツール概要

最低必要なのは、デバイスから公開鍵を取り出すコマンドと、証明書を書き戻すコマンド。
DERエンコードのバイナリはシリアル通信で送れないのでPEMに直してやり取りする。

Rでレディ状態確認。通信できるかの確認に使う
qでアプリケーション終了。
sでシリアル番号をbase64で出力。コモンネームに使ったりできるユニークな番号
kでパブリックキーをpemで出力
rでルートCA証明書の受領モード(pem)
cでSigner CA証明書の受領モード(pem)
vでデバイス証明書の受領モード(pem)

Windows10のTeraTermで動作確認ができた。

I (338) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
       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
I (805) uart: queue free spaces: 10
Ready.
BABQAV5rfvqyOR0EfpAKlGaAReady.
Ready.
-----BEGIN PUBLIC KEY-----
MFkwEwYH….
……………….HyTtI43wIldXw==
-----END PUBLIC KEY-----

抜き出したパブリックキーに署名し、各証明書の書き込みモードにし、pemの文字列をTeraTermで「貼り付け」を行うと書き込まれる。
これを使ってテストWEBサーバーへ接続テストを行ってみる。

0
0
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
0
0