id: Гость   вход   регистрация
текущее время 10:15 14/11/2019
создать
просмотр
редакции
ссылки

ASCII-кодировка


Нередко пользователям PGP приходится отправлять зашифрованные файлы по компьютерным сетям. Некоторые (старые) протоколы и сети не позволяют передавать двоичные файлы: такие сети подразумевают, что передаваться должны только печатаемые символы, и "исправляют" значения непечатаемых байтов. Чтобы справиться с подобной проблемой, PGP может ASCII-кодировать файлы: файл перекодируется с использованием только обычных печатных знаков.


ASCII — это старое название стандарта (ставшего стандартом ANSI), определяющего, какие значения байта кодируют те или иные символы. Младший бит не используется, так что допустимые значения должны лежать в пределах 128. Идея заключалась в том, что младший бит может использоваться как бит чётности для выявления ошибок передачи. Все значения ASCII ниже 32 (пробела) зарезервированы под особые цели, такие как "сигнал", "конец строки", "новая строка", и не отображаются.


Кодирование происходит в два этапа: вначале данные перекодируются в печатные символы, затем сообщение обрамляется текстовыми заголовками, помогающими определить, что данные являются PGP-сообщением.


Процесс довольно прост. Каждая группа из трёх байт (т.е. 3 группы по 8 бит) преобразуется в 4 группы по 6 бит. (Эти шесть бит кодируют число от 0 до 64.) Для каждой из этих групп выводится один символ из набора {A..Za..z0..9+/}. Если заключительная исходная группа состоит из двух байтов вместо трёх, к ней добавляется 2 нулевых бита; три знака выводятся, как обычно, а вместо четвёртого выводится символ '='. Если заключительная группа содержит только один байт, добавляются 4 нулевых бита, два знака формируются и выводятся, как обычно, а в конце — два символа '='. Опционально, позади данных может следовать символ '=' и 24-битовая CRC-сумма (аналогично кодированная в 4 печатных знака). Контрольная сумма не является криптографически стойкой, но позволяет фиксировать ошибки передачи. Описанная схема кодировки называется Radix-64.


Не используемые в кодировке символы, типа пробелов и переносов строк, если вставить в поток данных, будут проигнорированы. На заключительном этапе данные разбиваются на строки длиной до 76 знаков и к ним добавляются начальный и заключительный заголовки. Вот возможные значения хидера:



За любой из этих строк могут следовать опциональные пары "ключ-значение", передающие некоторые дополнительные сведения. На текущий момент определены такие ключи:

КлючОписание
Version: Номер версии PGP.
Comment: Всё, что хотел бы добавить отправитель.
MessageID: Идентифицирует все части разделённого сообщения. 32-значная строка, состоящая из печатных символов.
Hash: Приведённый через запятые перечень использованных хэш-алгоритмов. Применяется для прозрачно-подписанных сообщений.
Charset: Использованная кодировка в случае нестандартного варианта (к примеру, японская).

После нуля, одной или нескольких таких пар следует пустая строка и, далее, — закодированные данные и заключительный заголовок, выглядящий так же, как и начальный, за исключением того, что слово BEGIN заменено словом END. Одно исключение — это заголовок END PGP SIGNED MESSAGE: он не используется, если и сообщение, и подпись находятся в одном файле; сообщение завершается там, где начинается подпись.


Eсли почтовая система накладывает лимит на объём сообщения, файл может быть разделён на несколько частей. В этом случае используется заголовок PART X или PART X/Y, где X — номер текущей части, а Y — общее количество частей. Фрагменты одного сообщения должны иметь идентичный подзаголовок MessageID.


Если всё, что вам нужно — это подписать сообщение, не шифруя его, тогда перекодировать тело не требуется. Текст можно оставить в открытом виде, а ниже добавить ASCII-кодированную электронную подпись, вот так: 1



Назад | Дальше



1 Такая компоновка называется прозрачной подписью (clear signature), — прим. пер.


 
Комментариев нет [показать комментарии/форму]
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3