2017-04-15

そろそろマストドンについて語っておくか

世間ではマストドンが流行っている。結論から言うとマストドンは思想的にも設計的にも失敗しているのでお祭りのように一時の話題になった後、急速に忘れ去られる運命にある。

マストドンを語るには、まずマストドンが実装しているプロトコルであるOStatusについて説明する必要がある。これはもともと、StatusNetというソフトウェアが提唱したプロトコルで、Twitterようなマイクロブログの更新通知のためのプロトコルだ。StatusNetは今は名前を変えてGNU Socialとして自由ソフトウェア財団の傘下になっている。

マストドンはいうなればGNU Socialの互換実装だ。その基本的な思想や設計はGNU Socialと同じだ。どちらも現在の大手ソーシャルネットワークサービスに共通の問題に対処しようとしている。

問題とは何か。権力の一極集中である。TwitterにしろFacebookにしろGoogle+にしろ、そして現在ブログの文章を主にホストしているBloggerやGitHubも、筆者より強い権限を持っている。もしこの文章の内容が、彼らの気に食わないものである場合、彼らの一存のよりこのブログは削除、改変、監視といった検閲を受ける。これはTwitterやGoogleが技術的にサーバーを管理しているために生じる問題だ。

この問題に対処するにはどうすればいいのか。我々全員がサーバーを運営できるようになればいい。インターネットの当初の目的は、全員がサーバーを運営できるようになることだった。残念ながら、ハードウェア資源の制約、IPv4アドレスの枯渇、NAT、不思議な日本国内の法律(プロクシーサーバーを運営する出稼ぎ中国人を日本国政府が都合よく別件逮捕するのに使われている通信事業者法)により、我々は自由にサーバーを運営できるようにはなっていない。しかし、少なくともサーバーの実装であるソフトウェアを提供し、サーバーの設置をかんたんにしてはどうか。

GNU Socialやマストドンはこのような思想で設計された。Twitter社の方針が気に入らないのであれば、別のサーバーに移住すればよい。どのサーバーも気に入らないのであれば、自分でサーバーを立ち上げればよい。

思想としては悪くはないのだが、技術的にはあまりよろしくない。GNU Socialの前身StatusNetは2010年から開発が始まっているが、一向に主流とならない。主流となっていないソフトウェアには主流になれない問題があるのだから、その互換実装を作っても主流となるわけがない。では一体何が問題なのか。

サーバーの設置は自由なソフトウェア実装が存在するだけではだめで、十分な性能を持ったコンピューターと十分なネットワーク帯域が必要になる。GNU SocialはPHPで実装されているし、マストドンはRuby on Railsで実装されている。実行には普通にWebサーバーを運営するのと同じだけの煩わしさがある。

これだけサーバーの実行が面倒だと、結局、既存のサーバーを利用するものが大半だろう。その結果、どこかの学生が1個人が運営している怪しげなサーバーに人が集中する。これはとても問題だ。

信用の話をしよう。Twitter社と一個の人間、どちらが信用できるだろうか。これは圧倒的にTwitter社である。何故かというと、邪悪に至るまでの障害の多さによる。

一個の人間が運営するサーバーで邪悪を為すのは簡単だ。一個の人間が邪悪になるだけでよい。一方、Twitter社は法人格として登録をしており、税金の支払いのために収支を国家に報告する必要がある。Twitter社には現在3000人以上の被雇用者がいる。Twitter社が邪悪をなして、それが露見しないようにするのはとても難しい。Twitter社内の一個の人間がなした邪悪は、速やかに発覚する。Twitter社が社をあげて邪悪をなそうとした場合、3000人以上いる社員のうちの少なくとも数十人から数百人はその邪悪が為されていることを知るだろう。そのうち、一人でも正義感あふれる人間がいて公に邪悪を暴露した場合、邪悪が露見する。

したがって、一個の人間によって管理されたサーバーより、何百人何千人もの人間が関わる法人の方が邪悪に至るまでの障害が多いという点で、信用できるのだ。

事実、マストドンの初期の主流サーバーでは検閲が行われている。どのような検閲かと言うと、ドイツやフランスの法律の法律に違反しないように、ナチ党のシンボルであるハーケンクロイツ、ホロコーストの否定といった内容が検閲されていた。マストドンはむしろ検閲をやりやすくするプラットフォームであると言える。権力を一個の人間に委ねると、その人間の裁量で検閲が行われるわけだ。もちろん、これは効率のいいハラスメント対策にもなるという主張もあるだろうが、それはつまり独裁政権は一人の独裁者の判断だけで政治が進むので効率的というのと同じだ。たしかに効率的だが、失敗に至る道も効率的にたどることができる。かの毛沢東も国力を増そうと大躍進政策を行い、かのポル・ポトも子供によりよい教育を施そうと子供を家庭から取り上げて国家が管理する完璧な教育を施そうとした。かのルーズベルトとトルーマンは日本に降伏させて日本の民間人を守るために日本を無差別爆撃し核爆弾を二回投下し、日本の民間人の虐殺に貢献した。地獄への道は善意で舗装されているというわけだ。

一個の人間がサーバーを管理する場合に憂うべきことは単に恣意的な検閲や改変だけではない。大半の人間はパスワードを再利用するという問題だ。

xkcd: Password Reuse

なんか適当に便利な利用に登録が必要なWebサービス作ったらユーザーIDとパスの組み合わせが大量に手に入るじゃん。やったね。さあ邪悪を行おうぜ。でもなにする?

そして、日本のマストドンのサーバーで注目を集めてユーザーの急激な増加を得た管理者が、某クラウドベンダーからホスティングを促されたり、別の某クラウドメンバーでホスティングしようと動いているなどという話をみるにつけ、もはや悪いとこ取りの様相を呈している。一個の人間が管理する上に、インフラは自分で所有していない。

マストドンとGNU Socialは残念ながら設計的に間違っている。結局、やっていることはTwitter風サーバーのソフトウェア実装を提供したというだけで、解決しようとした問題は何一つとして解決していないばかりか、大半のコンピューターリテラシーの低い者にとっては悪い結果になるだろう。

では、本当に技術的に正しい設計とは何か。まずすべての参加者はサーバーでもありクライアントでもある、完全にP2Pメッシュネットワークを構築し、その上にマイクロブログサービスを実装すべきである。自分のデータは全てローカルに保持する。

問題は、これは15年前、P2P技術が夢の技術のように叫ばれていた時代に試みられたことだ。あの当時は様々なP2Pメッシュネットワーク上に構築されたチャット、掲示板、ブログ、Webページ、ファイル共有などの実装が乱立していた。その実装はどれもすべての参加者はコンピューターの性能やネットワーク帯域を別にすれば平等であり、全員がローカルで同じソフトウェアを実行する作りであった。

そのような状況ですら、当時も今と同じ問題を抱えていた。ローカルでそのようなソフトウェアを実装するのは大変にコストがかかるので、大半のものは他人が実行しているサーバーにアクセスして、そのサーバー経由で参加していた。残念ながら当時のP2Pメッシュネットワークによる全員が平等なネットワークの構築は失敗した。当時の実装の殆どは秘密で不自由なプロトコルやソフトウェア実装で非効率なため打ち捨てられ、残ったのは、BitTorrentプロトコルのような詳細が公開されていて当時のソフトウェア実装も自由で使いやすかったものだ。BitTorrentプロトコルは大容量データの配信に都合がいいもので、これは今も自由なOSのISOイメージの配布とか、ゲームやサーバーのアップデートパッチの全コンピューターへの効率的な配布といった健全でまともな用途にも使われている。その他の当時の有象無象のP2Pプロトコルは、筆者の知る限り絶滅した。

筆者が思うに、真に自由な通信手段のためには、物理層からのP2Pメッシュネットワークの構築が必須だ。例えばコンピューターが無線通信装置を搭載して近隣のコンピューターと通信したり、ストレージをスニーカーを履いた足で運んだりして、物理層からのP2Pメッシュネットワークを構築し、その上にNamecoinのようなP2Pかつ計算資源の多いものが正しいという名前解決の仕組みを導入し、公開鍵署名によって特定の秘密鍵にアクセスできるものによって発信されたデータだと証明できる通信でチャットや掲示板やWebページやメールの仕組みを実装し、すべてのネットワーク参加者は平等である仕組みがほしいが、これとて最終的には計算資源とネットワーク帯域と電力の強いものが正しい弱肉強食の世界になることが予想されるので、世の中は難しい。

とりあえずの対策として、筆者はこのブログの内容をgitで管理している。そのgitレポジトリはGitHubでもホストしていて、GitHub Pagesでも閲覧できる。こうすることによって、BloggerとGitHubが同時に検閲された場合でもローカルに全て残っているので、私はデータを失わない。外部のホスティングサービスがすべて検閲され、かつ、私の所有するストレージが全て強奪、破壊されたときのために、今、誰でも簡単に"git clone git@github.com:EzoeRyou/blog.git"というコマンド一発で複製できるようにしておくのも重要だ。gitレポジトリの複製が存在する限り、私は最新のコミットの40文字のハッシュ値を覚えておけば改変されていないことが保証できる。

22 comments:

Anonymous said...

例えばDebianのFTP Masterがわずか数人で運営されていることなどは問題にならないのだろうか、
たとえばここが邪悪を試みんとするメンバーで占拠されたとき、ソースコードと異なる邪悪な挙動をするバイナリを混ぜ込むことなどができるが。

Anonymous said...

また多数の人間が所属する組織によって運営されているのであれば邪悪をなすのが難しいというのであれば、
百度がスパイウェア入りの一見有用に見えるソフトウェアを配布していることや、スノーデン以外にNSAなどの
諜報機関のなす邪悪についてリークがおこらないことを説明するのは少し苦しいのでは。
多数の人間が関わっていれば邪悪をなしにくいはず、というのを成立させるにはその構成員がいくつかの良くないことを邪悪だと認識している必要がある。実際プロプライエタリソフトウェアを配る企業は山ほどある。

Anonymous said...

↑邪悪をなしてる事例を出してもこのブログの反例にはならんぞバーカ

Anonymous said...

素晴らしい文章です
ドワンゴが手のひら返してMastodonかOStatusに参入したとき引用させていただきます

Anonymous said...

組織が邪悪な事例を出して何が言いたいのかわからないが、それは組織であれ個人であれ同じことだろうし、組織の方が邪悪をなしにくいということに変わりはない。
本当に何が言いたいんだ。

Anonymous said...

Winny掲示板は早すぎたんや…

Anonymous said...

個人ブログのコメント欄は検閲されるから危険です
みなさんここに書き込むのは控えましょう
勝手に内容変えられますよ

ところでPixivも参入したけど今後ゲームなどのミニコミュニティはマストドンベースに移行するんだろうか
ツイッターはごちゃ混ぜだし公式掲示板は個人とのやり取りには向かないし

IKeJI said...

引っ越せるという事自体が邪悪になる足枷になるのではないか。
もし、あるノードが邪悪な事をした場合、ユーザーは他のノードに移動できる。
その場合でもフォローしてる人のリストは引き継げる。

ノード運営者がたくさんのユーザーを持ちたいというモチベーションを持っている場合、
ユーザーが離れる可能性がプロプラなサービスより高いだけ、
邪悪になる事に対する障壁になる。

今後の課題は移動時における過去ログの移動が問題になるであろう。

Anonymous said...

結局何が問題になってるのかよくわかんねぇなぁ
検閲されたら別のところにいけばいいだけだし唯のtwitter風のサイトなだけだしデータとして残しておきたいことなんか少ないだろ
パスワード?そんなのwebサービス使う上でマストドン以外でも発生しうる話しでむしろ個人情報の売買を考えるのは企業の方が多そうだと思うのだが

Hiroyuki said...

禿げしく同意。行って、大手ポータルが
「インスタンスを提供するよ。広告入れるけどな!まさに商売」。
Twitterを中央集権とゆうけれど、ネットからみればマイクロブログの親分なだけだし。
移民先には我らが tumblr が (*゚▽゚*)

Anonymous said...

無料のメールアドレスとそれに紐付いたパスワード、そして大量のゴミ情報を手に入れて
個人がいったいどんな邪悪をなすのか
とても気になるところですね

Hiroyuki said...

そんなゴミ情報だから、あなたが邪推したい邪悪なことなんて、
たいしてできないんじゃないでしょうか。でもとても気になっちゃうんですね。

中の人を貶したい理由は何ですか?自分の老婆心を言いたいだけじゃん。

# 条件反射!

Anonymous said...

Boruto: Naruto Next Generations Episode 01 Subtitle Indonesia
http://games-android-download-free.blogspot.co.id/2017/04/1-boruto-naruto-next-generations.html

Boruto: Naruto Next Generations Episode 02 Subtitle Indonesia
http://games-android-download-free.blogspot.co.id/2017/04/2-boruto-naruto-next-generations.html

Ejirou Suzu said...

時間を追って安定的に運営されてるインスタンスに収斂されていく。それには資金力も知名度もある法人か有利。それで結局ここに書かれた問題点はクリアされるのでは。

Anonymous said...

連合タイムラインとか面白いけど結局ポリコレで別サーバーの人間っていうか開発者ですら攻撃してくるんだからなんかおかしいんだよなぁ…

Anonymous said...

まぁ安定的に運営されているインスタンス、それは結局Twitterだったということになる可能性は高いですよね

Anonymous said...

考えてみれば「邪悪さ」がなくて「自由」なSNS作るのって難しいなぁ…
結局「自由」さを売って「邪悪さ」を排除してもらうか
「邪悪さ」を覚悟で「自由」を勝ち取るのかのどちらかになってしまうなぁ

Anonymous said...

P2Pや安全性について言いたいことは分かりますが、単なるOSS版Twitterとして見れば悪くないでしょう。
データのインポート/エクスポートができるのでベンダーロックインされない訳ですし、
OSSなので「フリーソフトウェアの定義」における「プログラムを改良する自由」もあります。

現在赤字のTwitterの予備が必要なのは確かでしょうし、
Pixivのような信頼性のある(?)企業が複数参入して安定して運営してくれれば、現状よりもマシでしょう。

なお、パスワードの問題はOAuthを採用すれば解決するはず。
改竄・検閲の問題は、クライアントソフトウェアで投稿先の多重化を行えば良いはず。
どちらも技術的に解決できる気がします。

Anonymous said...

「多くの人間が所属する組織が運営していると邪悪を行い難い」と、
「多くの人間が所属する組織が運営している場合は邪悪を行うことができない」のとは違う。
単に邪悪を為すのに障害となる自浄作用が大組織より小組織(あるいは個人)のほうが
少ない・弱いですよね、という話ではないのか。百度がスパイウエア入りのFEPを配布しているのは
「大組織でも邪悪を為せる」証明かもしれないが、小組織・個人による自浄作用は
大組織と同等である(あるいは優れている)とする根拠になりえない、と思う。

>時間を追って安定的に運営されてるインスタンスに収斂されていく。それには資金力も知名度もある
>法人か有利。それで結局ここに書かれた問題点はクリアされるのでは。

第二のTwitter社が生まれることが問題の解決になるのなら、おそらくおっしゃる通りかと。


フリーメールのアカウントとパスワードに価値がないという方は
「パスワード 使い回し」で検索してみるといいのではないか。
邪悪を為そうとする個人・団体が極めて容易に「他のシステムで
使えるかもしれないパスワード」の収集マシンを「安全なサーバと
見分けが付かないように」設置できる、これだけでも十分恐ろしいと思うのだが。


Anonymous said...

>素晴らしい文章です
>ドワンゴが手のひら返してMastodonかOStatusに参入したとき引用させていただきます

ドワンゴがMastodon始めたぞ!!
江添先生のありがたい言葉を引用したbotを作って潰してあげよう!!
https://friends.nico/about

Anonymous said...

>素晴らしい文章です
>ドワンゴが手のひら返してMastodonかOStatusに参入したとき引用させていただきます

予言というよりは必然だからなあ
ニンテンドウが参加したら驚くけど

kurema said...

全体的に納得できたものの、いくつか反論。

>やっていることはTwitter風サーバーのソフトウェア実装を提供した
サーバー間通信の実装というのは無視できない。
辛うじて生き残っている共通規格のEメールと、サービス限定のメッセージングサービスを比べればわかる。
自由という点で前者の方が遥かにましで、収益化が困難で独占もできないプロトコルを広めた功績は大変大きい。
先人がこういう技術的には腐っていて、エンドツーエンドの暗号化がろくに普及してないにしても。

>検閲が云々
これは日本なら2chのモデルが参考になる。
2chは勇気ある個人が全部を引き受けて、犯罪予告など少数を除いた全秘密を隠し通したおかげで、自由な言論空間が保たれている。
サーバー管理者が変わってもなぜかそれは保たれていて、それはサービスの存在意義がそこにあるからだ。
ここで必要なのは勇気ある個人とサーバー負荷の軽さだけ。
あらゆるオープンソースのサーバーソフトはその実現を促す効果があり、これも例外ではない。
さらに!マストドンの場合には一つのサーバー運用者がやる気を出せばその発言が全サーバーに普及しうる(遮断もできるが)という点が大きい。

>ローカルでそのようなソフトウェア(P2P)を実装するのは大変にコストがかかる
ソフトウェア実装の大変さが最大の課題ではないと思う。
というか、P2Pと名乗る限りは実装したものは各ユーザーがローカルで実行できないとおかしい。
実際の問題はP2Pの使い勝手の悪さにある。
コンピューターが起動していないとアクセスできない、スマホとPCの使い分けができない、IPアドレスがさらされるのは避けたい。
大規模でユーザーが特に有用とするファイル(BitTorrentでやり取りされるような)なら有用だが、せいぜい併せて数メガバイト程度のメッセージのやり取りにはひどく不向きなのは明らかだ。

>公開鍵署名によって特定の秘密鍵にアクセスできるものによって発信されたデータだと証明できる通信でチャットや掲示板やWebページやメールの仕組みを実装し
正直、これが正解だろう。
ブラウザの初回起動時にブラウザの秘密鍵と個人の秘密鍵を作成する。
初回だけブラウザ間で個人鍵をブラウザ鍵を用いて同期する。通信経路はなんでもいい。
個人や少数のやり取りは個人の公開鍵で暗号化する。これで検閲も通信の秘密も保たれる。
認証は個人の秘密鍵による署名で行う。これでパスワード管理と流出を防げる。
もちろん、個人がアップロードするデータは個人の秘密鍵でデフォルトで暗号化している。
まぁ、ローカルに発言記録を置かない限り検閲の対策にはなりえないから若干今回の話題から外れるが。

これではだめなのか。
確かに万人がやるには初回の鍵生成・鍵同期の手間がかかるが、二段階認証やパスワードの手間よりはるかに楽だろう。
それができないのは現代のウェブ系のプロトコルとかの設計と、収益化が難しくなるという点だけしかない。

暗号化・署名していればクラウドも閉じたやり取りも怖くはない。
現にクラウドサーバーに暗号化した児童ポルノを公開したとして、誰も検閲できないし、問題視もされていない。
しかし金を失うような事は企業も国もやりたがらないし、現在のウェブは大企業がかなり支配しているからどうしようもないわけだ。