Skip to content
⚠️ この翻訳は機械翻訳です。ネイティブによるレビューは保留中のため、訳文に誤りが含まれる場合があります。

プライバシーモデル

Raiznetのプライバシーモデルはフィールド単位で動作します。各センサー読み取り(pH、EC、温度など)は、何がどこへ伝わるかを決める独立した可視性ポリシーを持ちます。

処分(Disposition)

Disposition は、ある宛先に対してフィールドがどう扱われるかを定義します。

意味
OMITフィールドはこの宛先に送られません。保存もされません。
PLAINフィールドは平文で伝わります。その宛先にアクセスできるすべてのピアから見えます。
ENCRYPTEDフィールドは送信前にデバイスのAES-256-GCM対称鍵で暗号化されます。blobは通常通り伝わりますが、鍵を持つ者だけが読めます。

ENCRYPTED 値はネットワークの集計や地図に決して入りません — 集計器は不透明なblobを無視します。

FieldPolicy

各センサーフィールドは FieldPolicy を持ちます。

protobuf
message FieldPolicy {
  Disposition default_disposition = 1;
  map<string, Disposition> per_destination = 2;
}

default_disposition は、明示的に列挙されていない任意の宛先に適用されます。per_destination は宛先キーをオーバーライドにマップします。

  • サーバーpubkey(hex): その特定のサーバーに適用されます。
  • ネットワークtopic(例 raiznet:public:arateki:v1): そのネットワークのすべてのピアに適用されます。

UIは3段階の粒度を提示し、すべて同じマップで支えられます。

UIレベル設定
すべて同じdefault_disposition 設定、マップ空
公開 vs ローカルクラスでグループ化した2エントリ
宛先ごと(上級)サーバーpubkeyまたはtopicごとに1エントリ

publish_to

デバイスの publish_to 設定は、どの宛先カテゴリがアクティブかを制御します。

アクティブな宛先
LOCAL_ONLYlocal_servers のエントリのみ
PUBLIC公開ネットワークtopicのみ
BOTHすべての宛先 — それぞれ独自のFieldPolicy

差別化要因としての local_servers

デバイスの local_servers リストは、「ローカル」なデータがそもそもサーバーに届くかどうかを決めます。

  • local_servers → プライベートフィールドはESP32のフラッシュに留まります。所有者は近くにいるときローカルHTTP、BLE、シリアル経由で直接アクセスします。
  • local_servers 設定済み → プライベートフィールドはそれら特定のサーバーに送られ、raiznet_private.db に保存されます。各サーバーは独立で、他のサーバーとプライベートデータを複製しません。

ノードを動かさないユーザーは local_servers を設定する必要が決してありません。アプリはこれを明確に伝えます。ローカルデータはアプリが直接接続するまでデバイスに留まります。

分離によるセキュリティ

サーバー上の2つのデータベースは、クエリレベルではなく接続レベルで分離を強制します。

  • raiznet_public.db — 公開取り込みで供給されます(ピア複製は計画中)。公開エンドポイントはこのデータベースにのみアクセスできます。接続オブジェクトがそもそも利用できないため、出来の悪いクエリもプライベートデータを漏らせません。
  • raiznet_private.db — ローカル取り込みのみで供給されます。ローカルエンドポイント(127.0.0.1)のみがアクセスできます。ノードから決して出ません。

常に公開されるもの

デバイスが publish_to: PUBLIC | BOTH の場合、次のメタデータはFieldPolicyにかかわらず常に公開です。

  • id(デバイスのpubkey)
  • mac
  • owner_pubkey
  • type(sensor_mains / sensor_battery / gateway)
  • location(所有者が選んだ解像度のH3セル)
  • hardware(モデル、ファームウェアバージョン)

これらのメタデータは、ネットワークがデバイスの存在を知り、集計が機能するために必要です。

ポリシーの変更

FieldPolicy の変更は将来の読み取りにのみ影響します。すでに公開されたデータ(平文または暗号化)は、すでに受け取った者の手元に残ります — ピアがダウンロードしたものを「非公開化」する仕組みはありません。これは追記専用・複製データの帰結です。

暗号化フィールドと所有者のアプリ

ENCRYPTED の処分は特定のユースケースを解決します。所有者がLAN外から(トンネル不要で)自身のセンサーデータを追跡したいが、値を公開ネットワークに晒したくない場合です。

フロー:

  1. デバイスは公開宛先に送る前にフィールドを自身の対称鍵で暗号化します。
  2. 任意のピアが暗号化されたblobを受け取り保存します — 読むことはできません。
  3. 対称鍵を保持する所有者のアプリが、blobをローカルで復号します。

これは、所有者が任意の公開ゲートウェイやピアノードを使ってデータを取得でき、平文値をそれに委ねる必要がないことを意味します。