Рефераты. Устройство аппаратного шифрования данных с интерфейсом USB

                                                   (1.15)


Дешифрирование выполняется также, как и шифрование, но  используются в обратном порядке.

В реализациях Blowfish, для которых требуется очень большая скорость, цикл должен быть развернут, а все ключи должны храниться в КЭШе данных.

Подключи рассчитываются с помощью специального алгоритма. Вот какова точная последовательность действий.

1.                 Сначала P-массив, а затем четыре S-блока по порядку инициализируются фиксированной строкой. Эта строка состоит из шестнадцатеричных цифр .

2.                 Выполняется XOR P1 с первыми 32 битами ключа, XOR P2 со следующими 32 битами ключа, и так далее для всех битов ключа (до P18). Используется циклически, пока для всего P-массива не будет выполнена операция XOR с битами ключа.

3.                 Используя подключи, полученные на этапах (1) и (2), алгоритмом Blowfish шифруется строка из одних нулей.

4.                 P1 и P2 заменяются результатом этапа (3).

5.                 Результат этапа (3) шифруется с помощью алгоритма Blowfish и измененных подключей.

6.                 P3 и P4 заменяются результатом этапа (5).

7.                 Далее в ходе процесса все элементы P-массива и затем по порядку все четыре S-блока заменяются выходом постоянно меняющегося алгоритма Blowfish.

Серж Воденэ (Serge Vaudenay) исследовал Blowfish с известными S-блоками и r этапами. Дифференциальный криптоанализ может раскрыть P-массив с помощью 28r+1 выбранных открытых текстов. Для некоторых слабых ключей, которые генерируют плохие S-блоки (вероятность выбора такого ключа составляет 1 к 214), это же вскрытие раскрывает P-массив с помощью всего 24r+1. При неизвестных S-блоках это вскрытие может обнаружить использование слабого ключа, но не может определить сам ключ (ни S-блоки, ни P-массив). Это вскрытие эффективно только против вариантов с уменьшенным числом этапов и совершенно бесполезно против 16-этапного Blowfish.

Слабым является ключ, для которого два элемента данного S-блока идентичны. До выполнения развертывания ключа невозможно определить, является ли он слабым.

В устройстве осуществляется проверка ключей на принадлежность к классу слабых. Слабые ключи не используются.

В устройстве реализован Blowfish c количеством этапов, равным 16.

До сих пор неизвестно об успешном криптоанализе Blowfish.


1.6              Выбор функции для хэширования паролей


Целесообразность хэширования паролей была показана в пункте 1.3.3. Ниже приведены используемые на сегодняшний день функции хэширования.

 

1.6.1 MD4

MD4 - это однонаправленная хэш-функция. MD обозначает Message Digest (краткое изложение сообщения). Алгоритм для входного сообщения выдает 128-битовое хэш-значение. MD4 подходит для высокоскоростных программных реализаций. Она основана на простом наборе битовых манипуляций с 32-битовыми операндами.

После первого появления алгоритма Берт Боер и Антон Босселаерс (Antoon Bosselaers) осуществили криптоанализ последних двух из трех этапов алгоритма. Эли Бихам рассмотрел использование дифференциального криптоанализа против первых двух этапов MD4.

 

1.6.2 MD5

MD5 - это улучшенная версия MD4. Алгоритм хэш-функции сложнее чем в MD4, но их схемы похожи. Результатом MD5 является 128-битовое хэш-значение. Группа китайских ученых показала, что существует простой и быстрый алгоритм подбора коллизий этой хэш-функции.

Алгоритмы MD4 и MD5 в проектах лучше не использовать. Существует возможность вычисления коллизий этих функций.

 

1.6.3 SHA

Алгоритм безопасного хэширования (Secure Hash Algorithm, SHA), разработан для стандарта цифровой подписи (Digital Signature Standard).

Для любого входного сообщения длиной меньше 264 битов SHA выдает 160-битовый результат, называемый кратким содержанием сообщения. SHA является криптостойким алгоритмом и разработан так, чтобы было невозможно найти сообщение, соответствующее данному краткому содержанию сообщения. Любые изменения, произошедшие при передаче сообщения, с очень высокой вероятностью приведут к изменению краткого содержания сообщения.

12.08.2004 найдена полная коллизия SHA-0. На это потребовалось 50 000 часов машинного времени [1].

 

1.6.4 SHA1

Алгоритм разработан в 1995 году в качестве замены более слабого SHA. Длина результата 160 бит.

Группе китайских ученых удалось найти коллизии в SHA1 меньше чем за 269 операций хеширования (для вскрытия грубой силой не обходимо произвести 280 операций). В связи с этим NIST рекомендует пока пользоваться SHA2 – алгоритм, похожий на тот, что используется в SHA1, но с длиной выходного сообщения 256, 384 и 512 бит. Это делает SHA2 более устойчивым к вскрытию полным перебором.

1.6.5 SHA2

Алгоритм представляет собой вариант SHA1, с большей длиной выходного сообщения. Существуют варианты SHA-256, SHA-384, SHA-512. Об успешных атаках на SHA2 пока неизвестно.

В устройстве используется хэш-функция SHA2-384, так как:

·                    это одна из немногих криптостойких функций хэширования на сегодняшний день;

·                    длина выходного сообщения функции равняется 384 бита. SHA2 будет использоваться для хэширования паролей. Полученный, с помощью SHA2-384, ключ к Blowfish полностью соответствует требованиям, предъявляемым к длине ключей.


1.7              Выбор генератора случайных чисел


Основным требованием, предъявляемым к разрабатываемому устройству, является высокая криптостойкость системы шифрования. Поэтому для генерации сеансовых ключей шифрования необходимо использовать генератор случайных чисел.

 

1.7.1 Методы получения случайных чисел

При использовании как симметричных, так и асимметричных криптосистем необходимо иметь хороший источник случайных чисел для создания ключей. Главная особенность такого источника состоит в том, что создаваемые числа должны быть неизвестными и непредсказуемыми для криптоаналитика.

Лучшим вариантом является создание случайных чисел на основе некоторого физического процесса, так как многие физические процессы действительно случайны. Например, для этого можно использовать аппаратные средства типа “шумящего” диода. Можно использовать какие-либо физические движения пользователя, например, скорость печати в микросекундах, перемещения мыши и т.д.

Практически все методы генерации случайных чисел имеют некоторую корреляцию и не позволяют обеспечить достаточную статистическую хаотичность. Поэтому перед использованием, полученные ключи следует обрабатывать надежной хэш-функцией. (См. пункт 1.6.)

Другой подход состоит в том, чтобы использовать генератор псевдослучайных чисел, запускаемый случайным числом. Главное различие между случайными и псевдослучайными числами в том, что последние обязательно являются периодическими, а действительно случайные числа нет.

Так как генераторы псевдослучайных чисел являются детерминированными алгоритмами, то важно найти среди них криптографически защищенный, а кроме этого использовать хорошее случайное число для запуска генерации.


1.7.2 Линейные конгруэнтные генераторы

Линейные конгруэнтные генераторы являются генераторами псевдослучайных чисел, которые вычисляются по формуле:


Xn = (a∙Xn-1 + b) mod m,                                                                              (1.16)


в которых Xn - это n-ый член последовательности, а Xn-1 - предыдущий член последовательности. Переменные a>0, b>0 и m>0 целочисленные константы: a - множитель, b- инкремент, и m - модуль.

Получаемая последовательность зависит от выбора стартового числа X0 и при разных его значениях получаются различные последовательности случайных чисел.

Период такого генератора не больше, чем m. Если a, b и m выбраны правильно, то генератор будет генератором с максимальным периодом и его период будет равен m.

Преимуществом линейных конгруэнтных генераторов является их быстрота за счет малого количества операций на бит.

Линейные конгруэнтные генераторы нельзя использовать в криптографии, так как они предсказуемы. Впервые линейные конгруэнтные генераторы были взломаны Джимом Ридсом (Jim Reeds), а затем Джоан Бояр (Joan Boyar).

Другие исследователи расширили идеи Джоан Бояр, разработав способы вскрытия любого полиномиального генератора. Таким образом была доказана бесполезность конгруэнтных генераторов для криптографии.

 

1.7.3 Алгоритм Блюма-Блюма-Шуба (Blum Blum Shub, BBS)

Алгоритм представляет собой генератор псевдослучайных чисел, предложенный в 1986 году Ленор Блюм, Мануэлем Блюм и Майклом Шубом.

Алгоритм BBS выглядит так:


xn+1 = (xn)2 mod M,                                                                            (1.17)


где M=p∙q является произведением двух больших простых чисел p и q. На каждом шаге алгоритма выходные данные получаются из xn путем взятия либо бита четности, либо нескольких наименее значимых бит из xn .

Алгоритм Блюма-Блюма-Шуба рекомендуется использовать только в криптографии. Этот метод имеет необычно высокую стойкость, которая обеспечивается качеством генератора исходя из вычислительной сложности задачи факторизации чисел. Вычисление выходных бит настолько же трудно, как и факторизация M [1].

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.