?

Log in

No account? Create an account
о сертификации ЖЖ-страниц - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

о сертификации ЖЖ-страниц [дек. 19, 2003|08:27 am]
Anatoly Vorobey
В связи с некоторыми недавними скандалами [предупреждение: всё, что следует далее, никакого отношения ни к какому конкретному скандалу не имеет, и никакой позиции ни в одном из них я для себя не заявляю. Просто эта тема подтолкнула меня на размышления, никак с ней не связанные. Прошу о "скандальных" поводах ничего мне не писать и в них меня не втягивать. Спасибо] подумал немного о возможности сертификации страниц ЖЖ. В принципе, я могу сейчас взять страницу ЖЖ, например, показывающую какую-то запись с комментами, сохранить её в файле, и как угодно отредактировать перед тем, как выставлю её в другом месте. Изменить текст, имена юзеров, что угодно. Могу, скажем, изменить текст записи на что-то предосудительное, и сказать, "что так и было", а сейчас в той же записи того же юзера (если она вообще открыта) другое, потому что он быстренько отредактировал, но я успех сохранить первоначальный вариант. И так далее — ясно, что возможностей куча. Кто-то в это поверит, кто-то не очень (зависит от многих факторов: от степени доверчивости зрителя, от его оценки моей репутации и моей готовности к манипуляциям, от моих технических способностях, если подделывать нужно не просто текст, а какой-нибудь HTML, итд. итп.).

Можно было бы в принципе убрать фактор неопределённости. Скажем, в каждой HTML-странице, которую он выдаёт, LJ включает в качестве HTML-комментария значение криптографического хэша (скажем, MD5) от содержимого страницы + секретный ключ, хранящийся внутри LiveJournal.com . Можно какие-то ещё данные в вычисление этого хэша включить (например, имя того юзера, который смотрит эту страницу, если он logged in; или ещё неплохая идея - текущее серверное время, которое тут же рядом со значением хэша добавляется в HTML-комментарий). Далее, добавляется сервис "проверьте аутентичность данной страницы": посылаем LJ обратно страницу (напр. в таком виде, в какоме её кто-то выложил в другом месте) и он вычисляет заново значение хэша и сравнивает. Если кто-то что-то менял, проверка это обнаружит. Конечно, злоумышленник может вычистить хэш из HTML-кода страницы, но это само по себе будет свидетельством того, что файл редактировали, и, следовательно, информации в нём нельзя доверять.

(почему MD5, а не подписывать с помощью PGP, скажем? Потому, что MD5 - легко, быстро и реально сделать для всех страниц просто в коде их отдачи. Ведь LJ — полностью динамический сайт, всё, кроме картинок, строится в Перле).

Вряд ли на это будет большой спрос, впрочем.

Это мне напомнило ещё одну мою старую идею: сертификацию ЖЖ-записей. Предположим, я хочу иметь возможность доказать, что в такое-то время в такой-то день в моём журнале была запись такого-то содержания. Сейчас это сделать невозможно. Не потому, что я могу написать позже запись нужного содержания и датировать её задним числом — эту проблему можно было бы обойти, используя записанное в базе данных ЖЖ время создания записи с точки зрения сервера (недоступное обычно юзеру, но мы рассматриваем гипотетическую ситуацию; главное, что эта информация есть и её в принципе можно вытащить). Так вот, не поэтому, а потому, что я могу эту запись впоследствии отредактировать и сказать, что так и было. Базы данных ЖЖ не сохраняют старые варианты. Правда, я сейчас вспомнил, что относительно недавно, где-то полгода назад, мы сделали так, что они теперь сохраняют количество редактирований каждой записи, так что даже без криптографических подписей можно будет доказать, что данную запись кто-то редактировал хотя бы один раз после отправки. Но это тоже не идеально, ведь нет доказательств того, что автор не отредактировал её несколько раз сразу после отправки, исправляя мелкие погрешности, и не занимаясь более поздним подделыванием. И всё же, если записано в базе данных, что не редактировалось ни разу, то мы точно знаем, что всё в порядке — уже неплохо. Но я отклонился от темы. Можно в принципе сделать такой же сервис сертификации определённой записи в определённый момент. В принципе, это можно получить как частный случай описанной выше сертификации любой страницы; а можно сделать чем-то отдельным, сертифицируя именно текст записи и более ничего, используя ещё более надёжные функции итп.

Конечно, надо не забыть упомянуть, что защищённость самого сайта livejournal.com и его баз данных остаётся слабым звеном во всех этих схемах. Это слабое звено в свою очередь можно укреплять — ротацией секретных ключей, использованием для их хранения другого уровня шифровки, или не находящиеся в Интернете компьютеры, итд. итп. — о таких вещах немало статей и диссертаций написано, куда более интересных и сложных, чем это примитивное перечисление, призванное всего лишь передать общую идею.
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: object
2003-12-18 10:50 pm
Безусловно, первоначальные правки записи и редактирование после полученных комментариев - разные вещи. Что имеет смысл указывать. Вероятно, хеширование MD5 - слишком строгая мера. Достаточно, чтобы запись указывала, что изменялась ПОСЛЕ получения комментариев.
(Ответить) (Thread)
[User Picture]From: qub
2003-12-18 11:05 pm

вроде бродила вокруг

идея интернетовского нотариата. чтоб можно было ему в данный момент скормить ссылку, а он бы после удостоверял что в такой-то момент она была вот такая.

что-то даже строилось вроде. Гугль нам поможет, наверно.

это не вполне заменяет твое предложение, поскольку часто уж поезд ушел к тому моменту как выясняется что надо было визировать контент; но параллельно ему.
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:54 am

Re: вроде бродила вокруг

Да, я тоже смутно помню, что было такое, оттуда и пошли мысли плясать в сторону похожих мыслей внутри ЖЖ. Но всё это - не более чем Gedankenexperiment.
(Ответить) (Parent) (Thread)
[User Picture]From: alexmoskalyuk
2003-12-18 11:19 pm

Вопрос по теме

А кстати, как у вас сo соответствием Sarbanes Oxley Act?
LJ вроде как американский бизнес?
Или записи пользователей в каждой редакции не относятся к тому, что предписывает архивировать SOA?
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:53 am

Re: Вопрос по теме

Я даже не знаю, что это такое. Но посмотрев сейчас в Гугле, вижу, что это закон, касающийся, если не ошибаюсь, только public companies. LiveJournal - компания в частном владении, она вообще не обязана публиковать никакой отчётности, и архивировать тоже, думаю (за исключением тех финансовых отчётностей, которые должна представлять в налоговые учреждения любая компания).
(Ответить) (Parent) (Thread)
[User Picture]From: ullr
2003-12-18 11:29 pm
Интересно, я сегодня думал в похожем направлении, но моя схема включала асимметричный алгоритм и пару ключей (т.е. в принципе что-то типа ПГП). Если подпись будет делать программа-клиент (которая и будет хранить этот частный ключ), то нагрузка на сервер возрастать не будет. А публичный ключ можно публиковать в юзер-инфо.
В такой распределенной системе хранение и ротация ключей будет делом каждого конкретного пользователя и будет определяться в соответсвии с его нуждами (ведь понятно, что далеко не всем это вообще нужно). Тогда можно было бы создавать и шифрованные записи, которые нельзя прочитать вообще никому, кроме владельца (хотя, возможно, это и не нужно).
(Ответить) (Thread)
[User Picture]From: scolar
2003-12-18 11:34 pm
Я бы разделил два вопроса, на которые мы, возможно, хотим получить ответ:
1. Является ли страница подлинной в том смысле, что подписана автором.
2. Вносил ли автор изменения в текст после определенного момента.

Для ответа на первый вопрос не требуется никакого централизованного authority - достаточно PGP-подписи.

Выяснение же ответа на второй вопрос, как мне кажется, этически неочевидно - я бы, по крайней мере, возражал против того, чтобы мои записи могли бы быть подвергнуты такому анализу - я не в суде под присягой.
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:49 am
Дело тут в том, что иногда именно Вы заинтересованы в том, чтобы доказать правильный ответ на второй вопрос. Например, представьте себе, что в этой записи содержится описание изобретения, и Вам нужно доказать, что Вы её написали именно два года назад, а не отредактировали совсем недавно, после того, как Ваши конкуретны опубликовали те же подробности. Это всего лишь один пример из множества возможных.

Я согласен в том, что совершенно неочевидным является право других требовать узнать, редактировали ли ВЫ вашыи записи или нет. Интересный для меня вопрос заключается в том, сможете ли Вы доказать, в случае надобности, что этого не делали.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: bougakov
2003-12-18 11:35 pm
"посылаем LJ обратно страницу (напр. в таком виде, в какоме её кто-то выложил в другом месте) и он вычисляет заново значение хэша и сравнивает"
Avva, всё бы хорошо, только многие браузеры перелопачивают HTML при сохранении на диск, и MD5 сохранённой копии и оригинала будут различаться, даже если намеренно копию не трогали.
(Ответить) (Thread)
[User Picture]From: yakovis
2003-12-19 12:12 am
Это смотря где написать. Комментарии что ли кто-то лопатит?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: evr
2003-12-19 12:56 am
"защищённость самого сайта livejournal.com и его баз данных остаётся слабым звеном во всех этих схемах"

Подумалось вот, что от ddos-атаки никакой серевер не защищен, но почему же не "роняют" беспрестанно всё подряд, все сколько-нибудь известные, значимые, популярные сайты? Только лишь оттого, что это не представляет особого интереса?
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:45 am
Нет - потому что эти сайты хорошо умеют защищаться. ddos-атаки их не валят, а всего лишь замедляют несколько. Конечно, бывает и по-другому, зависит от мастерства атакующего и того, сколько подчинённых компьютеров он насылает на серверы.

На практике dos и ddos-атаки против больших популярных сайтов случаются значительно чаще, чем о них становится известно публике; администраторы стремяется в первую очередь отразить их или защититься от них, не признавая вообще их существование (т.к. атакующие стремятся именно к известности, публичности, "славе", и если этого им не давать, им надоедает намного быстрее).
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: kogan
2003-12-19 01:23 am

Надеюсь, этого не случится. Ибо будет хуже.

(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:40 am

Re: Надеюсь, этого не случится. Ибо будет хуже.

Есть резон в Ваших словах. Можно сказать, что если A написал что-то в своём дневнике, существование чего B хочет сертифицировать, то помогать B "поймать за руку" A - нарушение баланса прав-ответственности, ущемляющее A, и LiveJournal не должен этим заниматься. Я правильно понял Вашу мысль?

Это можно было бы решить так: у A в настройках есть галочка, если её поставить, то B не сможет сертифицировать записи A.

Не забывайте ещё и тот факт, что сертификация не всегда нужна B для того, чтобы поймать А за руку. Иногда она нужна самому A, чтобы доказать кому-нибудь, что какой-то текст он действительно написал в прошлом, а не отредактировал совсем недавно. Можно представить себе немало случаев, в которых A такая сертификация будет полезна или даже необходима.

Наконец, добавлю на всякий случай: никаких планов вводить такую сертификацию в ЖЖ в обозримом будущем нет. Возможно, такие планы появятся впоследствии, возможно, нет. Я просто рассуждаю вслух на интересную для меня тему.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: zurafa
2003-12-19 02:08 am

сохранение страниц

есть/намечается ли возможность предотвращать сюжеты "не пойман -- не вор" вроде этого: http://www.livejournal.com/community/israeli/288296.html ?
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:34 am

Re: сохранение страниц

Пока не намечается. Такое происходит не слишком часто. Если будет происходить часто, возможно, будет иметь смысл ввести режим записи "заморозить, не показывать в ленте, но не давать автору удалить" для смотрителей коммьюнити. Но пока этого в планах нет.
(Ответить) (Parent) (Thread)
[User Picture]From: elcour
2003-12-19 02:27 am
Объясни, пожалуйста: а хэширование поможет, если автор редактировал пост после отправки, исправляя опечатки или стилистику?
Я, например, редактирую большую часть своих уже отправленных постов. Текущее серверное время тогда вообще не много даст, так?
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:32 am
Ну, ты мог бы, по идее, сертифицировать любую версию своей записи (до или после редактирования) на данное конкретное время. Если бы эта идея была воплощена.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: rydel23
2003-12-19 02:38 am
Простейший вариант (чтобы не было излищней complexity) - ввести два состояния: edited & original. Соотвественно, показывать это где-то в углу маленькими буквами. Может просто галочку какую-то: вот этот пост редактировали.
(Ответить) (Thread)
From: ex_sighup150
2003-12-19 04:25 am
Есть некая безумная идея :)
При регистрации человека на сайте ему выдается клиентский SSL сертификат, и, ходя по (потенциальной :) https-версии livejournal, человек фактически подписывает все свои действия. Каждый его комментарий можно хранить в базе, подписанный этим самым клиентским сертификатом. Таким образом, если кто-то захочет затем их подделать, выложив изменную страницу в другом месте, можно всегда доказать подделку, сравнив с подписанным содержимым базы.
С записями немножно труднее -- их тоже можно хранить подписанными, конечно, но кто знает, что там было раньше.. Как вариант -- можно хранить первую запись, плюс набор подписанных diff'ов к ней вместе с их timestamps.
С таким подходом TLS можно встраивать и в клиенты, кстати.

(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 05:33 am
Идея несколько безумная, да ;)
(Ответить) (Parent) (Thread)
From: ex_one_way798
2003-12-19 05:59 am
А зачем все усложнять? Если вы не хотите, чтобы вас читали, не пишите сюда. Точно также в реальной жизни ваш собеседник может передать кому-то другому ваши слова, исказив смысл, и если это кто-то захочет обманываться, то он поверит не зависимо от убедительности доводов. При данной системе защиты любой мало-мальски здравомыслящий человек понимает, что копия страницы ЖЖ ничего не стоит. Если же будет введена система защиты, то подделки приобретут большую цену в глазах доверчивых.
ЖЖ - это не тот жанр, который подразумевает интриги, поэтому и не надо наводить на противоположную мысль, вводя какие-то ограничения. Интриги - вообще дело недостойное.
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 07:29 pm
ЖЖ - это не тот жанр, который подразумевает интриги

Увы, интриг здесь предостаточно.
(Ответить) (Parent) (Thread)
From: lightspeed
2003-12-19 08:45 am
В базе есть поле, по которому можно определить отредактирована ли запись или нет (и сколько раз), так вот, вместо этого писать туда timestamp'ы дат редактирования (в столбик так, аккуратненько). В итоге узнаем была ли отредактирована запись после нужного нам момента. ИМХО, больше знать и не нужно.
(Ответить) (Thread)
[User Picture]From: avva
2003-12-19 06:57 pm
Да, можно и так, Вы правы.
Но тогда нет вот чего. Я, хозяин дневника, хочу отредактировать запись, чтобы показывала что-то другое, но сертифицировать её старую версию, чтобы в будущем иметь возможность доказать, что в такое-то время она выглядела так-то.
Хотя это не так уж и часто нужно, наверное.
(Ответить) (Parent) (Thread)
[User Picture]From: krylov
2003-12-19 07:32 pm
Вообще-то это можно сделать крайне просто, не вводя никакой криптографии и прочих лишний сущностей (кроме одной малости).

А именно. Допустим, некто делает запись и хочет её завизировать. Для этой цели у нас существует специальный юзер - ну, скажем, checkist. Пароль от него доступен всем. Единственное, что нельзя - менять его юзеринфо и е-мейл, нельзя его также уничтожать (а вот это и есть та малость, которая нужна).

Ключ от почтового ящина checkist'а находится у Очень Уважаемого Человека (или у Абузы, или у какой-нибудь Комиссии по Скандалам).

Далее, после публикации записи от имени checkist'а делается один коммент (например, с надписью "заверено"). Это может сделать как сам автор постинга, так и кто угодно (пароль checkist'а доступен всем). Коммент уходит checkist'у в почту - вместе с текстом исходного сообщения. Всё, приехали: копия ушла туда, откуда её может извлечь только Очень Уважаемый Человек (или Комиссия по Скандалам).

Наконец, последнее. В Семаджике делается особая опция: "запостить вместе с проверочным комментом checkist'а". Технически, насколько я понимаю, семажик вполне может делать и комменты (просто это до сих пор никому не требовалось). Тогда коммент будет делаться сразу после записи. (Содержание его тоже можно стандартизировать, например: "Заверено. Сообщение отправлено по адресу такому-то. Если есть вопросы, обращайтесь в Комиссию По Скандалам, она вышлет вам исходный вариант.")

Заметим, что комментов можно оставлять несколько и в разное время.

Разумеется, лишние комментарии несколько перегружают работу системы. Однако, вряд ли все будут заверять каждое своё сообщение. Обычно такая необходимость возникает только в случае "неоднозначных высказываний", которых не так уж и много.
(Ответить) (Thread)
From: lightspeed
2003-12-19 08:32 pm
А вдруг вы сейчас напишите совсем обычный пост, даже не подумаете о том, чтобы его заверить, а потом окажется, что в нем вы открыли какую-нибудь новую теорию, которая всем под зарез... ИМХО, так всегда и бывает.
(Ответить) (Parent) (Thread)
Страница 1 из 2
<<[1] [2] >>