出典:AWS IoT EduKit通して学ぶ「クライアント証明書入りセキュアエレメント」の使い方
 手にしたは良いが、その使い道がよく解らず疑問に思っていた。 上のサイトを見て少し分かった気になったので、そのまとめを。

キットの存在意義

 EduKitは、ハードウェアの開発者が、「秘密鍵とクライアント証明書入りのセキュアエレメント(ATECC608A Trust&GO)」と「AWS IoT Core」間の連携方法を、学ぶための学習キットである。
 マイコン(M5Stack Core2)の使い方を学ぶのが目的ではなく、AWS IoT Coreとの連携方法を学ぶことで、ハードウェア制作者にセキュアエレメントであるATECC608A Trust&GOを使うと色々な面で「こんなに良いことがあるし、楽もできる」と分かってもらうためのものである。
 よって、「Lチカ」でその使い方が分かれば学習はそこで終了してもよい。 その先のIoT EventsやAlexaとの連携は、Raspberry Piとかでやった方が楽で面白い。 なーるほどよく分かった、先にこのサイトを見るべきだった。

IoT Coreの認証方法

 認証にはいくつか方法があるが、中でもX.509クライアント証明書を利用した方法では、クライアント証明書と、対となる秘密鍵の計2つが必要。
 この対を作り準備する方法は次の4つ。

No 方法 概要と長短所
1 1-Click 証明書作成 AWS IoT Core の管理画面で作成可能。
最も手軽だが、得られた秘密鍵とクライアント証明書をデバイスに転送する必要あり。
RaspberryPiでやった方式が多分これ。
2 CSR による作成 手元の秘密鍵を利用できる。
秘密鍵から署名リクエスト(CSR)を作成し、IoT Coreに署名依頼をするとクライアント証明書が得られる。
クライアント証明書をデバイスに転送する必要あり。
3 独自CAの運用 手元の秘密鍵とクライアント証明書を利用できる。
大量デバイスの管理に適してはいるが、初期設定として独自CAをIoT Coreへ登録する事と
独自CA自体の適切な運用が必要。
さらに、デバイスの接続前にデバイス毎のクライアント証明書をIoT Coreへ登録する必要あり。
クライアント証明書の接続前登録は、ジャストインタイムで軽減は可能。
4 CAを登録せずに
クライアント証明書を
登録する
手元の秘密鍵とクライアント証明書を利用できる。
クライアント証明書へ署名しているCAがIoT Coreに登録されて無くても良いが、
デバイスの接続前にはクライアント証明書をIoT Coreに登録する必要あり。

 ATECC608A Trust&GOは “プロビジョニング済み” 即ち、秘密鍵とクライアント証明書が格納された状態で出荷されるため、秘密鍵やクライアント証明書の作成が不要。
 これがTrust Platformと呼ばれる解決法。
 一般的に普通のセキュアエレメントにはクライアント証明書は入っていない。 そのため、セキュアエレメント内のコマンド(opensslコマンド相当)で作成する必要があるが、Trust Platformではこれが不要でそのぶん楽。
 ATECC608A Trust&GOから取り出したクライアント証明書の署名者を確認すると Microchip Technology Inc. となっている。
 これまではIoT CoreにCA登録されていない署名者のクライアント証明書は登録に使えなかったが、「No.4 CAを登録せずにクライアント証明書を登録する」が可能になったので、「IoT CoreのCAとして登録されていないMicrochip社のCAによって署名されたクライアント証明書でも、IoT Coreに登録できるようになった」訳で、上の表の「No.4 CAを登録せずにクライアント証明書を登録する」がATECC608A Trust&GOが採用するIoT Coreへの認証方法のようだ。

実際のIoT Coreへの認証方法

以下の2つの手順が必要

1. ATECC608A Trust&GO内のクライアント証明書をIoT Coreへ登録する
2. IoT Coreへの接続時にATECC608A Trust&GO内の秘密鍵を使用する

 長くなるので、つづく・・・・・