Криптоблоги
Dec. 4th, 2007 11:33 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Тут в связи с приобретением ЖЖ СУПом пошла новая волна обсуждений того, как бы заменить ЖЖ на что-нибудь неподконтольное ни одной коммерческой структуре. Волна эта далеко не первая (см мой журнал по тэгу 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. Поэтому храните свой секретный ключ от узла чтения так, чтобы он не попал в руки кровавой гэбне. А то он послужит доказательством что именно вы написали то, что им подписано. От всего остального можно отрекаться. Даже наличие некоторого блога на вашем сервере не означает что автор его вы - мало ли, вы просто его почитать решили, а сервер взял и выкачал весь.
Тут я еще немножко подумал и предлагаю структуру сети, которая обеспечивает примерно функциональность ЖЖ в смысле френдования, прав доступа подзамочных постов, скрытия комментариев 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. Поэтому храните свой секретный ключ от узла чтения так, чтобы он не попал в руки кровавой гэбне. А то он послужит доказательством что именно вы написали то, что им подписано. От всего остального можно отрекаться. Даже наличие некоторого блога на вашем сервере не означает что автор его вы - мало ли, вы просто его почитать решили, а сервер взял и выкачал весь.
no subject
Date: 2007-12-04 09:20 am (UTC)no subject
Date: 2007-12-04 09:31 am (UTC)Единственная проблема - это как в блондинистые мозги внедрить идею децентрализованности серверной части (узлов публикации).
Но в принципе, если, приглашая человека в систему уже существующий пользователь будет предоставлять место на своем узле публикации, то, пожалуй, блондинки осилят. Это мало чем отличается от приглашений, которые когда-то были в ЖЖ и чуть ли не до сих пор есть в gmail.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-12-04 09:24 am (UTC)остальное стадо будет привычно бегать по граблям, вяло ругать кровавую гэбню и честно указывать все свои контакты в ЖЖ и Одноклассниках
no subject
Date: 2007-12-04 03:50 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2007-12-04 09:28 am (UTC)s/которую/открытый ключ которой/
Остальное верно.
no subject
Date: 2007-12-04 09:32 am (UTC)Еще лично мне сильно не хватает такой функции: чтобы я мог через такую систему оставлять реплики/посты в других блогах (и, в идеале, форумах) через OpenId _и иметь возможность их сохранять где-то у себя не копи-пастом, а автоматически_ В идеале - с уведомлением о дальшнейшей дискуссии и нн участниках.
Чтобы не быть голословным - я в принципе готов платить деньги а-ля платного аккаунта за хороший и удобный сервис, но пока в упор не вижу такого на горизонте:(
no subject
Date: 2007-12-04 09:44 am (UTC)Пользователи системы в целом - привелигированные. В отличие от пришедших с внешним OpenID, они могут быть адресатами подзамочных постов.
Как раз в данном протоколе всё сделано для того, чтобы минимизировать разницу уровня привилегий на узле. Система-то деценрализованная. Т.е. соблюдается принцип "кто платит, тот и заказывает музыку" - кто оплачивает хостинг, тот и решает копии чьих именно блогов тут будут обитать.
Что касается использования системы как OpenID-провайдера, то с этим никаких проблем до тех пор, пока твой родной узел on-line. То есть в принципе, ничто не мешает любому узлу системы, хранящему копию твоего блога, тебя авторизовывать по OpenID, но с точки зрения внешнего сервиса это будут РАЗНЫЕ OpenID, с разными URL.
Несомненно, должна поддерживаться возможность включения во френдленту внешних RSS-фидов. Которые опять же будут втягиваться на твой узел автоматически. Далее, либо тот внешний узел должен поддерживать раздачу комментариев по rss или чему-то подобному, либо у тебя на сервере должен стоять специальным модуль, который их втаскивает. Кстати, для популярных сервисов типа ЖЖ такие модули будут несомненно очень быстро написаны.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-12-04 09:36 am (UTC)no subject
Date: 2007-12-04 09:37 am (UTC)В принципе, интересно будет подумать о возможности как-то интегрировать с DNS (SRV) - например, там может храниться открытый ключ пользователя. (а может и не храниться).
no subject
Date: 2007-12-04 09:38 am (UTC)no subject
Date: 2007-12-04 09:42 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-12-04 09:44 am (UTC)но вопрос даже не в том, кто и как это сделает. вопрос в том, кто под эту техническую вобщем-то идею отожрет критичную массу медиа-аудитории.
ибо ради самой голой технической фишки пользовательская масса не двинется.
no subject
Date: 2007-12-04 09:47 am (UTC)no subject
Date: 2007-12-04 09:47 am (UTC)всему светувсей френд-ленте».Блогосфера в нынешней реализации (в виде кучи «автономных» блогов плюс кучки коллективных блогосервисов) прекрасно работает — все желающие пишут, читают и комментируют, не используя ничего странного и редкого. Хоть на Blogspot'е, хоть в отдельно стоящем WordPress'е, лишь бы был броузер. А для передачи «не особо публичной» информации народ использовал и охотно использует другие средства коммуникации — почту, IRC, разнообразные instant messenger'ы, SMS и телефонные звонки; блоги же тут совершенно не в кассу.
no subject
Date: 2007-12-04 09:57 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Обратная совместимость
Date: 2007-12-04 10:19 am (UTC)Re: Обратная совместимость
Date: 2007-12-04 10:24 am (UTC)Если речь идет о чужой системе, то комментировать, видимо, придется ходить на родной для данного блога ресурс. Хотя можно прозрачный постинг прям туда организовать.
Re: Обратная совместимость
From:Re: Обратная совместимость
From:Re: Обратная совместимость
From:no subject
Date: 2007-12-04 10:45 am (UTC)no subject
Date: 2007-12-04 11:01 am (UTC)Это специально так или таки оговорка? :)
no subject
Date: 2007-12-04 12:26 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-12-04 11:22 am (UTC)1 Узел публикации должен быть также openid провайдером для своего владельца. (я тут под владельцем имею ввиду пользователя)
2 комментарий можно автоматом отправлять во внешние "системе" блоги через openid.
3 для "блондинок" всегда можно будет сделать бесплатный/платный/... который будет уметь общаться с "системой" (или даже интегрировать в какую нибудь систему которая уже есть -- на базе wordpress иои того же ЖЖ)
no subject
Date: 2007-12-04 11:26 am (UTC)no subject
Date: 2007-12-04 11:37 am (UTC)Здравая идея.
Date: 2007-12-04 11:44 am (UTC)no subject
Date: 2007-12-04 02:14 pm (UTC)no subject
Date: 2007-12-04 02:26 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2007-12-04 03:52 pm (UTC)no subject
Date: 2007-12-04 05:52 pm (UTC)пожалуй,нет
Date: 2007-12-04 06:27 pm (UTC)NNTP - маленькая кучка специально выделенных серверов, которые (а) пытаются все делать в реальном времени (б) разговаривают лишь между собой, серверами
Здесь же речь идет о том, что большинство машин пользователей способны выполнять работу в данной сети, а не быть просто клиентами для чтения.
При скорости современных CPU и размерах дисков возможно настоящее "равный-с-равным" а не "выделенный университетом мощный сервер - с - таким же сервером"
Re: пожалуй,нет
From:no subject
Date: 2007-12-04 06:53 pm (UTC)no subject
Date: 2007-12-04 11:06 pm (UTC)Мои размышления неизменно упираются в то, что в децентрализованной системе приходится полагаться на какую-то форму цифровой подписи, по сравнению с централизованной, где происхождение постов удостоверяется неявно. При этом, PKI в её текущих формах, будь то X.509-сертификаты или PGP/GPG-ключи, просто не будет работать для большой массы людей, которые будут терять пароли от секретных ключей, и тому подобное. Причём, никакой "службы поддержки", которая могла бы вернуть им контроль над своей virtual identity уже не будет.
Добавьте сюда истечение срока действия ключей и их отзыв, и система начинает выглядеть чрезмерно сложной.
Евгений Д.
no subject
Date: 2007-12-05 06:38 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-12-05 01:49 pm (UTC)Имхо, если этим заняться, надо:
1) Сделать отдельную площадку (на уровне отдельного домена\хостинга, а не коммьюнити в жж) для обсуждения и разработки.
2) Подключить к этому Мицгола %) - у него немало здравых идей\разработок в области "гипертекстового фидонета", очень многое в том или ином виде можно взять.
3) В качестве протокола... имхо, XMPP здесь рулит. Кстати, интересно - получается, локальный клиент может быть (например, для чтения) - просто джаббер, получающий сообщения с узла? Как вариант - плагин к jabber-клиенту для этого.
no subject
Date: 2007-12-05 02:52 pm (UTC)к какому jabber-клиенту? их сотни (если не тысячи)
(no subject)
From:(no subject)
From:no subject
Date: 2007-12-06 04:35 pm (UTC)2. Думал ли ты над механизмом распределенного поиска для такой системы? Во-первых, я не верю гуглу, во-вторых, я хочу, чтобы поиск выполнялся с моими правами, а не с правами анонимного паука.
3. Я думаю, этому проекту нужно короткое хлесткое название. Типа "блог" или "гугл" или "аякс", если ты меня понимаешь...
no subject
Date: 2007-12-06 05:47 pm (UTC)Да, примерно так.
Сильно подозреваю что поиск с твоими правами тебе будет нужен только на твоей машине.
С какой это стати люди, чьи блоги у тебя не кешируются, будут давать тебе доступ к контенту ограниченного доступа. Вообще распределенный поиск это сильная идея. Я над ней думал немножко в другом контексте - при создании специализированный p2p сети по обмену книгами в fb2-формате. Она получалась ближе к блогам, чем к традиционным p2p, рассчитанным на большие файлы - каждый отдельный файл маленький, но зато их много.
Это не ко мне. Я умею только не слишком приличные названия придумывать, вроде fubar или nude (и то, и другое, естественно, аббревиатуры) Правда, вот название catdoc в свое время выдумал.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-12-09 07:26 pm (UTC)А раз большие игроки не возьмутся (а лично для меня идея эта проявилась уже несколько лет назад, и постоянно вижу ее у других людей, - но крупного решения так и нет), то единственный выход - это ждать, когда прорвет энтузиастов :). Думать можно много, это всегда приятно. А в реальности же, можно напридумывать кучу идей, а вот сил сделать что-то качественное не у всех хватает.
Тут я могу по крайней мере похвастаться тем, что свои имеющиеся силы я реализовал в проекте, который работает. Хотя бы и только для меня работает :))
Такая система изобретена несколько десятилетий назад.
Date: 2007-12-10 07:57 pm (UTC)no subject
Date: 2007-12-13 06:27 pm (UTC)Я бы, правда, кое-что предложил сделать чуть иначе:
1) Все-таки видел бы такую сеть чуть больше как организацию (с участниками и правилами), чем как набор протоколов. В частности, мне кажется целесообразным иметь в ней адресацию по идентификаторам, а не по самим ключам (как это сейчас сделано для обычных веб-адресов) - и центральный реестр таких идентификаторов. При этом реальное опознание участников делать через ключи - а реестр должен просто удостоверять, что данному имени сопоставлен данный открытый ключ. Тогда в сети можно ввести сплошную "человекопонятную" адресацию; можно заменять ключи в случае их утери - например, при условии, что замену ключа признает две трети ранее зарегистрированных френдов данного растяпы... или по предьявлении второго ключа, созданного одновременно с первым - и который используется только при общении с реестром и потому его сложнее украсть... Но главное, ИМХО, что адресация будет проще. Злоупотребления держателя реестра, ИМХО, маловероятны - особенно если (равноправных) копий реестра будет несколько.
2) ИМХО, нельзя полагаться на естественное дублирование контента через узлы публикации френдов. Оно будет работать только для свежей части ленты - а чужие архивы без необходимости у себя никто хранить не будет. Система получается уязвимой - удар по одному узлу не помешает распространению свежих порций, но может безвозвратно угробить архивы. Можно было бы сделать так: транспорт между узлами публикации организовать как многосвязный граф, в котором каждый узел связан с несколькими соседними (скажем, от десятка до трех десятков, как договорятся) - и по полиси каждый узел обязан полностью дублировать контент со всех напрямую связанных с ним узлов. Вот такую штуку разрушить будет уже очень тяжело... и положить будет практически невозможно - поскольку каждый узел принимает запросы только от своих постоянных соседей. А схему роутинга можно считать хоть на узлах, хоть на выделенных серверах - как кому удобнее. И, для полного счастья, некоторые узлы публикации могут находиться в тор-сети. Получим стопроцентную неподцензурность и абузоустойчивость.
3) Я бы постарался на первом уровне разработки протокола - абстрагироваться от структуры блогового контента (постинги, комментарии etc.); предположим, что узел публикации раздает абстрактную последовательность xml-документов, каждый из которых имеет уникальный адрес (в потоке данных данного публикатора). А как их интерпретировать, после получения и расшифровки - должно решаться уже на следующем уровне. Дело в том, что такая система прекрасно подходит не только для блогов - но, например, для организации абузоустойчивых литбиблиотек, бессерверных торрент-сетей; может быть, сетей распределенного семантического поиска, может быть, даже для обычной интернет-коммерции - есть у нее некоторые преимущества перед простым вебом... Но, конечно, для различных неблоговых надобностей структура xml должна быть разной. И нужно продумать организацию адресного пространства внутри потока данных пользователя - скажем, зарезервировать в ней "статическую" область, адреса в которой предназначены для целей, определяемых протоколами следующего уровня - ну и для нужд описанного уровня тоже (список френдов с правами, насколько я понимаю).
no subject
Date: 2007-12-14 08:38 am (UTC)Кроме того, с очевидностью, никакое техническое решение не обеспечивает 100% гарантии сохранности архивов.
На мой взгляд, вероятность сохранения хотя бы одной копии архива в сети из 10 миллионов участников с "естественной" репликацией, окажется выше, чем в сети из 10000 участников с более жесткими требованиями к архивации. Просто за счет "закона больших чисел".
Решение, которое подходит для слишком большого спектра применений мне a priori кажется подозрительным - каждую конкретную задачу оно будет решать хуже, чем более специализированное решение. Поэтому не надо пытаться объять необъятное.
Тут мне уже в одном из предыдущих постов кто-то предлагал решать задачу создания простенького Web-форума путем написания веб интерфейса к NNTP-серверу. Я тогда сравнил это с ситуацией, когда для задачи "Доставить сейф весом 200кг на второй этаж" вместо того чтобы взяться вчетвером и поднять по лестнице предлагается "а давайте изобретем и построим антигравитатор, и тогда мы им легко этот сейф поднимем".
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: