Здавалка
Главная | Обратная связь

Программное шифрование



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

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

Конечно, злоумышленник может добраться до компьютера и незаметно внести нежелательные изменения в программу шифрования. Однако основная проблема состоит отнюдь не в этом. Если злоумышленник в состоянии проникнуть в помещение, где установлен компьютер, он вряд ли будет возиться с программой, а просто установит скрытую камеру в стене, подслушивающее устройство — в телефон или датчик для ретрансляции электромагнитного излучения — в компьютер. В конце концов, если злоумышленник может беспрепятственно все это сделать, сражение с ним проиграно, даже еще не начавшись.

 

11)

Использование нелинейных операций для построения блочных шифров

Алгоритмы симметричного шифрования различаются способом, которым обрабатывается исходный текст. Возможно шифрование блоками или шифрование потоком.

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

Табличная подстановка, при которой группа битов отображается в другую группу битов. Это так называемые S-box.

Перемещение, с помощью которого биты сообщения переупорядочиваются.

Операция сложения по модулю 2, обозначаемая XOR или знаком .

Операция сложения по модулю или по модулю .

Циклический сдвиг на некоторое число битов.

Эти операции циклически повторяются в алгоритме, образуя так называемые раунды. Входом каждого раунда является выход предыдущего раунда и ключ, который получен по определенному алгоритму из ключа шифрования K. Ключ раунда называется подключом. Каждый алгоритм шифрования может быть представлен на рис. 1 следующим образом:

Рис. 1. Структура алгоритма симметричного шифрования

Стандартизованный алгоритм шифрования должен быть применим в различных приложениях:

Шифрование данных. Алгоритм должен быть эффективен при шифровании файлов данных или большого потока данных.

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

Хэширование. Алгоритм должен эффективно преобразовываться в одностороннюю хэш-функцию.

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

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

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

Алгоритм должен работать на микроконтроллерах и других процессорах среднего размера.

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

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

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

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

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

Все операции с данными должны осуществляться над блоками, кратными байту или 32-битному слову.

 

12)

К достоинствам блочных шифров относят похожесть процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и дешифрования. Особенностью блочного шифра является обработка блока нескольких байт за одну итерацию (как правило 8 или 16).Блочные криптосистемы разбивают текст сообщения на отдельные блоки и затем осуществляют преобразование этих блоков с использованием ключа.

МЕТОДЫ ЗАМЕНЫ

Шифрование методом замены (подстановки) основано на алгебраиче­ской операции, называемой подстановкой. Подстановкой называется вза­имно-однозначное отображение некоторого конечного множества М на себя. Число N элементов этого множества называется степенью подстанов­ки. Природа множества M роли не играет, поэтому можно считать, что M = {1, 2, ..., N}.

Если при данной подстановке S число j переходит в Ij, то подстановка обозначается символом S:

В этой записи числа 1, 2, ..., n можно произвольным образом перестав­лять, соответственно переставляя числа Результат последова­тельного выполнения двух подстановок S1 и S2 одной и той же степени также является подстановкой, которая называется произведением подста­новок S1 и S2 и обозначается S1S2.

Пусть S – произвольная подстановка степени n. Если для некоторого j число Ij отлично от j, то говорят, что подстановка S действительно переме­щает число j; в противном случае – подстановка S оставляет число j на мес­те.

Количество m чисел, действительно перемещаемых подстановкой S, называется длиной цикла подстановки.

Подстановка S называется транспозицией, если существует пара различных элементов из M, удовлетворяющих условиям:

Любая подстановка разлагается в произведение транспозиций.

В криптографии рассматриваются четыре типа подстановки (замены): моноалфавитная, гомофоническая, полиалфавитная и полиграммная. Далее всюду в примерах, где необходимо, будем использовать кодирование букв русского алфавита, приведенное в табл. 3.2.2. Знак "_" в табл. 2.2 и далее оз­начает пробел.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.