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と、梅雨の布団」の公開資料

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)

    View Slide

  2. 自己紹介
    三國直樹 (mick)
    Customer Reliability Engineer
    SORACOM の技術サポートやドキュメント等を
    担当
    好きな SORACOM サービス: SORACOM Lagoon
    好きな布団メーカー: my makura

    View Slide

  3. 今年も梅雨がやってくる
    Ref: https://www.data.jma.go.jp/cpd/baiu/sokuhou_baiu.html

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  7. • 使った理由: Cloudflare D1 と Cloudflare R2 が 話題になっていたので触ってみた
    かった
    • Amazon API Gateway + AWS Lambda が一つになったような使い勝手。Trigger で
    Cron 実行できるのも良い。Cloudflare D1 や Cloudflare R2 は使えなかったが、
    KV (キーバリューストア) は使いやすかった
    • TypeScript による型定義や Wrangler CLI、サンプルが充実していて、安心して
    すぐに始められた
    Cloudflare Workers を使ってみて

    View Slide

  8. Cloudflare Workers の実装例
    設定ファイルで KV や cron を定義
    env.KV.get で読み込み、env.KV.put で書き込み
    直感的に ヘッダや body を取得

    View Slide

  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 の使いどころ

    View Slide

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

    View Slide

  11. SORACOM Beam の署名ヘッダによる認証
    IoT Device SORACOM Beam Customer Server
    事前共有鍵 事前共有鍵
    ハッシュ計算
    ヘッダに入れて
    データと一緒に送信
    ccc2594804…
    SIM の情報 タイムスタンプ
    ccc2594804…
    SIM の情報 タイムスタンプ
    ハッシュ計算
    ccc2594804…
    比較 (検証)

    View Slide

  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 が生成する署名ヘッダと、同じ方法
    で生成したハッシュとを比較

    View Slide

  13. • Cloudflare Workers を使ってみることができた。とても使いやすいので、
    今後も活用できそう
    • SORACOM Beam と組み合わせることで、セキュリティを強化できること
    を再確認できた
    • この梅雨は布団の干し忘れを防げるはず
    まとめ

    View Slide

  14. View Slide