Преобразование информации к нечитаемому виду
Преобразование информации к нечитаемому виду, исключающее несанкционированное раскрытие, можно определить как преднамеренное искажение информации с потерей ее смыслового значения, но с возможностью восстановления исходного содержимого. В ситуациях, когда "посторонний" получил доступ без нарушения правил идентификации/аутентификации/авторизации (вопрос читателю – когда такое возможно?), фактически способ – последний защитный барьер.
Существуют три наиболее распространенных способа умышленного искажения читаемой информации: перекодирование, шифрование и стеганографирование.
Перекодирование информации. Под кодированием понимают запись символьных данных, в которой собственно символы заменяются некоторым кодом (либо другими символами, либо числами).
Для представления любой информации в современных компьютерах используются двоичные числа (двоичные коды). При вводе информации в компьютерах специальными аппаратными или программными средствами каждый символ преобразуется в двоичный код и записывается в ОЗУ для дальнейшей обработки или на внешний носитель информации для храпения. При выводе информации в компьютерах осуществляется обратное преобразование: двоичный код каждого символа "переводится" в свою визуальную, графическую форму, которая и отображается на устройстве вывода (на мониторе или принтере). Цифры, входящие в состав любого десятичного числа, также кодируются. По после кодирования числа (закодированные, но пока еще десятичные) обязательно переводятся из десятичной системы счисления в двоичную, пригодную для выполнения арифметических операций на компьютерах.
Запись всех используемых символов с указанием их кодов образует кодовую таблицу, которую часто называют кодовой страницей.
Существует много различных видов кодировок символов для компьютеров.
В операционной системе DOS использовался американский стандартный код обмена информацией ASCII (American Standard Code for Information Interchange), в котором можно было закодировать не более 256 нажатий клавиш (ввод с клавиатуры разных символов и команд). На каждый введенный в компьютер символ "расходовалось" по 8 бит или 1 байт (256 = 28). Существовало много модификаций этого "стандартного" кода, что затрудняло обмен информацией между компьютерами.
В операционных системах Windows но умолчанию используется ANSI (American National Standards Institute) кодировка, которая отличается от ASCII, но остается однобайтной (один байт на один символ).
В странах Востока (Китай, Япония), где письменность строится не только на отображении отдельных звуковых слогов, но и содержит иероглифы, обозначающие целые слова или короткие предложения, грамотным считается человек, распоряжающийся примерно 5000 иероглифами. Компьютер с 256 символьной ANSI кодировкой выглядит безграмотным.
Для исправления ситуации создана двухбайтовая кодировка Unicode, содержащая 65 536 кодов. Каждый символ кодируется 16-разрядным двоичным числом (16 бит или 2 байта). Для перехода от установленной в Windows по умолчанию кодировки ANSI к Unicode необходимо дать команду Пуск, Панель управления, Язык и региональные стандарты и в диалоговом окне (рис. 11.6) установить поддерж-
Рис. 11.6. Язык и региональные стандарты
ку восточно-азиатских языков или добавить один из этих языков в раскладку клавиатуры.
Перечисленные виды кодировок считаются "стандартными", а правильнее сказать, простыми и общедоступными для большинства как системных, так и прикладных программ. Простыми их называют по той причине, что они показывают символ без всяких прикрас.
Для отображения различных атрибутов одного символа (гарнитура, размер, начертание, цвет, заливка и всевозможные эффекты) недостаточно иметь только код символа. Во многих программах необходимо вместе с набором символов (вместе с документом) хранить дополнительные сведения: настройки самой программы редактора или переводчика, размеры и разметку уже документа или его отдельных страниц, перечень внешних подключенных объектов – шаблонов, макросов, словарей, рисунков, и т.п. В этом случае создатели программного обеспечения стали разрабатывать и использовать свои оригинальные кодировки, получившие общее название OEM (Original Equipment Manufacturer).
Долговременно коды символов хранятся во внешней памяти компьютера отнюдь не поодиночке, а собранные в целые поименованные коллективы данных, которые и называют файлами. Если в файле сохранены только коды символов из стандартных кодовых таблиц, то такой файл называют текстовым. Текстовые файлы с кодировкой ANSI редактируются и просматриваются с помощью Блокнота.
Если в файле сохранен и текст, и его форматирование, и разметка документа, то правильнее его называть файлом с текстовым документом или файлом документа. Для их создания используется одна из кодировок OEM. Естественно, что для просмотра или редактирования таких файлов применяется только "родная" программа, с помощью которой он был создан.
Если при попытке открыть текстовый файл двойным щелчком в окне редактора виден бессмысленный набор символов, то, скорее всего, кодировка файла не соответствует той программе, в которой его пытаются открыть.
В этой ситуации необходимо в момент открытия изменить кодировку текстового файла "в интересах" открывающей его программы. Подобный процесс называют конвертированием файла. В большинстве текстовых редакторов имеются встроенные конвертеры, позволяющие при открытии или при сохранении файла задать необходимый тип (расширение имени) файла, который и определяет вид кодировки. В программах-обозревателях Интернета, таких как Internet Explorer или аналогичных, кодировка открываемого файла может определяться автоматически. При сохранении файла во внешней памяти обозреватели предлагают ту же кодировку, в которой файл был ранее открыт.
Операционная система Windows избавляет пользователя от необходимости следить за кодировкой файлов. Двойной щелчок мышкой по пиктограмме или имени файла и позволяет отправиться в программу для просмотра или редактирования. "Соответствующая" программа определяется Windows с помощью расширения имени файла. Именно оно несет информацию о его формате и возможной кодировке данных, записанных в нем. Ассоциация расширений текстовых файлов *.txt; *.asp; *.bat; *.cig; *.log осуществляется со стандартным Блокнотом.
Если Блокнот не открывается, то ассоциация не установлена либо нарушена (изменена). В этой ситуации появляется окно Выбор программы (Открыть с помощью) (рис. 11.7). Выбрав программу из списка программ или по кнопке Обзор, можно установить необходимую ассоциацию расширения файла, который надо открыть.
Рис. 11.7. Окно Выбор программы
Текстовые файлы *.htm или *.html ассоциируются с обозревателем, установленным по умолчанию, например Internet Explorer. Текстовый файл * .rtf – открывается обычно программой Word; реже WordPad.
Файлы с OEM кодировкой по умолчанию ассоциированы с порождающими их программами или визуализаторами (просмотрщиками):
*.bmp – Paint, или IrfanView, ACDSee;
*.doc – Word;
*.pdf – Acrobat Reader;
*.std – Promt.
К сожалению, связь кодировки файла и расширения имени (типа файла) не однозначна. Сохраняя файл с расширением *.txt, можно задать различную кодировку (в Word их 5 вариантов, в Internet Explorer – около 30). До открытия файла пользователь обычно не знает, в какой кодировке файл создан первоначально. Иногда при сохранении скачанной из Интернета русской страницы ошибочно указывают какую-либо иную кодировку, например арабскую. Чтобы увидеть читаемое содержимое файла приходится делать десятки попыток открыть его, задавая различные кодировки. Подобный путь трудоемок. На помощь приходят программы-перекодировщики.
Основное назначение программ-перекодировщиков – автоматический перебор кодовых страниц при открытии заданного пользователем файла. Перекодировщик самостоятельно (автоматически) находит правильную кодировку и отображает содержимое файла в "читаемом" виде, возможно, с потерей форматирования текста. Иногда перекодировщик не может найти читаемый вариант. Так происходит с зашифрованными файлами или файлами, кодировка которых программе неизвестна.
Среди других возможностей подобных программ – наличие простого текстового редактора, возможность ручного перекодирования (смены кодовой страницы), способность создать собственную, нестандартную кодировку (кодовую страницу). Последняя возможность относится не ко всей странице, а к ее не английской, национальной части.
Зачем создавать собственную кодировку? Собственная оригинальная кодировка является простейшим способом защиты собственных данных при работе в локальной сети.
Вы любите пароли и шифрование? Но бывает ситуация, когда пользователь дает 100 файлам 100 разных паролей, а на следующий день половину паролей забывает, а остальные не помнит, какой пароль какому файлу поставил. Вместо защиты информации пользователь получает санкционированную им же потерю.
Что дает собственная кодировка? При попытке стандартного открытия файла с оригинальной кодировкой в стандартных текстовых редакторах он будет выглядеть как будто зашифрованным. Прочитать его можно будет только с помощью перекодировщика, который знает данную оригинальную кодировку.
Пример. Слово "мама" в десятичных кодах стандартной кодовой таблицы записывается в виде: мама → 236 224 236 224. Предположим, что новая кодовая таблица просто увеличивает старые коды символов на единичку → 237 225 237 225. Если читать эти коды но старой кодовой таблице, то получим набор символов – нбнб (может быть мама, либо папа, либо баба, либо куку и т.п. в зависимости от вида примененной кодовой страницы).
Если в локальной сети на своем компьютере создан такой файл, то и читать его надо там же. На других компьютерах в сети файл читаться не будет даже при наличии на них такой же программы (пока не скопируете на эти компьютеры именно со своей машины сам перекодировщик).
Помнить оригинальную кодировку пользователю не нужно, на вашем компьютере перекодировщик автоматически найдет правильный вариант.
Известным перекодировщиком является программа Shtirlitz IV (Штирлиц).
Пользователи иногда неосознанно применяют перекодирование. Например, запоминание пароля на русском языке, а ввод его в компьютер в английской раскладке клавиатуры. Пароль Терминатор будет запоминаться и обрабатываться компьютером как Nthvbyfnjh.
Недостаток перекодирования – сохранение статистических свойств языка (в русском языке буква "а" встречается чаще, чем буква "б" т.д.). При наличии навыка (существуют специальные программы для компьютеров) и длинного перекодированного текста сравнительно просто "восстановить", а фактически взломать перекодированный документ и получить исходные данные (исходный текст документа).
К одной из распространенных ошибок пользователя относится путаница между стандартной кодовой таблицей (например, ANSI или Unicode) и таблицей, которая в некоторых текстовых редакторах вызывается командой Вставка, Символ. Последняя является OEM кодовой таблицей, в которой одинаковые символы, отображаемые с помощью разных шрифтов, имеют одинаковые коды. А разные символы, взятые из разных шрифтов, тоже могут иметь одинаковые коды. Понятно, что отдельные символы не воспроизводятся за пределами редактора по стандартной кодовой
таблице. Эта ситуация рассматривалась выше при обсуждении паролей, целиком состоящих из спецсимволов.
Шифрование информации. В отличие от перекодирования позволяет избавиться от статистических свойств языка. При шифровании один и тот же символ исходного текста может быть закодирован разными кодами (при перекодировании только одним кодом) и длина текста до и после шифрования одинакова (при перекодировании не соблюдается). Рассмотрим пример со словом "мама", предполагая, что при каждой встрече символа его код будет смещаться на единичку: мама → м+1 а+1 м+2 а+2 → нбов (сравните с вариантом перекодирования, который давал слово "нбнб"). Существуют две основные схемы шифрования.
Симметричная схема шифрования использует для шифрования и дешифрования один и тот же ключ (рис. 11.8, а). В качестве ключа может использоваться пароль, случайное число или их комбинация.
Недостаток – для работы дешифратора нужен тот же ключ, что и для шифрования. Поэтому ключ приходится передавать по сети, как правило, вместе с зашифрованным текстом. Следовательно, существует реальная возможность перехватить ключ и расшифровать сообщение.
Достоинство симметричного шифрования – высокое быстродействие, что очень важно при работе в сети. Наиболее известные схемы симметричного шифрования носят названия – DES, AES.
Рис. 11.8. Схемы симметричного (а) и несимметричного (б) шифрования
Несимметричная схема шифрования – использует для работы два ключа, один для шифрования, другой для дешифрования (рис. 11.8, б).
Недостаток несимметричных схем шифрования – значительно более медленная работа, чем у симметричных схем. Ключи К1 и К2 не могут быть любыми. Они образуют пару, удовлетворяющую определенным математическим условиям. Поэтому количество пар ключей заданной длины всегда меньше, чем при симметричном шифровании. Достоинства – возможность не передавать по сети закрытый (security) ключ и одновременно сделать другой ключ открытым (public) с возможностью его передачи или публикации в сети.
Примеры использования несимметричной схемы шифрования приведены ниже.
Электронная понта. Отправитель шифрует свое письмо закрытым ключом, получатель с помощью открытого ключа, полученного от отправителя, может прочитать полученное письмо. Но получатель или иной участник сетевого обмена информацией не может создать письмо, которое бы воспринималось как созданное отправителем. Наиболее широко используемая схема несимметричного шифрования – PGP.
Шифрование документов, изображений (графических файлов), видеороликов, информации, записанной на носители информации. Автор документа шифрует часть документа или весь его целиком своим закрытым, никому больше не известным ключом и выкладывает документ для всеобщего обозрения. Содержимое документа или его зашифрованной части может расшифровать каждый, кто обладает открытым ключом. Но наличие в документе "сведений – следов" об уникальном закрытом ключе делает его однозначно связанным с обладателем закрытого ключа, т.е. с автором документа.
Электронная цифровая подпись документов, изображений, видеороликов, HTML страниц – преобразование, не шифрующее содержимое файла с документом, но позволяющее создать уникальный слепок файла (так называемый хеш), который практически невозможно подделать. В то же время он реагирует на малейшие изменения в файле (документе).
Стеганографическая защита. К ней относятся способы сокрытия информации без предварительного преобразования к нечитаемому виду. Смысловое значение последовательности символов (текстовой фразы) остается без изменения. Как правило, нельзя увидеть эту последовательность символов без применения специальных мер по ее отображению. Примером стеганографической защиты служит задание символам цвета, совпадающего с цветом фона (белый на белом, зеленый на зеленом), или значительное изменение размера шрифта. Прочитать текст, набранный шрифтом в 1 пт или в 1500 пт без преобразования символов довольно трудно. Если для набора текста применяется редактор Microsoft Word, то выделенной группе символов можно установить формат шрифта скрытый. Скрытый текст не будет отображаться в документе и печататься принтером, если не включен режим отображения непечатаемых символов.
Более сложная стеганографическая защита размещает текст с помощью специальной программы (например, Hide!) в конце растрового графического файла (файла с рисунком). При просмотре рисунка текст не воспроизводится, но просмотр графического файла в текстовом редакторе позволяет прочитать текстовый фрагмент (рис. 11.9).
Недостаток программ этого класса – невозможность после вставки текста в файл с рисунком редактирования ни рисунка, ни текста.
Рис. 11.9. Размещение текста в конце кода растрового графического файла с рисунком
Допустимо программно изменять таблицу кодирования цветов, расположенную в начале любого графического файла. В реальных рисунках крайне редко содержатся миллионы цветовых оттенков. Поэтому из таблицы без ущерба для качества рисунка выбрасывают описание несуществующих в нем цветов. На освободившееся место размещают коды текстовых символов. И редактирование, и отображение текста должна осуществлять специальная программа.
Можно разместить символы (точнее, их цифровые коды) непосредственно внутри рисунка, исключив из него некоторое количество точек. Вместо кода исключенных точек размещают коды символов текста. Изображение незначительно, практически незаметно для глаз искажается. Если внедряемый в рисунок текст имеет большую длину, то на рисунке могут быть заметны цветные полосы. Но цель достигнута – прочитать текстовую часть без специальных программ невозможно. Некоторые программы, например Info Hider, позволяют подбирать цвет в местах размещения текста на рисунке. Если этот цвет будет совпадать с цветом близлежащих на рисунке точек, то линии будут незаметны.