Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IoTデバイスセキュリティ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
cyberomusubi
May 07, 2022
Technology
86
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
31
セキュアエレメントによるWireGuardのセキュリティ強化
cyberomusubi
0
6.9k
Private key protection hardened WireGuard implementation
cyberomusubi
0
570
セキュアエレメントとWireGuard
cyberomusubi
0
140
デバイス内データの安全な保管を考える
cyberomusubi
0
110
セキュアなホームゲートウェイを作る
cyberomusubi
0
72
セキュアエレメントとIoTデバイスセキュリティ
cyberomusubi
0
190
simplecodec schematics
cyberomusubi
0
100
rainbowtype secure prototyping suite
cyberomusubi
0
56
Other Decks in Technology
See All in Technology
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
110
Sony-DroidKaigi2026
sony
1
320
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
3
1.4k
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
150
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
260
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
1.2k
少人数データチームのDevin活用実践事例
runandy16
2
450
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
270
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
860
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
580
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
2
1.6k
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
250
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Speed Design
sergeychernyshev
33
2.1k
From π to Pie charts
rasagy
0
350
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Thoughts on Productivity
jonyablonski
76
5.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Being A Developer After 40
akosma
91
590k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
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を安全に!