Собственно о шифровании

Шифрование – это обратимое преобразование данных с целью их сокрытия от посторонних. Методов шифрования было придумано множество – от шифров простой замены (наиболее известный пример – «Пляшущие человечки» Конан Дойля) до принципиально невскрываемого шифра Вернама (двоичное сложение исходного текста с однократно используемой случайной последовательностью).
Почти все методы шифрования используют ключ шифрования – секретную кодовую последовательность, используемую в процессе преобразования информации. Где то даже довелось прочестьтакое определение шифрованию: «Шифрование – это процесс замены Вашего большого секрета (документа) маленьким (ключом)». В случае применения шифра Вернама, ключ шифрования равен по длине шифруемому сообщению, да еще и должен использоваться однократно. И хотя шифр Вернама при правильном его применении обеспечивает «абсолютную» секретность, он не удобен для большинства применений. Современные криптосистемы используют ключ для шифрования длиной от 64 до 1024–2048 бит. Традиция мерить длину ключа в битах, видимо, останется с нами навсегда. Учитателя может возникнуть вопрос — откуда взялись такие цифры и почему TripleDES считается не менее надежным, чем 1024 битный RSA? И вообще, как зависит надежность шифрования(или, как говорят, стойкость шифра) от длины используемого ключа? Для того, чтобы ответить на эти вопросынеобходимо разобраться с тем, какие алгоритмы шифрования сейчас используются на практике.

Вообще «классическими шифрами» принято называть симметричные блочные шифры. То есть те, которые для шифрования и расшифрования информации используют один и тот же ключ и шифруют информацию блоками. Длина блока обычно составляет 8 или 16 байт. Есть алгоритмы, допускающие переменную длину блока.Первым блочным шифром, широко использующимся на практике, стал DES (Data EncryptionStandard), разработанный специалистами IBM вначале 70х годов прошлого века и долгое времяслуживший стандартом для шифрования данных в США. Потом появилось много блочных алгоритмов – IDEA, Blowfish, советский ГОСТ28147 89 (и ныне являющийся отечественным стандартом). Оригинальный DES, к примеру, использовал ключ длиной 112 бит и блок шифрованиядлиной 64 бита. Но после его «анализа» специалистами NSA1 длина ключа была уменьшена до 64 бит. При этом в ключе было только 56 бит уникальных, а 8 бит – контрольных, служащих для контроля целостности ключа. Именно с ключом длиной в 56 бит DES и был утвержден в качестве Национального Стандарта. При том уровне развития вычислительной техники задача перебора 2**56 ключей за приемлемое время была или технически не выполнимой, или неоправданно дорогой. Сейчас DES c длиной ключа в 56 бит не представляется стойким алгоритмом. Большинство современных стойких симметричных алгоритмов используют ключ длиной 64–256 бит (8–32 байта). Необходимо отметить, что кроме блочных шифров существуют и активно используются поточные шифры. Они, как и блочные шифры, используют симметричный ключ, но выполняют шифрования входного потока побайтно или иногда побитно.
Идея поточного шифра состоит в том, что на основе симметричного ключа вырабатывается ключевая последовательность или гамма–последовательность, которая складывается по модулю два (операция xor) с входным потоком. Поточные шифры, как правило, более производительны, чем блочные и используются для шифрования речи, сетевого трафика и иных данных с заранее неизвестной длиной. При достаточно частой смене ключа для выработки гаммы поточные шифры обеспечивают достаточную стойкость. Вектор инициализации, как видно из его названия, является инициализирующей двоичной посылкой длиной равной блоку алгоритма. Вектор инициализации не является секретным элементом. В частности, в мобильной связи стандартом GSM предусмотрена возможность шифрования передаваемого голосового потока на участке от телефонного аппарата до базовой станции шифром A5, который является поточным. Салгоритмом A5 связана одна поучительная история. Изначально описание алгоритма A5 было закрытым. Но из за юридической ошибки компании владельца алгоритма его описание попало в Интернет и алгоритм был проанализирован. Его стойкость оказалась даже ниже стойкости DES. Осознав важность открытости алгоритмов для обеспечения их стойкости, разработчики третьего поколения сети GSM пообещали сделать предлагаемые к использованию алгоритмы шифрования голоса достоянием широкой криптографической общественности. Пример показывает важность наличия открытого описания алгоритма даже для самих его разработчиков. На сегодняшний день алгоритмы с длиной ключа 64 и больше бит обеспечивают приемлемую стойкость. Однако, зачем тогда использовать ключи длиной 512 и более бит? Ответ таков– эти ключи от другого замка! В семидесятых же годах прошлого века Диффи и Хэлман придумали абсолютно «новую» криптографию – криптографию с открытым ключом. Еще ее называют «открытой криптографией» или «несимметричной криптографией».
Идея Диффи и Хеллмана состояла в следующем. Возьмем некоторое число и назовем его «секретным ключом». Произведем над ним некоторые действия, в результате которых получим другое число – «открытый ключ». Причем выберем такие действия, что получить «открытый ключ» поизвестному «секретному» не будет требовать больших вычислительных ресурсов и времени, а обратное действие – вычисление по «открытомуключу» «секретного» окажется невозможным или очень длительным. Не вдаваясь в математическиеподробности отметим, что на современном персональном компьютере генерация открытого ключа по известному открытому ключу производится за время, порядка секунды, а на обратное преобразование в зависимости от длины ключа, может уйти до сотен (и даже тысяч) лет. Рассматривая исходный текст как некоторое большое число, произведем его преобразование с использованием открытого ключа. В результате получим новое число, которое будем рассматривать как шифр. Имея в распоряжении секретный ключ и используя тот факт,что открытый ключ был получен из секретногоспециальным образом, мы можем относительно быстро (в вычислительном плане) расшифровать текст. При этом надо заметить, что в целом процесс шифрования расшифрования с использованием пары ключей проходит на два-три порядка медленнее, чем шифрование расшифрование того же текста симметричным алгоритмом.

Казалось бы, зачем нужно использовать относительно медленную несимметричную криптографию, при наличии быстрых и проверенных временем и практикой симметричных алгоритмов? Нужно это за тем, что при использованиине симметричной криптографии радикально упрощается процедура распределения ключей между участниками обмена, а также становится возможным использование электронно цифровой подписи (но, об этом – ниже). Самым известным несимметричным алгоритмом шифрования на сегодняшний день является алгоритм, предложенный Ривестом, Шамиром и Адельманом и носящий их имена – алгоритм RSA. В самом деле, если участников обмена немного и все они недалеко друг от друга, то проблема распределения между ними симметричных ключей решается относительно просто. Для связи «каждый с каждым» N участникам обмена каждому из них необходимо иметь N 1 ключей парной связи. При этом каждый участник обмена должен иметь безопасный канал обмена ключами с остальными участниками. При увеличении числа участников обмена задача распределения и замены скомпрометированных симметричных ключей может оказаться и вовсе неразрешимой, особенно тогда, когда участники обмена не доверяют друг другу. Использование несимметричной криптографии радикально упрощает процесс распределения ключей. Открытый ключ потому и назвали «открытым», что он не представляет секрета. Можно создать общедоступный «справочник открытых ключей», куда можно поместить открытые ключи всех участников обмена. При этомкаждый владелец ключа волен отозвать свойключ из справочника или заменить его – эта процедура не отразится на остальных участниках обмена. При этом возникает проблема подлинности ключа в справочнике, но и она разрешима.

Но за удобство надо платить. В случае использования несимметричной криптографии платой является время и длины ключей. Характерной длиной ключей является при использовании несимметричной криптографии – 512–1024 бит. Сейчас, когда стали доступны высокопроизводительные вычислительные системы, набирает популярность использование 2048 битных ключей. Можно ли сократить время шифрования, сохранив удобство несимметричной криптографии и добавив скорость блочных шифров? Оказывается можно. Обычно поступают так: вырабатывают случайную (или псевдослучайную) последовательность и используют ее в качестве одноразового (так называемого сеансового) ключа для шифрования документа быстрым симметричным алгоритмом. Затем, используя несимметричный алгоритм, шифруют сеансовый ключ и передают его в зашифрованном виде вместе с документом. При расшифровании документа сначала расшифровывают сеансовый ключ, а затем и сам документ. Из за того, что сеансовый ключ имеет малую длину, на его шифрование тратится немного времени. Используемые сейчас симметричные криптоалгоритмы имеют производительность порядка мегабайта в секунду (для программных реализаций) и десятков мегабайт в случае использования специализированных криптопроцессоров.
Несимметричные алгоритмы показывают производительность от единиц до десятков килобайт в секунду, в зависимости от длины ключа. При длине сеансового ключа в 8–32 байта подобная гибридная криптосхема оказывается вполне эффективной. Но вернемся ненадолго к оценкам стойкости несимметричных алгоритмов и к проблемам,возникающим при их использовании. В настоящем обзоре мы постараемся обойтись без математических выкладок и формул, однако, отметим, что сложность восстановления секретного ключа по открытому определяется сложностью разложения большого числа на простые сомножители (так называемая «задача факторизации») или сложностью задачи «дискретного логарифмирования». Задачу «дискретного логарифмирования» можно сформулировать так: взяли некоторое известное число, возвели его в неизвестную степень и остаток от деления этой экспоненты на некоторое известное большое простое число(так называемый модуль) сообщили в качестве результата. Все числа натуральные. Найти показатель степени. Характерные длины чисел, участвующих в вычислениях – несколько сотен десятичных разрядов (вот те самые 512–1024–2048 бит). Сегодняшние результаты теории сложности гласят, что вычислительная сложность задачи дискретного логарифмирования экспоненциально зависит от величины модуля. Но никому еще не удалось строго доказать, что эта зависимость не может быть полиномиальной. Если вдруг завтра какой нибудь гениальный математик найдет быстрый способ факторизации больших чисел, то может случиться так, что мы окажемся без несимметричной криптографии. Хотя вероятность этого события математики оценивают как близкую к нулевой. Используя несимметричную криптографию полезно помнить об этаком «дамокловом мече»

Комментарии

Нет комментариев. Вы можете быть первым!

Оставить комментарий