vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Тут в связи с приобретением ЖЖ СУПом пошла новая волна обсуждений того, как бы заменить ЖЖ на что-нибудь неподконтольное ни одной коммерческой структуре. Волна эта далеко не первая (см мой журнал по тэгу distributed-blog). Предыдущие как-то к созданию чего-либо реального не привели. Ну кроме lj.rossia.org, который представляет себе всего лишь площадку, подконтрольную ДРУГОЙ структуре.

Тут я еще немножко подумал и предлагаю структуру сети, которая обеспечивает примерно функциональность ЖЖ в смысле френдования, прав доступа подзамочных постов, скрытия комментариев etc, но при этом является распределенной. Причем, чем более популярен журнал, тем больше его копий существует в сети.


Сеть взаимосвязанных блогов состоит из узлов двух типов - узлов публикации и узлов чтения. Узел публикации - это обычный web-сервер, более-менее постоянно доступный в сети. который раздает блог и френдленту некоторого пользователя (пользователей). При этом копирует к себе все посты и комментарии к постам друзей этого пользователя. Соответственно, читать некоторый журнал можно через сервер любого из его френдов. Там же можно комментировать, и можно даже постить. Посты и комментарии будут реплицироваться по всем серверам, несущим данный блог. Поскольку копия foaf-файла у данного сервера есть, он всех их знает.

Узел чтения - это программа, работающая на локальном компьютере пользователя. Она либо встроена в браузер, либо работает прокси между браузером и интернетом. Выкачивая странцу блога, поста или френдленты она выполняет необходимые криптографические операции - проверяет подписи под постами и комментами, расшифровывает подзамочные посты и скрытые комментарии (если у данного пользователя есть на них право).

При постинге она подписывает текст поста или комментария, или, если необходимо, его шифрует.

На узлах публикации все открытые посты и комментарии хранится в виде xhtml-файлов, отдельные фрагменты которых подписаны в соответствии со спецификацией xml-dsig. То есть для того чтобы прочитать их, ничего кроме браузера не надо. Если совсем не предпринимать никаких усилий, то каждый пост/комментарий будет сопровождаться строчкой base64-символов, представляющих электронную подпись. Если чуточку не полениться, её можно скрыть средствами CSS.

Посты, предназначенные для узкого круга ограниченных людей хранятся в виде PGP ASCII-armored данных, т.е. тоже base64, зашифрованных для всех получателей (ведь у каждого участника системы, имеющего узел чтения, есть ключевая пара, открытую часть которой могут получить остальные участники). Когда это читается через узел чтения, оно автоматически (Прозрачно для пользователя, за исключением запроса passphrase один раз за сеанс) расшифровывается и показывается как было.

Пользователи системы делятся на три категории - свои, чужие и анонимы. Свои - это те, у кого есть узел чтения и ключевая пара.
Чужие - это те, кто постит комментарии, авторизуясь по OpenID с OpenID-провайдеров, не входящих в систему.
Их пост отправляется браузером на узел публикации (ведь узла чтения у них нет) и подписывается ключом этого узла. Эта подпись удостоверяет, что такой-то узел такого-то числа во столько-то аутентифицировал автора данного комментария по OpenID как такого-то. Ну, и также то, что никто другой с тех пор текста этого комментария не менял.

Аналогичным образом подписываются анонимные комментарии.

Если согласно настройкам блога или конкретной записи чужой или анонимный комментарий должен быть скрыт, он шифруется узлом публикации только для хозяина блога. То же самое делается если узел чтения, который так же, как и узел публикации видел эти настройки, не зашифровал комментарий сам.

С точки зрения узла публикации, все пользователи системы (т.е. свои) равны, но некоторые равнее других. Равнее других, естественно, те, которые платят за хостинг данного узла публикации. Они имеют единственное преимущество перед всеми остальными - если они кого-то добавляют себе во френды, узел публикации, узнав об этом (получив то-ли с узла чтения то-ли с другого узла публикации обновления foaf-файла этого пользователя, естественно, им подписанное) тут же начинает кэшировать блог нового френда.


В норме, конечно, каждый юзер читает свою френдленту через свой узел публикации. Но если вдруг что случилось (злые электрики вырубили свет в серверной, бульдозерист переехал кабель или кровавая гэбня конфисковала сервер) юзер может попытаться прочитать свою френдленту через любой другой узел публикации. Благо локальная копия foaf-файла у него в узле чтения есть, и тот может автоматически попытаться выяснить, какой из имеющихся в онлайне узлов публикации содержит копии наибольшего количества блогов его френдов. Узел чтения может даже попытаться автоматически собрать полную френдленту из данных с нескольких узлов публикации.

Узлы публикации синхронизируются между собой по протоколу, представляющему собой нечто среднее между RSS и NNTP - публикуется feed новых поступлений (как постов, так и комментариев, в том числе отредактированных постов, раскрытых владельцем блога комментариев etc). Увидев в feed-е идентификатор объекта, который у него отсутствует или устарел, другой узел публикации идет и забирает этот объект. По обычному HTTP.

Идентификаторы постов должны включать в себя
1. Идентификатор блога (url или e-mail-образныай адрес владельца)
2. Идентификатор (hostname) узла, где пост впервые попал в систему (узел чтения может ставить свой собственный идентификатор)
3. Некий уникальный номер внутри данного узла для данного автора.

Идентификтаор комментария должен включать в себя
1. Идентификатор поста.
2. Идентификатор узла,
3. Уникальный номер
Кроме того, в комментарии должен так или иначе присутствовтаь идентификатор комментария, ответом на который он является.

В фиде указываются идентификаторы объектов и даты выработки подписи под ними. Что автоматически позволяет определить устаревания объектов.

В качестве PKI используется pgp-шная PKI, так как она
1. Распределенная, не требует выделенных удостоверяющих центров
2. Работает давно и хорошо
3. Документирована на понятном для простых пользователю языке. Точно помню, что в комплекте pgp 2.6.3 была дока для чайников. На сайте gnupg я её сейчас не нашел, ну в крайнем случае из старых архивов выкопаем.

P.S. Следует помнить, что электронные подписи обладают свойством non-repudiation. Поэтому храните свой секретный ключ от узла чтения так, чтобы он не попал в руки кровавой гэбне. А то он послужит доказательством что именно вы написали то, что им подписано. От всего остального можно отрекаться. Даже наличие некоторого блога на вашем сервере не означает что автор его вы - мало ли, вы просто его почитать решили, а сервер взял и выкачал весь.

Date: 2007-12-04 09:20 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Все это круто. Но есть ощущение, что "однокликовую юзабилити для блондинок" в такой модели настроить будет непросто. А без этого любая социальная сеть мертва.

Date: 2007-12-04 09:33 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
А кто захочет хостить у себя толпу блондинок? а автохоститься они не справятся, боюсь

Date: 2007-12-04 09:40 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Задача подобных сетей - максимально быстро нагнать первую волну "массовки". Иначе сеть надолго (навсегда) останется невостребованной. Как это будет выглядеть в предлагаемой модели?

Date: 2007-12-04 09:49 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Кстати, и как быть насчет анонимности? В ЖЖ можно анонимно зайти через tor - и тогда сложно доказать, что данный камент был сделан тобой. В предлагаемой модели как-то не вижу места для анонимных комментаторов...

Date: 2007-12-04 10:01 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
> Я не вижу места для анонимных комментаторов в блогосфере вообще.
Народу нужна такая иллюзия. Вопрос псхологии. И дело не только в репутации. Опять же вопрос о паранойе на тему кровавой гебни и пр... В принципе, достаточно найти на компе человека приватные ключи для доказательства того, что он имеет отношение к соотв. каментам.

Date: 2007-12-04 10:57 am (UTC)
From: [identity profile] amarao-san.livejournal.com
Ну вот ты считаешь, что не нужен. Я считаю наоборот. А софт это должен поддерживать в обе стороны. В принципе, я даже могу себе представить полностью анонимное комьюнити (а-ля имиджборд).

Date: 2007-12-09 06:57 pm (UTC)
From: [identity profile] kormitigrov.livejournal.com
Я тоже обеими руками за защищенную псевдонимность, а не за анонимность. В принципе, можно, наверное, сделать опциональное разрешение хозяином анонимных комментариев на своем узле, можно "понизить" анонимные комментарии в статусе (например, они не участвуют в репликации), много что можно :)

Date: 2007-12-04 12:01 pm (UTC)
From: [identity profile] besm6.livejournal.com
А какие проблемы с анонимностью?

Date: 2007-12-04 12:02 pm (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Если могут быть каменты без подписи - тогда никакой проблемы. А если любой камент должен быть подписан - тогда хозяину приватного ключа будет сложно отпереться.

Date: 2007-12-04 01:16 pm (UTC)
From: [identity profile] besm6.livejournal.com
Могут, хрен ли им не быть. Вот только хозяин блога может запретить их нах.

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2007-12-04 02:00 pm (UTC) - Expand

(no subject)

From: [identity profile] besm6.livejournal.com - Date: 2007-12-04 02:29 pm (UTC) - Expand

Date: 2007-12-04 11:23 am (UTC)
From: [identity profile] ylevdik.livejournal.com
1. Зачем делать механизм узлов публикации видимым извне?
2. Зачем вводить идею "распределённого сервера" вообще? (то есть зачем делить на публикаторов и читателей?)

Date: 2007-12-04 11:53 am (UTC)
From: [identity profile] ylevdik.livejournal.com
Понятно. Весьма даже резонно. Согласен. Но в таком случае узлом публикации может быть отдельный самостоятельный "демон", живущий на уже существующем хостинге, который [хостинг] не ограничивает исходящий траффик.
Знаете, имея дома безлимитку, как-то забываешь о том, что хостеры всё ещё устанавливают верхний предел исходящего с сайта к юзеру траффика, и даже ранжируют тарифные планы в соответствие с этими ограничениями...

...возникает странная идея о некотором автономном девайсе для имеющих дома безлимитку, который можно подключить между интернет-кабелем и настольным компьютером: и этот девайс никогда не будет выключаться, и будет локально хостить узел публикации, потому что он будет снабжён винчестером гигабайт на 200 минимум...
http://www.lantronix.com/device-networking/embedded-device-servers/micro.html
http://www.springerlink.com/content/952wu1y36wcgp7mj/
http://www.elektor.com/magazines/2004/july/micro-webserver.57012.lynkx
и ещё много подобного в Сети...

Date: 2007-12-04 11:46 am (UTC)
From: [identity profile] slobin.livejournal.com
Насчёт блондинок и ICQ -- ставить новую программу, которая ещё неизвестно понадобится ли, и разбираться в ней даже мне обычно лениво, а я вроде не блондинка. Реально работающим способом продвижения протокола в массы является, похоже, веб-интерфейс. У меня есть знакомая (отнюдь не блондинка, в своей профессиональной области компьютером пользуется прекрасно), которая не знала, что она говорит прозой джаббером. Для неё это был Гугль Чат, а то, что она может говорить с его помощью со мной, было для неё приятным (надеюсь ;-) сюрпризом. Правда, конкретно Гугль Чат глючен (и мы на это уже неоднократно напоролись), но сам принцип ИМХО правильный.

... Одним движением бесшумно скользящего рычага ...

Date: 2007-12-04 11:47 am (UTC)
From: [identity profile] slobin.livejournal.com
Правда, мне пока совершенно не очевидно, как сочетаются слова "веб-интерейс" и "секретный ключ".

... Das Motorrad unter dem Fenster am Sonntag Morgen ...

Date: 2007-12-04 11:49 am (UTC)
From: [identity profile] crazy-daemon.livejournal.com
Только через ActiveX или что-то подобное.

Date: 2007-12-04 12:07 pm (UTC)
From: [identity profile] crazy-daemon.livejournal.com
Ну если есть другие способы -- я же не против.

Date: 2007-12-06 04:18 pm (UTC)
From: [identity profile] behrk.livejournal.com
есть такое слово -- zero-knowledge web application. Идея в том, что на сервере хранятся и по сети ходят закриптованные данные, а расшифровка и работа с расшифрованными данными происходят только на стороне клиента, средствами -- ха-ха -- джаваскрипта. В отличие от серверной стороны, у клиента обычно хватает свободных циклов процессора.

Date: 2007-12-06 08:03 pm (UTC)
From: [identity profile] mds.livejournal.com
http://pajhome.org.uk/crypt/md5/
http://www.webtoolkit.info/javascript-sha1.html
http://ohdave.com/rsa/

(no subject)

From: [identity profile] mds.livejournal.com - Date: 2007-12-06 08:25 pm (UTC) - Expand

(no subject)

From: [identity profile] kormitigrov.livejournal.com - Date: 2007-12-09 06:48 pm (UTC) - Expand

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

May 2025

S M T W T F S
    1 2 3
4 56 7 8 9 10
11 12 131415 1617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 24th, 2025 11:07 pm
Powered by Dreamwidth Studios