Submit Search
Upload
Secure element for IoT device
•
7 likes
•
2,025 views
Kentaro Mitsuyasu
Follow
2019/12/14 IoTSecJP
Read less
Read more
Technology
Report
Share
Report
Share
1 of 42
Download now
Download to read offline
Recommended
セキュアエレメントとIotデバイスセキュリティ2
セキュアエレメントとIotデバイスセキュリティ2
Kentaro Mitsuyasu
IoTデバイスセキュリティ
IoTデバイスセキュリティ
Kentaro Mitsuyasu
CVE、JVN番号の取得経験者になろう!
CVE、JVN番号の取得経験者になろう!
kazkiti
SIerで幸せな技術キャリアを築くために
SIerで幸せな技術キャリアを築くために
Takanari Konishi
インフラCICDの勘所
インフラCICDの勘所
Toru Makabe
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
Tatsuo Kudo
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
Naohiro Fujie
Recommended
セキュアエレメントとIotデバイスセキュリティ2
セキュアエレメントとIotデバイスセキュリティ2
Kentaro Mitsuyasu
IoTデバイスセキュリティ
IoTデバイスセキュリティ
Kentaro Mitsuyasu
CVE、JVN番号の取得経験者になろう!
CVE、JVN番号の取得経験者になろう!
kazkiti
SIerで幸せな技術キャリアを築くために
SIerで幸せな技術キャリアを築くために
Takanari Konishi
インフラCICDの勘所
インフラCICDの勘所
Toru Makabe
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
Tatsuo Kudo
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
Naohiro Fujie
GPT凄くね?
GPT凄くね?
Ryohei Kuroki
vSphere環境での自動化とテスト
vSphere環境での自動化とテスト
富士通クラウドテクノロジーズ株式会社
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
OpenID Connect入門
OpenID Connect入門
土岐 孝平
"はじめてのKong Konnect" APIゲートウェイと Service Meshについて学ぼう!
"はじめてのKong Konnect" APIゲートウェイと Service Meshについて学ぼう!
Junji Nishihara
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
Naohiro Fujie
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Hyperledger Aries 101
Hyperledger Aries 101
Hyperleger Tokyo Meetup
OSセキュリティチュートリアル
OSセキュリティチュートリアル
Kuniyasu Suzaki
分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要
Naohiro Fujie
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
Naoya Kaneko
ARMアーキテクチャにおけるセキュリティ機構の紹介
ARMアーキテクチャにおけるセキュリティ機構の紹介
sounakano
Edge AI ソリューションを支える Azure IoT サービス
Edge AI ソリューションを支える Azure IoT サービス
Deep Learning Lab(ディープラーニング・ラボ)
脆弱性スキャナVuls(応用編)
脆弱性スキャナVuls(応用編)
Takayuki Ushida
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
Kuniyasu Suzaki
「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」
富士通クラウドテクノロジーズ株式会社
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
OpenCredo
デバイス内データの安全な保管を考える
デバイス内データの安全な保管を考える
Kentaro Mitsuyasu
Build secure io t gateway
Build secure io t gateway
Kentaro Mitsuyasu
More Related Content
What's hot
GPT凄くね?
GPT凄くね?
Ryohei Kuroki
vSphere環境での自動化とテスト
vSphere環境での自動化とテスト
富士通クラウドテクノロジーズ株式会社
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
OpenID Connect入門
OpenID Connect入門
土岐 孝平
"はじめてのKong Konnect" APIゲートウェイと Service Meshについて学ぼう!
"はじめてのKong Konnect" APIゲートウェイと Service Meshについて学ぼう!
Junji Nishihara
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
Naohiro Fujie
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Hyperledger Aries 101
Hyperledger Aries 101
Hyperleger Tokyo Meetup
OSセキュリティチュートリアル
OSセキュリティチュートリアル
Kuniyasu Suzaki
分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要
Naohiro Fujie
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
Naoya Kaneko
ARMアーキテクチャにおけるセキュリティ機構の紹介
ARMアーキテクチャにおけるセキュリティ機構の紹介
sounakano
Edge AI ソリューションを支える Azure IoT サービス
Edge AI ソリューションを支える Azure IoT サービス
Deep Learning Lab(ディープラーニング・ラボ)
脆弱性スキャナVuls(応用編)
脆弱性スキャナVuls(応用編)
Takayuki Ushida
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
Kuniyasu Suzaki
「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」
富士通クラウドテクノロジーズ株式会社
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
OpenCredo
What's hot
(20)
GPT凄くね?
GPT凄くね?
vSphere環境での自動化とテスト
vSphere環境での自動化とテスト
DockerとPodmanの比較
DockerとPodmanの比較
OpenID Connect入門
OpenID Connect入門
"はじめてのKong Konnect" APIゲートウェイと Service Meshについて学ぼう!
"はじめてのKong Konnect" APIゲートウェイと Service Meshについて学ぼう!
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Hyperledger Aries 101
Hyperledger Aries 101
OSセキュリティチュートリアル
OSセキュリティチュートリアル
分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
ARMアーキテクチャにおけるセキュリティ機構の紹介
ARMアーキテクチャにおけるセキュリティ機構の紹介
Edge AI ソリューションを支える Azure IoT サービス
Edge AI ソリューションを支える Azure IoT サービス
脆弱性スキャナVuls(応用編)
脆弱性スキャナVuls(応用編)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
Similar to Secure element for IoT device
デバイス内データの安全な保管を考える
デバイス内データの安全な保管を考える
Kentaro Mitsuyasu
Build secure io t gateway
Build secure io t gateway
Kentaro Mitsuyasu
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
IoTビジネス共創ラボ
AWS IoT EduKit ワークショップのご紹介
AWS IoT EduKit ワークショップのご紹介
Yukinobu Mine
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
Hibino Hisashi
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
Takeshi Fukuhara
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
Nobuyuki Tamaoki
Jetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジに
NVIDIA Japan
コードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めよう
Shin-ya Koga
サーバー初心者のためのWordPressサイト構築手順
サーバー初心者のためのWordPressサイト構築手順
IDC Frontier
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
Kuniyasu Suzaki
Azure IoT Edge and IoT Hub - IoT Algyan
Azure IoT Edge and IoT Hub - IoT Algyan
Atomu Hidaka
enebular と Azure IoT で遠隔地にあるデバイスを扱う
enebular と Azure IoT で遠隔地にあるデバイスを扱う
Kazumi IWANAGA
Embedded Technology 2014 Smart Japan Aliance IoT Azure
Embedded Technology 2014 Smart Japan Aliance IoT Azure
Atomu Hidaka
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
Takeshi Fukuhara
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
Kentaro NOMURA
みんなのブログ紹介
みんなのブログ紹介
Sanae Taniguchi
Serverless x IoT = "IoT Scale" backend
Serverless x IoT = "IoT Scale" backend
Motokatsu Matsui
Japan MVP Community Connection 2017 Autumn smart Demonstration
Japan MVP Community Connection 2017 Autumn smart Demonstration
Atomu Hidaka
CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介
CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介
グローバルセキュリティエキスパート株式会社(GSX)
Similar to Secure element for IoT device
(20)
デバイス内データの安全な保管を考える
デバイス内データの安全な保管を考える
Build secure io t gateway
Build secure io t gateway
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
AWS IoT EduKit ワークショップのご紹介
AWS IoT EduKit ワークショップのご紹介
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
Jetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジに
コードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めよう
サーバー初心者のためのWordPressサイト構築手順
サーバー初心者のためのWordPressサイト構築手順
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
Azure IoT Edge and IoT Hub - IoT Algyan
Azure IoT Edge and IoT Hub - IoT Algyan
enebular と Azure IoT で遠隔地にあるデバイスを扱う
enebular と Azure IoT で遠隔地にあるデバイスを扱う
Embedded Technology 2014 Smart Japan Aliance IoT Azure
Embedded Technology 2014 Smart Japan Aliance IoT Azure
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
みんなのブログ紹介
みんなのブログ紹介
Serverless x IoT = "IoT Scale" backend
Serverless x IoT = "IoT Scale" backend
Japan MVP Community Connection 2017 Autumn smart Demonstration
Japan MVP Community Connection 2017 Autumn smart Demonstration
CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介
CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介
Recently uploaded
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Recently uploaded
(9)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Secure element for IoT device
1.
セキュアエレメントと IoTデバイスセキュリティ 光安 健太郎
2.
Agenda • 自己紹介 • 昨今の話のまとめときっかけ •
IoTセキュリティの潮流 • セキュアエレメントについて ATECC608A Deep Dive • 結果 • 展望 • まとめ
3.
自己紹介 インフラの出身で、サイバートラストというLinuxと電子認証局のビジネスを している会社で働いています。 自宅でいろいろやってきました。 自宅外向けDNS AD構築(Samba4) Nextcloudサーバー運用 自宅Gluster分散ファイルシステム構築(infiniband) Jupyter notebook GPU
機械学習サーバー(nvidia Geforce RTX2070) Volumio Airplayサーバー https://www.slideshare.net/KentaroM itsuyasu1/ss-12042350
4.
昨今の話のまとめときっかけ IoTベンチャーでのいたましい事故 物を作るところから、自宅で趣味からセキュリティを検討しておこう。 そんな難しい話じゃないですよ。クライアント認証 はしてません。デバイス側のリソースが厳しいため、 サーバ証明書のフィンガープリントをハードコード してました(証明書チェーンは見ない)。サーバ証 明書はAWS ACMなんですけど、よりによって1年っ ていう短い設定かつ、自動更新(つづく)
5.
IoTセキュリティの潮流 証明書、各クラウドベンダーの接続方法 代表的なAWS IoT,Azure IoTともにX509証明書による接続 クラウド側からデバイスの証明書と秘密鍵をダウンロードし、 デバイスに格納、接続時に使用する。 デバイス側は悪意のあるものに渡った時に秘密鍵を守れない。 それを守る方法として
Hardware Root-of-Trustという仕組みで 秘密鍵を守ることが望ましい。 参考資料: IoT開発におけるセキュリティ設計の手引き 独立行政法人情報処理推進機構 https://www.ipa.go.jp/security/iot/iotguide.html 対応している仕組み: Arm Trustzoneとしてチップ内部に融合 セキュアエレメントとしての専用チップ
6.
セキュアエレメント比較 ATECC608A SE050(C) Optiga
Trust X メーカー Microchip NXP Infineon インターフェース I2C 暗号演算 楕円暗号(ECC) 楕円暗号(ECC)、RSA 楕円暗号(ECC) 楕円暗号 NIST P-256 ECC NIST (192 to 521 bit) Brainpool (160 to 512 bit) Twisted Edwards Ed25519 Montgomery Curve25519 Koblitz (192 to 256 bit) Barreto-Naehrig Curve 256 bit NIST P-256, P-384 RSA暗号 - up to 4096 bit - 共通鍵暗号 AES-128 AES 128, 192 and 256 bit and DES keys with single DES, 2K3DES and 3K3DES AES-128 ハッシュ SHA-256 SHA-224/256/384/512 SHA-256 記憶領域 1.1KB 50KB 10KB 価格(1個当たり) 87円 476円 244円 パッケージ 8pin SOIC,DFN 20pin QFN 10pin DFN 製品ファミリ 限定機能のみの ATECC108Aなど 限定機能のみのSE050(A)、SE050(B) 温度環境対応品 採用実績 Google Coral SoM,Arduino MKR Wifi Amazon Dash Button 2nd gen.(ATECC108A) ZYMBIT security module NervesKey for NervesHub Adafruit ATECC608 Breakout Coldcard Bitcoin hardware wallet etc. ー ー 対応規格 ー Security certification CC EAL6+ (HW+JCOP) JavaCard version 3.0.5 GlobalPlatform specification version GP 3.0 Security certification CC EAL6+
7.
セキュアエレメントのセットアップ ■上からATECC608A,Optiga Trust X,SE050 それぞれ面実装パッケージのため、変換基盤へ はんだ付け。 基本は3.3VとGND、I2C
SCL,SDAを接続させて 通信するが、 Optiga Trust XはRSTピンのGPIO制御、 SE050はPin15 VOUT をPin18 VCCへの接続が 必要。 ホストはESP32-DevKitC I2Cは100kHzでピン21,22へ接続 ■開発環境 VSCode+platformio ESP-IDF 3.30
8.
セキュアエレメントのセットアップ ■デバイスの認識: まずESP32からI2CScanner(arduinoのサンプルプログラム)を実行し、 I2Cバス上にデバイスが見つけられるかテスト。 ATECC608A: Scanning... device found on
I2C port 0 at address 0x60 ! done SE050: Scanning... device found on I2C port 0 at address 0x48 ! done Optiga Trust XはI2CScannerではデバイスが見つからない。 メーカーライブラリでパスするかどうかを確認する。 https://github.com/Infineon/arduino-optiga-trust-x/blob/master/examples/selfTest/selfTest.ino
9.
セキュアエレメントの組み込み構成 ■セキュアエレメント共通で、RTOS環境はMbedTLSのECDH関数、ECDSA関数を セキュアエレメントが使用する関数に置き換える。 Linux環境はOpenSSLが持つ外部エンジンを使用するコマンドへ実装している。 ESP32,ARM Cortex-M セキュアエレメント MbedTLS 専用ライブラリ(C,Python) RTOS(FreeRTOS) OpenSSL ARM Cortex-A Linux I2C
I2C タイマー タイマー MBEDTLS_ECDH_GEN_PUBLIC_ALT MBEDTLS_ECDSA_SIGN_ALT engine
10.
ATECC608A Deep Dive ■ATECC608Aを使って、セキュアエレメントの基本機能とセキュリティ対策 シーンを検討する。 1、サーバー・クライアント認証、TLS通信暗号化 2、機密情報保存 3、AES暗号化 4、中間CAの秘密鍵秘匿
11.
サーバー・クライアント認証、 TLS通信暗号化 ■セキュアエレメントの機能を使いデバイス秘密鍵を隠して、なりすましを防ぐ シーン
12.
サーバー・クライアント認証、 TLS通信暗号化 VPSサーバー+ ドメイン取得 ngrok1.7を使い MQTTS、HTTPS トンネリング
13.
サーバー・クライアント認証、 TLS通信暗号化 ■ホームIoTゲートウェイの作成 機能: • BME280による気温、湿度、気圧の測定 • 赤外線LEDによるリモートコントロール •
ボタンによるプッシュ動作送信 • MQTTメッセージによるLED点灯 • Wifiプロビジョニングモード • OTA機能搭載 • デバイス証明書ローリング対応 仕様: • USB5V電源で動作 • MQTTSにてMosquittoへ接続
14.
サーバー・クライアント認証、 TLS通信暗号化 ■Kicad5.1.2にて設計、elecrowへ発注 ATECC608A以外はほとんど秋月電子
15.
動作フローチャート 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
16.
温度測定 以下2ついずれかのモジュールの搭載に対応。 1分ごとに計測データをMQTTにて送信
17.
赤外線リモコン ダイキンエアコンの赤外線リモコンを解析、 ESP-IDFのRMT関数で実装。
18.
プロビジョニング シリアルコンソールを経由して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-----
19.
証明書更新(キーローリング) ① ② ③ ATECC608A スロット内 秘密鍵 3つのスロットから順番に 公開鍵を取り出し、署名 して証明書を作成して 書き戻す
20.
サーバー・クライアント認証、 TLS通信暗号化 Pythonで署名、 証明書作成 OTAファーム ウェア置き場 デバイス公開鍵 受領
21.
サーバー・クライアント認証、 TLS通信暗号化 ■証明書の構造: tbsCertificate シリアル番号 証明書発行日、有効期限 公開鍵 CN コモンネーム など… signatureAlgorithm ecdsa-with-SHA256(一例) signatureValue 署名データ SHA256で ハッシュ化署名対象 CA 署名
22.
サーバー・クライアント認証、 TLS通信暗号化 ATECC608が対応できる楕円曲線暗号を選択 secp256r1 別名 prime256v1
または NIST P-256(RFC4492) 256bitの秘密鍵と256bit(X)+256bit(Y)の公開鍵で構成される。 それぞれ、32バイト、64バイトとなる。 また、署名は256bit(r)+256bit(s)だが、ASN.1という形式で保存されており、 数バイトの変動がある。 ASN.1のヘッダー(オフセット計算)を付加して72~73ビット程度。
23.
サーバー・クライアント認証、 TLS通信暗号化 ■デバイスの内部概要:合計約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と 同じ目的で使用できます。
24.
サーバー・クライアント認証、 TLS通信暗号化 ■証明書の格納: 用意した証明書テンプレートに対して、 1、シリアル番号 2、公開鍵、署名 3、証明書発行日、有効期限 をデバイス内に保存する。 4、デバイス公開鍵は、アクセス禁止に設定された秘密鍵スロットから 計算して抽出 5、Subject/Auth Key IDは、それぞれの公開鍵から計算されて抽出
25.
サーバー・クライアント認証、 TLS通信暗号化 ■TLS1.2通信のパケットキャプチャ ESP32:192.168.1.93 Mosquittoブローカー:192.168.1.84
26.
サーバー・クライアント認証、 TLS通信暗号化 ■サーバーからの受信内容に署名して返送 ECDSA MBEDTLS_ECDSA_SIGN_ALT
27.
サーバー・クライアント認証、 TLS通信暗号化 ■共通鍵の鍵交換による暗号化 ECDH計算 秘密鍵 公開鍵 デバイス側 公開鍵
秘密鍵 サーバー側 秘密鍵 公開鍵公開鍵 秘密鍵 共通鍵 共通鍵 鍵計算 鍵計算 プリマスターシークレ ットとして通信を暗号 化する共通鍵となる ATECC608が担当 MBEDTLS_ECDH_GEN_PUBLIC_ALT
28.
サーバー・クライアント認証、 TLS通信暗号化 ■クライアント認証を有効にしたMosquittoへ接続し、Node-REDで視覚化
29.
機密情報保存 ■AESなど32バイト(256ビット)の鍵情報をセキュアエレメントに隠したい。 ホストマイコンからI2Cで鍵情報を送る際、ロジアナで読み取られないように I2C経路を暗号化したい。 機密情報 ㊙
30.
機密情報保存 ■atcab_write_encとatcab_read_encという関数を使用する。 メッセージ認証コード (MAC) 機密情報 ㊙ IO保護キー
31.
機密情報保存 ■まずIO保護キーをATECC608Aへ送り、専用スロットに保存し、共通の鍵とす る。使い捨てOK。 機密情報 ㊙ IO保護キー IO保護キー 読み出し禁止 スロット (書き込みはOK)
32.
機密情報保存 ■次にメッセージ認証コード(MAC)を作り、機密情報とXORを取り、IO保護キー と計算した結果をI2CでATECC608Aへ送り、復号してスロットに保存される。 メッセージ認証コードはATECC608A側で固有SNなどからSHA256で生成される。 読み出しはこの反対を行う。 メッセージ認証コード (MAC) 機密情報 ㊙ IO保護キー IO保護キー 読み出し禁止 スロット (書き込みはOK) メッセージ認証コード (MAC)
33.
AES暗号化 ■デバイスが使用するWifi接続情報、個人情報等、鍵以外の 一般機密情報を安全に配置したい。 暗号の基本:暗号化したいデータを暗号化(Encrypt)して、復号するための 鍵を入手する。その鍵を使ってのみ復号できる。 Encrypt Decrypt Plain Text Cipher Text Plain Text
34.
AES暗号化 ■今回、AES-GCMという暗号を使用する。 AESは共通鍵暗号で、ブロック暗号といわれるデータを128ビットのブロックで 暗号化するアルゴリズム。
35.
AES暗号化 ■今回、AES-GCMという暗号を使用する。 GCMはブロック暗号の暗号利用モードの一つ。1ブロック128ビット(16バイト) より大きいデータを暗号化する際にどういう風にブロックを関連させるかを決定
36.
IoTデバイス AES暗号化 ■鍵が簡単に見れてはまずいので、隠す必要がある。 デバイス内に鍵を置き、データはデバイス内、外に置けるが 解読できるのは暗号化したデバイスのみという状態を作る Cipher Text ノムラテック カギの収納BOX NEW キーストック
ハンディ
37.
AES暗号化 ■ATECC608の持つAES-GCM機能を使用する。 •AES-128: encrypt/decrypt, galois field
multiply for GCM
38.
中間CAの秘密鍵秘匿 ■ESP32のデータを集約して処理するラズパイをゲートウェイとして 複数台のESP32のデバイス証明書を管理したい。 ラズパイ ルートCA機 ラズパイ 中間CA機 ESP32+ ATECC608A ルートCA証明書 ルートCA秘密鍵 中間CA証明書 中間CA秘密鍵 署名 署名 デバイス証明書 デバイス秘密鍵 ATECC608A内フラッシュ
39.
中間CAの秘密鍵秘匿 ■ラズパイ中間CA側にもATECC608Aを接続し、秘密鍵を隠す HSM(ハードウェアセキュリティモジュール)として使用する。 ラズパイ 中間CA機 ESP32+ ATECC608A 中間CA証明書 中間CA秘密鍵 CN、有効期限を 設定し署名 デバイス証明書 デバイス秘密鍵 ATECC608A内フラッシュATECC608A内フラッシュ デバイスから 公開鍵を送付 デバイス証明書として ESP32に返送
40.
中間CAの秘密鍵秘匿 ■ラズパイのI2Cへ、ATECC608Aを接続、pythonで証明書を作成する スクリプトへATECC608Aで署名するコマンドを割り込ませる。 Python:cryptography cryptography.hazmat.backends.default_backend() •公開鍵読み込み •署名用秘密鍵読み込み x509.CertificateBuilder() •シリアル番号、証明書発行日、有効期限 •CN コモンネーム •サブジェクトキーID •署名者ID •Etc… Signコマンド tbsCertificate シリアル番号 証明書発行日、有効期限 公開鍵 CN コモンネーム など… signatureAlgorithm ecdsa-with-SHA256(一例) signatureValue 署名データ 中間CA秘密鍵 ATECC608A内フラッシュ デバイス証明書
SHA256ハッシュを署名
41.
展望 ESP32のセキュアなブートローダー IoTセキュリティについて継続勉強中。 ブログやっているのでいろいろ教えてください。 https://kmitsu76.hatenablog.com/ https://qiita.com/kmitsu76 https://limitedresults.com/2019/11/pwn- the-esp32-forever-flash-encryption-and- sec-boot-keys-extraction/ Pwn the ESP32
Forever: Flash Encryption and Sec. Boot Keys Extraction
42.
まとめ クラウド接続が増加してくるIoTデバイスでのセキュアエレメントの実装は 必要な技術要素となる可能性がある。 かなり大変だけどいったんやっておけば安心してデータをやり取りできる。 日本のスタートアップIoTを安全に!
Download now