Note
このドキュメントは2026-02-27 03:44にPLaMo Translation Modelを使用して自動翻訳されました。
FEP-c7d3: 所有権に関する規定
概要
本文書では、ActivityPub規格におけるオブジェクトの所有権概念について論じる。
[!警告] 本FEPはFEP-fe34によって廃止されました。
背景説明
ActivityPub規格では、認証および認可のメカニズムについて明確な規定を設けていない。
多くの実装では[アクティビティ語彙](Activity Vocabulary)で定義されているactorプロパティとattributedToプロパティを用いて、活動やオブジェクトの正当性を判定している。本提案は、現在の運用慣行を形式化するとともに、実装者向けの指針を提供することを目的としている。
要件
本文書中で使用する「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」の各用語は、RFC-2119で規定された解釈に従うものとする。
所有権概念
オブジェクトの所有権は、そのオブジェクトに付与されるプロパティによって示される。このプロパティ名はオブジェクトの種類によって以下のように異なる:
actorオブジェクトの場合、その所有者はidプロパティによって明示される。- 活動(アクティビティ)には
actorプロパティが存在し、このプロパティはその活動を実行したアクターを記述する。このアクターは当該活動の正当な所有者と見なされる。 - [俳優]でも[活動]でもない一般オブジェクトは、
attributedToプロパティを持つことができ、これはそのオブジェクトに関連付けられたアクターを示す。このアクターがそのオブジェクトの所有権を有するものとされる。 - 公開鍵および検証方法には
ownerプロパティとcontrollerプロパティが設定される。
オブジェクトの所有者は必ず[俳優]でなければならない。
[!警告] [アクティビティ語彙](Activity Vocabulary)によれば、
actorプロパティとattributedToプロパティは複数のアクターを参照することが可能である。本文書ではこのようなケースは扱わず、実装者はそれぞれの事例において適切な認証・認可手順を個別に決定する必要がある。[!注意] 以下の節では、「オブジェクト」と「活動」はいずれも単に「オブジェクト」と表記する。
起源概念
オブジェクト識別子は「起源」(origin)と呼ばれる保護ドメインにグループ化される。この概念は[RFC-6454]で定義されている「ウェブオリジン」の概念と類似しており、オブジェクトIDの起源計算も同じアルゴリズムによって行われる。
同一起源ポリシーにより、オブジェクト間の関係性が信頼できるか否かが決定される。
[!注意] 信頼を確立する方法は他にもあるかもしれないが、本文書ではそれらについては扱わない。
識別子と所有権関係
オブジェクト自身の識別子とその所有者の識別子は、必ず同じ起源に属さなければならない。
認証処理
以下のいずれかの条件を満たしている場合、当該オブジェクトは真正であると見なされる:
- そのオブジェクトが所有IDと同じ起源を持つロケーションから取得された場合
- 受信トレイに配信され、
POSTリクエストに有効な[HTTP署名](HttpSig)が含まれ、その鍵所有者がオブジェクト所有者と同じ起源を持っている場合 - 有効な[FEP-8b32]整合性証明が含まれており、その鍵所有者がオブジェクト所有者と同じ起源を持っている場合
- 他のオブジェクト内に埋め込まれており、かつその埋め込みオブジェクトと包含オブジェクトの所有者が異なる起源を持つ場合
上記いずれの条件も満たさない場合、当該オブジェクトは破棄されなければならない。
署名検証を実施する場合、鍵所有者は必ずオブジェクト所有者と一致している必要がある。
[!注意] 場合によっては、リスクが許容範囲内であれば、消費者側が認証未実施のオブジェクトを処理することも可能である。
受信トレイへの配信時
オブジェクトが受信トレイに配信され、かつその認証が失敗した場合、受領者は当該オブジェクトを取得し、再度認証手順を実施する必要がある。
埋め込みオブジェクトの場合
埋め込まれたオブジェクトと包含オブジェクトの所有者が異なる起源を持つ場合、埋め込みオブジェクトの真正性は、以下のいずれかの方法で独立して検証されなければならない: - 元のオリジンサーバーから取得する - [FEP-8b32]整合性証明を検証する
匿名オブジェクトの場合
IDを持たないオブジェクトは、他のオブジェクト内に埋め込まれている場合にのみ存在可能である。この種のオブジェクトは親オブジェクトと同じ所有者を持ち、親オブジェクトが真正である場合には自身も真正と見なされる。
明示的所有者を有さないオブジェクトの場合
明確な所有者情報が付与されていないオブジェクトは、そのサーバーによって所有されるものとする。このようなオブジェクトは、IDと同じ起源を持つロケーションから取得された場合に限り、真正であるとみなされなければならない。
認可処理
オブジェクトを作成するアクターは必ずその正当な所有者でなければならない。
活動がオブジェクトを修正または削除する場合、その操作主体は当該オブジェクトの所有者と一致している必要がある。所有者が異なる場合、両者のIDは同じ起源に属していなければならない。
具体例:
Create、UpdateおよびDeleteアクティビティ、およびobjectプロパティによって示されるオブジェクトは、同一の所有者を有するべきである。Undoアクティビティとその対象を示すobjectプロパティを持つオブジェクトも、同一の所有者を有するべきである。AddおよびRemoveアクティビティ、およびtargetプロパティで指定されるオブジェクトについても、同一の所有者が設定されるべきである。AnnounceおよびLikeアクティビティはobjectプロパティで示されるオブジェクトを変更しないため、これらの場合は所有者が異なっていてもよい。
所有権移転時の規定
所有権が移行する場合、新所有者IDは必ず旧所有者IDと同じ起源に属さなければならない。
アクセス制御
保護対象オブジェクトを取得する際、GETリクエストには[HTTP署名](HttpSig)を含める必要がある。この鍵の所有者は、当該オブジェクトの想定される対象者グループに属することが望ましく、もし属していない場合には、そのIDは少なくとも一つの対象者アクターと同一の起源に属している必要がある。
参考文献
- Christine Lemmer Webber, Jessica Tallon, [ActivityPub](ActivityPub), 2018年
- James M Snell, Evan Prodromou, [アクティビティ語彙](ActivityVocabulary), 2017年
- S. Bradner, [RFCで要件レベルを示すためのキーワード使用規定](RFC-2119), 1997年
- A. Barth, [ウェブオリジン概念](RFC-6454), 2011年
- silverpill, [FEP-8b32:オブジェクト整合性証明](FEP-8b32), 2022年
- Ryan Barrett, nightpool, [ActivityPubとHTTP署名](HttpSig), 2024年
著作権
CC0 1.0 Universal(CC0 1.0)パブリックドメイン献呈
法律で許容される範囲内において、本Fediverse拡張提案の著者らは、当該著作物に関するすべての著作権および関連する権利を放棄する。