id: Гость   вход   регистрация
текущее время 03:28 29/03/2024
Владелец: SATtva (создано 07/06/2007 13:03), редакция от 07/06/2007 13:12 (автор: SATtva) Печать
Категории: криптография, софт, gnupg, сайт проекта, wiki, эцп
https://www.pgpru.com/Новости/2007/06-07-ЗавершенаРаботаНадПодсистемойЦифровойПодписиКомментариевИСтраниц
создать
просмотр
редакции
ссылки

07.06 // Проект // Завершена работа над подсистемой цифровой подписи комментариев и страниц


Это оказалось проще, чем отделаться от навязчивых предложений spinore'а. :-) Что представляет собой это новшество? Если вы хотите, чтобы все могли убедиться в вашем авторстве того или иного комментария или редакции документа, вы, используя стандартные средства PGP/GnuPG подписываете текст и публикуете его, отметив в форме ввода специальную опцию "Обработать в сообщении цифровую подпись OpenPGP" (включать и выключать её можно на тот случай, если нужно разместить в тексте в качестве примера какую-то проблемную ЭЦП, которую не следует сличать).


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


Следует отметить, что эта возможность доступна и незарегистрированным пользователям сайта, однако, поскольку база данных сайта не содержит их открытых ключей, подобные подписи будут обозначаться как "неопределённые" (сверить ЭЦП без открытого ключа, естественно, невозможно). Тем не менее, маркер отображает ID этих ключей, что упрощает отслеживание авторства (заинтересованные, опять же, могут сами найти нужный ключ и сверить подпись вручную).


Пока подсистема будет функционировать в тестовом режиме, поскольку для меня остаётся открытой проблема обработки сообщений в "трудных" кодировках. Тестирование проводится на этой странице. Заметьте, что в настоящее время опция "Обработать в сообщении цифровую подпись OpenPGP" будет доступна только там. Пожалуйста, примите участие в тестировании: хочется отловить все возможные ошибки, прежде чем открывать данную функциональность на всём сайте. Также высказывайте свои замечания и мнения относительно интерфейса, удобства и понятности (а также внешнего вида) маркеров.


Источник: http://www.pgpru.com


 
На страницу: 1, 2, 3, 4, 5, 6 След.
Комментарии [скрыть комментарии/форму]
— spinore (10/06/2007 19:33)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
mellon:
Подумал, и через полчаса spinore эту же мысль уже запостил :D

Да... телепатия, квантовые каналы, невидимые линии связи... (а что было бы если
каждый мог подписать свою мысль? :-))
mellon:
Кстати, отправлю-ка я эту мысль bigote, он скорее всего может
разъяснить как с этим дело в xmpp обстоит.

Вы имеете в виду как насчёт подделки сообщений в xmpp когда включены подписи
сообщений? Интересно...
А может, в случае сообщения от незарегистрированного пользователя с подписью
зарегистрированного пользователя достаточно просто напоминания: <<Внимание, данное
сообщение, возможно, отправлено не тем, кем подписано!>>

Краткость и простота – залог безопасности и надёжности. Усложнение, которое вы
предлагаете, оправданно? Надо думать..
— SATtva (10/06/2007 23:49)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Не был на сайте сутки, а тут уже за это время предложили новую идею, сами придумали к ней PoC exploit, сами зарубили и сами отказались. ЗдОрово, коллеги, об этом я и мечтал. :-)

Кстати, если 2 пользователя скажут что они имеют один и тот же ключ и докажут это как сайт отреагирует?

Сейчас — никак, подобные сопоставления у нас не используются (просто оба смогут ключ удалить, если имеют доступ к закрытой части).

Кстати, отправлю-ка я эту мысль bigote, он скорее всего может разъяснить как с этим дело в xmpp обстоит.

А там подпись ещё порядковый номер сообщения в сессии покрывает, по-моему. Делать что-либо подобное на базе только полей в POST-запросах меня смущает. Это будет слишком массивная и неповоротливая схема. Вот если бы сайт имел собственный веб-клиент (браузер) с доступом к закрытым ключам пользователя — это другое дело! :-)
— SATtva (11/06/2007 00:06)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Касаемо атак вставкой и сообщений о ненайденных ключах, даже если они есть в базе.

Есть две самые простые альтернативы (обе сделать на раз-два). Во-первых, можно сделать, чтобы индикатор для гостевых подписей вёл себя так же, как для подписей зарегистрированных пользователей (т.е. просто исправить баг с "ненайденным ключом"). Грубо говоря, если гость подписал сообщение ключом зарегистрированного пользователя (или скопировал чужое подписанное сообщение), то просто говорить, что ЭЦП верная и выводить дату подписи.

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

Вторая альтернатива — это следовать простой логике программы. Если гость добавил сообщение, подписанное ключом зарегистрированного пользователя, указать, что ЭЦП верна, но "ключ подписи не соответствует ключу пользователя"... Блин, логичнее — "пользователь подписи не соответствует пользователю ключа"... Знаете, мне больше нравится первая альтернатива. :-)
— spinore (11/06/2007 00:21)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
лучше так:
Гость, когда вставил чужую подпись, допустим mellon'овскую:
ЭЦП верна, владелец ключа: mellon
Гость, когда вставил свою подпись, а его ключ сайт не знает:
владелец ЭЦП неизвестен.
Варить кашу с временным лагом, который есть непрерывная величина, варить не надо!
Ибо всегда его можно будет обойти, и вообще лаг – не та величина за которую стоит цепляться
в таких вопросах.
Ваше мнение?
— spinore (11/06/2007 00:37)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
и ещё одно серьёзное замечание вдогонку про временной лаг:
время пишется в подписи... местное, и у каждого оно своё :-))) думаю, все поняли.
— SATtva (11/06/2007 00:42)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Чтобы ближе к действующему варианту. Если ключ гостя найден в базе данных:
верная ЭЦП | текст подписан 10/06/2007 22:21, владелец ключ Name
Если ключ гостя не найден (что предполагалось основным вариантом):
неопределенная ЭЦП | ключ подписи 0xKEYID не найден
Так, если у кого-то возникнет желание, он сможет найти ключ и сверить подпись вручную.

У кого ещё какие соображения? Всё же, на мой взгляд, лаг использовать можно. Не стоит забывать, что взломщик не может изменить его напрямую, поскольку метка времени в подписи покрывается ЭЦП.
— spinore (11/06/2007 00:46)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
в дополнение к позапредыдущему посту:
информацию о времени и дате подписи писатть тоже надо, хоть я и не упомянул об этом в примере.
— spinore (11/06/2007 00:51)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
нет
лучше так, думаю, всё же:
неопределенная ЭЦП | текст подписан 10/06/2007 22:21 | ключ подписи 0xKEYID не найден
А что касается лага: допустим, я подписал сообщение, и завошкался... опубликовал его через пол дня. на меня сразу пойдёт подозрение, хотя вполне необоснованно. Имхо, той диагностики что предложил SATtva в последнем посте с учётом правки в этом вполне достаточно. Подпись – вещь надёжная, её надо скрещивать с надёжными параметрами. Лаг не из этой области, серьёзно он ничего детектить не даст – потому просто оставлять дату подписи чтоб все видели и кто хочит, пусть делает для себя какие-либо догадки – лаг итак всегда виден будет (как в этом посте я вышел написал, например).
— spinore (11/06/2007 00:59)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
вообще, мне формулировка "ключ подписи 0xKEYID не найден" не нравится. Кажется, как будто этьо соответствует ошибке возникшей на сайте, что кто-то не смог что-то найти, не предусмотренная ситуация... есть такой оттенок смысла. Когда же пишется "владелец ЭЦП не опознан сайтом" – всё смотрится более правдоподобно: типа, всё нормально, ситуация штатная, но в базе pgpru.com ключа нет. Может я конечно, придираюсь... но так мне показалось.
то есть имхо так лучше:
неопределенная ЭЦП | текст подписан 10/06/2007 22:21 | владелец ключа подписи 0xKEYID не опознан сайтом
может слишком длинное это... но поди мало таких подписей будет на сайте, как мне кажется. Но зато точнее отражает суть
— SATtva (11/06/2007 01:00)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
лучше так, думаю, всё же:
неопределенная ЭЦП | текст подписан 10/06/2007 22:21 | ключ подписи 0xKEYID не найден

А есть смысл указывать метку времени, если ключ всё равно не найден, подпись не сверена и неизвестно, правильная она или нет? Не думаю. Объём диагностического текста, опять же.

В общем, завтра днём перепишу метод валидации результатов, "чтоб всё кондово" и с учётом предложений. А пока доброй ночи.
— spinore (11/06/2007 01:02)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
или так:
неопределенная ЭЦП | текст подписан 10/06/2007 22:21 | ключ подписи 0xKEYID не зарегистрирован на сайте
это ещё точнее
— spinore (11/06/2007 03:42)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Ох, несколько часов рожал... долго рожал....
Вот ИТОГ с учётом всех пожеланий:


| Если для подписи сообщения кем-либо (гостём или пользователем) использован
| незарегистрированный на сайте ключ:

Жёлтым цветом пишем:

неопределённая ЭЦП от 10/06/2007 22:21 не зарегистрированным на сайте ключом 0xKEYID


| Если для подписи сообщения использован зарегистрированный
| на сайте ключ:

1.
— верно подписанное зарегистрированным ключом сообщение отправлено: пользователем --

a) Сообщение подписано владельцем ключа, то есть тем, у кого этот ключ числится в профиле.
Зелёным цветом:
верная ЭЦП от 10/06/2007 22:21
b) Сообщение подписано не владельцем соответствующего ключа согласно информации в профиле.
Жёлтым цветом:
верная ЭЦП от 10/06/2007 22:21 ключом пользователя nickname

2.
— верно подписанное зарегистрированным ключом сообщение отправлено: гостём --

Жёлтым цветом:
верная ЭЦП от 10/06/2007 22:21 ключом пользователя nickname.

3.
— неверно подписанное зарегистрированным ключом сообщение, не важно кем отправленное --
Вне зависимости от числа редакций оригинального поста пишем
Красным цветом:
неверная ЭЦП | после подписи оригинальный текст был изменён

Дополнение:
— верно подписанное зарегистрированным ключом сообщение впоследствии было кем-либо отредактировано --
Тогда:
В нагрузку к уже существующей диагностике подписи пишем
Жёлтым цветом:
после подписи оригинальный текст был отредактирован



Комментарии к тексту:
1. Пользователь – это авторизованный на данный момент на сайте юзер.
Гость – это неавторизованный на данный момент на сайте юзер.
2. Психология цвета:
  • Зелёный – используется исключительно когда подпись верна, сделана
авторизованным на данный момент на сайте юзером, и выполнена посредством ключа,
загруженного в его профиль.
  • Красный – используется только когда диагностика подписи выдаёт "bad signature".
  • Жёлтый – используется во всех остальных случаях.

P. S.: Дело не в конкретных цветах а в делении всех подписей на три категории:
  • верные, использованные предусмотренным на сайте способом (через загрузку ключа в
профиль)
  • заведомо неверные
  • все остальные случаи.

P. P. S.: формулировки диагностики искались с учётом оптимума между благозвучностью с
точки зрения языка, точностью смысла и краткостью. Возможность для
пользователей подписывать сообщения ключами, отличными от указанных в профиле,
реализована ради отсутствия дискредитации их по сравнению с гостями, а также в связи
с тем, что некоторые юзеры используют одновременно несколько ключей взависимости от
цели.


ну что, пинайте :-)
— mellon (11/06/2007 06:48)   профиль/связь   <#>
комментариев: 61   документов: 47   редакций: 68
Ну-с щас зопинаем

Шучу :D

И так что можно предложить.

По поводу авторизации подписью .
Можно предложить авторизваться подписыванием случайной последовательности.
Можно также попросить гостей желающих авторизоваться по подписи, начать свой пост с предложенной случайной последовательности, в итоге после верификации подписи послание должно выглядить примерно так:

764efa883dda1e11db47671c4a3bbd9e

Мое послание

Дальше.
Не стоит забывать что ЭЦП это и есть подпись, самая натуральная.
То есть, если гость подписывается ключом не принадлежащим какому либо пользователю, и не находящимся в базе форума, то имя ключа присваевается полю "Ваше имя".
— mellon (11/06/2007 06:53, исправлен 11/06/2007 06:56)   профиль/связь   <#>
комментариев: 61   документов: 47   редакций: 68
SATtva, на счёт базы ключей, надеюсь она регулярно обновляется?

ЗЫ


Конечно же, если поле было пустым
— spinore (11/06/2007 07:01)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Можно предложить авторизваться подписыванием случайной последовательности.

И что? Подпись имхо в принципе не может служить самодостаточным способом авторизации если не наворчаивать.
Если один авторизовался, через 30 секунд другой продублирует его пост и будет считаться что 2 поста этих отправил один и тот же человек что не верно. Идея держать базу хюшей всех документов мне что-то не нравится и не вижу необходимости.
... базе форума, то имя ключа присваевается полю "Ваше имя".

Плохо. Если собрать базу подписанных сообщений какого-либо пользователя с интернета а потом их вставлять в соответствующем контексте дискусси то можно копрометировать владельца ключа.
Имхо подпись есть всего лишь подпись и ничего более. Я в последнем посте из этого исходил.
На страницу: 1, 2, 3, 4, 5, 6 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3