Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
09.02.2015
Размер:
120.32 Кб
Скачать

Кодирование информации для компьютерной обработки и хранения

Лекция 8.

Кодирование

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

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

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

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

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

 

 

Ключ

 

 

Кодированное

 

 

Ключ

 

 

 

 

 

 

Открытый

 

 

 

сообщение

 

 

 

Открытый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

текст

Алгоритм

 

 

 

 

Алгоритм

текст

 

 

кодирования

 

 

 

 

декодирования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базовые сведения о шифровании

Существует несколько видов шифрования:

симметричное – шифрование с закрытым или личным ключом,

асимметричное – шифрование с открытым или публичным ключом,

цифровая подпись,

сертификаты.

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

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

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

Цифровые сертификаты позволяют построить надежную инфраструктуру организации. Этот способ защиты основан на криптографии с открытым ключом.

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

Примеры использования сертификатов

1.Организация хочет предоставить своим нынешним и бывшим сотрудникам доступ к информации об их пенсионных накоплениях. Информация хранится на сервере Web. В этом случае:

все такие сотрудники получают сертификаты;

доступ к пенсионной информации осуществляется либо через Интернет, либо по интрасети и предоставлением сертификата для аутентификации;

при этом сотрудники имеют доступ к остальным Web-узлам компании без дополнительной регистрации.

2.Организация желает избирательно предоставить своим поставщикам информацию из корпоративной интрасети. В этом случае:

для поставщиков назначается группа Windows NT с определенными правами доступа;

сервер сертификации выдает поставщикам сертификаты, соотнесенные с учетной записью в Windows NT;

поставщик регистрируется в интрасети корпорации и автоматически аутентифицируется программой просмотра при предоставлении сертификата;

Web-сервер соотносит поставщика с его учетной записью и позволяет действовать строго в рамках предоставляемых ей полномочий.

3.Организация предоставляет посетителям услуги по подписке на свой Web-сервер. При этом:

потенциальный пользователь заходит на Web-узел и заполняет регистрационную форму подписчика;

входной модуль сервера сертификации обрабатывает запрос и выдает сертификат, а также заносит в корпоративную базу информацию о пользователе и правах, ему предоставленных;

теперь пользователь может снова зайти на Web-узел, предоставить сертификат и, после аутентификации, воспользоваться подпиской;

если пользователь больше не нуждается в подписке или использует ее не по назначению, администратор может отозвать сертификат пользователя и запретить доступ.

Кодирование текста

При кодировании информации, представимой с помощью ограниченного набора символов – алфавита достаточно пронумеровать все знаки и записывать в память компьютера соответствующие номера. Для символа отводится обычно 1 байт (28=256 различных символов). Соответствие между символом и его кодом может быть произвольно, но в силу необходимости читать на одном компьютере текст, созданный на другом таблицы кодировок стараются стандартизовать.

Практически все использующиеся сейчас таблицы основаны на "американском стандартном коде обмена информацией" ASCII (American Standard Code for Information Interchange).

Этот стандарт определяет значения для нижней половины кодовой таблицы – первых 127 кодов (32 управляющих кода, основные знаки препинания и арифметические символы, цифры и латинские буквы). Эти символы отображаются верно, независимо от кодировки. Хуже с "национальными" символами и "типографскими" знаками препинания. А также с кириллическим алфавитом.

Например, для русского языка сейчас широко используются пять таблиц кодировок:

CР866 (DOS-альтернативная модифицированная) – на РC-совместимых компьютерах при работе с операционными системами DOS и OS/2, а также в любительской международной сети Фидо (Fidonet).

CР1251 (Windows-кодировка) – на РC-совместимых при работе в ОС Windows

KOI-8r – самая старая из использующихся до сих пор кодировок. Применяется на компьютерах, работающих в ОС UNIX, является фактическим стандартом для русских текстов в сети Интернет.

Macintosh Cyrillic – предназначена для работы со всеми кириллическими языками на Макинтошах.

ISO-8859 – кодировка задумывалась как международный стандарт для кириллических текстов, однако на территории России практически не применяется.

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

Сейчас, когда объем памяти компьютеров чрезвычайно вырос, можно позволить тратить для хранения текста не 1, а 2 байта. Два байта могут хранить число от 0 до 65535. Поэтому в кодовой таблице можно разместить не только буквы европейских алфавитов (латинского, кириллического, греческого), но и буквы арабского, грузинского и других языков и даже большую часть японских и китайских иероглифов.

8.4. Сжатие информации

Зачем нужно сжимать информацию?

Посчитаем, к примеру, сколько займет памяти изображение, по качеству близкое к телевизионному.

Пусть его разрешение – 800х600 пиксел (в телевизионном изображении 625 строк),

а число оттенков цвета около 16 тысяч (High Color), т. е. цвет каждого пиксела представляется двухбайтовым кодом.

800x600=480000 элементов.

480000x2 байт = 960000 байт – это чуть меньше 1 мегабайта.

Кажется, не так много – на лазерном диске поместится больше 650 таких картинок.

А если речь идет о фильме?

Стандартная скорость кинопроекции – 24 кадра в секунду.

В итоге на компакт-диске можно записать фрагмент длительностью 650:24=27 секунд – совсем немного.

А ведь это далеко не единственный случай, когда информации "слишком много".

Таким образом, одна из причин использования сжатия данных – желание поместить больше информации в память того же объема.

Есть и вторая причина. Сжатие информации ускоряет ее передачу.

Существует несколько методов сжатия (компрессии) данных. Все их можно разделить на две группы:

сжатие без потерь,

сжатие с потерями.

В первом случае распакованное сообщение точно повторяет исходное. Естественно, так можно обрабатывать любую информацию.

Сжатие же с потерями возможно только в тех случаях, когда допустимы некоторые искажения

какие именно, зависит от конкретного типа данных.

8.4. Сжатие информации

Практически все методы сжатия без потерь основаны на одной из двух довольно простых идей.

Одна из них впервые появилась в методе сжатия текстовой информации, предложенном в 1952 году Хаффманом. Стандартно каждый символ текста кодируется одним байтом. Но дело в том, что одни буквы встречаются чаще, а другие реже. Например, в тексте, написанном на русском языке, в каждой тысяче символов в среднем будет 90 букв "о", 72 – "е" и только 2 – "ф". Больше же всего окажется пробелов: сто семьдесят четыре. Если для наиболее распространенных символов использовать более короткие коды (меньше 8 бит), а для менее распространенных – длинные (больше 8 бит), текст в целом займет меньше памяти, чем при стандартной кодировке.

Коды, используемые в сжатом тексте должны подчиняться свойствам префикса, а именно: код, использованный в сжатом тексте не может быть префиксом любого другого кода. Коды префикса могут быть найдены посредством дерева, в котором каждый лист соответствует одной букве алфавита источника. Hа рис. 8.2 показано дерево кода префикса для алфавита из 4 букв. Код префикса для буквы может быть прочитан при обходе дерева от корня к этой букве, где 0 соответствует выбору левой его ветви, а 1 – правой. Дерево кода Хаффмана есть дерево с выровненным весом, где каждый лист имеет вес, равный частоте встречаемости буквы в исходном тексте, а внутренние узлы своего веса не имеют. Дерево в примере будет оптимальным, если частоты букв A, B, C и D будут 0.125, 0.125, 0.25 и 0.5 соответственно.

0

0

0

 

 

 

A ----------

o ----------

o ----------

o

 

 

 

¦

¦

¦

A = 000

 

¦ 1

¦1

¦1

B

= 001

 

¦

¦

¦

C

= 01

 

B

C

D

D = 1

Рис. 8.2. Дерево представления кода префикса

Обычные коды Хаффмана требуют предварительной информации о частоте встречаемости букв в исходном тексте, что ведет к необходимости его двойного просмотра – один для получения значений частот букв, другой для проведения самого сжатия. В последующем, значения этих частот нужно объединять с самим сжатым текстом, чтобы в дальнейшем сделать возможным его развертывание. Адаптивное сжатие выполняется за один шаг, т.к. код, используемый для каждой буквы исходного текста, основан на частотах всех остальных кроме нее букв алфавита.

Несколько методов сжатия основаны на учете повторяющихся байтов или последовательностей байт. Простейший из них – RLE (Run-Length Encoding – кодирование длины последовательности) – широко используется при сжатии изображений. В файле, сжатом таким методом, записывается, сколько раз повторяются одинаковые байты. Например, вместо "RRRRRGGGBBBBBBRRRBBRRRRRRR" будет храниться "5R3G6B3R2B7R". Очевидно, что такой метод лучше всего работает, когда изображение содержит большие участки с однотонной закраской.

8.4.Сжатие информации

Другие методы основаны на том, что если некоторая последовательность байт встречается в файле многократно, ее можно записать один раз в особую таблицу, а потом просто указывать: "взять столько-то байт из такого-то места таблицы" (на этой идее основан широко использующийся для сжатия различных данных метод LZW, названный так по первым буквам фамилий его разработчиков: Lemрel, Ziv и Welch).

Методы сжатия без потерь уменьшают размер файлов не очень сильно. Обычно коэффициент сжатия не превосходит 1/3-1/4. Гораздо лучших результатов можно добиться, используя сжатие с потерями. В этом случае на основе специальных исследований определяется, какой информацией можно пожертвовать.

Например, установлено, что человеческое зрение очень чувствительно к изменению яркости

игораздо меньше к цветовому тону. Поэтому при сжатии фотографических изображений (и вообще, изображений, в которых нет резких границ между цветами) можно исключить информацию о цвете части пикселов. При распаковке же определять его по соседним. На практике чаще всего применяется метод, использующий более сложную обработку, – JРEG (Joint Рhotograрhic Exрerts Grouр – объединенная группа экспертов по фотографии, разработавшая одноименный метод сжатия изображений). Он позволяет сжимать изображение в десятки раз. С учетом особенностей восприятия человеком информации строятся также методы сжатия с потерями видеоизображения (наиболее распространены сейчас методы MРEG – Moving Рicture Exрerts Grouр – группа экспертов по движущимся изображениям) и звука.

Естественно, сжатие с потерями может использоваться только программами, предназначенными для обработки конкретных видов данных (например, графическими редакторами). А вот методы сжатия без потерь применяются и для любых произвольных файлов (широко известны программы-компрессоры ARJ, ZIР, RAR и др).

Заметим, что не стоит пытаться сжать файлы, которые уже были сжаты: размер их либо уменьшится совсем незначительно, либо даже увеличится.

 

8.5. Арифметическое кодирование

 

 

В ходе арифметического кодирования текст

Таблица 8.1. Пример постоянной

 

представляется вещественными числами в интервале

 

от 0 до 1. По мере кодирования текста, отображающий

модели для алфавита a,e,i,o,u,!

 

его интервал уменьшается, а количество битов для его

Символ

Вероятность

Интервал

 

 

представления возрастает. Очередные символы текста

 

 

сокращают величину интервала исходя из значений их

о

0.3

[ 0.0;0.3 )

 

 

вероятностей, определяемых моделью (фиксированной

 

 

или адаптивной). Более вероятные символы делают

п

0.2

[ 0.3;0.5 )

 

 

это в меньшей степени, чем менее вероятные, и,

 

 

следовательно, добавляют меньше битов к результату.

т

0.2

[ 0.5;0.7 )

 

Перед началом работы соответствующий тексту

 

ь

0.1

[ 0.7;0.8 )

 

 

интервал есть [0; 1). При обработке очередного

 

 

символа его ширина сужается за счет выделения этому

я

0.1

[ 0.8;0.9 )

 

 

символу части интервала. К примеру, применим к

 

 

тексту "пять!" алфавита о п т ь я ! (буквы для "опять!" в

!

0.1

[ 0.9;1.0 )

 

 

алфавитном порядке) модель с постоянными

 

 

 

 

 

 

вероятностями (т.н. фиксированная модель), заданными в табл. 1.

И кодировщику, и декодировщику известно, что в

 

 

 

 

самом начале интервал есть [0; 1). После просмотра

 

 

Таблица 8.2

 

первого символа "п", кодировщик сужает интервал до

В начале

 

[ 0.0;1.0 )

 

[0.3; 0.5), который модель выделяет этому символу.

 

 

 

 

 

 

Второй символ "я" сузит этот новый интервал до

После

"п"

[ 0.3;0.5 )

 

девятой его десятой части, поскольку для "я" выделен

просмотра:

 

 

 

 

 

 

фиксированный интервал [0.8; 0.9). В результате

 

 

 

 

получим рабочий интервал [0.46; 0.48), т.к. предыдущий

 

"я"

[ 0.46; 0.48 )

 

интервал имел ширину в 0.2 единицы и одна десятая

 

"т"

[ 0.47; 0.474 )

 

от него есть 0.02. Следующему символу "т"

 

 

соответствует фиксированный интервал [0.5; 0.7), что

 

"ь"

[ 0.4728; 0.4732 )

 

применительно к рабочему интервалу [0.46; 0.48)

 

 

суживает его до интервала [0.47, 0.474). Продолжая в

 

"!"

[ 0.47316; 0.4732 )

 

том же духе, имеем:

 

 

 

8.5.Арифметическое кодирование

Предположим, что все, что декодировщик знает о тексте, это конечный интервал [0.47316; 0.4732]. Он сразу же понимает, что первый закодированный символ есть "п", т.к. итоговый интервал целиком лежит

винтервале, выделенном моделью этому символу согласно табл. 1. Повторим действия кодировщика: сначала [0.0; 1.0], после просмотра "п" [0.3; 0.5], далее ясно, что второй символ – это "я", поскольку он приведет к интервалу [0.46; 0.48], который полностью вмещает итоговый интервал [0.47316; 0.4732]; продолжая работать таким же образом, декодировщик извлечет весь текст.

Декодировщику нет необходимости знать значения обеих границ итогового интервала, полученного от кодировщика. Даже единственного значения, лежащего внутри него, например 0.47319, уже достаточно. Однако, чтобы завершить процесс, декодировщику нужно вовремя распознать конец текста. Кроме того, одно и то же число 0.0 можно представить и как "о", и как "оо", "ооо" и т.д. Для устранения неясности мы должны обозначить завершение каждого текста специальным символом END, известным и кодировщику, и декодировщику. Для алфавита из табл. 1 для этой цели, и только для нее, будет использоваться символ "!". Когда декодировщик встречает этот символ, он прекращает свой процесс.

Для фиксированной модели, задаваемой моделью табл. 1, энтропия 5-символьного текста "пять!" будет:

— log 0.2 — log 0.1 — log 0.2 — log 0.1 — log 0.1 = — log 0.00004 ~ 4.39794.

(Здесь применяем логарифм по основанию 10, т.к. вышерассмотренное кодирование выполнялось для десятичных чисел). Это объясняет, почему требуется 5 десятичных цифр для кодирования этого текста. По сути, ширина итогового интервала есть 0.4732 – 0.47316 = 0.00004, а энтропия – отрицательный десятичный логарифм этого числа. Конечно, обычно мы работаем с двоичной арифметикой, передаем двоичные числа и измеряем энтропию в битах.

Пяти десятичных цифр кажется слишком много для кодирования текста из 4-х букв! Однако, ясно, что разные модели дают разную энтропию. Лучшая модель, построенная на анализе отдельных символов текста "пять!", есть следующее множество частот символов: "п"(0.2), "я"(0.2), "т"(0.2), "ь"(0.2), "!"(0.2) .

Она дает энтропию, равную 4 в десятичной системе счисления, т.е. кодирует исходный текст числом из 4-х цифр. Однако, более сложные модели дают в общем случае гораздо лучший результат.

Соседние файлы в папке презентации