В действительности с этой простой схемой кодирования связаны две основные проблемы. Во-первых, программа шифрования для расшифровки текста не использует ключа. Поэтому любой, кто знает, что используется данный алгоритм и в состоянии написать программу, сможет прочитать файл. Во-вторых (и это самое главное), этот метод отнюдь не тайна для опытных программистов.
Улучшенный метод шифрования методом побитовой манипуляции использует оператор XOR. Результаты выполнения этого оператора приведены в следующей таблице:
XOR |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
Иными словами, результат выполнения оператора XOR получает значение ИСТИНА тогда и только тогда, когда один из операндов имеет значение ИСТИНА, а другой - ЛОЖЬ. Именно это и является уникальным свойством оператора XOR - если вы выполните эту операцию на одним байтом, используя другой байт в качестве «ключа», а затем возьмете результат и выполните над ним ту же самую операцию с помощью того же самого ключа, вы снова получите исходный байт. Например:
|
Исходный байт |
|
|
11011001 |
|
|
|
Ключ |
XOR |
01010011 (ключ) |
|||
|
Зашифрованный байт |
|
|
10001010 |
|
|
|
|
|
|
|
|
|
|
Зашифрованный байт |
|
|
10001010 |
|
|
|
Ключ |
|
XOR |
01010011 (ключ) |
|
|
|
Расшифрованный байт |
|
|
11011001 |
|
|
Расшифрованный байт равен исходному.
Этот процесс может использоваться для кодирования файлов, так как он решает две основные проблемы с простейшей версией на базе первого дополнения. Во-первых, благодаря использованию ключа, расшифровать файл, имея только программу декодирования нельзя. Во-вторых, используемые манипуляции с битами не настолько просты, чтобы их можно было сразу распознать.
Ключ не обязательно должен иметь длину 1 байт. Фактически, можно использовать ключ, состоящий из нескольких символов, и чередовать эти символы на протяжении всего файла.
Стандарт ГОСТ.
Официально ГОСТ называется «Алгоритм криптографического преобразования данных ГОСТ 28147-89» - это несколько шире, чем просто зашифровывание или расшифровка данных. Все режимы криптопреобразований данных, согласно ГОСТ, базируются на трех циклах алгоритма.
*цикл зашифровывания (32 - З)
*цикл расшифровки (32 - Р)
*цикл выработки имитоприставки (16 - З)
Прежде чем перейти к изучению основных вопросов, рассмотрим дополнительную информацию, используемую ГОСТом, - именно ее секретность обеспечивает секретность
21
шифрованного сообщения. Эта информация представляет собой 2 массива данных - ключ
итаблицу замен. Приведем их характеристики.
1.Ключ - это массив из 8-ми 32-битовых элементов, обозначаемых в дальнейшем
Xi, где i изменяется от 0 до 7. Таким образом, размер ключа составляет 32 8=256 битов или 32 байта.
2. Таблица замен - двумерная таблица - набор из 8-ми одномерных массивов (узлов замен), каждый из которых содержит 16 различных 4-битовых чисел (от 0 до 15) в произвольном порядке. Обозначим Km(y) значение первого элемента в m-ом узле замен. При этом m изменяется в пределах 0...7, а y - в пределах 0...15. Таким образом, общий объем таблицы замен равен 8 узлов 16 элементов 4 бита/элемент = 512 битов = 64 байта.
Рассмотрим основной шаг криптопреобразования. На входе шага заданы два 32битовых элемента данных - N1, N2, с этими элементами выполняются следующие манипуляции:
1)добавление к N1 элемента ключа - сложение по модулю 232;
2)поблочная замена результата по 4 бита по таблице замен;
3)циклический сдвиг результата на 11 битов влево;
4)побитовое сложение результата по модулю 2 с элементом N2;
5)перестановка элементов N2 <- старое, N1 <- результат;
После этого новые элементы N1 и N2 выдаются в качестве результата шага. Так как в основном шаге используется только один элемент ключа, еще одним параметром шага является номер этого элемента.
Рассмотрим базовые циклы криптоалгоритма ГОСТа. Они отличаются друг от друга только числом повторений основного шага и порядком просмотра элементов ключа. В обозначении цикла nn-X первый элемент (nn) - это число повторений основного шага, а второй кодирует порядок просмотра элементов ключа (буква З - порядок зашифровывания, Р - расшифровки). Кроме того, в конце циклов шифрования предусмотрена дополнительная перестановка элементов. Приведем порядок использования элементов ключа для трех базовых циклов:
*цикл зашифровывания (32 - З) - 3 раза вперед, 1 раз назад:
0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0
*цикл расшифровки (32 - Р) - 1 раз вперед, 3 раза назад:
0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0
*цикл выработки имитоприставки (16 - З) - 2 раза вперед:
0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7
Каждый из циклов получает на входе 2 32-битовых слова и после серии основных шагов выдает в качестве результата также 2 32-битовых слова.
Основные режимы шифрования.
ГОСТ 28147-89 предусматривает три режима шифрования данных:
1)простая замена;
2)гаммирование;
3)гаммирование с обратной связью; и дополнительный режим
4)выработка имитоприставки.
В любом из этих режимов данные обрабатываются блоками по 64 бита - именно поэтому ГОСТ относится к блочным шифрам. Кратко опишем основные режимы шифрования.
Простая замена.
Зашифровывание заключается в применении цикла 32-З к бокам открытого текста, расшифровка - в применении цикла 32-Р к блокам шифротекста. Это наиболее простой режим шифрования, и он имеет следующие недостатки:
* с точки зрения стойкости шифра, одинаковые блоки исходных данных дают одинаковые блоки шифротекста; криптологи говорят, что это очень плохо;
22
*с точки зрения удобства применения, если длина массива информации не кратна 8 байтам, то возникают 2 проблемы:
*чем и как дополнять последний блок до полных 8 байтов.
*после зашифровывания неполного блока в нем все 8 байт станут значащими, то есть вместе с шифротекстом надо хранить количество байтов в последнем блоке исходного текста.
ГОСТ ограничивает возможные случаи применения простой замены шифрованием ключевой информации (ключи и таблицы замен);
Гаммирование.
Процесс зашифрования заключается в генерации гаммы шифра и наложении этой гаммы на исходный открытый текст. Перед шифрованием открытые данные разбиваются на блоки Т(0)i одинаковой длины (по 64 бита). Гамма шифра вырабатывается в виде последовательности блоков Г(ш)i аналогичной длины (Т(ш)i=Г(ш)i+Т(0)i, где + - побитовое сложение, i =1-m). Наложение на открытые данные гаммы производится с помощью побитовой функции XOR.
Блоки гаммы получаются зашифровыванием в режиме простой замены некоторой последовательности 64-битовых блоков, вырабатываемых датчиком псевдослучайных чисел. От этого датчика не требуется обеспечения никаких статистических характеристик выходной последовательности, а нужен лишь максимально возможный период повторения данных.
Зашифровывание и расшифровка в этом режиме не отличаются друг от друга. Процесс расшифрования сводится к повторной генерации шифра текста и наложение этой гаммы на зашифрованные данные T(0)i=Г(ш)i+Т(ш)i.
Гаммирование с обратной связью.
Данный режим похож на режим гаммирования и отличается от него только тем, что для выработки блока гаммы для шифрования следующего блока данных используется блок шифротекста, полученный на предыдущем шаге. Этим достигается зацепление блоков - каждый блок при шифровании зависит от всех предыдущих.
Выработка имитоприставки к массиву данных.
Имитоприставка - это контрольная комбинация, зависящая от открытых данных и секретной ключевой информации. Цель использования имитоприставки - обнаружение всех изменений в массиве информации. Для потенциального взломщика две следующие задачи, если он не владеет секретным ключом, практически неразрешимы:
-вычисление имитоприставки для заданного открытого массива информации;
-подбор открытых данных под заданную имитоприставку.
3. Задание к работе
На языке VBA или С++ написать программу шифрования и дешифрования текстового файла методом, указанным преподавателем. В качестве примера в п. 4 приводится алгоритм шифрования методом гаммирования.
4. Порядок выполнения работы
Основные шаги шифрования текстового файла методом гаммирования.
1.Получить от пользователя ключ, имя входного и выходного файла.
2.Инициализировать генератор случайных чисел с помощью ключа. Открыть указанные файлы.
3.Прочитать строку из файла.
4.Получить случайное число.
23
5.Получить ASCII-код очередного символа строки и увеличить его на случайное число, полученное на шаге 4.
6.Проверить правильность (допустимый диапазон) нового ASCII-кода.
7.В выходную строку записать очередной символ, соответствующий ASCIIкоду, полученному на шаге 6.
8.Если не достигли конца входной строки, то перейти к шагу 4.
9.Записать полученную строку в выходной файл.
10.Если не достигнут конец файла, то перейти к шагу 3.
11.Закрыть файлы.
Алгоритм дешифрации аналогичен алгоритму шифрации за исключением того, что из ASCII –кода вычитаем 256 и проверяем больше ноля или нет.
Open Filename For Input As # FileNumber –открытие файла для чтения. Out Put –для вывода.
В ASCII –коде символы 10 и 13 (возврат каретки).
Надо открывать файлы как двоичные, ключевое слово Binary.
Line Input # FileNumber, A$ -переменная строковая.
Print –для записи.
Для чтения и записи двоичного файла объявляем переменную типа Variant.
Put # NF,, VA
Get # NF,, VA
Close –закрытие файла.
Содержание отчета
5.Название работы.
6.Цель работы.
7.Блок-схему алгоритма шифрования.
8.Тексты программ.
5.Вопросы для самопроверки
1.Методы шифрования путем битовых манипуляций.
2.Понятие оператора первого дополнения.
3.Результаты выполнения оператора XOR.
4.Три цикла алгоритма режимов криптопреобразований данных, согласно ГОСТ.
5.Понятие ключа.
6.Понятие таблицы замен.
7.Отличия базовых циклов криптоалгоритма ГОСТа.
8.Режимы шифрования данных по ГОСТ 28147-89.
9.Суть режима простой замены.
10.Отличие режимов гаммирования и гаммирования с обратной связью.
11.Цель использования имитоприставки.
24
Лабораторная работа №5
«Антивирусные средства»
Введение
Расширение масштабов практического применения и увеличение функциональных возможностей современных вычислительных машин, автоматизированных систем (АС) и сетей связи сопровождается ростом опасности преднамеренной дезорганизации их работы или использования в преступных целях.
Вредоносность или полезность соответствующих программ для ЭВМ определяется не в зависимости от их назначения, способности уничтожать, блокировать, модифицировать, копировать информацию (это - вполне типичные функции абсолютно легальных программ), а в связи с тем, предполагает ли их действие, во-первых, предварительное уведомление собственника компьютерной информации или другого добросовестного пользователя о характере действия программы, а во-вторых, получение его согласия (санкции) на реализацию программой своего назначения. Нарушение одного из этих требований делает программу для ЭВМ вредоносной.
1. Цель работы
Исследование основных методов борьбы с вредоносными программами.
2. Краткие сведения из теории
В настоящее время можно выделить два вида вредоносных программ это программы закладки и программы вирусы.
Компьютерный вирус - это программа, которая способна заражать другие программы, модифицируя их так, чтобы они включали в себя копию вируса (или его разновидность).
Компьютерная закладка - это аппаратное или программное средство, реализующее угрозы аппаратным или программным ресурсам компьютера.
Вредоносные программы можно классифицировать
1.По методу внедрения в вычислительную систему:
Оператором вычислительной системы.
При разработке программного обеспечения.При разработке программы BIOS.
Замена аппаратных составляющих вычислительной системы
2.По месторасположению:
Аппаратная реализация
Программная реализация
По логической структуре:
Однокомпонентные – вредоносная программа жестко привязана к системе. Двухкомпонентные - закладка-вирус, закладка-закладка и вирус-закладка: Закладка-вирус - распространение вирусов. Закладка хранит вирусы в виде базы
данных со структурой отличной от той, которую будет иметь зараженная вирусом программа, и поэтому при поверхностном анализе на совпадение сигнатур вирус в базе данных закладки обнаружен не будет.
Закладка-закладка то же, что и закладка-вирус, но только второй составляющей является закладка (либо сама, либо другая).
Вирус-закладка - в качестве одной из функций в вирусе реализована возможность внедрять в вычислительные системы закладки.
25