Вы находитесь на странице: 1из 18

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei


Catedra Informatica Aplicată

RAPORT

Lucrarea de curs
la Securitatea Informatională
Tema: Sisteme de criptare simetrice

A efectuat:
st. gr. IA-142 N. Celacci

A verificat:
dr., conf.univ. M. Kulev

Chişinău -2016
Оглавление
Введение:........................................................................................................................................3
Введение в шифрование................................................................................................................3
Цели шифрования..................................................................................................................3
Типы алгоритмов шифрования.............................................................................................3
Симметричное шифрование.........................................................................................................4
Этапы обмена информацией.................................................................................................5
Схемы и принципы симметричного шифрования......................................................................6
Алгоритмы симметричного шифрования....................................................................................8
Криптоалгоритм AES............................................................................................................8
Алгоритм Blowfish.................................................................................................................9
Алгоритм CAST-128............................................................................................................12
Аллгоритм DES....................................................................................................................13
Пример симметричного алгоритма............................................................................................17
Ссылка на код:.....................................................................................................................17
Скриншот выполнения программы:..................................................................................17
Вывод............................................................................................................................................18
Библиография...............................................................................................................................18
Введение:

В данной работе, я изучу определённый тип шифрования, а именно симметричное


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

Введение в шифрование.

Шифрова́ние — обратимое преобразование информации в целях сокрытия


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

Цели шифрования
Шифрование применяется для хранения важной информации в ненадёжных
источниках и передачи её по незащищённым каналам связи. Такая передача
данных представляет из себя два взаимно обратных процесса:

 Перед отправлением данных по линии связи или перед помещением на


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

Типы алгоритмов шифрования

Алгоритмы шифрования делятся на два больших класса: симметричные (AES,


ГОСТ, Blowfish, CAST, DES) и асимметричные (RSA, El-Gamal).

 Симметричное шифрование использует один и тот же ключ и для


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

Симметричные алгоритмы шифрования (или криптография с секретными


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

Симметричное шифрование.

Исторически первыми появились симметричные криптографические системы.


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

Исторически первыми появились симметричные криптографические системы.


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

Соответственно с целью предотвращения несанкционированного раскрытия


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

Данные криптосистемы характеризуются наиболее высокой скоростью


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

Обычно ключ шифрования представляет собой файл или массив данных и


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

Этапы обмена информацией

1. отправитель передает получателю ключ (в сети с несколькими


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

Целостность данных обеспечивается присоединением к передаваемым данным


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

Симметричное шифрование идеально подходит для шифрования информации


«для себя», например, с целью предотвращения НСД к ней в отсутствие
владельца. Это может быть как архивное шифрование выбранных файлов, так
и прозрачное (автоматическое) шифрование целых логических или физических
дисков.

Обладая высокой скоростью шифрования, одноключевые криптосистемы


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

Перед началом обмена зашифрованными данными необходимо обменяться


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

Схемы и принципы симметричного шифрования

В общедоступной литературе математические задачи криптографии на


современном уровне впервые были рассмотрены К. Шенноном в работе [1],
хотя по некоторым данным в России аналогичные результаты были известны и
раньше. В этой работе К. Шеннон с помощью предложенного им теоретико-
информационного подхода решил некоторые из важнейших проблем теоретико-
информационной криптографии. В частности, им показано, что абсолютной
надежностью могут обладать только те шифры, у которых объем ключа не
меньше объема шифруемой информации, а также приведены примеры таких
шифров. Там же были предложены и принципы построения криптографически
надежных преобразований с помощью композиции некоторых разнородных
отображений и т. п.

В указанной работае Шеннона были сформулированы и доказаны


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

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

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


Пусть Х и Y - два текста (открытый и шифрованный соответственно), Х взаимно
однозначно отображается в текст Y. Действие шифра замены можно
представить как преобразование открытого текста X = (x1,x2,…xn)в
шифрованныйтекст Y = g(X)=g(x1,x2,…,xn).
Математическое описание шифра перестановки выглядит следующим
образом. Пусть длина отрезков, на которые разбивается открытый текст,
равна m, а S - взаимно однозначное отображение   X  = (x1,x2,…xm) в себя.
Шифр перестановки преобразует отрезок открытого текста x1,x2,…xm в отрезок
шифрованного текста S(x1,x2,…,xm) (рисунок 2).

Рисунок 2. Общая схема шифрования

Абсолютно стойкие шифры преименяются в сетях связи с небольшим объемом


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

При реализации с помощью вычислительной технике, как говорилось ранее,


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

Блочный шифр Ak представляет собой автомат, входами и выходами которого


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

Поточные шифры, как правило, более производительны, чем блочные и


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

Алгоритмы симметричного шифрования

Криптоалгоритм AES.

AES – аббревиатура от Advanced Encryption Standard.

AES представляет собой алгоритм шифрования 128-битных блоков данных


клю- чами по 128, 192 и 256 бит. AES является упрощенной версией алгоритма
Rijndael. Оригинальный алгоритм Rijndael отличается тем, что поддерживает
более широкий набор длин блоков.

Для шифрования в алгоритме AES применяются следующие процедуры


преобразо- вания данных:

1. ExpandKey — Вычисление раундных ключей для всех раундов.


2. SubBytes — Подстановка байтов с помощью таблицы подстановок;
3. ShiftRows — Циклический сдвиг строк в форме на различные величины;
4. MixColumns — Смешивание данных внутри каждого столбца формы;
5. AddRoundKey — Сложение ключа раунда с формой.

Порядок выполнения процедур 2 и 3 можно поменять местами в силу


опеределения этих операций. Процедуры 4 и 5 тоже можно выполнять в разном
порядке, но при этом изменяется количество их вызовов, поскольку
MixColumns(AddRoundKey(A, B)) = AddRoundKey(MixColumns(A),
MixColumns(B)).

Шифрование производится по алгоритму, приведенному на Риc. 1.


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

Алгоритм Blowfish.

 Алгоритм Blowfish был разработан Брюсом Шнайером в 1994 г. Автор


алгоритма предложил его в качестве замены стандарту DES.
      Blowfish оказался весьма удачным алгоритмом. Он широко реализован в
различных шифровальных средствах - на сайте Брюса Шнайера
(http://www.schneier.com) приведен список из примерно 150 продуктов,
которые шифруют алгоритмом Blowfish.
      Алгоритм предназначен в основном для приложений, в которых ключ
меняется нечасто, к тому же существует фаза начального рукопожатия, во
время которой происходит аутентификация сторон и согласование общих
параметров и секретов.
      Blowfish использует большое количество подключей. Эти ключи должны
быть вычислены заранее, до начала любого шифрования или дешифрования
данных.
 

Структура алгоритма.

      Blowfish шифрует данные 64-битными блоками. Ключ алгоритма имеет


переменный размер - от 32 до 448 бит. 

      Алгоритм представляет собой сеть Фейстеля. Шифрование данных


выполняется за 16 раундов, в каждом из которых над левым 32-битным
субблоком данных проводятся следующие действия:

1. Значение субблока складывается с ключом i-го раунда Ki операцией XOR,


результат операции становится новым значением субблока. 
2. Субблок обрабатывается функцией F (описана ниже), результат обработки
накладывается на правый субблок операцией XOR. 
3. Субблоки меняются местами во всех раундах, кроме последнего.
4. После 16 раундов выполняется наложение на субблоки еще двух
подключей: K17 и K18 складываются операцией XOR с правым и левым
субблоками соответственно. 

Функция F (рис. 2) обрабатывает субблок следующим образом:


      1. 32-битное входное значение делится на четыре фрагмента по 8 бит,
каждый из которых прогоняется через одну из таблиц замен S1...S4 с
получением четырех 32-битных выходных фрагментов. Таблицы замен
содержат по 256 значений по 32 бита, они не являются фиксированными и
зависят от ключа шифрования. Принципы их вычисления подробно описаны
ниже. 
      2. Первые два выходных фрагмента складываются по модулю  . 
      3. Результат предыдущего шага складывается операцией XOR с третьим
выходным фрагментом. 
      4. Выходное значение функции F получается путем сложения результата
предыдущего шага с четвертым выходным фрагментом по модулю  . 

      Функцию F можно определить так: 

F(x) = ( (S1(x1) + S2(x2) mod  ) (+) S3(x3) ) + S4(x4) mod  , где


x1...x4 - 8-битные фрагменты входного значения x.
Расшифрование выполняется аналогично шифрованию, но
ключи K1...K18 используются в обратном порядке. 

   Процедура расширения ключа:


      
      Задача процедуры расширения ключа состоит в вычислении на основе
ключа шифрования значений ключей раунда  K1...K18 и таблиц
замен S1...S4.
      Расширение ключа выполняется в 5 этапов:

1. Исходные значения ключей раунда и таблиц замен инициализируются


фиксированной псевдослучайной строкой, в качестве которой используется
шестнадцатеричная запись дробной части числа pi (пи).
2. Операцией XOR на K1 накладываются первые 32 бита ключа шифрования,
на K2 - следующие 32 бита и т. д. - до K18. Если ключ шифрования короче,
чем необходимо для наложения на K1...K18, то он накладывается циклически.
3. С использованием полученных ключей раунда и таблиц замен выполняется
шифрование алгоритмом Blowfish блока данных, состоящего из 64 нулевых
бит. Результат становится новым значением ключей K1 и K2.
4. Результат предыдущего этапа снова шифруется алгоритмом Blowfish
(причем уже с измененными значениями ключей   K1 и K2), в результате
получаются новые значения ключей K3 и K4.
5. Шифрование выполняется до тех пор, пока новыми значениями не будут
заполнены все ключи раунда и таблицы замен.
 

         Процедура расширения ключа:


      В процедуре расширения ключа мы видим, что для создания ключа
необходима какая-то фиксированная псевдослучайная строка S (набор из
любых шестнадцитеричных символов). На строку S c помощью операции XOR
накладывается ключ принадлежащий пользователю. В теории для каждого
ключа должна соответствовать своя фиксированная псевдослучайная строка
S.

Алгоритм CAST-128.

CAST был разработан в Канаде Карлайслом Адамсом (Carlisle Adams) и


Стаффордом Таваресом (Stafford Tavares) [10, 7]. Они утверждают, что
название обусловлено ходом разработки и должно напоминать о вероятностном
характере процесса, а не об инициалах авторов. Описываемый алгоритм CAST
использует 64-битовый блок и 64-битовый ключ.

CAST имеет знакомую структуру. Алгоритм использует шесть S-блоков с 8-


битовым входом и 32-битовым выходом. Работа этих S-блоков сложна и зависит
от реализации, подробности можно найти в литературе.

Для шифрования сначала блок открытого текста разбивается на левую и


правую половины. Алгоритм состоит из 8 этапов. На каждом этапе правая
половина объединяется с частью ключа с помощью функции f, а затем XOR
результата и левой половины выполняется для получения новой правой
половины. Первоначальная (до этапа) правая половина становится новой левой
половиной. После 8 этапов (не переставьте левую и правую половины после
восьмого этапа) две половины объединяются, образуя шифротекст. Функция f
проста:

1. Разбейте 32-битовый вход на четыре 8-битовых части: a, b, c, d.


2. Разбейте 16-битовый подключ на две 8-битовых половины: e, f.
3. Подайте a на вход S-блока 1, b - на вход S-блока 2, c - на вход S-блока
3, d - на вход S-блока 4, e - на вход S-блока 5 и f - на вход S-блока 6.
4. Выполните XOR шести выходов S-блоков, получая 32-битовый результат.

Иначе, 32-битовый вход может быть объединен с помощью XOR с 32 битами


ключа, разбит на четыре 8-битовых части, которые обрабатываются S-блоками
и затем объединяются с помощью XOR [7]. Безопасность N этапов,
организованных таким образом, по видимому, соответствует N + 2 этапам
другого варианта.

16-битовые подключи этапов легко получаются из 64-битового ключа. Если k1,


k2, . . .k8 - это 8 байтов ключа, то на этапах алгоритма используются следующие
подключи:
Этап 1: k1, k2
Этап 2: k3, k4
Этап 3: k5, k6
Этап 4: k7, k8
Этап 5: k4, k3
Этап 6: k2, k1
Этап 7: k8, k7
Этап 8: k6, k5

Сила этого алгоритма заключена в его S-блоках. У CAST нет фиксированных S-


блоков, для каждого приложения они конструируются заново. Критерии
проектирования описаны в [10], изогнутыми функциями являются столбцы S-
блоков, обеспечивающие необходимые свойства S-блоков (см. раздел 14.10).
Созданный для данной реализации CAST S-блоков уже больше никогда не
меняется. S-блоки зависят от реализации, а не от ключа.

В [10] было показано, что CAST устойчив к дифференциальному


криптоанализу, а в [728] - что CAST устойчив и к линейному криптоанализу.
Неизвестно иного, чем грубая сила, способа вскрыть CAST.

Аллгоритм DES.

Основные сведения

Одной из наиболее известных криптографических систем с закрытым ключом


является DES – Data Encryption Standard. Эта система первой получила статус
государственного стандарта в области шифрования данных. Она разработана
специалистами фирмы IBM и вступила в действие в США 1977
году. Алгоритм DES широко использовался при хранении и передаче данных
между различными вычислительными системами; в почтовых системах, в
электронных системах чертежей и при электронном обмене коммерческой
информацией. Стандарт DES реализовывался как программно, так и аппаратно.
Предприятиями разных стран был налажен массовый выпуск цифровых
устройств, использующих DES для шифрования данных. Все устройства
проходили обязательную сертификацию на соответствие стандарту.

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

Длина ключа в алгоритме DES составляет 56 бит. Именно с этим фактом


связана основная полемика относительно способности DESпротивостоять
различным атакам. Как известно, любой блочный шифр с закрытым ключом
можно взломать, перебрав все возможные комбинации ключей. При длине
ключа 56 бит возможны 256 разных ключей. Если компьютер перебирает за одну
секунду 1 000 000 ключей (что примерно равно 220), то на перебор всех
256 ключей потребуется 236 секунд или чуть более двух тысяч лет, что, конечно,
является неприемлемым для злоумышленников.

Однако возможны более дорогие и быстрые вычислительные системы,


чем персональный компьютер. Например, если иметь возможность объединить
для проведения параллельных вычислений миллион процессоров, то
максимальное время подбора ключа сокращается примерно до 18 часов. Это
время не слишком велико, и криптоаналитик, оснащенный подобной дорогой
техникой, вполне может выполнить вскрытие данных, зашифрованных DESза
приемлемое для себя время.

Вместе с этим можно отметить, что систему DES вполне можно использовать в


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

Основные параметры DES: размер блока 64 бита, длина ключа 56 бит,


количество раундов – 16. DES является классической сетью Фейштеля с двумя
ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок
данных в 64-битный выходной блок. Стандарт DES построен на
комбинированном использовании перестановки, замены и гаммирования.
Шифруемые данные должны быть представлены в двоичном виде.

Шифрование

Процесс шифрования каждого 64-битового блока исходных данных можно


разделить на три этапа:

1. начальная подготовка блока данных;


2. 16 раундов "основного цикла";
3. конечная обработка блока данных.

На первом этапе выполняется начальная перестановка 64-битного исходного


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

На следующем (основном) этапе блок делится на две части (ветви) по 32 бита


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

Наконец, на третьем этапе выполняется перестановка результата, полученного


после шестнадцати шагов основного цикла. Эта перестановка обратна
начальной перестановке.

Рис. 4.1. Общая схема DES


Рассмотрим более подробно все этапы криптографического преобразования по
стандарту DES.

На первом этапе 64-разрядный блок исходных данных подвергается начальной


перестановке. В литературе эта операция иногда называется "забеливание"
– whitening. При начальной перестановке биты блока данных определенным
образом переупорядочиваются. Эта операция придает некоторую "хаотичность"
исходному сообщению, снижая возможность использования криптоанализа
статистическими методами.

Одновременно с начальной перестановкой блока данных выполняется


начальная перестановка 56 бит ключа. Из рис. 4.1. видно, что в каждом из
раундов используется соответствующий 48-битный частичный ключ Ki.
Ключи Ki получаются по определенному алгоритму, используя каждый из битов
начального ключа по нескольку раз. В каждом раунде 56-битный ключ делится
на две 28-битовые половинки. Затем половинки сдвигаются влево на один или
два бита в зависимости от номера раунда. После сдвига определенным образом
выбирается 48 из 56 битов. Так как при этом не только
выбирается подмножество битов, но и изменяется их порядок, то эта операция
называется "перестановка со сжатием". Ее результатом является набор из 48
битов. В среднем каждый битисходного 56-битного ключа используется в 14 из
16 подключей, хотя не все биты используются одинаковое количество раз.

Далее выполняется основной цикл преобразования, организованный по сети


Фейштеля и состоящий из 16 одинаковых раундов. При этом в каждом раунде
( рис. 4.2) получается промежуточное 64-битное значение, которое затем
обрабатывается в следующем раунде.

Рис. 4.2. Структура одного раунда DES


Левая и правая ветви каждого промежуточного значения обрабатываются как
отдельные 32-битные значения, обозначенные L иR.

Вначале правая часть блока Ri расширяется до 48 битов, используя таблицу,


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

После выполнения перестановки с расширением для полученного 48-битного


значения выполняется операция XOR с 48-битным подключом Ki. Затем
полученное 48-битное значение подается на вход блока подстановки S (от
англ. Substitution - подстановка), результатом которой является 32-
битное значение. Подстановка выполняется в восьми блоках подстановки или
восьми S-блоках (S-boxes). При выполнении этой операции 48 битов данных
делятся на восемь 6-битовых подблоков, каждый из которых по своей таблице
замен заменяется четырьмя битами. Подстановка с помощью S-блоков является
одним из важнейших этапом DES. Таблицы замен для
этой операции специально спроектированы специалистами так, чтобы
обеспечивать максимальную безопасность. В результате выполнения этого
этапа получаются восемь 4-битовых блоков, которые вновь объединяются в
единое 32-битовоезначение.

Далее полученное 32-битовое значение обрабатывается с помощью


перестановки Р (от англ. Permutation – перестановка), которая не зависит от
используемого ключа. Целью перестановки является максимальное
переупорядочивание битов такое, чтобы в следующем раунде шифрования
каждый бит с большой вероятностью обрабатывался другим S-блоком.

И, наконец, результат перестановки объединяется с помощью операции XOR с


левой половиной первоначального 64-битового блока данных. Затем левая и
правая половины меняются местами, и начинается следующий раунд.

После шестнадцати раундов шифрования выполняется


конечная перестановка результата. Эта перестановка инверсна (обратна)
начальной перестановке.

После выполнения всех указанных шагов блок данных считается полностью


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

Расшифрование

Как известно, криптографическая система должна позволять не только


зашифровать, но и расшифровать сообщения. Можно было бы ожидать, что
процесс расшифрования по DES сильно запутан. Однако разработчики так
подобрали различные компоненты стандарта, чтобы для зашифрования и
расшифрования использовался один и тот же алгоритм. При расшифровании
на вход алгоритма подается зашифрованный текст. Единственное отличие
состоит в обратном порядке использования частичных
ключейKi. K16 используется на первом раунде, K1 — на последнем раунде.

После последнего раунда процесса расшифрования две половины выхода


меняются местами так, чтобы вход заключительной перестановки был
составлен из R16 и L16. Выходом этой стадии является незашифрованный текст.

Пример симметричного алгоритма

В данной работе, как пример симметричного алгоритма, я приведу


алгоритм «DES», а точнее его реализацию на C++.

Так как код программы довольно большой, приводить его в данной


работе я не буду, но я приложу ссылку на код, который я позаимствовал
с сайта.

Ссылка на код:

http://simplestcodings.blogspot.md/2010/09/des-implementation-in-c.html

Скриншот выполнения программы:


Вывод

Прочитав несколько статей, я пришёл к выводу, что симметричное шифрование


остаётся самым актуальным и криптографически гарантированным методом
защиты информации.

Алгоритмы с симметричными ключами имеют очень высокую


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

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


длины и могут быстро шифровать большие объемы данных.

Библиография.

1. http://r3al.ru/kripto_2/cast.htm - Статья на сайте “r3al.ru” описывающая принципы


алгоритма CAST.
2. http://alexinternetclic.ru/Blowfish.php - Статья об алгоритме “Blowfish”
3. http://pcs.susu.ru/projects/3/aes.pdf - Технический отчет CELLAES-01 К.С. Пан, М.Л.
Цымблер
4. http://xn--90abr5b.xn--p1ai/wiki/doku.php?id=examination:mszki:question40 – Статья о
симметричных и ассиметричных алгоритмах шифрования.
5. http://technomag.bmstu.ru/doc/187185.html - Статья о симметричном шифровании
(гаммирование). МГТУ им. Н.Э. Баумана. Автор: Гончаров Н. О.
6. http://ypn.ru/193/symmetric-encryption-system/ - Статья о симметричных
криптосистемах шифрования.
7. http://www.intuit.ru/studies/courses/691/547/lecture/12377?page=1 – Лекция об
алгоритмах шифрования DES и AES
8. http://simplestcodings.blogspot.md/2010/09/des-implementation-in-c.html - код
программы.

Оценить