Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoTデバイスセキュリティ

 IoTデバイスセキュリティ

Kentaro Mitsuyasu

May 07, 2022
Tweet

More Decks by Kentaro Mitsuyasu

Other Decks in Technology

Transcript

  1. IoTセキュリティの潮流 証明書、各クラウドベンダーの接続方法 代表的なAWS IoT,Azure IoTともにX509証明書による接続 クラウド側からデバイスの証明書と秘密鍵をダウンロードし、 デバイスに格納、接続時に使用する。 デバイス側は悪意のあるものに渡った時に秘密鍵を守れない。 それを守る方法として Hardware

    Root-of-Trustという仕組みで 秘密鍵を守ることが望ましい。 参考資料: IoT開発におけるセキュリティ設計の手引き 独立行政法人情報処理推進機構 https://www.ipa.go.jp/security/iot/iotguide.html 対応している仕組み: Arm Trustzoneとしてチップ内部に融合 セキュアエレメントとしての専用チップ
  2. How to implement it ▪セキュアエレメント比較 1個で買う場合の金額 MAXQ1061 897円 https://www.maximintegrated.com/jp/products/microcontrollers/MAXQ1061.html Infineon

    OPTIGA™ Trust X 250円くらい https://www.infineon.com/cms/jp/product/security-smart-card-solutions/ optiga-embedded-security-solutions/optiga-trust/optiga-trust-x-sls-32aia/ NXP A71CH 350円くらい https://www.nxp.com/jp/products/identification-security/authentication/ plug-and-trust-the-fast-easy-way-to-deploy-secure-iot-connections:A71CH Microchip ATECC608 91円 https://www.microchip.com/wwwproducts/en/ATECC608A
  3. How to implement it ▪購入 Digi-keyにて発注 25個買うと割引! SOIC⇒DIP変換のほうが高い! 索引 数量

    品番 メーカー品番 商品概要 単価 金額 1 25A880AR-ND LCQT-SOIC8-8 SOCKET ADAPTER SOIC TO 8DIP 279.28¥6,982 2 25 ATECC608A- SSHDA-TCT-ND ATECC608A- SSHDA-T IC AUTHENTICATION CHIP 8SOIC 85.08¥2,127 小計 ¥9,109
  4. How to implement it ▪実装 BOMリスト: ESP32-DevKitC 1個 ATECC608 1個

    SOIC⇒DIP変換 1個 GY-BME280 1個 I2Cは100kHzで I2C0をピン21,22(ATECC608) I2C1をピン18,19(GY-BME280)へ接続 ▪開発環境 VSCode+platformio ESP-IDF 3.30
  5. How to implement it ▪全体イメージ BME280で温度、湿度、気圧を測ってMQTTSで パブリッシュする。 Node-REDで視覚化する。 ESP32-DevkitC FreeRTOS

    MQTTS ATECC608 MbedTLS Cryptoauthlib ESP-IDF BME280 サーバー 証明書 デバイス 証明書 サーバー 証明書 クライアント 証明書
  6. How to implement it ▪証明書の構造: tbsCertificate シリアル番号 証明書発行日、有効期限 公開鍵 CN

    コモンネーム など… signatureAlgorithm ecdsa-with-SHA256(一例) signatureValue 署名データ SHA256で ハッシュ化 署名対象 CA 署名
  7. How to implement it ATECC608が対応できる楕円曲線暗号を選択 secp256r1 別名 prime256v1 または NIST

    P-256(RFC4492) 256bitの秘密鍵と256bit(X)+256bit(Y)の公開鍵で構成される。 それぞれ、32バイト、64バイトとなる。 また、署名は256bit(r)+256bit(s)だが、ASN.1という形式で保存されており、 数バイトの変動がある。 ASN.1のヘッダー(オフセット計算)を付加して72~73ビット程度。
  8. How to implement it ▪デバイスの内部概要:合計約1.1KBのEEPROMメモリを持つ。 スロ ット ブロッ ク バイト

    ビット 名前 説明 0-7 2 36 288 Private or Secret Key Can also be used for data. 8 13 416 3328 Data 読み取りと書き込みは、他のすべてのスロットと同じ方 法で制限されるように設定できます。このスロットが鍵 として使用されている場合は、秘密鍵または秘密鍵の格 納に不要な残りのバイトは無視されます。 9- 14 3 72 576 Public Key, Signature or Certificate このデバイスでサポートされている曲線の場合、これら のスロットは、ECDSA公開鍵のX成分とY成分、または ECDSA署名のR成分とS成分の両方を入れるのに十分な大 きさです。 15 3 72 576 Private Data, Secret Key, Signature, or Certificate これが128カウント制限使用機能(セクション限定使用 キー(スロット15のみ))をサポートする唯一のスロッ トです。この機能が必要ない場合は、スロット9~14と 同じ目的で使用できます。
  9. How to implement it ▪証明書の格納: 用意した証明書テンプレートに対して、 1、シリアル番号 2、公開鍵、署名 3、証明書発行日、有効期限 をデバイス内に保存する。

    4、デバイス公開鍵は、アクセス禁止に設定された秘密鍵スロットから 計算して抽出 5、Subject/Auth Key IDは、それぞれの公開鍵から計算されて抽出
  10. How to implement it ▪共通鍵の鍵交換による暗号化 ECDH計算 秘密鍵 公開鍵 デバイス側 公開鍵

    秘密鍵 サーバー側 秘密鍵 公開鍵 公開鍵 秘密鍵 共通鍵 共通鍵 鍵計算 鍵計算 プリマスターシークレ ットとして通信を暗号 化する共通鍵となる ATECC608が担当
  11. 結果 リソース使用状況:フラッシュ(platformio ESP-IDF環境デフォルト) DATA: [= ] 11.4% (used 37508 bytes

    from 327680 bytes) PROGRAM: [======= ] 69.4% (used 727774 bytes from 1048576 bytes) リソース使用状況:ヒープ 起動時: Free Heap Size 8bit = 201936 Free Heap Size 32bit = 263984 証明書ベリファイが終了し、HTTPS通信可能になった時点: Free Heap Size 8bit = 138780 Free Heap Size 32bit = 200996 BME280初期化+MQTTS通信時: Free Heap Size 8bit = 128692 Free Heap Size 32bit = 190868