見出し画像

1. FlatSatを買ったので、日本で安全に使うための予習ロードマップを整理してみた

衛星セキュリティ教材として使われている「FlatSat」を購入した。

まだ発送時期は分からないのだけれど、今後FlatSatを実際に触ったり、人に説明したりする機会が増えそうなので、必要になってから初めて触るのではなく、今のうちから少しずつ理解しておこうと思った。

そこで始めるのが、この「FlatSat実験ノート」。

FlatSatを実際に触りながら、

  • 衛星通信

  • CCSDS

  • ファームウェア

  • セキュリティ

  • CTF的な攻撃演習

  • SDR・無線

  • 日本の技適や電波法

などを調べた記録を残していくつもりだ。

ただし、最初に一つ重要な方針を決めた。

日本国内で合法的に送信できることが確認できるまでは、FlatSatから電波を出さない。

今回は、この前提で「実機が届く前から何を勉強しておくか」を整理してみる。


そもそもFlatSatとは?

FlatSatは、ざっくり言えば机の上で動かせる模擬人工衛星だ。

RP2040を中心とした小さな基板にLoRa無線やセンサーなどを搭載しており、衛星通信で使われるCCSDS(Consultative Committee for Space Data Systems)のSpace Packet Protocolなども扱える。

さらにPwnSatの教材として、セキュリティ演習を行えるようになっている。

公開されている教材を見ると、

  • APID Enumeration

  • Eavesdropping

  • Fuzzing

  • Command Injection

  • GPS Spoofing

  • Authentication Spoofing

  • Replay

  • RESET Command

といった内容が用意されている。

単なる「LoRaを触る電子工作キット」というより、

衛星システムを題材に、通信・プロトコル・ファームウェア・セキュリティを横断して学ぶための実験環境

と考えるのが近そうだ。


でも、日本ではいきなりRFを使わない

FlatSatにはLoRa通信機能がある。

ここで気を付けなければならないのが、日本の電波法と技適だ。

海外でISMバンドとして使われている周波数であっても、

「海外で免許不要だから、日本でもそのまま使える」

とは限らない。

周波数だけでなく、送信電力、帯域幅、送信制御、無線設備そのものの技術基準適合なども関係する。

そのため、FlatSatが到着しても、

とりあえずアンテナを付けて電源ON!

とはしないつもりだ。

アンテナを外しておけばいい、という考え方でもなく、可能ならファームウェア側からRF送信そのものを無効化しておきたい。


まず作りたい「RF Disabled」環境

実機が届く前に、FlatSatの公開ファームウェアを読んで、

  • Radioの初期化

  • Telemetryの無線送信

  • LoRa TX

  • 自動送信処理

などがどこで行われているか確認する。

そして可能なら、自分用に

Japan / RF Disabled Build

のようなファームウェアを作っておきたい。

イメージとしては、

USB CDC       : ON
Sensors       : ON
CCSDS / SPP   : ON

LoRa TX       : OFF
Auto RF TX    : OFF

という状態。

つまり、

「送信コマンドを使わなければ電波は出ない」

ではなく、

「そもそも送信できない状態で起動する」

ところから始める。


Phase 1:実機が届く前に技適を調べる

実機が届くまで何もしないのはもったいない。

むしろ今のうちに調べたいのが、日本でFlatSatのRF機能を合法的に使える可能性だ。

確認したい項目はかなりある。

  • FlatSatのHardware Revision

  • 搭載されている無線チップ/モジュール

  • 使用周波数

  • 最大送信電力

  • 占有周波数帯幅

  • LoRaの変調パラメータ

  • アンテナ仕様

  • キャリアセンス

  • 送信時間制御

  • 日本の920MHz帯の技術条件

  • 技術基準適合証明を1台だけ取得できるか

  • 技適未取得機器を用いた実験等の特例制度を利用できるか

など。

幸い、FlatSatはハードウェアやファームウェアの情報が公開されている。

実機がなくても、かなりの部分までは調べられそうだ。


技適調査用の資料もまとめておく

自分のPCに、こんなフォルダを作る予定。

FlatSat Japan Compliance/
│
├─ Hardware/
│   ├─ Schematic
│   ├─ BOM
│   └─ Hardware Revision
│
├─ Radio/
│   ├─ Radio Datasheet
│   ├─ Frequency
│   ├─ TX Power
│   ├─ Bandwidth
│   ├─ Modulation
│   └─ Antenna
│
├─ Firmware/
│   ├─ Radio configuration
│   ├─ TX control
│   └─ Firmware Version
│
└─ Certification/
    ├─ ARIB
    ├─ 技適
    ├─ 登録証明機関
    └─ 実験等の特例制度

最終的には、登録証明機関などに相談するときに、

「この無線機器はこういう仕様です」

と説明できるところまで整理したい。

もしFlatSatが届く前に技適取得などの見込みが立てば、その段階からRFを使った実験計画も考える。

逆に難しそうなら、無理にRFを使わない。


Phase 2:CCSDSを予習する

FlatSatで一番勉強しておきたいものの一つがCCSDS。

特にSpace Packet Protocol(SPP)。

ざっくりしたイメージは、

Ground Station
      │
      │ Telecommand
      ▼
   FlatSat
      │
      │ Telemetry
      ▼
Ground Station

というもの。

Space Packetには、

Packet ID
Sequence Control
Packet Length
Data Field

などが含まれる。

FlatSatではAPID(Application Process Identifier)によってコマンドなどの処理を振り分ける。

まずは、

「APIDって何?」

と聞かれたときに、30秒くらいで説明できるようになることを最初の目標にする。


Phase 3:PC側の環境を準備する

FlatSatが届く前に、Windows側の準備もしておく。

今のところ、

  • Git

  • Python 3

  • Arduino IDE 2.x

  • VS Code

あたりを使う予定。

GitHubからFlatSatとPWNSAT-C3のリポジトリも取得して、

PwnSatLab/
├─ FlatSat/
└─ PWNSAT-C3/

という感じでまとめておく。

実機がなくても、攻撃スクリプトやファームウェアを読むことはできる。

届いてからGitHubを探し始めるより、先に構造を把握しておいた方が楽だろう。


Phase 4:実機が届いたら、まずRF OFF

FlatSatが届いたら最初に確認したいのは、

  1. Hardware Revision

  2. 搭載RF部品

  3. アンテナ

  4. Firmware Version

  5. USB認識

  6. Serial通信

  7. センサー

  8. Telemetry

など。

ただし、ここでもRF送信はしない。

まずは、

PC
 │
 │ USB
 ▼
FlatSat

という構成だけで動かす。

可能であればSDRなども使って、

意図しないRF送信が発生していないこと

まで確認してみたい。


Phase 5:最初は「正常系」を理解する

セキュリティ教材だからといって、いきなり攻撃するのは避ける。

まずは通常の利用者として、

  • PING

  • Telemetry

  • RESET

  • CCSDS Packet

  • APID

  • Sequence

などを確認する。

正常な状態を理解していなければ、異常な状態を見ても何がおかしいのか分からない。

これは普通のペネトレーションテストでも同じだと思う。


Phase 6:APID Enumeration

正常系が分かったら、最初に試してみたいのがAPID Enumeration。

例えば、

APID 0x00
APID 0x01
APID 0x02
APID 0x03
...

と調べていき、

  • 応答する

  • コマンドが実装されている

  • 未実装

  • 無反応

などを分類する。

これは、

仕様書を持っていない衛星をブラックボックスとして偵察する

ような演習になる。

FlatSatで最初にやるセキュリティ演習として、かなり面白そうだ。

もちろん最初はUSB経由で行う。


Phase 7:Command InjectionとReplay

次に試したいのがCommand Injection。

例えば、

SET_THRUSTER
RESET

などのTelecommandを作る。

ここで考えたいのは、

正しい形式のコマンドなら、誰が送信したものでも実行していいのか?

という問題。

その次はReplay。

正常なTelecommand
        ↓
       記録
        ↓
       再送
        ↓
   再び実行される

という流れを見る。

ネットワークセキュリティではおなじみの考え方だけれど、衛星を題材にするとかなり新鮮そうだ。


Phase 8:Fuzzing

その次はFuzzing。

CCSDS Packetの、

  • APID

  • Length

  • Sequence

  • Payload

などを意図的に変化させる。

Malformed Packet
       ↓
     Parser
       ↓
Unexpected Value
       ↓
Crash / Abnormal Behavior

という流れを確認する。

ここでは単に、

「落ちた!」

で終わらせない。

最終的にはソースコードを追って、

なぜその入力でクラッシュするのか

まで理解したい。


Phase 9:ファームウェアを読む

ある程度動作を理解したら、FlatSatのファームウェアを本格的に読む。

最終的には、

  • CCSDS/SPPの仕様

  • FlatSat Firmware

  • Ground Station側

  • Radio部分

を切り分けられるようになりたい。

何か動かなかったときに、

「これはLoRaの問題ではない」
「CCSDS Packetまでは正常に来ている」
「APID Handler以降がおかしい」

と考えられるところまで行ければ理想的。


Parallel Phase:RFを合法的に使える方法を探す

USBを中心とした学習とは別に、RFについては並行して調査する。

流れとしては、

FlatSatのRF仕様を確認
        ↓
日本の技術基準と比較
        ↓
不足情報を整理
        ↓
必要ならメーカーにも確認
        ↓
登録証明機関などへ相談
        ↓
合法的に送信できる方法を検討

という感じ。

そして、ここで分岐する。


RFを使える見込みが立った場合

技適取得など、合法的に送信できる条件が整ったら、

USB only
   ↓
RF基本動作
   ↓
LoRa Telemetry
   ↓
RF Command
   ↓
RF Attack

へ進みたい。

その段階で、

  • SDR受信

  • Uplink / Downlink

  • RF版APID Enumeration

  • RF Command Injection

  • RF Replay

  • Eavesdropping

などを試す。


RFを使うのが難しかった場合

無理に使わない。

FlatSatには、RFを使わなくても学べることがかなりある。

USB
CCSDS
Firmware
Attack Scripts
Protocol解析
SDRによる受信

などを中心に進めればいい。

つまりRFは、

FlatSat学習のスタート地点ではなく、条件が整った場合に追加するレイヤ

と考えることにした。


今の優先順位

現時点では、こんな感じ。

★★★★★ 技適・RF仕様調査
★★★★★ RF Disabled環境の構築
★★★★★ CCSDS / Space Packet Protocol
★★★★★ USB通信
★★★★★ APID Enumeration
★★★★★ Command Injection
★★★★☆ Replay
★★★★☆ Firmware解析
★★★☆☆ Fuzzing

------ RF利用可能確認後 ------

★★★☆☆ SDR / LoRa
★★★☆☆ RF Command
★★★☆☆ RF Attack
★★☆☆☆ HackRF
★★☆☆☆ GPS Spoofing

以前なら無線機器なのだから、まず電波を出して試したくなるところ。

今回は逆に、

「まず電波を出さない」ことを最初の技術課題

にしてみる。


FlatSatが届くまでにやっておきたいこと

当面の目標は、

  1. CCSDS/SPPの基礎を理解する

  2. FlatSatのGitHubを読む

  3. RF送信部分を特定する

  4. RF Disabled版の作り方を考える

  5. FlatSatのRF仕様を整理する

  6. 日本の技術基準と比較する

  7. 技適取得などの可能性を調べる

ところまで。

実機が届いたら、

RF OFF
  ↓
USB接続
  ↓
正常系の確認
  ↓
CCSDS
  ↓
Attack
  ↓
Firmware解析

と進める。

その間に合法的なRF利用の見込みが立てば、

RF OFF
  ↓
条件確認
  ↓
RF ON
  ↓
無線実験

へ進む。


海外製セキュリティ教材を「日本で使う」ところまで含めて実験する

FlatSatを買った目的は、単にCTFの問題を解くことだけではない。

衛星セキュリティ、CCSDS、組み込み、LoRa、SDRなどを横断して理解していきたい。

そして今回は、それにもう一つ、

「海外製の無線セキュリティ教材を、日本で合法的かつ安全に使うにはどうすればいいのか」

というテーマも加わった。

実際に調べていけば、技適について勘違いしていたことや、想定していなかった問題も出てくるかもしれない。

その過程も含めて、この「FlatSat実験ノート」に残していく。

さて。

FlatSatが届くのが先か、技適についてある程度の結論が出るのが先か。

まずは、CCSDSとファームウェアを読むところから始めてみようと思う。


続きはこちら!

いいなと思ったら応援しよう!

富永道也|AI活用実装・情報リテラシー教育 よろしければ応援お願いします! いただいたチップは活動費に使わせていただきます!

この記事が参加している募集