2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Edukit を MacOS で試す

Posted at

edukit を試したので、気になったところをメモしておきます。

EduKitについて
https://aws.amazon.com/jp/about-aws/whats-new/2020/12/introducing-aws-iot-edukit/

ハンズオン
https://edukit.workshop.aws/en/
こちらのハンズオンを試していきます。

1. getting started

特に気になるところは無し PlatformIOは便利。

2. Blinky Hello World

ここではesp-idf のインストールを行うが、すでにv3の環境がインストール済みだったため、変な依存関係が生まれないように念のため退避しておきます。

cd ~/esp/
mv xtensa-esp32-elf ../(退避場所)

install.sh の実行で dirname: illegal option -- b のエラーが出たため、install.shを修正。
こちらを参考に、以下のように -- を $0の前に追加。

export IDF_PATH=$(cd $(dirname -- $0); pwd)
# (中略)
basedir="$(dirname -- $0)"

ターミナルを再起動する必要が出た場合は、再度、

conda activate edukit

する必要があります。


python registration_helper.py -p <<DEVICE_PORT>>

これを実行すると、output_filesの下に {Serial Number}_manifest.jsonが作成されます。
このPayloadはBase64でエンコードされているので、デコードしてみると以下のようになっています。

{
   "version":1,
   "model":"ATECC608A",
   "partNumber":"ATECC608A-TNGTLS",
   "manufacturer":{
      "organizationName":"Microchip Technology Inc",
      "organizationalUnitName":"Secure Products Group"
   },
   "provisioner":{
      "organizationName":"Microchip Technology Inc",
      "organizationalUnitName":"Secure Products Group"
   },
   "distributor":{
      "organizationName":"Microchip Technology Inc",
      "organizationalUnitName":"Microchip Direct"
   },
   "provisioningTimestamp":"2020-11-18T05:00:00.000Z",
   "uniqueId":"0123b36c6270c2ad01",
   "publicKeySet":{
      "keys":[
         {
            "kid":"0",
            "kty":"EC",
            "crv":"P-256",
            "x":"6XU4nnOjw_vAS478YCCekvG0Lr-fwP86_ZA6NrG4mzI",
            "y":"D1W-rzC2iiFulsNhCF0c2n6HNcjnXgnenj7cXrY_j1A",
            "x5c":[
               "MIICIDCC...",
               "MIICBDCCAaqgAw..."
            ]
         },
         {
            "kid":"1",
            "kty":"EC",
            "crv":"P-256",
            "x":"r-9TSFq6DgCcxD1SXsCgW7YTax69RFo8zyaeiQEmfUA",
            "y":"nSjvVe50HKFkCVJJug5JN1BBkopzda1YCaUL0k4LykI"
         },
         {
            "kid":"2",
            "kty":"EC",
            "crv":"P-256",
            "x":"SaPyWQrM5T87ckFDZ1cn2iudiKdu5CAIBBh9a8BlVYY",
            "y":"awQz8k_GQ9RxizwyETo96UOz0Jnw9YmSIU7jlv-Q8pk"
         },
         {
            "kid":"3",
            "kty":"EC",
            "crv":"P-256",
            "x":"51JgkAj1O786jXR7pd2El8Vj08MIZENLdRqtCgRU4Vo",
            "y":"a0TsFt5VPoTCar59jr0hYNgZJb9S8lVEZepuUrG7EBk"
         },
         {
            "kid":"4",
            "kty":"EC",
            "crv":"P-256",
            "x":"5ujWNIjY7alftW-k-DrXPl-e2ZKFkuu9H2l9sVwHmk4",
            "y":"d0OhNeik3XLy-hd0LByWAfg97rnf6rFsQSCbFiPDHGA"
         }
      ]
   }
}

実際に何が行われているかを確認したいので、 registration_helper.py の中を覗いてみます。

  1. generate_signer_certificate()
  • ここでは、ECDSAの鍵を作成し、それを使って、 x.509の自己署名証明書を作成しています。Common NameとしてAWS IoT から取得した、registration code を入れています。(Edukitが採用している Microchip ATECC608 Trust&GO の仕組みでは、必ずしも Common Name に registration code を入れる必要が無いきがします… 量産時にはMicrochipから各ATECC608のManifestを取得可能です)とはいえ変える必要も無いのでそのままにしておきます。
  1. esp_hs.generate_manifest_file(esp, args, init_mfg)
  1. upload_manifest()

実際に、AWS IoTのマネコンで上記の設定が反映されていることを確認できます。

image.png

3. Smart Thermostat

このセクションに限りませんが、様々なドライバーが実装済みなので、色々遊べそうです。LicenseはApache2.0なので、この部品そのまま使える場合はソフト屋さんは楽かも…

image.png

xTaskCreatePinnedToCore という関数でTaskを作っています。FreeRTOSのxTaskCreateと似ていますが、引数でコアが指定できるようになっています。タスクごとに異なるCoreを使って処理を効率化することもできそうです。
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html

Trust&Goの証明書は、ここでセットされているようです。Portingレイヤーで処理されているので、アプリ開発時に気にすることが少なくなっています。

port/network_mbedtls_wrapper.c
            ESP_LOGI(TAG, "Attempting to use device certificate from ATECC608");
            ret = atca_mbedtls_cert_add(&(tlsDataParams->clicert), cert_def);

その他のHSMを使用した場合の差分は、このDefineをGrepして見ていくと分かりそうです。

# ifdef CONFIG_AWS_IOT_USE_HARDWARE_SECURE_ELEMENT

以降は後ほど…

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?