Смекни!
smekni.com

Устройство аппаратного шифрования данных с интерфейсом USB (стр. 5 из 12)

Алгоритмы 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.7.4 Генератор, используемый в разрабатываемом устройстве

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

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

1.8 Структурная схема разрабатываемого устройства

Проанализировав техническое задание, составим структурную схему устройства:

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

· Устройство будет производить шифрование данных с большой скоростью (до 12 Мбит/сек). Поэтому основой устройства должен быть высокопроизводительный 32-х разрядный микроконтроллер.

· Устройство связано с компьютером через интерфейс USB на скорости 12 Мбит/сек. Поэтому микроконтроллер, используемый в устройстве, должен быть оснащен full-speed USB контроллером.

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

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

· Необходимо предусмотреть индикацию подачи питания на устройство и индикацию нормальной работы устройства.

· Для генерации сеансовых ключей шифрования в устройстве реализован аппаратно-программный генератор случайных чисел.

· В устройстве должна присутствовать энергонезависимая EEPROM память данных для хранения мастер ключей.

Структурная схема устройства для аппаратного шифрования информации, которая соответствует приведенным выше требованиям, изображена на рисунке 1.9.

Рис. 1.9 – Структурная схема устройства аппаратного шифрования


2. РАЗРАБОТКА СХЕМОТЕХНИЧЕСКОЙ РЕАЛИЗАЦИИ АППАРАТНОГО ШИФРАТОРА

2.1 Выбор элементной базы для шифратора

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

2.1.1 Выбор микроконтроллера

2.1.1.1 Обоснование выбора

Согласно техническому заданию, устройство должно поддерживать USB. Следовательно, нужен контроллер с поддержкой этого интерфейса.

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

Наиболее подходящими контроллерами являются Atmel AT91SAM7S64, Atmel AT89C5131, Philips LPC2141, Philips LPC2142.

Таблица 2.1 – Параметры микроконтроллеров

Микроконтроллер Быстродействие, MIPS Объем flash, Кб Объем ОЗУ, Кб Цена, USD
AT91SAM7S64 50 64 16 5
AT89C5131 4 32 1 8
LPC2141 55 32 8 5
LPC2142 55 64 16 7
Коэф. важности 0,2 0,15 0,15 0,5

Выберем один из них по матрице параметров: