- •Министерство образования и науки российской федерации федеральное агентство по образованию
- •Захарова ю.Ф. Дискретная математика и ее приложения
- •Введение
- •Глава 1. Введение в теорию множеств.
- •1.1. Основные определения.
- •1.2. Задание множеств
- •1.3. Операции над множествами
- •1.4. Разбиения и покрытия
- •1.5. Представление множеств в эвм.
- •1.5.1. Включение множеств.
- •1.5.2. Объединение множеств.
- •1.5.3. Пересечение множеств.
- •Глава 2. Булева алгебра.
- •2.1. Основные элементарные функции.
- •2.2. Основные элементарные тождества.
- •2.3. Формы представления булевых функций.
- •2.4. Минимизация булевых функций.
- •2.4.1. Метод Куайна.
- •2.4.2. Метод Карно.
- •Глава 3. Исчисление высказываний и исчисление предикатов.
- •3.1. Исчисление высказываний.
- •3.2. Исчисление предикатов.
- •Глава 4. Теория сжатия текстовой информации.
- •4.1. Метод Хаффмена
- •4.1.1. Общие положения
- •4.1.2. Краткое описание метода Хаффмена.
- •4.1.3. Пример использования метода Хаффмена.
- •4.2. Метод Зива Лемпеля (lz-метод)
- •4.2.1. Основные определения
- •4.2.2. Краткое описание lz-метода
- •4.2.3. Пример lz-метода
- •4.3. Метод Зива-Лемпеля-Велча (lzw-метод)
- •4.3.1. Общие положения
- •4.3.2. Краткое описание lzw-метода
- •4.3.3. Пример lzw-метода.
- •4.4. Метод Барроуза-Уиллера.
- •4.4.1. Общие положения.
- •4.4.2. 1 Этап. Преобразование Барроуза-Уилера.
- •4.4.3. 2 Этап. Mtf–метод.
- •4.4.4. 3 Этап. Статистический кодер.
- •4.4.5. Модификации различных этапов.
- •4.4.6. Сравнение алгоритмов сжатия на базе bwt с другими методами.
- •Глава 5. Теория сжатия графической информации. Введение.
- •5.2. Волновой метод (wavelet-метод)
- •5.2.1. Описание метода
- •5.2.2. Пример волнового метода
- •5.3. Дискретное косинус-преобразование (дкп-метод).
- •5.3.1. Описание метода.
- •5.3.2. Пример дкп-метода.
- •5.4. Классический алгоритм jpg.
- •5.5. Фрактальный алгоритм.
- •Глава 6. Введение в криптографию. Введение.
- •6.1. Методы перестановки
- •6.1.1. Матрицы
- •6.1.2. Маршруты Гамильтона
- •6.1.3. Электрический монтаж
- •6.1.4. Особенности перестановки
- •6.2. Методы подстановки
- •6.2.1. Вектор замен
- •6.2.2. Таблицы Вижинера
- •6.3. Метод замены. Использование алгебры матриц.
- •6.4. Аддитивные методы
- •6.5. Стеганология
- •6.6. Ключ. Основные понятия, связанные с ключом и алгоритмом.
- •6.6.1. Основные понятия.
- •6.6.2. Ключ.
- •6.6.3. Случайные и псевдослучайные числа.
- •6.6.4. Действия по шифрованию информации.
- •6.7. Блочные и поточные шифры.
- •6.8. Алгоритмы des, Triple des и их заменяющие.
- •6.8.2. Алгоритм Triple des
- •6.8.3. Коммерческие алгоритмы, заменившие des
- •6.9. Системы с открытым ключом.
- •6.10. Электронная подпись.
- •6.11. Взлом защищенных файлов.
- •6.11.1. Атака на ключ
- •6.11.2. Атака на алгоритм.
- •6.11.3. Скомпрометированный пароль.
- •6.11.4. Подделка открытых ключей.
- •6.11.5. Не до конца удаленные файлы.
- •6.11.6. Вирусы и закладки.
- •6.11.7. Виртуальная память.
- •6.11.8. Нарушение режима физической безопасности. Радиоатака. Фальшивые даты подписи.
- •6.11.10. Утечка информации в многопользовательской среде.
- •Содержание
- •Глава 6. Введение в криптографию. 1
6.6. Ключ. Основные понятия, связанные с ключом и алгоритмом.
6.6.1. Основные понятия.
Если вы хотите преобразовать важную информацию в бессмысленный набор символов, вы зашифровываете данные. Чтобы преобразовать их обратно, вы расшифровываете данные.
Чтобы сделать это, используется алгоритм. Слово алгоритм представляет собой термин для обозначения последовательности действий. Это список инструкций, выполняемых в определенном порядке. Алгоритм может представлять собой перечень инструкций, которым необходимо следовать, либо может содержать группу вопросов и в зависимости от ответов описывать соответствующие шаги, которые следует выполнить. Алгоритм может содержать список операций, которые следует выполнять в определенном порядке, чтобы решить задачу. Например, алгоритм поиска неисправности автомобиля может задавать вопросы о давлении масла, уровнях жидкостей, температуре и т.д., чтобы определить причину неисправности. Компьютерная программа может реализовать алгоритм, что подразумевает преобразование списка команд, вопросов и действий алгоритма в код на языке, который дает возможность компьютеру выполнить шаги в соответствующем порядке. В компьютерной криптографии алгоритмы могут представлять собой как сложные математические операции, так и простые манипуляции с битами. Существует множество алгоритмов шифрования, каждый из них имеет свой собственный список команд или шагов. У вас может быть программа, реализующая карточную игру или вычисляющую траекторию спутника, а может быть программа, которая реализует алгоритм шифрования, принимающая данные и преобразующая их в бессмысленный набор символов.
Данные, которые нужно зашифровать, называются открытым (незашифрованным) текстом. Открытым текстом может быть текстовый файл, например, записка, которая может быть прочитан человеком, или же им может быть двоичный файл, который выгладит бессмысленно для человека, но вполне понятен для компьютерной программы. Например, если вы откроете файл PowerPoint в Блокноте Windows, файл будет выглядеть как непонятный набор символов, поскольку программа не может .преобразовать данные PowerPoint; но если открыть этот же файл в PowerPoint, он будет иметь осмысленный вид. Независимо от того, может ли информация быть прочитанной человеком или определенной программой, она называется открытым текстом.
После того, как данные зашифрованы, они называются шифротек-стом.
Алгоритм зашифровывает открытый текст в шифротекст, но ему нужно еще кое-что — ключ. В компьютерной криптографии ключ всегда является числом или набором чисел.
Лицо, пытающееся похитить информацию, называется атакующим или злоумышленником. На самом деле атакующий может попытаться добиться большего, чем просто раскрыть чьи-либо секреты. Некоторые атакующие пытаются выдать себя за других людей, заблокировать доступ к Web-сайтам, удалить чужую информацию, не дать потребителям возможность приобрести определенный товар через сеть, замедлить работу системы и т.д. Термин “атакующий” относится ко всем лицам, от которых необходимо защитить данные.
Изучение методов взлома криптографических систем называется криптоанализом. Подобно атакующему, криптоаналитик ищет слабые места в алгоритмах. Все алгоритмы могут быть “взломаны”, хорошими являются алгоритмы, которые могут выдержать атаку в течение достаточно продолжительного времени, чтобы взлом произошел “слишком поздно”. В этой связи работа криптоаналитика состоит в том, чтобы находить слабые места, которые могут способствовать более быстрому взлому алгоритма. Атакующие могут воспользоваться методами криптоанализа для нанесения вреда, но они могут применять также и другие инструменты.
Криптограф разрабатывает криптосистемы; криптоаналитик ищет слабые места. Людям, занимающимся криптографией, важно знать о слабых местах, поскольку атакующие также их ищут. Атакующие почти наверняка не будут заявлять о своих открытиях широкой аудитории, поэтому криптоаналитики выполняют важную работу, давая нам знать то, о чем, возможно, знают атакующие, но не станут нам сообщать.
Итак, все криптографические системы, вне зависимости от их сложности, имеют следующие составные части:
(Исходное) Сообщение — то, что мы хотим защитить от несанкционированного чтения/использования. В качестве сообщения может выступать как произвольный текст, так и программное обеспечение, различная медиа-информация.
Зашифрованное сообщение — это сообщение, измененное с целью скрыть его исходный смысл и сделать его "нечитаемым". Процесс преобразования сообщения в зашифрованное сообщение называется шифрованием, обратный процесс — дешифрованием.
Криптографический алгоритм — некий математический алгоритм, используемый для шифрования или дешифрования исходного сообщения.
Ключ — вспомогательная информация, используемая криптографическим алгоритмом. Она секретна, и априори считается, что, только обладая ею, можно восстановить исходное сообщение.
