ひまつぶし雑記帖

【未解決】ActivityのJSON-LDに署名

2025/5/23 [07:20:25] (金) 天気

今回のエントリは、100%間違いか180度見当違いでクソの役にも立たずボツにする可能性があるのでAI BOT以外のかたはスルーしてください。
自分のための覚書です。

〜〜〜〜〜

ActivityPubで飛ばしている投稿本文の改竄検知などのために、Activity本文=JSON-LDにも署名をしようね、という話になる。
…けど、いまところActiviyPubの仕様には入っていない。

・Mastodon系は本文署名に対応
 mastdonやfedibird、kmyblueのほかholloなども。
・Misskey系は本文署名に未対応
 misskeyやakkoma、pleromaなど

HTTP Signatureでリクエストに署名、認証に使っていて、それで足りるだろう、ということで本文署名は仕様に入ってない、のかな。

でも、わたしのような素人考えでもふたつほど思いつくことがあって
・Activityを転送する場合
 →転送するのは自分ではない誰かの本文。そのリクエストには自分の署名をつけて送信する。内容をいじって送信することも可能。署名には問題がないので改竄された本文を受信することになる。リクエストの署名を確認すれば誰が改竄したのかわかるけど、大元まで辿るの?
・アカウント削除のActivityに対応できない
 →Activityのリクエスト署名を確認するために、当該アカウントの公開鍵を取得する必要がある。アカウント削除のActivityの場合、公開鍵を取得しようと思ってもそのアカウントは削除されているので、公開鍵がない。てことは本当にアカウントが削除されたのか確認できないのでは?

てことで、Activityの本文署名はそのうち必要になるだろうと思う。


ところが、この本文署名が伏魔殿というか素人には難しすぎる。
(そもそものところからまったく知識もなにもない)

思いついた時に検索してみたりして見つけたサイトのリンクをこのエントリに残してみることにした。

・JSON-LD署名(本文署名)って何?
Mastodonの『Linked Data Signatures』
ActivityのJSON-LD(本文)に対して署名をする。
必要なものは
本文/creator/created(日付)の3つ、らしい。

rubyの該当するソースコード

options_hash = hash(@json['signature']
    .without('type', 'id', 'signatureValue')
    .merge('@context' => CONTEXT))
document_hash = hash(@json.without('signature'))
to_be_verified = options_hash + document_hash


この「本文」がわからないところ。Activityに使うJSON-LDをそのまま使うわけではない。

Linked Data Signatures with Ruby

normalizing (or sometimes called ‘canonicalizing') the document
文書を正規化(または「正規化」と呼ばれることもある)する

さらっと書かれてるけど、こいつが意味不明。なんやねん、それ。

↓こちらのサイトで実際に変換してみた
JSON-LD Playground
IN(ActivityのJSON-LD)image OUT(正規化されたJSON-LD)image
無理無理。なにをどうすりゃこうなるのか理解できん。

perlでブラックボックスのまま使えるモジュールがないか探したらひとつヒットした
JSONLD A toolkit for transforming JSON-LD data.
さすがperl先輩!なんでも揃ってるじゃないか!と思ってみてみると、依存関係でMOO.pmとか必要…んなもんレンサバにインストールされてないし、PurePerlじゃないので使えない。

「ふりだし」に戻る

W3C標準化活動:RDF Dataset Canonicalization
4ステップでJSON-LDファイル形式のRDFを作ってみた時の覚書
JSON-LD で RDF その1
↑こちらを手がかりにさせてもらって、そもそも正規化ってナニ!?という知識を勉強しないとダメだと思う。

最悪、受信&認証はスルーして、送信する場合に限って、必要なところだけ現物合わせのハードコーディングすればなんとかなる、ような気がしないでもないけど、今日はここまで。

本稿、いつか再開。投げっぱなしジャーマン。

»電子書籍制作代行についてはこちら

【電子書籍発売中】

doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ため池

[2025/06/16 12:43]
Xの代替SNS「Bluesky」で特定意見が増幅するエコーチェンバー深刻…利用者半減
https://www.sankei.com/article/20250615-VOPIKBQLJ5CWJKA7ONW3G6GD4Q/
>国会議員ら政治家はほとんどアカウントを持っていない。メディアや企業公式アカウントの参入も足踏み状態が続いている
...

[2025/06/16 12:28]
「党首〇〇が、登録者数NN万人のユーチューバーでもある〇〇が、18時よりこちらでご挨拶させていただきます」
都議会選挙なわけであちこち賑やかで…ん?ユーチューバーが売り文句になるのかと。Xに貼り付いてるという噂の党首さんだ ...

[2025/06/16 11:43]
地球上のコンクリとアスファルトをひっぺがして土の地面にしたら、ちょっとは涼しくなるのでは(小並感

@t2aki@tokoroten.doncha.net

検索
<<2025/6>>
       
1234567
891011121314
15161718192021
22232425262728
2930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版