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

安めのスマートウォッチをOSSでセキュアに使う(Gadgetbridge)

 安めのスマートウォッチをOSSでセキュアに使う(Gadgetbridge)

発表:: 鹿児島Linux勉強会 2023.09(オンライン開催) https://kagolug.connpass.com/event/295032/
続き:: GadgetBridge 経由でスマートウォッチで天気,アクティビティ記録 https://speakerdeck.com/matoken/gadgetbridge-weather-activity
source:: https://gitlab.com/matoken/kagolug-2023-09/-/blob/main/slide/slide.adoc

Kenichiro MATOHARA

September 17, 2023
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. 安めのスマートウ
    ォッチをOSSでセ
    キュアに使う
    (Gadgetbridge)
    Kenichiro Matohara(matoken)
    1

    View full-size slide

  2. 南隅から参加(鹿児島の右下)
    好きなLinuxディストリビューションはDebian
    お仕事募集 mailto:work@matohara.org
    Kenichiro Matohara(matoken)
    https://matoken.org
    2

    View full-size slide

  3. 先月の補足
    「有線イヤホンのボタンで動画を操作したい」
    3.5mm オーディオジャックに接続したマイク,ボタン付きイヤホ
    ンのボタンで動画の制御
    ウェブブラウザの動画再開時に画面がスリープのまま(mpv
    は画面復帰する)
    xset dpms force on を追加して解決.
    https://gitlab.com/matoken/kagolug-
    2023.08/-/blob/main/slide/slide.adoc
    https://speakerdeck.com/matoken/i-want-to-
    operate-the-video-with-the-buttons-on-the-wired-
    earphones
    3

    View full-size slide

  4. スマートウォッチ購入
    2022年11月末に Xiaomi Mi スマートバンド5 日本語版 2694円で
    購入
     公式ストアでは在庫切れのままなので収束品?
    【11/22-11/27日40%OFF】Xiaomi Mi スマートバンド5 日本語版 スマートウォッチ本体 50M防水 14日間の長いバッテリ持続時間 11種
    https://item.rakuten.co.jp/xiaomiofficial/m00028/
    2694(円)×1(個) = 2694(円) (税込、送料無料)
    4

    View full-size slide

  5. ファースト・インプレッション
    小さい,厚い
    液晶にドット抜けあり><
    文字は案外読める
    久々に腕時計をしたので結構邪魔
    狭いところに手を入れるときなどにあたって邪魔
    引っ掛けてバンドが外れてしまうことがよくある → サードパーティバ
    ンド?
    金属製の什器などにゴツゴツぶつけてしまっているが液晶はきれいな
    ままで結構丈夫そう
    5

    View full-size slide

  6. スマート?ウォッチ
    安めのものはスマートフォン&アプリが必須
    無いとあまりスマートでないウォッチ
    スマートフォンのアプリは権限が大量に必要
    通知,ヘルスデータなど結構センシティブな内容が見える
    Googleにはすでに渡っているだろうけど更に他の会社にデータ
    を渡したくない
    7

    View full-size slide

  7. Mi Band hack!
    Mi Band 3 をhack している人が
    Linux からBluetooth 経由でメッセージを送ったり時計を設定した
    り,FW Update したりしている :)
    公式アプリを使わなくてもある程度使えそう → 購入へ
    💸
    BLE Hack, Yogesh Ojha, MiBand Hack, BLE MiBand
    Hack, IoT Security, BLE security | Medium
    I hacked MiBand 3, and here is how I did it Part II —
    Reverse Engineering to upload Firmware and
    Resources Over the Air | by Yogesh Ojha | Medium
    9

    View full-size slide

  8. Android 向けのアカウントを作成したりデータの送信などをしないで
    一部(Pebble, Mi Band, Amazfit Bip and HPlus device
    (and more))スマートウォッチを利用できるようになるOSSアプリ
    すべての機能が使えるとは限らない
    Gadgetbridge for android
    Supported Devices
    :
    Mi
    Band, Band 1A, Band 1S, Band 2, Band 3
    Band 4, Band 5, Band 6 [!]
    10

    View full-size slide

  9. Android へのGadgetbridge 導入
    F-Droid から入手可能

    F-Droid はFLOSS をホストするAndroid用リポジトリ,ストア
    F-Droid( )からAPK を入手,導入
    して利用する
    Gadgetbridge | F-Droid - Free and Open Source
    Android App Repository
    https://f-droid.org/ja/
    11

    View full-size slide

  10. サイドローディング
    政府検討のスマホアプリ「サイドローディング」義務化、セキュリティー
    は大丈夫か:日経ビジネス電子版
    スマホアプリの「サイドローディング」で得られるもの、失うもの | マイ
    ナビニュース
    Android 14で古いアプリのサイドローティングも制限か
    12

    View full-size slide

  11. 接続方法
    Gadgetbridge wiki に機種別の手順がある
    Mi Band 5 - Gadgetbridge - Codeberg.org
    13

    View full-size slide

  12. ペアリング
    (あれば)Android のペアリング設定から削除
    Gadgetbridge 前設定
    ガジェットブリッジ → 設定 → Mi Band/Amazfitの設定 →
    Bluetoothペアリングを有効にする
    ペアリング
    ガジェットブリッジ → 新しいデバイスに接続
    14

    View full-size slide

  13. 認証鍵の入手
    mi Band 4以降はデバイスの初期設定時にサーバーベース認証が必要
    🤔
    公式アプリで認証後認証鍵を入手 ※失敗
    sqlite3
    /data/data/com.xiaomi.hm.health/databases/origin_db_[Y
    "select AUTHKEY from DEVICE"
    huami-token利用 ※失敗
    Free my band( 純正アプリ改造品)利用 ※成功
    argrento/huami-token: Script to obtain watch or band b
    from Huami servers - huami-token - Codeberg.org
    Free my band
    15

    View full-size slide

  14. 認証鍵のGadgetbridgeへの登録
    ガジェットブリッジ → Mi Smart Band5 → ⚙(Debice
    specific settings) → Auth Key に 入手した認証鍵の頭に
    0x を付けて保存する
    ex) fedcba01234567890fedcba01234567 →
    0xfedcba01234567890fedcba012345678
     0x に気づかず何度も試した…….
    戻ってデバイス名タップでペアリングされる
    ↻アイコンタップで手動データ同期
    16

    View full-size slide

  15. Gadgetbridge で時計のデータを表
    示できた :)
    17

    View full-size slide

  16. 初期化時の問題⚠
    スマートウォッチを初期化するとBluetooth MAC address が変
    わってしまう
    ペアリングのやり直しが必要
    認証鍵も取得し直す必要がある
    18

    View full-size slide

  17. いくつかの設定
    19

    View full-size slide

  18. デバイスの設定
    Heart Rate Monitoring
    終日心拍数測定: 5分ごと(1分に1回,5分ごと,10分ごと,30分
    ごと)
    持ち上げ時に表示を有効にする
    カレンダーの予定を同期する(不安定?)
    サードパーティのリアルタイムHRアクセス
    20

    View full-size slide

  19. ガジェットブリッジ設定
    データベース管理 → 自動エクスポート
    一般ステータス通知対応 → ガジェットブリッジを許可
    Application list → 通知を転送したいアプリを選ぶ
    :
    21

    View full-size slide

  20. こんな感じで利用中
    22

    View full-size slide

  21. 数ヶ月使ってみて
    23

    View full-size slide

  22. バッテリーの持ち
    カタログスペック → バッテリ持続時間: 14 日以上
    現在の利用方法では実測10日以上
    液晶輝度 2 of 5,心拍数測定5分ごと,持ち上げ時に表示を有効
    にする,通知は10通以下/日,HR自動エクスポート
     充電には専用USBケーブルで充電が必要
    24

    View full-size slide

  23. 防水について
    5ATM(50m防水)
    シャワーや水泳も可能となっている
    シャワー程度ならつけっぱなしで湯船に浸かるときと充電時以外ずっ
    とつけっぱなしだが今のところ問題なし
    25

    View full-size slide

  24. ヘルスデータの精度
    HRは正確そうな値
    歩数カウントは全然カウントされない?Androidの数分の一? → バ
    ンドをぴったりめにすることでマシに
    睡眠は全く当てにならない感じ
     HRのデータはAndroidに自動保存可能
    26

    View full-size slide

  25. まとめ
    OSS のAndroid アプリのGadgetbridge を利用して一部のスマ
    ートウォッチが利用可能
    アカウントを作成したりデータを渡す心配なく利用できる
    全機能が使えない場合も
    壊れた場合時計と違い買い替えになると思うが同じ価格帯で代替品
    が買えるかが不安
    Gadgetbridge非対応ウォッチを持っていたら対応できるか試すの
    も面白そう
    27

    View full-size slide

  26. SEE ALSO
    安価でOpen Hardware な物もある(ESP32ベースのものは技適も
    ありそう?)
    PineTime | PINE64
    T-Watch S3 – LILYGO®
    Watchy | Crowd Supply
    28

    View full-size slide

  27. 発表後追記
    前ページで紹介したものは全て技適的にNGだった
    ESP32でもアンテナ別の小型chipなので技適なし
    以下のあたりなら丈夫そうだが大きい
    Custom Smartwatch | Hackaday.io
    M5StickC Plus(腕時計アクセサリー付き) — スイッチサイエン

    29

    View full-size slide

  28. 奥付
    発表
    2023-09-
    17(sun)
    発表者
    利用ソフトウェア
    ライセンス
    鹿児島Linux勉強会 2023.09(オンライン開催)
    Kenichiro Matohara(matoken)
    Asciidoctor Reveal.js
    CC BY 4.0
    30

    View full-size slide