Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
IoTデバイスセキュリティ
Search
cyberomusubi
May 07, 2022
Technology
88
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IoTデバイスセキュリティ
cyberomusubi
May 07, 2022
More Decks by cyberomusubi
See All by cyberomusubi
自宅スケーラブル・ファイルシステムのご紹介
cyberomusubi
0
33
セキュアエレメントによるWireGuardのセキュリティ強化
cyberomusubi
0
7k
Private key protection hardened WireGuard implementation
cyberomusubi
0
570
セキュアエレメントとWireGuard
cyberomusubi
0
140
デバイス内データの安全な保管を考える
cyberomusubi
0
110
セキュアなホームゲートウェイを作る
cyberomusubi
0
73
セキュアエレメントとIoTデバイスセキュリティ
cyberomusubi
0
190
simplecodec schematics
cyberomusubi
0
110
rainbowtype secure prototyping suite
cyberomusubi
0
60
Other Decks in Technology
See All in Technology
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
130
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
370
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
130
SREでアラート疲れを 解決しよう!
kairim0
1
220
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
490
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.5k
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.2k
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
360
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
300
12 個 Tool と、 4,096 Token
hlum
0
130
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.3k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
530
The SEO identity crisis: Don't let AI make you average
varn
0
580
Making Projects Easy
brettharned
120
6.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How to Talk to Developers About Accessibility
jct
2
570
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Between Models and Reality
mayunak
4
490
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Transcript
スタートアップIoTデバイスの セキュリティを考える 光安 健太郎
Agenda • 自己紹介 • 昨今の話のまとめときっかけ • IoTセキュリティの潮流 • How to
implement it • 結果 • 展望 • まとめ
自己紹介 インフラの出身で、サイバートラストというLinuxと電子認証局のビジネスを している会社で働いています。 自宅でいろいろやってきました。 自宅外向けDNS AD構築(Samba4) Nextcloudサーバー運用 自宅Gluster分散ファイルシステム構築(infiniband) Jupyter notebook
GPU 機械学習サーバー(nvidia Geforce RTX2070) Volumio Airplayサーバー https://www.slideshare.net/KentaroM itsuyasu1/ss-12042350
昨今の話のまとめときっかけ IoTベンチャーでのいたましい事故 物を作るところから、自宅で趣味からセキュリティを検討しておこう。 そんな難しい話じゃないですよ。クライアント認証 はしてません。デバイス側のリソースが厳しいため、 サーバ証明書のフィンガープリントをハードコード してました(証明書チェーンは見ない)。サーバ証 明書はAWS ACMなんですけど、よりによって1年っ ていう短い設定かつ、自動更新(つづく)
IoTセキュリティの潮流 証明書、各クラウドベンダーの接続方法 代表的なAWS IoT,Azure IoTともにX509証明書による接続 クラウド側からデバイスの証明書と秘密鍵をダウンロードし、 デバイスに格納、接続時に使用する。 デバイス側は悪意のあるものに渡った時に秘密鍵を守れない。 それを守る方法として Hardware
Root-of-Trustという仕組みで 秘密鍵を守ることが望ましい。 参考資料: IoT開発におけるセキュリティ設計の手引き 独立行政法人情報処理推進機構 https://www.ipa.go.jp/security/iot/iotguide.html 対応している仕組み: Arm Trustzoneとしてチップ内部に融合 セキュアエレメントとしての専用チップ
How to implement it ▪セキュア機能を外部支援でやるのはそんなに難しいのか。 ▪どのくらい大変なのか。
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
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
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
How to implement it ▪全体イメージ BME280で温度、湿度、気圧を測ってMQTTSで パブリッシュする。 Node-REDで視覚化する。 ESP32-DevkitC FreeRTOS
MQTTS ATECC608 MbedTLS Cryptoauthlib ESP-IDF BME280 サーバー 証明書 デバイス 証明書 サーバー 証明書 クライアント 証明書
How to implement it ▪証明書の構造: tbsCertificate シリアル番号 証明書発行日、有効期限 公開鍵 CN
コモンネーム など… signatureAlgorithm ecdsa-with-SHA256(一例) signatureValue 署名データ SHA256で ハッシュ化 署名対象 CA 署名
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ビット程度。
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と 同じ目的で使用できます。
How to implement it ▪Step by stepの検証 1、ESP-IDFへのcryptoauthlib(ATECC608のライブラリ)組み込みとコンパイル 2、証明書のチップへの書き込みと読み出し、検証 3、MbedTLS上への実装とTLS1.2ハンドシェイクの確認
4、MQTTの実装と疎通(サーバー側Mosquitto+Node-REDの準備)
How to implement it ▪証明書の格納: 用意した証明書テンプレートに対して、 1、シリアル番号 2、公開鍵、署名 3、証明書発行日、有効期限 をデバイス内に保存する。
4、デバイス公開鍵は、アクセス禁止に設定された秘密鍵スロットから 計算して抽出 5、Subject/Auth Key IDは、それぞれの公開鍵から計算されて抽出
How to implement it ▪MbedTLSの設定: 重要な設定 mbedtls_ssl_conf_authmode(&ssl->conf, MBEDTLS_SSL_VERIFY_REQUIRED); MBEDTLS_SSL_VERIFY_REQUIREDにし、証明書のベリファイが必須の状態に しておく。
How to implement it ▪TLS1.2通信のパケットキャプチャ ESP32:192.168.1.93 Mosquittoブローカー:192.168.1.84
How to implement it ▪共通鍵の鍵交換による暗号化 ECDH計算 秘密鍵 公開鍵 デバイス側 公開鍵
秘密鍵 サーバー側 秘密鍵 公開鍵 公開鍵 秘密鍵 共通鍵 共通鍵 鍵計算 鍵計算 プリマスターシークレ ットとして通信を暗号 化する共通鍵となる ATECC608が担当
結果 ▪クライアント認証を有効にしたMosquittoへ接続し、Node-REDで視覚化
結果 リソース使用状況:フラッシュ(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
展望 AWS IoT,AzureIoTへの接続。 ブログやっているのでいろいろ教えてください。 https://kmitsu76.hatenablog.com/ https://qiita.com/kmitsu76
まとめ かなり大変だけどいったんやっておけば安心してデータをやり取りできる。 日本のスタートアップIoTを安全に!