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

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

SORACOM
June 06, 2022

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

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

SORACOM

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. 構成 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
  3. • 使った理由: Cloudflare D1 と Cloudflare R2 が 話題になっていたので触ってみた かった

    • Amazon API Gateway + AWS Lambda が一つになったような使い勝手。Trigger で Cron 実行できるのも良い。Cloudflare D1 や Cloudflare R2 は使えなかったが、 KV (キーバリューストア) は使いやすかった • TypeScript による型定義や Wrangler CLI、サンプルが充実していて、安心して すぐに始められた Cloudflare Workers を使ってみて
  4. • 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 の使いどころ
  5. 1. SORACOM Beam と お客様サーバーへは事前に鍵を登録してある 2. IoT Device から SORACOM

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

    事前共有鍵 ハッシュ計算 ヘッダに入れて データと一緒に送信 ccc2594804… SIM の情報 タイムスタンプ ccc2594804… SIM の情報 タイムスタンプ ハッシュ計算 ccc2594804… 比較 (検証)
  7. 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 が生成する署名ヘッダと、同じ方法 で生成したハッシュとを比較