Симметричная криптография
Симметричные шифры Это шифры, в которых для шифрования и дешифрования используется один и тот же ключ. Следовательно, единственный ключ должен храниться в полной тайне. Симметричное шифрование и дешифрование математически представляются следующим образом: E – функция шифрования D – функция дешифрования M – открытый текст C – шифрованный текст k – единственный ключ
Симметричные шифры Принцип работы симметричного шифрования: Отправитель и получатель должны заранее договориться 1. о секретном ключе 2. об алгоритме 3. о векторе инициализации 4. о режиме вычислений 5. о заполнении пустых позиций Существует 2 типа симметричных алгоритмов: Блочные шифры (за 1 проход алгоритма обрабатывают блок байт размером 64 или 128 бит) Потоковые шифры (за 1 проход алгоритма обрабатывают 1 байт или бит)
Алгоритм DES История: Этот алгоритм был принят правительством США в 1977 г. для шифрования нестрого секретных данных. Позднее он несколько раз был взломан публично. Но несмотря на это DES всё еще остается распространенным в современных коммерческих приложениях. Описание: DES – симметричный блочный шифр, преобразующий 64- битовые блоки данных при помощи 56-битного секретного ключа. Преобразование включает в себя 16 циклов перестановок и подстановок (замены битов данных). Транспозиции (перемещения битов внутри данных) приводит к диффузии данных, т.е. их равномерному распределению. Ключ выбирается из 2 вариантов. 56
Алгоритм DES Перед шифрованием текст нужно разбить на 64-битовые блоки данных. При этом последний блок, скорее всего, будет неполным. Его следует дополнить. Каждый цикл на входе получает 64-битовый блок данных, который делится пополам. Правая часть шифруется некоторой функцией с помощью 56-битового ключа, суммируется по XOR с левой частью и встает на правую часть. Прежняя правая часть без изменений становится левой.
Операционные режимы Блоковые шифры для обработки последовательностей блоков используют правила, которые определяются операционным режимом. Стандартные операционные режимы: - ECB – электронная шифровальная книга (DES, 3DES, RC2, Rijndael) - CBC – сцепление шифрованных блоков (DES, 3DES, RC2, Rijndael) - CFB – шифрованная обратная связь (DES, 3DES, RC2) - OFB – обратная связь по выходу - CTS – проскальзывание шифрованного текста (был создан для RC5, но до сих пор не реализован) Все они описаны при помощи перечисления CypherMode в System.Securiry.Cryptography
Операционные режимы Условные обозначения:
Режим ECB Это самый простой операционный режим шифрования, в котором 16 циклов применяются к каждому очередному блоку данных индивидуально и безо всякой зависимости от других блоков. Плюсы: Блоки не зависят друг от друга => Ошибка в одном блоке не распространяется на остальные Параллельная либо последовательная обработка блоков Большая пропускная способность процесса Минусы: Слабая криптостойкость (при анализе текста на стандартные фразы и повторы можно угадать пары «открытый блок – закрытый блок», по мере роста этих пар, поиск новых облегчается => поиск самого ключа необязателен)
Режим ECB
Режим CBC Режим представляет собой более защищенную технологию. Здесь перед началом 16 циклов каждый блок открытого текста суммируется по XOR с предыдущим зашифрованным блоком. Первый блок суммируется с некоторым случайным 64-битовым вектором инициализации (IV). Причем IV вовсе не должен быть секретным. Каждый блок открытого текста M i суммируется с предыдущим блоком шифрованного текста C i-1, и уже результат суммирования попадает на вход шифрующей функции E k, на выходе которой образуется блок шифрованного текста C i.
Режимы CFB и OFB Эти режимы позволяют оперировать блоками данных, меньшими стандартного 64-битового блока. Они полезны в качестве потоковых шифров, где алгоритм DES генерирует псевдослучайные биты, которые суммируются по XOR с потоковым открытым текстом. При заданном ключе эти режимы не дадут фиксированного соответствия между открытыми и шифрованными блоками, поскольку в них шифрование очередного блока зависит от предыдущего блока + вектор инициализации. Минус: Ошибка в любом бите данных повредит не только текущий блок, но и все последующие. НО! Режим CFB обладает свойством самосинхронизации, т.е. правильность расшифровки восстанавливается уже в следующем блоке.
Режим CFB Сдвиговый регистр использует подмножество ранее сгенерированных выходных битов для выполнения XOR с текущими битами открытого текста, подлежащими шифрованию. Суммирование по XOR происходит из крайних левых зашифрованных 8 битов из предыдущего прохода с текущим подмножеством. Режим OFB Основной принцип почти совпадает с CFB. Единственное отличие состоит в том, что зашифрованные биты из предыдущего прохода попадают на вход сдвигового регистра уже после операции XOR.
Где R i-1 – подмножество битов из предыдущего прохода до операции XOR
Алгоритм «Тройной» DES Этот алгоритм основывается на обычном DES. Отличается он лишь тем, что каждый 64-битовый блок шифруется трижды при помощи алгоритм DES с 3 разными ключами. Каждый блок шифруется 1 ключом. Результат дешифруется 2 ключом. Следующий результат шифруется 3 ключом. Плюсы: увеличивается эффективность Минусы: увеличивается ключ и время работы.
Алгоритм Rijndael Этот алгоритм способен использовать ключи размером 128, 192 или 256 бит. Число циклов зависит от ключа и блока данных. Если размеры ключа и блока =128, используется 9 циклов. Если 128< размер ключа или блока
Алгоритм RC2 Это симметричный блоковый шифр, который был придуман на замену алгоритму DES. Он использует блоки входных данных размером 64 бита. Длина ключа переменна (от 1 до 128 байт), что указывает на стойкость шифра. Плюсы: Улучшенная производительность Самостоятельная регулировка длины ключа RC2 был лицензирован для использования в нескольких Internet-приложениях, включая Microsoft Internet Explorer, Outlook Express и Netscape Communicator. Алгоритм выполняет функции аутентификации посредством электронной подписи и конфиденциальности посредством шифрования.