ИСПОЛЬЗОВАНИЕ АЛГОРИТМОВ ШИФРОВАНИЯ В СОВРЕМЕННОЙ ВЕБ-РАЗРАБОТКЕ

Рубрика конференции: Секция 7. Информационные технологии
DOI статьи: 10.32743/2587862X.2022.9.59.344954
Библиографическое описание
Жук М.М. ИСПОЛЬЗОВАНИЕ АЛГОРИТМОВ ШИФРОВАНИЯ В СОВРЕМЕННОЙ ВЕБ-РАЗРАБОТКЕ / М.М. Жук // Технические науки: проблемы и решения: сб. ст. по материалам LXIV Международной научно-практической конференции «Технические науки: проблемы и решения». – № 9(59). – М., Изд. «Интернаука», 2022. DOI:10.32743/2587862X.2022.9.59.344954

ИСПОЛЬЗОВАНИЕ АЛГОРИТМОВ ШИФРОВАНИЯ В СОВРЕМЕННОЙ ВЕБ-РАЗРАБОТКЕ

Жук Максим Михайлович

старший инженер-разработчик, ООО «Рексофт»,

РФ, г. Армавир

 

USING ENCRYPTION ALGORITHMS IN MODERN WEB DEVELOPMENT

Maksim Zhuk

Senior Software Engineer «Reksoft»,

Russia, Armavir

 

АННОТАЦИЯ

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

ABSTRACT

The purpose of this scientific article is to describe the trends in modern cryptology and algorithms in web development, to evaluate the results of their implementation.

 

Ключевые слова: шифрование; интернет; безопасность; криптология.

Keywords: encryption; internet; safety; cryptology.

 

ВВЕДЕНИЕ

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

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

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

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

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

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

1. ОСНОВНЫЕ ПОНЯТИЯ

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

1.1. Криптология

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

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

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

Таким образом, может показаться нелогичным раскрытие принципов работы протоколов (систем) шифрования и используемых в них алгоритмов. Возникает вопрос, повысится ли безопасность этих алгоритмов, если держать их в секрете. Однако верно и обратное, поскольку секретный алгоритм может быть проверен лишь в очень ограниченной степени. Поэтому криптоанализ и методы его тестирования незаменимы для обеспечения максимально возможной степени безопасности и уверенности в том, что данный алгоритм устойчив к атакам. [2]

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

2. СОВРЕМЕННАЯ КРИПТОГРАФИЯ

Существует ряд этапов, которые, можно сказать, обозначили своего рода точку перехода от классической криптографии к криптографии по чертежам. Одним из таких моментов может быть открытие шифра Вернама в 1917 году, который позже был модифицирован в форму, известную нам как "одноразовый блокнот", который был описан как единственный шифр, обеспечивающий так называемую безусловную безопасность. Мы обсудим этот шифр и то, что такое безусловная безопасность на самом деле, позже в этой статье. Другой и, возможно, более актуальной вехой является 1949 год, когда Клод Элвуд Шеннон определил, что сила алгоритма должна заключаться в его математической сложности, а не в секретах вокруг него.

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

Криптологическая система является "вычислительно безопасной", если для взлома лучшего из известных алгоритмов требуется не менее t операций. Но это определение поднимает несколько вопросов, наиболее фундаментальным из которых является вопрос о том, какой алгоритм на самом деле является лучшим алгоритмом для взлома данной системы. А также существует ли алгоритм, о котором мы еще не знаем, который лучше, чем самый известный алгоритм. Мы также можем говорить о безусловной безопасности, когда мы предполагаем, что даже если бы злоумышленник обладал неограниченной и, следовательно, бесконечной вычислительной мощностью, он не смог бы (не зная ключа) расшифровать NT и, следовательно, взломать систему шифрования. Однако безусловная безопасность достижима только в случае шифра Вернама (аналогично One-time Pad), который, как мы обсудим далее в этой статье, имеет специфические недостатки, делающие его не очень практичным для повседневного применения. Поэтому на практике мы стремимся к вышеупомянутой вычислительной безопасности и, в принципе, пытаемся найти наилучшее соотношение между безопасностью данной системы шифрования и затраченными усилиями (время, вычислительная мощность и т.д.). [2]

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

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

2.1. Симметричные системы блочных шифров

Системы блочного шифрования шифруют сразу целые блоки битов входных данных, используя один и тот же ключ. Результат шифрования бита в любом блоке зависит от всех остальных битов в этом блоке. Размер этих блоков заранее определен для конкретного используемого шифра. На практике большинство шифров используют блоки по 128 бит (16 байт), как, например, известный шифр AES, или блоки по 64 бита (8 байт), как, например, шифр DES. Таким образом, если мы кодируем символы ОТ в двоичный код с помощью кодовой таблицы ASCII, в которой каждый символ представляет собой 8-битную (один байт) последовательность, мы можем сказать, что одновременно шифруем 16 символов в пределах одного блока в случае шифра AES и 8 символов в случае шифра DES. [2] [3]

2.2. Структура Фейстеля

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

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

2.2 Симметричные системы блочных шифров

Системы блочного шифрования шифруют сразу целые блоки битов входных данных, используя один и тот же ключ. Результат шифрования бита в любом блоке зависит от всех остальных битов в этом блоке. Размер этих блоков заранее определен для конкретного используемого шифра. На практике большинство шифров используют блоки по 128 бит (16 байт), как, например, известный шифр AES, или блоки по 64 бита (8 байт), как, например, шифр DES. Таким образом, если мы кодируем символы ОТ в двоичный код с помощью кодовой таблицы ASCII, в которой каждый символ представляет собой 8-битную (один байт) последовательность, мы можем сказать, что одновременно шифруем 16 символов в пределах одного блока в случае шифра AES и 8 символов в случае шифра DES. [2] [3]

2.3. Симметричные системы блочных шифров

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

Режим ECB (Electronic Code Book) - это самый простой режим работы блочных шифров. В этом режиме ОТ делится на x n-битных блоков, а затем каждый из этих блоков шифруется бок о бок в отдельных итерациях с использованием одного и того же ключа. Затем расшифровка одинаково применяется к каждому блоку отдельно. Несмотря на то, что шифрование каждого блока полностью независимо от других блоков гарантирует, что любые ошибки, внесенные при шифровании в одном блоке, не будут отражены в ST, сгенерированных в других блоках, использовать этот режим работы не рекомендуется. Особенно благодаря простоте этой системы и нулевому управлению ключами. Режим ECB использует подстановку в качестве метода, гарантирующего, что длина бита ОТ является целым числом.

Режим CBC (Cipher Block Chaining) является самым популярным режимом работы блочных шифров. Как и в режиме ECB, ОТ делится на x n-битных блоков и шифруется бок о бок в каждой итерации с использованием одного и того же ключа. Разница заключается в добавлении операции XOR между блоком данных, подлежащих шифрованию, и только что зашифрованным блоком данных (выход предыдущей итерации блочного шифра). Таким образом, выход данного блока зависит не только от используемого алгоритма шифрования и блока входных данных, но и от предыдущих, уже зашифрованных блоков. Для первого блока мы не можем использовать предыдущий блок зашифрованных данных, поскольку такого блока логически не существует, поэтому для первого блока используется так называемый вектор инициализации, который должен представлять собой блок случайно выбранных данных. Это означает, что для одного и того же ключа и одного и того же алгоритма шифрования, изменяя вектор инициализации, мы можем добиться различных выходов (ST) для одного и того же OT. В режиме CBC для большинства приложений нельзя использовать набивку, чтобы обеспечить длину бита в n раз больше длины ОТ. Поэтому для режима CBC существует два метода решения этой проблемы, первый - шифрование последнего (неполного) блока ОТ в режиме OFB. Второй метод называется кражей шифротекста, когда мы заполняем последний блок ОТ необходимым количеством битов из предыдущего блока зашифрованных данных из правой части, а затем опускаем эти данные в предпоследнем блоке. При расшифровке последний блок должен быть расшифрован до предпоследнего блока. Любая ошибка в i-м блоке NT будет отражена как ошибка в i-м блоке OT во время расшифровки и будет отражена также в i+1 блоке.

Режим OFB (Output FeedBack) сильно отличается от двух предыдущих систем. В режиме ECB и CBC для генерации ST использовался блочный шифр. В этом режиме он служит только генератором псевдослучайной последовательности ключей для каждой итерации. ST генерируется как результат операции XOR между OT и ключом для данной итерации, который был сгенерирован как выход блочного шифра, чьим входом был ключ из предыдущей итерации. В принципе, этот режим является своего рода имитацией потокового шифра. На первой итерации вектор инициализации используется для операции XOR, а также для входа в блочный шифр. В случае неполного последнего блока данных (и, следовательно, для сохранения битовой длины n-кортежа ОТ), процедура в OFB очень проста. Мы просто шифруем последний неполный m-битный (m < n) блок данных, используя j-битный (j = m) ключ для этой итерации (слева). В режиме OFB любая ошибка в i-м бите NT во время расшифровки будет отражена только в i-м бите OT.

Режим CFB (Ciphertext FeedBack) очень похож на режим OFB тем, что ST одинаково генерируется в результате операции XOR между OT и ключом, специфичным для итерации, который является выходом блочного шифра, служащего только генератором псевдослучайной последовательности. Разница заключается в том, что если в режиме OFB входом для блочного шифра был ключ из предыдущей итерации, то в режиме CFB входом является обратная связь, т.е. блок ST из предыдущей итерации. Для первой итерации вектор инициализации используется для операции XOR, а также для входа в блочный шифр так же, как и в режиме OFB. В случае неполного блока процедура такая же, как и в режиме CFB. Любая ошибка в i-м блоке НТ будет отражена в i-м блоке ОТ и следующих n или около того битах ОТ во время расшифровки, после чего расшифровка восстановится.

2.4. Camellia

Camellia - это блочный симметричный шифр, разработанный в сотрудничестве между Mitsubishi Electric Corporation и NTT (Nippon Telegraph and Telephone Corporation) в 2000 году. С тех пор он был стандартизирован различными организациями по стандартизации, включая ISO, NESSIE, IETF и другие. Camellia использует блоки размером 128 бит и ключи длиной 128, 192 и 256 бит.

ЗАКЛЮЧЕНИЕ

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

 

Список литературы:

  1. VONDRUŠKA, Pavel. Криптология, шифрование и секретные сценарии 1-е издание. Прага: Альбатрос, 2006, с. 340.
  2. ПААР, Кристоф. Понимание криптографии. Берлин: Springer-Verlag GmbH Германия, 2010, с. 372.
  3. ПАЙПЕР, Ф.К.. Криптография. Прага: Докоржан, 2006, с. 157.