Криптография и шифрование данных — часть 1

22.10.2021 |

Для статьи про криптографию

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

Если исходить из основ, из которых и складывается система шифрования, то можно выделить три области:

  • симметричное шифрование,
  • асимметричное шифрование,
  • аутентификация сообщений.

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

Фундаментальные принципы криптографии

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

Таким образом все, в том числе и коммерческие, успешные, применяемые системы шифрования в настоящее время используют широко известные подходы криптографии. Единственной секретной частью остается только ключ шифрования. Единственным исключением из правил можно считать целый набор криптографических протоколов, используемых государственными органами и военными системами различных государств. Например, в Соединенных Штатах применяется так называемый алгоритм NSA suite B, а в Российской Федерации используют достаточно странный, по меркам современной криптографической науки, набор засекреченных алгоритмов шифрования.

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

Симметричные шифры

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

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

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

История симметричного шифрования

Если говорить о шифрах в древности, то уже в IV веке до нашей эры можно наблюдать сразу два дизайна криптографических решений:

  • подстановка,
  • перестановка.

Первый вариант чаще всего представлен шифровальной таблицей. В ней под каждой буквой исходного сообщения ставится буква шифра. Таким образом, А может стать Я, а Б – Ю. Шифрование и дешифровка происходят по одной таблице, путем замены. Если говорить о стойкости данного метода, то можно говорить о достаточной степени криптографической надежности. При методе подстановки можно говорить о существовании количества ключей, равному факториалу длинны используемого алфавита. Так, например, для латинского алфавита криптостойкость ключа составит примерно 100 бит, что не так уж и плохо даже в современных реалиях больших вычислительных возможностей.

Различные методы шифрования подстановки существовали на достаточно долгом промежутке времени. Одним из самых известных в настоящее время является так называемый шифр Цезаря. По своей сути он схож с классической подстановкой, однако замена букв и составление шифровальной таблицы происходит не случайно, а с определенном алгоритмом, путем сдвига нижней части на определенное количество символов. Цезарь определял сдвиг на три буквы. Таким образом А превращалась в В, Б в Г и так далее. Однако, стойкость шифра Цезаря крайне низкая, всего существует для латинского алфавита 25 вариантов, что делает криптографическую стойкость данного алгоритма неустойчивой даже к ручному перебору.

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

Виженер предложил использовать плавающий сдвиг. Таким образом, вместо таблицы можно было применять набор цифр, например, 1-3, 2-6, 3-7 и так далее. Что говорит о том, что первую букву необходимо сдвинуть на три символа, вторую на шесть и далее по списку. При этом направление сдвига при подстановке также могло меняться.

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

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

Все описанное выше – метод подстановки. Метод перестановки же является более простым. Здесь запись ведется поблочно, усложняя перестановку букв по ключу. Взлом данного алгоритма также не составляет особого труда. Поэтому широкого распространения он особо не получил.

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

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

В настоящее время существует также два вида шифров:

  • поточные,
  • блочные.

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

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

Наглядный пример:

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

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

Заключение

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