Современные криптосистемы и их особенности

УДК 519.688

Д. Г. Сущевский, О. В. Панченко, В. Н. Кугураков

СОВРЕМЕННЫЕ КРИПТОСИСТЕМЫ И ИХ ОСОБЕННОСТИ

Ключевые слова: криптография, криптосистема, ключ шифрования, блочное шифрование, алгоритм RSA, сети Фейстеля.

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

Keywords: cryptography, cryptosystem, encryption key, block encryption, RSA algorithm, Fiestel networks.

This paper presents the overview of modern cryptomodels, the cryptosystems classification. It shows the necessity of pseudo-cryptographic transformations in various fields of a human activity, which use the information technologies.

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

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

1. По методу шифрования данных.

2. По методу передачи ключей.

3. По методу хранения данных.

Криптосистему можно классифицировать

по методу шифрования данных следующим образом: если фрагмент открытого текста (отдельные символы или последовательность символов) заменяется на некоторый его эквивалент в криптотексте, то соответствующая криптосистема относиться к криптосистемам класса замены. Если буквы открытого текста при шифровании лишь меняются друг с другом местами, то данная система является примером класса шифров перестановки. Если же к исходному тексту применяется оба вида преобразований, то данная криптосистема относиться к классу композиционных шифров [3].

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

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

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

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

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

1. Этап расширения ключа (на этом этапе из введенного ключа посредством определенной последовательности действий получается входные данные алгоритма).

2. Процесс шифрования/дешифрования (на этом этапе полученные на предыдущем этапе данные применяются алгоритмами преобразования для его кодирования/раскодирования).

Примером расширяемой криптосистемы является криптосистема Blowfish, разработанная в 1993 году Брюсом Шнайером [5]. На первом этапе криптосистема превращает исходный ключ (длиной до 448 бит) в восемнадцать 32-битовых под ключей и в четыре 32-битных 8-блока, содержащих 256 элементов. Информационная емкость требуемых для работы алгоритма вычисляется как Т= (18 + 4 • 256) • 32 = 33344 бит = 4168 байт.

В результате криптосистема при малом размере входного ключа (около 448 бит), расширяет его до требуемых данных размером превышающим размер входного ключа чуть больше чем в 72 раза.

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

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

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

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

Блочный шифр - это один из видов симметричных криптосистем, оперирующий либо группами бит фиксированной длины, либо текстовыми сообщениями также фиксированной длины. Характерная длина блока шифрования лежит в диапазоне 64-256 бит. Если длина исходного сообщения, помещаемая в блок меньше чем размерность блока, то она дополняется любой информацией до необходимой длины. Эта информация называется «загрязнителем» или ненужной информацией [6]. Блочные шифры являются важными компонентами многих современных криптосистем и криптографических протоколов, используются для шифрования пакетов для передачи по сети. К достоинствам блочных шифров относятся сходство алгоритмов шифрования и дешифрования: они, в большинстве случаев, отличаются только порядком действий (при дешифровании последовательность действий прямо обратна последовательности действий при шифровании), а также уникальности шифруемых блоков. Это упрощает создание устройств шифрования и создание алгоритмов. Помимо возможностей шифровальных машин блочные шифры могут быть использованы для различных других целей: генераторов псевдослучайных чисел, поточных шифров, имитовствавки и хэш-функций. На данный момент существуют 3 наиболее популярный крипто алгоритмов на основе которых стояться остальные блочные криптосистемы — это итеративные блочные шифры, SP сети, сети Фейстеля.

В 1971 Хорст Фейстель запатентовал два устройства реализующие различные алгоритмы шифрования, названные затем общим название «Lucifer». Одно из устройств использовало конструкцию, впоследствии названную «сетью Фейстеля», которое в будущем стало основой для многих современных крипто алгоритмов таких как Lucifer, Blowfish, KASUMI, RC2, RC5, RC6, MARS, TEA и многие другие [7].

Сеть Фейстеля представляет собой определенную многократную структуру, называемую ячейкой Фейстеля. При переходе от одной ячейки к другой меняется вводимый ключ в соответствии с некоторым правилом. Алгоритмы шифрования, выполняемые с помощью ключа, должны быть достаточно простыми в реализации и должны зависеть только от входного ключа. Таким образом, все этапы шифрования можно представить в виде функции следующего вида: E(b) = (k1,k2,-..,kn,f(ki,b)), где b- шифруемый блок, ki - ключ с порядковым номером i, а f -функция, применяемая к шифр блоку, используя определенный ключ ki. Следовательно, значения получаемые на выходе системы зависят только от порядке следования ключей. При дешифровании на вход алгоритма передаются все те же ключи и зашифрованный блок, однако при этом порядок следования ключей меняется на противоположный,

гарантируя таким образом однозначность декодирования информации.

Теперь рассмотрим подробнее сам алгоритм. Как было сказано ранее на вход алгоритма поддается блок фиксированной длине, причем длина этого блока должна быть четным числом. Далее выбранный блок делиться на два равных по длине под блока левый (L0) и правый (fi0). После этого левый блок шифруется при помощи функции /(L0,fc0) с помощью раундового ключа к0 . К полученному результату применяется любая иволютивная операция, например, битовое сложение по модулю 2 XOR. Полученный результат становиться на место того подблока, который не был задействован в шифровании, а значение неиспользованного подблока ставиться на место шифруемого. Таким образом, обмен данными происходит крест-накрест. После чего операция повторяется N-1, где N - количество раундов сети Фейстеля. При этом между переходами от одного раунда к другому ключи могут меняться исходя по некоторому правилу (обычно они по в прямом порядке). Пример работы алгоритма представлен на рисунках 1 и 2.

Рис. 1 - Шифрование в сетях Фейстеля

Еще одной из популярных криптосистем является протокол Cobra, который был разработан и затем опубликован 13 апреля 1996 года Кристианом Шнайдером [8]. Данная система является расширением сети Фейстеля с четырьмя блоками шифрования режим работы. Cobra - это шифр со 128 битным блоком и переменной длиной ключа. Алгоритм состоит из двух частей: процедуры расширения ключа и процедуры шифрования. Ключ расширяется до массива под ключей длиной 12464 байта [8]. Шифрование заключается в операции ввода, повторения раундовой функции 12 раз и операции вывода. Как можно видеть по рисунку 7 каждый раунд заключается в следующем:

1. Берется первый блок и к нему применяются функция F с раундовыми ключами из S и P блоков.

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

3. Далее пункт 2 повторяется для первого и второго блоков.

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

5. Все операции повторяются для каждого раунда криптосистемы [8].

Рис. 2 - Расшифрование в сетях Фейстеля

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

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

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

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

Литература

1. Нил Коблиц, Курс теории чисел и криптографии. М., Научное изд-во ТВП, 2001. 254 с.

2. Основные сведения о защите программных продуктов. Криптографические методы защиты информации. Программные системы защиты от несанкционированного копирования.// Лекции по ТРПП, ППП, Информационной безопасности, стандартизации,

метрологии и сертификации.

URL:http://starik2222.narod.ru/trpp/lec2/34.htm

3. Классификация криптоалгоритмов. URL: lomasko.com/_ld/0/12_LV_.doc.

4. На пути к Skein: просто и понятно о Blowfish// Электронный ресурс для IT-специалистов Habrahabr. URL: http://habrahabr.ru/post/140394/

5. Blowfish// Статья со свободной энциклопедии Wikipedia. 2015. URL: https://ru.wikipedia.org/wiki/Blowfish

6. Блочный шифр// Статья со свободной энциклопедии Wikipedia. 2015. URL: https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE %D1%87%D0%BD%D1%8B%D0%B9_%D1%88%D0%B 8%D1%84%D1%80.

7. Сеть Фейстеля// Статья со свободной энциклопедии Wikipedia. 2015. URL: https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82 %D1%8C_%D0%A4%D0%B5%D0%B9%D1%81%D1%8 2%D0%B5%D0%BB%D1%8F?useformat=mobile#.D0.9C. D0.BE.D0.B4.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.86.D0 .B8.D0.B8_.D1.81.D0.B5.D1.82.D0.B8_.D0.A4.D0.B5.D0. B9.D1.81.D1.82.D0.B5.D0.BB.D1.8F.

8. Cobra (шифр)// Статья со свободной энциклопедии Wikipedia. 2015. URL: https://ru.wikipedia.org/wiki/Cobra_(%D1%88%D0%B8% D1%84%D1%80).

9. А.П. Кирпичников, И.А. Кутепова, Вестник Казан. технол. ун-та, 16, 24, C. 163-167 (2013).

© Д. Г. Сущевский - бакалавр каф. интеллектуальных систем и управления информационными ресурсами КНИТУ, e-mail: dercius608270@gmail.com; О. В. Панченко - канд. тех. наук, доцент каф. интеллектуальных систем и управления информационными ресурсами КНИТУ, e-mail: ov_panchenko@mail.ru; В. С Кугураков - канд. физ.-мат. наук, доцент кафедры теоретической кибернетики К(П)ФУ, e-mail: Vladimir.Kugurakov@ksu.ru.

© D. G. Sushchevsky - бакалавр каф. интеллектуальных систем и управления информационными ресурсами КНИТУ, e-mail: dercius608270@gmail.com; O. V. Panchenko - канд. тех. наук, доцент каф. интеллектуальных систем и управления информационными ресурсами КНИТУ, e-mail: ov_panchenko@mail.ru; V. S. Kugurakov - PhD, Associate Professor of the Department of Theoretical Cybernetics, K(P)FU, e-mail: Vladimir.Kugurakov@ksu.ru.