id: Гость   вход   регистрация
текущее время 07:52 29/03/2024
Владелец: SATtva редакция от 11/06/2007 03:54 (автор: spinore) Печать
создать
просмотр
редакции
ссылки

Это старая редакция страницы Проект / О Сайте / Э Ц П за 11/06/2007 03:54.


Цифровая подпись комментариев и страниц сайта


Оглавление документа:


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

Как подписать и разместить


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

Windows/PGP/GnuPG с графической оболочкой

Это самое простое. Напишите текст, скопируйте его и воспользуйтесь функцией подписания содержимого буфера обмена. В PGP это делается так: нажмите на иконку PGPtray > Clipboard > Sign. Различные графические надстройки GnuPG имеют различные нюансы, но, в целом, порядок действий такой же. Перед отправкой текста на сайт убедитесь, что выбрана кодировка CP1251 (это вариант по умолчанию).

Windows/GnuPG без графической оболочки

В такой среде порядок действий может быть двояким. Во-первых, можно написать текст в файле, подписать файл, а затем скопировать его содержимое в поле ввода на сайте. Вот как это сделать: составьте текст в Блокноте и сохраните файл (кодировка файла должны быть ANSI), затем вызовите GnuPG из консоли следующей командой: gpg -u <ключ_подписания> --clearsign <путь_к_файлу>. Содержимое подписанного файла (он имеет расширение .asc) отправьте на сайт, выбрав кодировку CP1251.


Второй вариант — это подписание текста прямо в консоли. Откройте консоль и выполните gpg -a -u <ключ_подписания> -s, введите пароль к ключу, напишите свой текст, нажмите Enter, Ctrl+Z и ещё раз Enter. Блок сообщения скопируйте и отправьте на сайт, обязательно указав кодировку CP866 (иначе сообщение окажется нечитаемым). Также не подписывайте текст "прозрачно" (используя команду --clearsign) — в противном случае подпись будет повреждена.

Linux/*BSD/GnuPG

Установите системную локаль в кодировку CP1251, KOI8-R или UTF-8. Подпишите текст "непрозрачной" подписью, выполнив команду gpg -a -u <ключ_подписания> -s (конструкция команды может отличаться, но главное условие — использование параметра -s). Подписанный блок вставьте в поле ввода на странице сайта и перед отправкой укажите кодировку, соответствующую вашей системной.

Индикатор состояния


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


верная ЭЦПЭлектронная подпись верна, сообщение не было изменено или искажено. Здесь же отмечено время, когда сообщение было подписано (обратите внимание, что если время подписания сильно отстает от времени опубликования — это повод для подозрений).
неверная ЭЦПСообщение было изменено после подписания. Это не обязательно свидетельствует о подделке (возможно, текст был поврежден при публикации на сайте, например, если автор выбрал неправильную кодировку). Однако может означать и то, что кто-то взломал базу данных сайта и попытался скорректировать сообщение там.
неопределенная ЭЦПСистема может проверять достоверность подписей лишь в том случае, если в ее базе данных имеются ключи, которыми подписи были поставлены, т.е. те ключи, которые зарегистрированные пользователи сайта загрузили в свои профили. Поэтому, если текст подписывает незарегистрированный посетитель, система лишь сообщит здесь ID ключа, которым была поставлена подпись, а ее состояние все заинтересованные должны будут проверить вручную.
поврежденная ЭЦПСистеме не удается сверить цифровую подпись (вероятнее всего, в базе данных отсутствует подписанный экземпляр текста). Это сообщение наименее вероятно и более всего подозрительно, поскольку свидетельствует о каких-то изменениях, внесенных в содержимое базы данных сайта. Имейте в виду: система проводит предварительную проверку подписи еще на этапе сохранения текста, поэтому изначальное размещение сообщений с поврежденными ЭЦП невозможно.
отображаемый текст не соответствует подписанномуВ некоторых случаях вместо метки времени для верной ЭЦП может выводиться предупреждение, что отображаемый текст не соответствует подписанному. Это означает, что исходный текст был изменен, однако на сайте осталась оригинальная подписанная копия (с которой и происходит сверка ЭЦП), которую можно открыть, нажав на индикатор состояния ЭЦП. (Обычно, подобная ситуация возникает с комментариями пользователей: если модератор отредактирует сообщение (или это сделает сам автор, забыв затем переподписать текст), система предупредит о расхождении.)
ключ подписи не соответствует ключу пользователяЭто сообщение также выводится для верной ЭЦП. Оно означает, что сообщение подписано не тем ключом, который размещен в профиле его автора (разумеется, это относится только к зарегистрированным на сайте авторам). Возможные причины: 1) автор сам подписал текст не тем ключом (по ошибке или намеренно); 2) если это комментарий, то он мог быть переподписан модератором; 3) кто-то посторонний мог несанкционированно изменить текст в базе данных сайта и заверить его посторонним ключом; 4) возможно, автор заменил размещенный в его профиле ключ: такое приведет к тому, что все его ранее опубликованные подписанные комментарии и редакции получат подобный подозрительный статус. В любом случае, каждый желающий может проверить оригинал подписи и лично установить, кому принадлежит ключ, заверивший текст.

Независимая проверка


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


Открыть оригинал можно, щелкнув по индикатору состояния ЭЦП. Оригинал будет отображен в виде простого текста вкупе с адресом, по которому текст был опубликован изначально. Вы можете скопировать блок подписанного сообщения и воспользоваться установленной у вас OpenPGP-совместимой программой для самостоятельной проверки ЭЦП.

А что, если...


(Это мини-FAQ, где мы постараемся отвечать на основные вопросы, связанные с данной функциональностью, по мере их поступления.)

...отправить неподписанный текст, отметив опцию обработки подписи?

Ничего страшного не случится, текст будет размещен как обычный неподписанный.

...отправить подписанный текст, не отметив опцию обработки подписи?

Ну, текст просто будет выведен, как есть, т.е. со всеми заголовками PGP и материалом ЭЦП — не слишком эстетичное зрелище. Однако, такое бывает необходимо, когда вам нужно опубликовать чужую ЭЦП, допустим, для совместной диагностики какой-то проблемы. В этом случае опцию обработки включать не следует.

...выбрать неправильную кодировку для публикуемого текста?

Это сделает сообщение нечитаемым (при необходимости желающие смогут его перекодировать подручными средствами, что, однако, не слишком удобно). Правда, подпись будет сверяться верно. Но в целях сохранения приличного вида конференции и документов модераторы могут просто удалять "битые" тексты.

...администратор сайта захочет подделать чужую ЭЦП?

Придётся взломать RSA по меньшей мере. :-) Лучшее, что можно реально сделать — это срезать подпись с опубликованного сообщения или удалить опубликованный текст из БД. (Можно, конечно, выводить на индикаторе "верную ЭЦП" даже для поддельных подписей, но слишком велик шанс быть пойманным, а ведь коварному администратору это не нужно, не так ли? ;-) К сожалению, атаки на отказ в обслуживании со стороны оператора централизованного сервиса принципиально не могут быть исключены.

...я подпишу редакцию документа, а после меня его отредактирует кто-то другой?

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