Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SORACOM BeamとCloudflare Workersと、梅雨の布団

SORACOM BeamとCloudflare Workersと、梅雨の布団

2022年6月7日(火)開催のSORACOM UG Online #12 ~SORACOM Beamの再発見で、ソラコム Customer Reliability Engineer 三國直樹(mick) が発表した「SORACOM BeamとCloudflare Workersと、梅雨の布団」の公開資料

7cd783377515bdf8207062840b7b2f4e?s=128

SORACOM
PRO

June 06, 2022
Tweet

More Decks by SORACOM

Other Decks in Technology

Transcript

  1. SORACOM Beam と Cloudflare Workers と梅雨の布団 SORACOM UG Online #12

    ~SORACOM Beam の再発見~ Jun. 07, 2022 株式会社ソラコム Customer Reliability Engineer 三國直樹 (mick / @n_mikuni)
  2. 自己紹介 三國直樹 (mick) Customer Reliability Engineer SORACOM の技術サポートやドキュメント等を 担当 好きな

    SORACOM サービス: SORACOM Lagoon 好きな布団メーカー: my makura
  3. 今年も梅雨がやってくる Ref: https://www.data.jma.go.jp/cpd/baiu/sokuhou_baiu.html

  4. IoT 現場 (家庭) の心配事 また雨か。最後に布団 干したのいつだ? うちは 2 つしか 干せない。次は

    誰の番?
  5. • 布団を干したとき、誰のものを干したかを記録・通知 • 記録を定期的に確認し、誰かの布団が一定期間干されていなかったら、通知 作ったもの

  6. 構成 SORACOM LTE-M Button for Enterprise SORACOM Beam KV (Key-Value

    Store) Cloudflare Workers (futon-checker) Cloudflare Workers (futon-recorder) Trigger Slack Incoming Webhook 布団干しの記録 記録から布団干し忘れの確認 https://github.com/nmikuni/cloudflare-futon-app-demo
  7. • 使った理由: Cloudflare D1 と Cloudflare R2 が 話題になっていたので触ってみた かった

    • Amazon API Gateway + AWS Lambda が一つになったような使い勝手。Trigger で Cron 実行できるのも良い。Cloudflare D1 や Cloudflare R2 は使えなかったが、 KV (キーバリューストア) は使いやすかった • TypeScript による型定義や Wrangler CLI、サンプルが充実していて、安心して すぐに始められた Cloudflare Workers を使ってみて
  8. Cloudflare Workers の実装例 設定ファイルで KV や cron を定義 env.KV.get で読み込み、env.KV.put

    で書き込み 直感的に ヘッダや body を取得
  9. • Cloudflare Workers に認証の機構を実装したい場合、自分で考える必要がある (Amazon API Gateway のような X-API-Key を使ったヘッダ認証なども自分で書く)

    • SORACOM Beam はカスタムヘッダを付与できるので事前共有鍵によるヘッダ認証 は容易に実装できた • Ref: https://qiita.com/n_mikuni/items/b63eade4f3bc275d7c70 • 加えて事前共有鍵と SIM ID から生成する署名ヘッダでさらにセキュアにできた • Ref: https://github.com/nmikuni/cloudflare-futon-app-demo SORACOM Beam の使いどころ
  10. 1. SORACOM Beam と お客様サーバーへは事前に鍵を登録してある 2. IoT Device から SORACOM

    Beam へデータが送信される 3. SORACOM Beam は 事前共有鍵とIMSIなど、タイムスタンプをもとに署名を作成する 4. SORACOM Beam は IMSI、タイムスタンプ、署名をヘッダに入れてデータとともに転送先 のサーバーへ送る 5. サーバーはヘッダから IMSI、タイムスタンプ、署名を取り出す 6. サーバーは事前共有鍵とIMSIなど、タイムスタンプをもとに署名を作成する 7. サーバーは自分が作成した署名と SORACOM Beam から送信された署名を比較する (※) 署名はタイムスタンプをもとに作成されているので、データ送信ごとに変わる (配布資料用) 署名が検証されるまでの流れ
  11. SORACOM Beam の署名ヘッダによる認証 IoT Device SORACOM Beam Customer Server 事前共有鍵

    事前共有鍵 ハッシュ計算 ヘッダに入れて データと一緒に送信 ccc2594804… SIM の情報 タイムスタンプ ccc2594804… SIM の情報 タイムスタンプ ハッシュ計算 ccc2594804… 比較 (検証)
  12. SORACOM Beam の署名ヘッダによる認証の実装例 Ref: https://users.soracom.io/ja-jp/docs/beam/verify-signature/ : Beam が生成する署名ヘッダ : Beam

    は「SIM の IMSI などのパラメータ」 「タイムスタンプ」「事前共有鍵」を結合し たものを SHA256 というアルゴリズムでハッ シュ化している。それぞれが正しければ Beam が生成する署名ヘッダと同じものがで きるはず : 事前に SORACOMと Cloudflare Workers に登録した事前 (Pre) 共有 (Shared) 鍵 (Key) : Beam が生成する署名ヘッダと、同じ方法 で生成したハッシュとを比較
  13. • Cloudflare Workers を使ってみることができた。とても使いやすいので、 今後も活用できそう • SORACOM Beam と組み合わせることで、セキュリティを強化できること を再確認できた

    • この梅雨は布団の干し忘れを防げるはず まとめ
  14. None