モノ のインターネット へのつながり方 L4 以上編 株式会社レピダム 前田薫 (@mad_p) Iteret Week 2016 2016/11/30
紹介 名前 所属 前 薫 株式会社レピダムシニアプログラマ コミュニティー活動 Lightweight Laguage Idetity Coferece http2 勉強会 業務領域 認証 認可 デジタルアイデンティティー プライバシー標準化 援ソフトウェアセキュリティー 脆弱性 2
はじめに L4 以上とは? 本パートで扱う内容 CoAP IoT 向け HTTP (IETF WG core) DTLS IoT 向けのプロファイル (dice) 関連技術 CBOR, CWT など 認証 認可 (ace) IETF で標準策定中の技術について紹介します 3
Costraied Device/Node IETF では IoT デバイスを Costraied Device と呼ぶことが多い 直訳すると 制約されたデバイス CPU 能 メモリ 電源 ネットワークなどの資源に 制約 がある 本パートでは 制約デバイス と書きます 4
http://www.ietf.org/proceedigs/89/slides/slides-89-ace-2.pdf 5
COAP - THE CONSTRAINED APPLICATION PROTOCOL 6
CoAP の概観 CoAP プロトコル (RFC 7252) coap.techology リクエスト / レスポンスモデルでの制約デバイスとの通信に適したプロトコル サーバー クライアントの または両 が制約デバイス HTTP をベースとする URI メディアタイプをサポート HTTPとのマッピング コンパクトなワイヤーフォーマット 同期通信 (UDP 再送制御) ディスカバリー 7
IETF core WG core (Costraied RESTful Eviromets) 2010- CoAPプロトコルに関する仕様策定を う 主要なRFCおよびドラフト RFC 6690 Lik format RFC 7252 CoAP RFC 7390 Group Commuicatio RFC 7641 Observig RFC 7959 Blockwise Trasfers draft-ietf-core-http-mappig HTTP mappig draft-ietf-core-etch PATCH ad FETCH methods draft-ietf-core-resource-directory Resource Directory draft-ietf-core-coap-tcp-tls over TCP, TLS, Websockets draft-ietf-core-object-security Object Security 8
CoAP プロトコルと URI coap://s.example.com/light coaps://s.example.com/light デフォルトのポート番号 coap 5683 coaps 5684 9
リクエスト / レスポンス /temperature を GET する例 CON/ACK, Toke については後述 10
バイナリフォーマット バイナリベースのコンパクトな通信 メッセージのパースがしやすい code ( メソッド ステータス ) は番号で指定 optios ( ヘッダ名に相当 ) は番号で指定 optiosの値もバイナリ % エンコーディングやエスケープが不要メディアタイプは番号で指定 11
CoAP ワイヤーフォーマット Ver: バージョン 1 固定 T: タイプ 再送制御に使う Code: HTTPのメソッドとステータスコードに対応 Message ID: 再送制御に使う Toke, TKL: リクエストとレスポンスの対応に使う Optios: HTTPのヘッダに相等 Payload: HTTPのペイロードに相等 12
Code 8ビットフィールドを3+5に分けるリクエストではメソッドに対応レスポンスではステータスコードに対応. 13
Optios HTTPヘッダに対応 Optio 番号と値の列値の型 : empty, uit, opaque, strig 番号順に並べ 番号は差分でエンコード 4つのフラグ URIは分解される Uri-* Cotet-Format media-type に相等. 14
UDP ベースの 同期通信 複数のリクエスト / レスポンスの平 通信 Toke を使って 対応を管理 再送制御 到達確認の必要性をタイプで す CON= 必要 NON= 不必要 ACK= 到達確認 RESET Message ID: 再送制御のための識別に使う ACK piggy back レスポンスをACKと 緒に送る piggy back しないACKはCodeを0.00にする タイムアウトとリトライ上限 expoetial back-off 15
Toke リクエストとレスポンスの対応を取る 同期通信なので 複数のリクエスト / レスポンスが存在 16
再送制御の例 17
CoAP とトランスポート CoAP over UDP/DTLS UDPベースのCoAPをそのまま使うセキュリティーの必要な場合はDTLS IoT 向けDTLSプロファイル RFC7925 TLS/DTLS profiles for IoT CoAP over TCP/TLS リライアブルなコネクションで使う場合 draft-ietf-core-coap-tcp-tls ワイヤーフォーマットを変更 再送制御の割愛メッセージ の指定 設定情報 シグナリング (pig/pog, 接続終了など ) Code 7.xx を使 18
CoAP-HTTP プロキシ draft-ietf-core-http-mappig HC プロキシを置く Code Optios メディアタイプの変換 キャッシュ 19
CoAP その他の仕様 Discovery RFC 6690 Lik format RFC 7252 CoAP Group Commuicatio: RFC 7390 Observig: RFC 7641 Blockwise Trasfers: RFC 7959 draft-ietf-core-resource-directory draft-ietf-core-object-security 20
CoAP の実装 http://coap.techology/impls.html 21
CoAP まとめ UDP ベース TCP ハンドシェイク不要 リクエスト / レスポンスの並 通信 確認不要メッセージ バイナリフォーマット パースしやすい 応 に合わせた関連仕様 22
TLS/DTLS IOT PROFILES 23
IETF dice WG dice (DTLS I Costraied Eviromets) 2013-2016 IoT 向け DTLS profile CoAP 通信のセキュリティーは DTLS を使 IoT の特性を反映したプロファイル 認証 / 共通鍵 / 公開鍵 / 証明書ハンドリングの解説 暗号スイート / キー / 証明書 / などの推奨設定 RFC7925 TLS/DTLS profiles for IoT 24
COAP RELATED STANDARDS 25
CoAP 関連技術 CBOR cbor.io RFC7049 コンパクトなバイナリフォーマット media-type: applicatio/cbor MessagePack の IETF 版 CWT ( コット ) draft-ietf-ace-cbor-web-toke 署名 暗号化可能なCBOR JWT ( ジョット ) のJSONをCBORにした版 26
AUTHENTICATION AND AUTHORIZATION FOR CONSTRAINED ENVIRONMENTS (ACE) 27
制約デバイスにおける認証 認可 28
IETF ace WG ace (Autheticatio ad Authorizatio for Costraied Eviromets) 2014- 制限された環境での認証 認可を検討 IETFではIoT 脈における認証 認可技術全般も ace と呼ぶことがある まだユースケースがRFCになったばかり 主要な RFC およびドラフト RFC 7744: usecases draft-ietf-ace-actors actors draft-ietf-ace-cbor-web-toke CWT draft-ietf-ace-oauth-authz oauthによるソリューション 29
IoT における認証 認可検討の流れ ユースケースを集める 登場 物のモデルを明らかにする 既存技術 (OAuth) の適 を考える 今 の話はドラフトを元にします RFC まではもう少し時間がかかりそう 30
RFC 7744: Use Cases 6 つのユースケースが提 されている コンテナモニタリングホームオートメーションパーソナルヘルスケアモニタリングビルディングオートメーションスマートメータースポーツ & エンタテインメント産業制御システム 31
ace Use Cases オフライン時の認可 32
ace Use Cases アクセス権のリモート委譲 33
ace Use Cases セキュリティーライフサイクル 34
ace Use Cases 電 センサーへの ガスの相乗り 35
Actors: 登場 物モデル 36
Less-Costraied Level 制約されていないデバイス層を考える 認証 認可の複雑な処理は less-costraied level で処理 署名つきトークンなどで制約デバイスに渡す 制約デバイスでも署名検証程度の暗号計算はできるという前提 37
ace Authorizatio Model https://www.ietf.org/proceedigs/94/slides/slides-94-ace-2.pdf 38
OAuth Profile for IoT draft-ietf-ace-oauth-authz OAuth 2.0のToke Edpoit, Itrospect Edpoitを拡張して IoT 向けとする仕様 JSON, JWT, x-www-form-urlecodedをcbor, CWTで置きかえる 頻出のキーワード 字列を数値にマップ トランスポートとして CoAP/DTLSを仮定 bearerトークンでなくpop (proof-of-possessio) トークンを標準とする less-costraiedレベルへのトークン検証問合せなど 39
Ace まとめ IoT 脈における認証 認可技術を検討 ユースケースからの要求抽出 less-costraiedレベルによる認可処理 OAuthプロトコルのIoT 向けプロファイル CBOR/CWT をベースとしたパラメータ トークンフォーマット 40
SUMMARY 41
まとめ CoAP リクエスト / レスポンスベースの IoT 向け通信プロトコル CoAP/DTLS IoT 機器向けの DTLS プロファイル CBOR, CWT ACE バイナリーデータフォーマット 署名 暗号化 制約環境での認証 認可 less-costraied levelの活 42
Ay Questios? / Feedbacks Welcome! mailto:maeda@lepidum.co.jp / twitter: @mad_p 43