カーナビの時刻変更にジェイルブレイクが必要だった話
原題: Jailbreaking my car's navigation system just so I can change the time
なぜ重要か
組み込み機器のDRM設計が利用者の基本的な操作権を奪う事例として、自動車業界の修理権・アクセス権議論に具体的な素材を提供する。
エストニア在住のエンジニアが、2014年式Renault Latitudeのカーナビシステム「TomTom Carminat LIVE」の時刻設定を変更するため、ファームウェアのリバースエンジニアリングを実施。設定メニュー自体がナビ用SDカードに依存しており、SDカードなしでは時刻変更が不可能な設計であることが判明した。さらにDRMによりカード固有のCIDベースの署名検証が行われており、単純なコピーでは回避できないことも確認された。
サマータイム終了に伴い時計が1時間ずれたことをきっかけに、このエンジニアはダッシュボードの時刻設定を試みた。しかし設定メニューを探し回っても「時刻設定」の項目が見当たらない。ダッシュに設定ボタンは2つあるが、一方はBluetooth関連のみ、もう一方はSDカード未挿入のエラーメッセージを表示するだけだった。
約1時間かけてメニューを探した末、ファームウェアを入手してリバースエンジニアリングに踏み切った。先人がすでにGitHub上で解析情報を公開しており(andronedev/carminat-tomtom-live-re)、それを手がかりにアップデートファイルを取得。展開すると`ttsystem`というファイルが見つかり、これがLinux 2.6.28.10ベースのTomTomカスタムOSを格納したext3ファイルシステムだった。SoCはSamsung S5P6440を採用している。
解析の結果、前オーナーの言葉は正しかった。設定アプレットへのメニュー定義そのものがSDカード上に存在しており、カードなしではシステムが設定画面への入り方を「知らない」状態になる設計だった。さらに問題を複雑にしているのがDRMの存在だ。システムはSDカード固有のCID(カードに焼き付けられた一意のID)を検証し、そのCIDに基づいた署名のないファイルは拒否する仕組みになっている。つまり正規カードのファイルを別のカードにコピーするだけでは突破できない。
TomTomまたはRenaultがなぜこのような設計を選んだのかについて、筆者は「いまだに理解できない」と記している。地図データが古くても、あるいはSDカードを失っても、単純な時刻変更すらできなくなるという実害が生じている。