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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
59
Other Decks in Technology
See All in Technology
今さら理解するウェブフォントver.2026
takanorip
2
130
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
4
1.4k
20260930_Gemma4_Hands-on
tsho
0
240
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.2k
SREでアラート疲れを 解決しよう!
kairim0
1
210
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
160
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
290
自分で立ててみるLLMサービス
y_sera15
0
140
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
150
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
200
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
220
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
560
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Un-Boring Meetings
codingconduct
0
440
Ethics towards AI in product and experience design
skipperchong
2
420
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Become a Pro
speakerdeck
PRO
31
6.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Building Adaptive Systems
keathley
44
3.2k
For a Future-Friendly Web
brad_frost
184
10k
It's Worth the Effort
3n
188
29k
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を安全に!