Теоретические основы декодирования информации
Декодирование - преобразование информации в понятный для пользователя вид из информационного потока, организованного с помощью физических явлений (звуковых, электромагнитных волн, электрических импульсов), произведенное посредством заранее известного алгоритма.
Алгоритмы, с помощью которых производится декодирование информации, могут происходить из следующих источников:
- быть опубликованными в открытом доступе (в виде стандартов, справочников, учебников); примерами открытых стандартов, кодирования/декодирования могут служить азбука Морзе, семафорный код, жесты глухонемых, азбука Брайля и т.п.; научиться пользоваться этими знаковыми системами может любой желающий;
- быть предметом договоренности обменивающихся информацией сторон (часовой пропускает на объект человека, назвавшего правильный пароль);
- быть результатом т.н. обратной (реверсивной) инженерии, когда правила декодирования заранее неизвестны, но, анализируя последовательности получаемых символов, можно сделать предположения об их значении (например, ученые исследуют язык, с помощью которого общаются дельфины).
Само понятие "декодирование" можно трактовать более или менее широко в зависимости от контекста.
В широком смысле декодирование - это распознавание смысла, но такое определение свойственно скорее семиотике, чем информатике. Так, британский социолог Стюарт Холл в начале 1970-х гг. создал теорию, выражающую сомнения в том, что получатель сообщения, даже правильно декодировав его с технической точки зрения, верно уловит посыл, содержащийся в нем.
Рисунок 1. Передача сообщений в теории С. Холла. Автор24 — интернет-биржа студенческих работ
Применительно к информатике, под декодированием подразумевается преобразование полученного сигнала в вид, удобный для восприятия пользователем. Поскольку передача информации производится в форме электрических импульсов, которые должны быть сформированы так, чтобы надежно преодолевать большие расстояния (или храниться в памяти компьютера, на устройствах долговременного хранения), для ее превращения в стандартный вид (байты, хранящиеся в памяти компьютера) необходимы некоторые дополнительные действия, часто связанные не только с вычислениями, но и с изменением электрических характеристик сигнала.
Наконец, в ряде случаев декодирование подразумевает еще и дополнительное дешифрование информации, которую пользователи могут при передаче защищать криптографическими алгоритмами. В этом случае целью является не надежная передача и хранение, а соблюдение коммерческой или персональной тайны.
Декодирование на примере протокола RS-232
Протокол - свод правил, следуя которым обменивающиеся информацией стороны могут организовать прием и передачу того или иного типа данных.
RS-232 - популярный протокол семейства UART для передачи данных между компьютерными устройствами (другими компьютерами, принтерами, сканерами, датчиками и т.п.).
Как правило, устройства для работы по этому протоколу соединены специальным кабелем (иногда его называют "нуль-модемным"). Разъемы, к которым такой кабель подключается, называются последовательными портами (COM-портами), поскольку информация передается через них побитно. У каждого такого порта есть две основные линии - TX и RX (Transmitted Data и Received Data), соответственно, передающая и принимающая. Принимающая линия одного устройства соединена с передающей другого и наоборот.
Протокол RS-232 используется не только для кабельных соединений, но и в таких технологиях, как Bluetooth, TCP/IP и т.д.
Рисунок 2. Передача пакета по протоколу RS-232. Автор24 — интернет-биржа студенческих работ
Если напряжение на линии составляет от 12 до 3 вольт, то считается, что по ней передается логический ноль. Для передачи логической единицы используется диапазон напряжений от -3 до -12 вольт. Интервал от -3 до +3 вольт считается зоной неопределенности. Благодаря большой амплитуде рабочих напряжений обеспечивается высокая помехоустойчивость. Длина кабеля может составлять до 15 м.
Помимо напряжения, при передаче информации посредством RS-232 необходимо учитывать частоту (скорость) сигнала и его формат.
Передача ведется, как правило, пакетами по 10 бит. Пересылка открывается битом с нулевым значением, после которого следуют восемь бит данных, бит четности (для проверки переданных данных) и стоповый бит (его значение, как и у стартового, нулевое).
Скорость передачи может составлять 9600, 28800, 33600, 56000 и т.д. бит в секунду. Ее обменивающиеся информацией устройства согласуют в начале сеанса связи.
Получая от передающего устройства пакеты по 8 бит, принимающее преобразует их в стандартные байты, которые могут представлять собой буквы, цифры, другие знаки, процессорные инструкции и т.п.
Дешифрирование
Дешифрирование - преобразование намеренно измененной с помощью специального алгоритма информации в понятный формат - можно считать одной из разновидностей декодирования. Зная закономерность, с помощью которой сообщение было изменено, можно применить к нему обратную и получить исходные данные. Такой способ называется шифрованием с симметричным ключом, поскольку одинаковые ключи имеют и отправитель, и получатель. Этот способ не безопасен, поскольку злоумышленник, завладев ключом (например, перехватив его при пересылке), может легко расшифровать данные.
В современной практике для шифрования и дешифрования чаще используется не одна функция, а пара взаимосвязанных: публичный и приватный. Утечка публичного ключа не представляет опасности, поскольку с его помощью лишь шифруется информация. Его можно безопасно передавать по сети. Отправитель, получив публичный ключ, шифрует с его помощью сообщение и отправляет получателю. А вот расшифровать такую информацию можно только с помощью приватного ключа, который получатель никуда не отправляет, хранит в защищенном виде на своем компьютере.
Рисунок 3. Обмен зашифрованной информацией. Автор24 — интернет-биржа студенческих работ