на каком способе шифрования основаны потоковые шифры
поточные шифры
Характерной особенностью поточных шифров есть побитная обработка информации. При этом шифрование и дешифрование может обрыватся в произвольный момент времени. И как только связь восстановлена можно продолжать процедуру без проблем. Шифрование происходит путем логических операций над битом ключа и битом исходного текста. Это происходит по тому, что сколько бы мы не создавали шифрующих битов, все равно накладываться будет один бит шифрующего на один бит исходного путем комбинации из функций XOR и отрицаний. Классический пример шифра Вернама показана на рис.1. Такие шифры отлично подходят для локальный сетей, где решают часть проблем защиты информации в сетях.
Поточные шифры называют шифры гаммирования. Также само шифрование есть методом защиты информации. Эти шифры в разы быстрее своих конкурентов — блочных шифров, если оно реализовано аппаратно. Если же реализация программная, здесь скорость может быть даже меньше блоковых шифров. Функция которая формирует гамму, руководствуется трёма компонентами:
Если схема формирования гаммы и ключ не секретные, то такой шифр превращается в скремблер. Скремблеры много используются в системах связи для повышения характеристик транслируемого сигнала. Частота появления нулей и единиц в таком сигнале близка к 0,5.
Зависимость от номера текущей позиции, если и присутствует в функции то пассивно. Просто на каждом шаге шифрования производятся однотипные преобразования где в любом случае используют текущий номер в общем потоке гаммы. Включения в функцию бит ближний бит исходного или шифрованного потока увеличивает криптостойкость шифра но при этом уменьшает скорость шифрования.
Шаблон зависимости основных свойств потоковых шифров показана на рис.2. Это только шаблон, нужно всегда учитывать конкретную ситуацию.
Стойкость шифров гаммирования
Атаки на такие шифры, основаны на статистических особенностях гаммы от примера со случайным потоком гаммы, или на повторяющие участки шифрования гаммой. Первый случай нужно учитывать проведения различных форм частотного и корреляционного криптоанализа. Во втором же все проще, так как повторное наложение ИЛИ на новый исходный блок p2 дает открытый текст, с помощью формулы:
(p1 XOR g) XOR (p2 XOR g) = p1 XOR p2.
Что бы избежать таких неловких моментов, шифр гаммирования должен упираться на два критерия:
В каналах где возможно модификация данных при передачи, такие шифры беззащитны. Сделав модификацию принимающая сторона не сможет расшифровать данные. Поэтому в канала такого типа нужно реализации подтверждения целостности сообщения. А это уже реальные угрозы информационной безопасности.
Линейные регистры сдвига
ЛРС является простой схемой потокового шифрования. ЛРС имеет от 20 до 100 ячеек памяти, где находятся биты информации. Биты которые находятся на данный момент в ячейках, имеют название — состояние. Для реализации следующего шага выработки бита гаммы, есть цикл.
Направление сдвига не имеет значение. ЛРС показано на рис.3.
Количество ячеек в памяти имеет название — разрядность. В начале формирования гаммы, в ячейки помещают ключ. Пример работы ЛРС с разрядностью 3 с операциями над нулевым и вторым битом, с начальным ключом 011 показано на рис.4. При долгой работе скремблера неизбежно возникает зацикливание — когда исчерпались все возможные варианты состояний ЛРС, и начинает повторятся. Также получается что есть некий период зацикливаний. Графически это выглядит в форме топологий, которые показано на рис. 4.
Основной проблемой использования ЛРС в качестве шифра это неспособность противодействовать атаке по известному исходному тексту.
Нелинейные поточные шифры
На сегодня из известных есть три типа нелинейных шифров, это фильтрующие, комбинирующие и динамические. Все они в основе реализуют ЛРС. Во всех трех типах основная цель это получение большего периода гаммы, устойчивости к атакам по корреляционным атакам и открытому тексту. Тип который должен использоваться, должен быть описан в политике безопасности предприятия.
Фильтрующие шифры имеют самую простую структуру. Реализованы с помощью одного ЛРС. Значение получаемые от ЛРС проходят сквозь фильтр и потом уже полноценный бит гаммы. Это показано на рис.5.
Комбинирующие шифры реализованы на основе нескольких ЛРС, где объединяются выходные биты из каждого ЛРС. Это показано на рис.6. Одной из проблем такого типа шифров это просачивания из одного или нескольких ЛРС битов в выходную гамму. Такой тип есть корреляционно-стойким, если для любых вариантов комбинирования ЛРС значение коэффициента корреляции между битами ЛРС и выходным битом — 1/2.
Этот тип также использует несколько ЛРС, но они объединены не на равноправных правах, а по схеме начальник-подчиненный. Это показано на рис.7. Такие шифры иногда используют при контроле удаленного доступа.
Синхронные поточные шифры
Синхронные поточные шифры (СПШ) — шифры, где поток ключей генерируется независимо от шифротекста и открытого текста. В процессе шифрования генератор потока ключей дает биты потока ключей, которые идентичны битам потока ключей при процессе дешифрования. При потере любого знака шифротекста нарушается синхронизация между двумя генераторами и возможность расшифровать оставшиеся куски текста. Синхронизация обычно реализуется через специальные вставные маркеры. При потере знака рассинхроность текста будет незначительно, а именно до следующего маркера. После него синхронность опять настроена. Плюсы синхронного шифра:
Минусы синхронного шифра:
Асинхронные поточные шифры
Асинхронные поточные шифры (АПШ) — шифры, где поток ключей реализуется функцией ключа и определенного числа знаков шифротекста. Внутреннее состояние генератора потока ключей представляется функцией предыдущих N битов шифротекста. Поэтому на другой стороне, расшифрующие генератор потока ключей при приеме N битов, автоматически синхронизируется с шифрующим генератором.
Каждое сообщение начинается из случайного заголовка N битов. Заголовок шифруется и передается на расшифровку. Расшифровка будет неправильной, однако потом, после N битов 2 генератора будут синхронизированы. Плюсы такого шифрования:
Минусы асинхронного шифра:
Проектирование поточных шифров
Можно выделить 4 главных подхода к проектированию поточных шифров согласно Райнеру Рюппелю:
Для проектирования поточных систем Райнер Рюппель вывел теоретические критерии:
На сегодня не доказано, что такие критерии достаточны для безопасности поточный системы шифрования. Также нужно отметить, что если криптоаналитик имеет неограниченное время и мощь вычислительных машин, то единым защищенным потоковым шифром является — одноразовый блокнот.
Атаки на поточные шифры
1. Силовые. Атаки основаны на полном переборе возможных вариантов. Сложность такого перебора зависит от количества допустимых решимых решений задачи (размер ключей, открытого текста). При проектировании систем шифрования, разработчики пытаются сделать так, что бы такой метод атаки был самым эффективным в сравнении с другими видами атак.
3. Аналитические методы — Метод работает тогда, когда криптоаналитику известно описание генератора, открытый и закрытый текста. Задача состоит в том, что бы узнать начальный ключ. Бывают следующие виды атак:
Ниже описаны варианты элементов для ИС использование поточных шифров:
Поточные шифры и генераторы псевдослучайных чисел. Часть 1
Цель лекции: познакомиться с понятием » поточный шифр «, а также с принципами использования генераторов псевдослучайных ключей при потоковом шифровании
Поточные шифры
Блочный алгоритм предназначен для шифрования блоков определенной длины. Однако может возникнуть необходимость шифрования данных не блоками, а, например, по символам. Поточный шифр (stream cipher) выполняет преобразование входного сообщения по одному биту (или байту) за операцию. Поточный алгоритм шифрования устраняет необходимость разбивать сообщение на целое число блоков достаточно большой длины, следовательно, он может работать в реальном времени. Таким образом, если передается поток символов, каждый символ может шифроваться и передаваться сразу.
Работа типичного поточного шифра представлена на рис. 7.1.
Для дальнейшего поиска неизвестного К определим все возможные значения X2 ’ ; и оставшихся вариантов ключа, сумма которых по модулю 2 приводит к результату Y2 = 1101 :
Видно, что этот этап не позволил отбросить ни одного из оставшихся вариантов ключа. Попытаемся это сделать, используя Y3=1110 :
Дальнейший анализ по данной методике в данном случае, к сожалению, не позволит однозначно указать, какой же из двух полученных вариантов ключа использовался при шифровании. Однако можно считать успехом уже то, что пространство возможных ключей снизилось с десяти до двух. Остается попробовать каждый из двух найденных ключей для дешифровки сообщений и проанализировать смысл полученных вскрытых текстов.
В реальных случаях, когда исходное сообщение составлено не только из одних цифр, но и из других символов, использование статистического анализа позволяет быстро и точно восстановить ключ и исходные сообщения при короткой длине ключа, закрывающего поток секретных данных.
Принципы использования генераторов псевдослучайных чисел при потоковом шифровании
Современная информатика широко использует псевдослучайные числа в самых разных приложениях — от методов математической статистики и имитационного моделирования до криптографии. При этом от качества используемых генераторов псевдослучайных чисел (ГПСЧ) напрямую зависит качество получаемых результатов.
ГПСЧ могут использоваться в качестве генераторов ключей в поточных шифрах. Целью использования генераторов псевдослучайных чисел является получение «бесконечного» ключевого слова, располагая относительно малой длиной самого ключа. Генератор псевдослучайных чисел создает последовательность битов, похожую на случайную. На самом деле, конечно же, такие последовательности вычисляются по определенным правилам и не являются случайными, поэтому они могут быть абсолютно точно воспроизведены как на передающей, так и на принимающей стороне. Последовательность ключевых символов, использующаяся при шифровании, должна быть не только достаточно длинной. Если генератор ключей при каждом включении создает одну и ту же последовательность битов, то взломать такую систему также будет возможно. Следовательно, выход генератора потока ключей должен быть функцией ключа. В этом случае расшифровать и прочитать сообщения можно будет только с использованием того же ключа, который использовался при шифровании.
Для использования в криптографических целях генератор псевдослучайных чисел должен обладать следующими свойствами:
При наличии указанных свойств последовательности псевдослучайных чисел могут быть использованы в поточных шифрах.
Принцип работы потокового шифра с примерами на C#. От Одноразового блокнота до потокового шифра на основе хеш-ф-и и CTR
По ходу статьи, развивая идею «Одноразового блокнота», «изобретем» потоковый шифр на основе хеш-функции. Узнаем, что такое Counter Mode Encryption CTR.
Знание терминов «хеш-функция» и «Одноразовый блокнот» для чтения не обязательно.
Одноразовый блокнот
В «Одноразовом блокноте» шифротекст получается путем наложения ключа на открытый текст. Наложение можно сделать, например, с помощью побитового XOR: каждый бит открытого текста XOR-ится с соответствующим (таким же по порядку) битом ключа.
Рис 1. Каждый бит открытого текста XOR-ится с таким же по порядку битом ключа
Соответственно для расшифровки нужно XOR-рить полученный шифротекст с ключом.
Чем более случаен и непредсказуем ключ, тем лучше, тем сложнее его подобрать. Для настоящего «Одноразового блокнота» ключ должен быть случайным:
Ключ должен быть одноразовым
Очевидно, что длина ключа должна быть не меньше чем длина шифруемого текста. Если ключ короче открытого текст можно попробовать его циклически повторять – рисунок 2:
Рис 2. Ключ короче открытого текста. Просто повторяем ключ что бы покрыть весь шифруемый текст
Наложения ключа на текст называют гаммированием. В этой терминологии ключ “Одноразового блокнота” будет называться гаммой.
Пример метода циклического наложения гаммы
Посмотрим, что получится если текст будет длиннее ключа и мы будем просто циклически повторять гамму:
Не нужно быть криптографом что бы заметить, что шифротекст получился не слишком стойким (как минимум видно, что символы в открытом тексте повторяются):
Рис 3. Шифротекст при простом повторении гаммы нестойкий
По этой же причине блокнот называется одноразовым – нельзя использовать один и тот же ключ дважды.
Такой открытый текст в примере выбран для наглядности. Хороший шифр, даже для такой строки, выдаст шифротекст без повторяющихся паттернов.
Потоковый шифр
Как мы убедились гамма не должна повторяться. Каждый раз, когда гамма кончается для следующего раунда нужно как-то получить новую гамму:
Рис 4. Каждый раз, когда гамма заканчивается нужно сделать новую гамму. В каждом раунде своя гамма
Так же мы знаем, что гамма не только не должна повторяться, но и должна быть как можно более случайной. Однако если на каждом раунде генерировать истинно случайную гамму – мы получим Одноразовый блокнот: ключ будет размером с шифротекст. Это не то, что нам надо.
Нам нужен механизм генерации псевдослучайной гаммы, зависящий от ключа. При расшифровке, зная ключ, мы должны иметь возможность сгенерировать ту же самую гамму.
Рис 5. Схема потокового шифра
Если наш генератор будет делать псевдослучайную гамму, зависящую от ключа, для всего открытого текста – мы получим потоковый шифр.
Counter Mode Encryption CTR
Дополним рисунок 4: нам нужна функция, которая будет генерировать гамму в зависимости от ключа и номера раунда:
Рис 6. Гамму для каждого раунда делает функция, зависящая от ключа и номера раунда
Это и есть Counter Mode Encryption CTR – генератор гаммы на вход получает счетчик (counter) раунда:
Рис 7. 3 раунда потокового шифра при Counter Mode Encryption CTR (за исключение одного компонента, см. ниже)
Хеш функция как гамма генератор
Хеш функция – это функция, которая преобразует открытый текст в псевдослучайную последовательность заданной длины. Зная хеш (результат работы хеш функции) невозможно восстановить открытый текст. Изменение даже одного бита открытого текст приводит к совершенно другому, псевдослучайному хешу.
Т.е. мы можем использовать хеш функцию как генератор гаммы:
Gamma_раунда = HASH(key + RoundIndex)
Nonce, HMAC
Реализация шифра еще не закончена. В текущей реализации один и тот же ключ с одним и тем же открытым текстом всегда будет выдавать один и тот же шифротекст. Это недопустимо: представьте, что по каналу связи передаются одинаковые зашифрованные команды «срочно продавай биткоины» — это шутка, но идею вы поняли.
Итак, добавляется еще одно требование: каждый раз при шифровании должен получаться разный шифротекст. В нашем случае это означает что генератор гаммы нужно доработать.
Проблема решается путем так называемого Nonce:
Рис 8. 3 раунда потокового шифра при Counter Mode Encryption CTR с добавлением Nonce
HMAC – это способ добавить в хеш функцию зависимость от какого-нибудь дополнительного параметра. Того же результата (сделать кеш зависимым от нескольких пареметров) мы добивались с помощью конкатенации. Т.е. логически
Вывод разный, а логически одно и тоже.
Алгоритм
Кратко опишем получившейся алгоритм:
Disclaimer
Выше описан велосипед только для образовательных целей. Идея использовать хеш-функции в потоковых шифрах не нова (см. ниже). Насколько знаю однозначного мнения о стойкости таких схем нет. Возможно, этот вопрос просто не актуален – хеши работают медленней.
В защиту идеи приведу комментарий из первичного обсуждения на pgpru.com:
использование хэша как PRF для создания потока с которым можно было бы XORить данные шифруя их не нова.
Например в описании одного из финалистов SHA3, хэш-функции Skein (http://www.skein-hash.info/sites/default/files/skein1.3.pdf) подобный use-case описан в самой PDF-ке хэша.
Если видите неточность, ошибку – отнеситесь с пониманием. Я не криптограф, ИБ занимаюсь только в прикладных целях при разработке проектов, без сверх требований к ИБ.
Поточные системы шифрования
История и принципы шифрования потоковым шифром. Режим гаммирования для поточных шифров. Основные отличия поточных шифров от блочных. Алгоритм образования ключей для потоковых шифров. Определение структуры и описание реализации программного продукта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.01.2020 |
Размер файла | 353,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
программный поточный шифр блочный
1. Теоретическая часть
1.1 Потоковый шифр: история и принцип шифрования
1.2 Режим гаммирования для поточных шифров
1.3 Классификация и виды потоковых шифров
1.4 Основные отличия поточных шифров от блочных
2. Проектирование поточных шифров
2.1 Атаки на поточные шифры
2.2 Популярные поточные шифры
2.3 Алгоритм образования ключей для потоковых шифров
3. Практическая часть
3.1 Техническое задание
3.2 Определение структуры программного продукта
3.3 Описание реализации программного продукта
Введение
Возможно несколько вариантов определения понятия «поточный шифр», поскольку поточная архитектура не имеет четких границ. В самом общем виде поточный шифр можно определить как обратимую процедуру криптографического преобразования информации. В более узком смысле поточный шифр определяется как независимый от открытого текста шифр побитового гаммирования.
Цель курсовой работы: познакомиться с поточными системами шифрования. Для достижения данной цели в работе рассмотрены:
1. История потоковых шифров и принцип их работы
2. Виды поточных систем шифрования
3. Стойкость и эффективность систем в современной криптографии
1. Теоретическая часть
1.1 Потоковый шифр: история и принцип шифрования
1.2 Режим гаммирования для поточных шифров
Очевидно, что если последовательность битов гаммы не имеет периода и выбирается случайно, то взломать шифр невозможно. Но у данного режима шифрования есть и отрицательные особенности. Так ключи, сравнимые по длине с передаваемыми сообщениями, трудно использовать на практике. Поэтому обычно применяют ключ меньшей длины (например, 128 бит). С помощью него генерируется псевдослучайная гаммирующая последовательность (она должна удовлетворять постулатам Голомба). Естественно, псевдослучайность гаммы может быть использована при атаке на потоковый шифр.
На рисунке ниже представлена самая простая реализация поточного шифра:
1.3 Классификация и виды потоковых шифров
При шифровании генератор потока ключей выдает биты потока ключей, которые идентичны битам потока ключей при дешифровании. Потеря знака шифротекста приведет к нарушению синхронизации между этими двумя генераторами и невозможности расшифрования оставшейся части сообщения. В этой ситуации отправитель и получатель информации должны синхронизироваться для продолжения работы.
Обычно синхронизация производится вставкой в передаваемое сообщение специальных маркеров.
· Отсутствие эффекта распространения ошибок (только искаженный бит будет расшифрован неверно);
· Предохраняют от любых вставок и удалений шифротекста, так как они приведут к потере синхронизации и будут обнаружены
· Уязвимы для изменения отдельных бит шифрованного текста
· Размешивание статистики открытого текста. Так как каждый знак открытого текста влияет на следующий шифротекст, статистические свойства открытого текста распространяются на весь шифротекст. Следовательно, АПШ может быть более устойчивым к атакам на основе избыточности открытого текста, чем СПШ.
· Распространение ошибки (каждому неправильному биту шифротекста соответствуют N ошибок в открытом тексте)
· Чувствительны к вскрытию повторной передачей
1.4 Основные отличия поточных шифров от блочных
· Важнейшим аспектом поточных шифров перед блочными является высокая скорость шифрования, соизмеримая со скоростью поступления входной информации
· В синхронных поточных шифрах отсутствует эффект размножения ошибок, то есть число искаженных элементов в расшифрованной последовательности равно числу искаженных элементов зашифрованной последовательности, пришедшей из канала связи
· Структура поточного ключа может иметь уязвимые места, которые дают возможность криптоаналитику получить дополнительную информацию о ключе
· ПШ в отличии от БШ часто могут быть атакованы при помощи линейной алгебры. Так же для взлома поточных шифров весьма успешно применяется линейный и дифференциальный анализ.
Если посмотреть работы по анализу и взлому блочных шифров рассматриваются алгоритмы шифрования, основанные на стандарте DES; для поточных шифров нет выделенного направления изучения, методы взлома поточных систем шифрования весьма разнообразны.
2. Проектирование поточных шифров
Согласно Райнеру Рюппелю можно выделить четыре основных подхода к проектированию поточных шифров:
Системно-теоретический подход основан на создании для криптоаналитика сложной, ранее неисследованной проблемы.
Сложностно-теоретический подход основан на сложной, но известной проблеме.
Рандомизированный подход основан на создании объемной задачи; криптограф пытается сделать решение задачи расшифрования физически невозможной.
2.1 Атаки на поточные шифры
Все методы криптоанализа поточных шифров обычно подразделяются на силовые, статистические и аналитические.
К этому классу относятся атаки, осуществляющие полный перебор возможных вариантов. Сложность зависит от количества возможных решений, в частности от размера ключа и открытого текста. Силовые атаки применимы ко всем видам систем поточного шифрования
2) Статистические атаки
Статистические атаки делятся еще на два подкласса:
Метод криптоанализа статистических свойств шифрующей гаммы: направлен на изучение выходной последовательности криптосистемы; криптоаналитик пытается установить значение следующего бита последовательности гаммы.
Метод криптоанализа сложности последовательности: криптоаналитик пытается найти способ генерировать последовательность, аналогичную гамме, но более простым способом.
3) Аналитические атаки
Этот вид атаки предполагает, что криптоаналитику известны некоторые данные, виды аналитических атак, применяемых к поточным шифрам:
(1) Предположение о заполнении некоторых ячеек регистра;
(2) Определение полного заполнения регистра на основании предположения о знании криптоаналитика;
(3) Генерации выходной последовательности, если она совпадает, то первый этап был верен.
2.2 Популярные поточные шифры
Считается, что потоковый шифр, благодаря значительной модификации исходного RC4 с учетом его уязвимостей, более устойчив к существующим атакам на потоковые шифры и атакам на шифр RC4. В то же время, безопасность большинства потоковых шифров практически сводится к нулю при использовании одного и того же ключа для зашифрования различных открытых текстов. В таком случае потоковый шифр уже не является генератором одноразового блокнота (потока случайных бит для зашифрования открытого текста). Данная проблема шифром VMPC в некотором роде решается использованием уникального вектора инициализации для каждого зашифрованного потока.
Шифр основан на побитовом сложении по модулю (XOR) генерируемой псевдослучайной последовательности и шифруемой информации. В A5 псевдослучайная последовательность реализуется на основе трёх линейных регистров сдвига с обратной связью. Регистры имеют длины 19, 22 и 23 бита соответственно. Сдвигами управляет специальная схема, организующая на каждом шаге смещение как минимум двух регистров, что приводит к их неравномерному движению. Последовательность формируется путём операции «исключающее или» над выходными битами регистров.
А5 был создан в конце 80-х годов французскими криптографами. В качестве алгоритма А5 была использована французская разработка. Этот шифр обеспечивал достаточно хорошую защищённость потока и, следовательно, конфиденциальность разговора. Сейчас он используется в сетях 3G связи.
Алгоритм Sosemanuk использует два основных понятия: регистр сдвига с линейной обратной связью (LFSR) и конечный автомат (FSM). Данные, полученные с помощью LFSR, поступают на вход FSM, где происходит их нелинейное преобразование. Затем к четырём выходным значениям конечного автомата применяется табличная замена (S-box) и XOR с соответствующими значениями регистра сдвига. Расписание ключей для шифра составляется с помощью примитива Serpent24. Кроме того, выходные значения 12, 18 и 24 раунда Serpent24 используются для инъекции начального значения: задания состояния LSM и регистров FSM.
Шифр состоит из 3 блоков: двух 80-битных регистров сдвига с обратной связью и выходной функции. Один из регистров обладает линейной функцией обратной связи (LFSR), второй регистр имеет нелинейную функцию обратной связи (NFSR). Внутреннее состояние шифра полностью определяется регистрами сдвига.
НС-256 содержит две секретные таблицы, в каждой из которых 1024 32-битных элемента. При каждом шаге обновляется один элемент из таблицы при помощи нелинейном функции обратной связи. Через каждые 2048 шагов все элементы двух таблиц будут обновлены.
Может быть эффективно реализован в программном обеспечении для быстрого шифрования и расшифровки, благодаря своей несложной конструкции. Используются только 4 простые операции: исключающее «ИЛИ», сложение, сдвиг и таблицы поиска. Если алгоритм реализован в оборудовании, то внутренние вычисления могут быть распараллелены для достижения большей эффективности.
Многие упомянутые шифры были участниками eSTREAM. Это проект по выявлению новых поточных шифров, которые являются пригодными для широкого применения. Проект разделен на несколько последовательных этапов, под различные варианты использования.
2.3 Алгоритм образования ключей для потоковых шифров
По правилу разработки криптографических систем, надежность системы зависит от того, насколько хорошо скрыт ключ шифрования.
Классификация ключей:
Главное свойство ключевой пары: по секретному ключу вычисляется открытый ключ, по известному открытому ключу практически невозможно вычислить секретный.