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
セキュアなホームゲートウェイを作る
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
cyberomusubi
May 07, 2022
Technology
75
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
セキュアなホームゲートウェイを作る
cyberomusubi
May 07, 2022
More Decks by cyberomusubi
See All by cyberomusubi
自宅スケーラブル・ファイルシステムのご紹介
cyberomusubi
0
34
セキュアエレメントによるWireGuardのセキュリティ強化
cyberomusubi
0
7k
Private key protection hardened WireGuard implementation
cyberomusubi
0
570
セキュアエレメントとWireGuard
cyberomusubi
0
140
IoTデバイスセキュリティ
cyberomusubi
0
91
デバイス内データの安全な保管を考える
cyberomusubi
0
120
セキュアエレメントとIoTデバイスセキュリティ
cyberomusubi
0
200
simplecodec schematics
cyberomusubi
0
110
rainbowtype secure prototyping suite
cyberomusubi
0
60
Other Decks in Technology
See All in Technology
Flutter Webを「SDK」として配る — 50以上のゲームを支える埋め込みアーキテクチャ
masayukisuda
0
160
ガチで放置できるClaude Code実行環境の作り方.pdf
lamaglama39
5
10k
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
410
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
1
130
1週間、Opus封印でお願いします
kintotechdev
0
370
Agent 活用環境の構築・運用のための AWS サービスのご紹介/agentcore-for-building-and-operating-agents
ren8k
1
270
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
570
ビジネス部門からPOを迎えての半年間の進歩と課題
zozotech
PRO
0
170
自律的なチームを作るためにTechPMがやらないこと
ny7760
0
130
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
130
キヨさん、67歳。AIコーディングエージェントに挑む
happysamurai294
0
120
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
390
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
590
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
310
ラッコキーワード サービス紹介資料
rakko
5
5.5M
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building an army of robots
kneath
307
47k
Raft: Consensus for Rubyists
vanstee
143
7.8k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
sira's awesome portfolio website redesign presentation
elsirapls
0
480
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Exploring anti-patterns in Rails
aemeredith
4
550
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
440
Building Applications with DynamoDB
mza
96
7.3k
Transcript
セキュアな ホームゲートウェイを作る 光安 健太郎
自己紹介 インフラの出身で、サイバートラストというLinuxと電子認証局のビジネスを している会社で働いています。 自宅でいろいろやってきました。 自宅外向けDNS AD構築(Samba4) Nextcloudサーバー運用 自宅Gluster分散ファイルシステム構築(infiniband) Jupyter notebook
GPU 機械学習サーバー(nvidia Geforce RTX2070) Volumio Airplayサーバー https://qiita.com/kmitsu76 https://github.com/kmwebnet https://www.slideshare.net/KentaroM itsuyasu1/iot-144602008
How to implement it ▪以前に購入した セキュアエレメント ATECC608Aを使用 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
アジェンダ • IoTデバイスのデザイン • サーバー側の実装 • プロビジョニング • 証明書更新(キーローリング) •
OTA
IoTデバイスのデザイン ▪ホームIoTゲートウェイの作成 機能: • BME280による気温、湿度、気圧の測定 • 赤外線LEDによるリモートコントロール • ボタンによるプッシュ動作送信 •
MQTTメッセージによるLED点灯 • Wifiプロビジョニングモード • OTA機能搭載 • デバイス証明書ローリング対応 仕様: • USB5V電源で動作 • MQTTSにてMosquittoへ接続
ネットワーク全体図 VPSサーバー+ ドメイン取得 ngrok1.7を使い MQTTS、HTTPS トンネリング
ハードウェア実装 ▪Kicad5.1.2にて設計、elecrowへ発注 ATECC608A以外はほとんど秋月電子
動作フローチャート MQTT イベントハンドラ GPIOボタン イベントハンドラ Wifi接続 Wifiプロビジョニング開始 ATECC608AへWifi SSID,Pass書き込み サーバー接続、
MQTTイベントハンドラ起動 再起動 リモコン(RMT)BME280初期化 GPIOボタン が押された 自分のシリアル宛 のメッセージ サブスクライブ タスクフラグを確認 BME280 測定しパブリッシュ、 ウェイト ボタン押下をパブリッシュ LED点灯、消灯 エアコン操作 (RMTタスク生成) OTAフラグ キーローリングフラグ 証明書受領フラグ I2Cバス初期化 ATECC608A初期化 ATECC608AからWifi SSID,Pass読み取り GPIO初期化 GPIOボタンが押されているか MQTT停止→公開鍵生成→ MQTT再開とパブリッシュ MQTT停止→ATECC608A 証明書更新→MQTT再開 MQTT接続終了→OTAサーバーへ https接続、ファームダウンロード+ インストール 再起動 キーローリング 証明書受領 OTA # Espressif ESP32 Partition Table # Name Type SubType Offset Size nvs data nvs 0x9000 0x4000 otadata data ota 0xd000 0x2000 phy_init data phy 0xf000 0x1000 factory 0 00x10000 1M ota_0 0ota_0 0x110000 1M ota_1 0ota_1 0x210000 1M
サーバー側の実装 Pythonで署名、 証明書作成 OTAファーム ウェア置き場 デバイス公開鍵 受領
温度測定 以下2ついずれかのモジュールの搭載に対応。 1分ごとに計測データをMQTTにて送信
赤外線リモコン ダイキンエアコンの赤外線リモコンを解析、 ESP-IDFのRMT関数で実装。
プロビジョニング シリアルコンソールを経由してpem(base64)の 公開鍵と証明書を交換。 -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQasdaghadJKNIWfEtPt61Y6O8NoQVhkrQhrracCRmGgb kinXThlKUkdB0i7uUakzcSIdonsgpdzagdPNIDW8SkGUmGz8jcDSJM2PsouJ9tA== -----END PUBLIC
KEY----- -----BEGIN CERTIFICATE----- MIIBizCCATKgAwIBAgIQXttAp9UKPvc3FMEUZoYdrjAKBggqhkjOPQQDAjAuMREw DwYDVQQKDAhrbXdlYm5ldDEZMBcGA1UEAwwQa213ZWJuZXQgUm9vdCBDQTAeFw0x OTEwMTAyMTA4MzlaFw00NDEwMTAyMTA4MzlaMC4xETAPBgNVBAoMCGttd2VibmV0 OQIHOFEROLFKFJiiphpiwgeknvspdisbpdwnepIHPIEgwkEwYHKoZIzj0CAQYIKoZIzj0D AQcDQgAEtPt61Y6O8NoQVhkIIPDSUGpou998HHIDPGwEjolKUkdB0i7uUakzcJTUP4gB aJv+kwpghwpedkjwgpkjPKJPEHGIPEihp98887889ewwIHEWBBYEFNQOhdv0lGYauUlM NRYzPg8fVWdgMA8GyioigGipugPGERJhwGWRPihgWoewoZIzj0EAwIDRwAwRAIge3M2 ePvfCr/eCDah5c3XEC8Pto2q2WBNbSL5ZpNWH7ACIHnnFVqZ4Z6Rq3Rw76OLOzKV wXTxzegp/jDA+XDKExLA -----END CERTIFICATE-----
証明書更新(キーローリング) ① ② ③ ATECC608A スロット内 秘密鍵 3つのスロットから順番に 公開鍵を取り出し、署名 して証明書を作成して
書き戻す
考察とまとめ BOM以外でかかった費用: Conoha VPS 512MBプラン 630円/月 バリュードメインキャンペーン 108円/年 ▪基盤作成がスムーズに行えることで試作が簡単にできる環境が整ってきた。 ▪ngrokは便利。