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