- •Курс "Методы и средства защиты информации"
- •Введение. Основные виды и источники атак на информацию
- •Современная ситуация в области информационной безопасности
- •Категории информационной безопасности
- •Абстрактные модели защиты информации
- •Обзор наиболее распространенных методов "взлома"
- •Комплексный поиск возможных методов доступа
- •Терминалы защищенной информационной системы
- •Получение пароля на основе ошибок администратора и пользователей
- •Получение пароля на основе ошибок в реализации
- •Социальная психология и иные способы получения паролей
- •Криптография
- •Классификация криптоалгоритмов
- •Симметричные криптоалгоритмы
- •Скремблеры
- •Блочные шифры
- •Общие сведения о блочных шифрах
- •Сеть Фейштеля
- •Блочный шифр tea
- •Aes : cтандарт блочных шифров сша c 2000 года
- •Общие сведения о конкурсе aes
- •Финалист aes – шифр mars
- •Ф иналист aes – шифр rc6
- •Ф иналист aes – шифр Serpent
- •Финалист aes – шифр TwoFish
- •Победитель aes – шифр Rijndael
- •Симметричные криптосистемы
- •Функции криптосистем
- •Алгоритмы создания цепочек
- •Методы рандомизации сообщений
- •Обзор методик рандомизации сообщений
- •Генераторы случайных и псевдослучайных последовательностей
- •Архивация
- •Общие принципы архивации. Классификация методов
- •Алгоритм Хаффмана
- •Алгоритм Лемпеля-Зива
- •Хеширование паролей
- •Общая схема симметричной криптосистемы
- •Асимметричные криптоалгоритмы
- •Общие сведения об асимметричных криптоалгоритмах
- •Алгоритм rsa
- •Технологии цифровых подписей
- •Механизм распространения открытых ключей
- •Обмен ключами по алгоритму Диффи-Хеллмана
- •Общая схема асимметричной криптосистемы
- •Сетевая безопасность
- •Атакуемые сетевые компоненты
- •Сервера
- •Рабочие станции
- •Среда передачи информации
- •Узлы коммутации сетей
- •Уровни сетевых атак согласно модели osi
- •По и информационная безопасность
- •Обзор современного по
- •Операционные системы
- •Прикладные программы
- •Ошибки, приводящие к возможности атак на информацию
- •Основные положения по разработке по
- •Комплексная система безопасности
- •Классификация информационных объектов
- •Классификация по требуемой степени безотказности
- •Классификация по уровню конфиденциальности
- •Требования по работе с конфиденциальной информацией
- •Политика ролей
- •Создание политики информационной безопасности
- •Методы обеспечения безотказности
- •Список литературы
Функции криптосистем
Все исследования, которые мы проводили на предыдущих лекциях, касались только криптоалгоритмов, то есть методов преобразования небольшого блока данных (от 4 до 32 байт) в закодированный вид в зависимости от заданного двоичного ключа. Криптоалгоритмы несомненно являются "сердцем" криптографических систем, но, как мы сейчас увидим, их непосредственное применение без каких-либо модификаций для кодирования больших объемов данных на самом деле не очень приемлимо.
Все недостатки непосредственного применения криптоалгоритмов устраняются в криптосистемах. Криптосистема – это завершенная комплексная модель, способная производить двусторонние криптопреобразования над данными произвольного объема и подтверждать время отправки сообщения, обладающая механизмом преобразования паролей и ключей и системой транспортного кодирования. Таким образом, криптосистема выполняет три основные функции:
усиление защищенности данных,
облегчение работы с криптоалгоритмом со стороны человека
обеспечение совместимости потока данных с другим программным обеспечением.
Конкретная программная реализация криптосистемы называется криптопакетом.
Алгоритмы создания цепочек
Первая задача, с которой мы столкнемся при шифровании данных криптоалгоритмом – это данные с длиной, неравной длине 1 блока криптоалгоритма. Эта ситуация будет иметь место практически всегда.
Первый вопрос: – Что можно сделать, если мы хотим зашифровать 24 байта текста, если используется криптоалгоритм с длиной блока 8 байт? – Последовательно зашифровать три раза по 8 байт и сложить их в выходной файл так, как они лежали в исходном. – А если данных много и некоторые блоки по 8 байт повторяются, это значит, что в выходном файле эти же блоки будут зашифрованы одинаково - это очень плохо.
Второй вопрос : – А что если данных не 24, а 21 байт. Не шифровать последние 5 байт или чем-то заполнять еще 3 байта, – а потом при дешифровании их выкидывать. – Первый вариант вообще никуда не годится, а второй применяется, но чем заполнять ?
Для решения этих проблем и были введены в криптосистемы алгоритмы создания цепочек (англ. chaining modes). Самый простой метод мы уже в принципе описали. Это метод ECB (Electronic Code Book). Шифруемый файл временно разделяется на блоки, равные блокам алгоритма, каждый из них шифруется независимо, а затем из зашифрованных пакетов данных компонуется в той же последовательности файл, который отныне надежно защищен криптоалгоритмом. Название алгоритм получил из-за того, что в силу своей простоты он широко применялся в простых портативных устройствах для шифрования – электронных шифрокнижках. Схема данного метода приведена на рис.1.
Рис.1.
В том случае, когда длина пересылаемого пакета информации не кратна длине блока криптоалгоритма возможно расширение последнего (неполного) блока байт до требуемой длины либо с помощью генератора псевдослучайных чисел, что не всегда безопасно в отношении криптостойкости, либо с помощью хеш-суммы передаваемого текста. Второй вариант более предпочтителен, так как хеш-сумма обладает лучшими статистическими показателями, а ее априорная известность стороннему лицу равносильна знанию им всего передаваемого текста.
Указанным выше недостатком этой схемы является то, что при повторе в исходном тексте одинаковых символов в течение более, чем 2*N байт (где N – размер блока криптоалгоритма), в выходном файле будут присутствовать одинаковые зашифрованные блоки. Поэтому, для более "мощной" защиты больших пакетов информации с помощью блочных шифров применяются несколько обратимых схем "создания цепочек". Все они почти равнозначны по криптостойкости, каждая имеет некоторые преимущества и недостатки, зависящие от вида исходного текста.
Все схемы создания цепочек основаны на идее зависимости результирующего зашифровываемого блока от предыдущих, либо от позиции его в исходном файле. Это достигается с помощью блока "памяти" – пакета информации длины, равной длине блока алгоритма. Блок памяти (к нему применяют термин IV – англ. Initial Vector) вычисляется по определенному принципу из всех прошедших шифрование блоков, а затем накладывается с помощью какой-либо обратимой функции (обычно XOR) на обрабатываемый текст на одной из стадий шифрования. В процессе раскодирования на приемной стороне операция создания IV повторяется на основе принятого и расшифрованного текста, вследствие чего алгоритмы создания цепочек полностью обратимы.
Два наиболее распространенных алгоритма создания цепочек – CBC и CFB. Их структура приведена на рис.2 и рис.3. Метод CBC получил название от английской аббревиатуры Cipher Block Chaining – объединение в цепочку блоков шифра, а метод CFB – от Cipher FeedBack – обратная связь по шифроблоку.
Рис.2.
Рис.3.
Еще один метод OFB (англ. Output FeedBack – обратная связь по выходу) имеет несколько иную структуру (она изображена на рис.4.) : в нем значение накладываемое на шифруемый блок не зависит от предыдущих блоков, а только от позиции шифруемого блока (в этом смысле он полностью соответствует скремблерам), и из-за этого он не распространяет помехи на последующие блоки. Очевидно, что все алгоритмы создания цепочек однозначно восстановимы. Практические алгоритмы создания и декодирования цепочек будут разработаны на практическом занятии.
Рис.4.
Сравним характеристики методов создания цепочек в виде таблицы.
Метод |
Шифрование блока зависит от |
Искажение одного бита при передаче |
Кодируется ли некратное блоку число байт без дополнения? |
На выход криптосистемы поступает |
ECB |
текущего блока |
портит весь текущий блок |
нет |
выход криптоалгоритма |
CBC |
всех предыдущих блоков |
портит весь текущий и все последующие блоки |
нет |
выход криптоалгоритма |
CFB |
всех предыдущих блоков |
портит один бит текущего блока и все последующие блоки |
да |
XOR маска с исходным текстом |
OFB |
позиции блока в файле |
портит только один бит текущего блока |
да |
XOR маска с исходным текстом |