Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Osnovy_zaschity_informatsii_139030

.pdf
Скачиваний:
12
Добавлен:
26.01.2017
Размер:
357.53 Кб
Скачать

первую букву второй части алфавита и наоборот. Следует отметить, что до 1708 года использовавшийся русский алфавит – кириллица – состоял из 42 букв.

Вплоть до начала XX века, когда появились первые шифровальные машины, криптография была уделом любителей-одиночек. Понимание математического характера решаемых криптографией задач пришло только в середине XX века после выхода в свет работ американского учёного Клода Шеннона. В 1945 году вышла его работа "Математическая теория криптографии", которая была рассекречена в 1948 году.

На основе анализа существовавших шифров К. Шеннон сделал вывод,

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

Математическое описание шифра замены выглядит следующим образом. Пусть X и Y – два алфавита (открытый и шифрованный

соответственно). Обозначим через g: X Y взаимно однозначное отображение алфавитов X и Y.

Действие шифра замены можно представить как преобразование открытого текста (x1, x2, … xn) в шифрованный (y1, y2, … yn), причём y1 = g (x1), y2 = g (x2), … yn = g (xn).

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

Пусть длина отрезков, на которые разбивается открытый текст, равна n, а σ – взаимно однозначное отображение множества {1, 2, … n} в себя.

Шифр перестановки действует так: отрезок открытого текста x1, x2, … xn преобразуется в отрезок шифрованного текста xσ (1), xσ (2), … xσ (n) .

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

F–1: Y

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

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

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

– функция шифрования и функция расшифрования.

Функция шифрования осуществляет преобразование открытого текста в зашифрованный (например, F: X Y).

Функция расшифрования выполняет обратную процедуру (например,

X). [2]

4. Классические шифры

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

допускающие переменную длину блока. Первым блочным шифром, широко использующимся на практике, стал DES (Data Encryption Standard),

разработанный специалистами IBM в начале 70х годов прошлого века и долгое время служивший стандартом для шифрования данных в США.

Потом появилось много блочных алгоритмов – IDEA, Blowfish, советский ГОСТ28147 89 (и ныне являющийся отечественным стандартом). Оригинальный DES, к примеру, использовал ключ длиной 112 бит и блок шифрования длиной 64 бита. Но после его "анализа" специалистами NSA1 длина ключа была уменьшена до 64 бит. При этом в ключе было только 56

бит уникальных, а 8 бит – контрольных, служащих для контроля целостности ключа. Именно с ключом длиной в 56 бит DES и был утвержден в качестве Национального Стандарта. При том уровне развития вычислительной техники задача перебора 2**56 ключей за приемлемое время была или технически не выполнимой, или неоправданно дорогой. Сейчас DES с

длиной ключа в 56 бит не представляется стойким алгоритмом. Большинство современных стойких симметричных алгоритмов используют ключ длиной 64–256 бит (8–32 байта). Необходимо отметить, что кроме блочных шифров существуют и активно используются поточные шифры. Они, как и блочные шифры, используют симметричный ключ, но выполняют шифрование входного потока побайтно или иногда побитно.

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

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

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

С алгоритмом A5 связана одна поучительная история. Изначально описание алгоритма A5 было закрытым. Но из-за юридической ошибки компании владельца алгоритма его описание попало в Интернет, и алгоритм был проанализирован. Его стойкость оказалась даже ниже стойкости DES. Осознав важность открытости алгоритмов для обеспечения их стойкости,

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

На сегодняшний день алгоритмы с длиной ключа 64 и больше бит обеспечивают приемлемую стойкость. Однако зачем тогда использовать ключи длиной 512 и более бит? Ответ таков– эти ключи от другого замка!

В 1976 году была опубликована работа американских математиков У. Диффи и М. Хеллмана "Новые направления в криптографии". В этой работе была предложена и обоснована методология асимметричного шифрования,

которая базируется на применении однонаправленных функций. Диффи и Хеллман придумали абсолютно "новую" криптографию – криптографию с открытым ключом. Еще ее называют "открытой криптографией" или "асимметричной криптографией". [6]

5. Асимметричная и симметричная криптографии

Идея Диффи и Хеллмана состояла в следующем. Возьмём некоторое число и назовем его "секретным ключом". Произведём над ним некоторые действия, в результате которых получим другое число – "открытый ключ".

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

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

Рассматривая исходный текст как некоторое большое число,

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

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

Самым известным асимметричным алгоритмом шифрования на сегодняшний день является алгоритм, предложенный Ривестом, Шамиром и Адельманом и носящий их имена, – алгоритм RSA. В самом деле, если участников обмена немного, и все они находятся недалеко друг от друга, то проблема распределения между ними симметричных ключей решается относительно просто. Для связи "каждый с каждым" N участникам обмена каждому из них необходимо иметь N1 ключей парной связи. При этом каждый участник обмена должен иметь безопасный канал обмена ключами с остальными участниками. При увеличении числа участников обмена задача распределения и замены скомпрометированных симметричных ключей

может оказаться и вовсе неразрешимой, особенно тогда, когда участники обмена не доверяют друг другу.

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

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

Но за удобство надо платить. В случае использования асимметричной криптографии платой является время и длины ключей. При использовании асимметричной криптографии характерной длиной ключей является 512– 1024 бит. Сейчас, когда стали доступны высокопроизводительные вычислительные системы, набирает популярность использование 2048-

битных ключей.

Можно ли сократить время шифрования, сохранив удобство асимметричной криптографии и добавив скорость блочных шифров? Оказывается, можно. Обычно поступают так: вырабатывают случайную (или псевдослучайную) последовательность и используют ее в качестве одноразового (так называемого сеансового) ключа для шифрования документа быстрым симметричным алгоритмом. Затем, используя асимметричный алгоритм, шифруют сеансовый ключ и передают его в зашифрованном виде вместе с документом. При расшифровании документа сначала расшифровывают сеансовый ключ, а затем и сам документ. Из -за того, что сеансовый ключ имеет малую длину, на его шифрование тратится немного времени. Используемые сейчас симметричные криптоалгоритмы имеют производительность порядка мегабайта в секунду (для программных реализаций) и десятков мегабайт в случае использования специализированных криптопроцессоров.

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

Задачу "дискретного логарифмирования" можно сформулировать так: взяли некоторое известное число, возвели его в неизвестную степень и остаток от деления этой экспоненты на некоторое известное большое простое число (так называемый модуль) сообщили в качестве результата. Все числа натуральные. Нужно найти показатель степени. Характерные длины чисел, участвующих в вычислениях, – несколько сотен десятичных разрядов (вот те самые 512–1024–2048 бит).

Сегодняшние результаты теории сложности гласят, что вычислительная сложность задачи дискретного логарифмирования экспоненциально зависит от величины модуля. Но никому ещё не удалось строго доказать, что эта зависимость не может быть полиномиальной. Если вдруг завтра какой нибудь гениальный математик найдет быстрый способ факторизации больших чисел, то может случиться так, что мы окажемся без асимметричной криптографии. Хотя вероятность этого события математики оценивают как близкую к нулевой. Используя асимметричную криптографию, полезно помнить об этаком "дамокловом мече". [6]

Еще одним обширным классом криптографических систем являются так называемые асимметричные или двухключевые системы http://Stfw.ru . Эти системы характеризуются тем, что для шифрования и для расшифрования используются разные ключи, связанные между собой некоторой зависимостью. Применение таких шифров стало возможным благодаря К. Шеннону,

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

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

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

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

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

Все шифры этого класса основаны на так называемых функциях-ловушках http://cryptoblog.ru. Примером такой функции может служить операция умножения. Вычислить произведение двух целых чисел очень просто, однако эффективных алгоритмов для выполнения обратной операции (разложения числа на целые сомножители) - не существует. Обратное преобразование возможно лишь, если известна, какая-то дополнительная информация.

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

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

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

ницы. А взаимно простыми называются числа, не имеющие общих делит е- лей, кроме 1.

Для примера выберем два очень больших простых числа (большие исходные числа нужны для построения больших криптостойких ключей). Определим параметр n как результат перемножения р и q. Выберем большое случайное число и назовем его d, причем оно должно быть взаимно простым с результатом умножения (р - 1) * (q - 1). Найдем такое число e, для которого верно соотношение:

(e*d) mod ( (р - 1) * (q - 1)) = 1

(mod - остаток от деления, т.е. если e, умноженное на d, поделить на ( (р - 1) * (q - 1)), то в остатке получим 1).

Открытым ключом является пара чисел e и n, а закрытым - d и n. При шифровании исходный текст рассматривается как числовой ряд, и над каждым его числом мы совершаем операцию:

C (i) = (M (i) e) mod n

В результате получается последовательность C (i), которая и составит криптотекст.д.екодирование информации происходит по формуле

M (i) = (C (i) d) mod n

Как видите, расшифровка предполагает знание секретного ключа.

Попробуем на маленьких числах. Установим р=3, q=7. Тогда n=р*q=21. Выбираем d как 5. Из формулы (e*5) mod 12=1 вычисляем e=17. Открытый ключ 17, 21, секретный - 5, 21.

Зашифруем последовательность "2345":

C (2) = 217 mod 21 =11 C (3) = 317 mod 21= 12 C (4) = 417 mod 21= 16 C (5) = 517 mod 21= 17

Криптотекст - 11 12 16 17. Проверим расшифровкой:

M (2) = 115 mod 21= 2 M (3) = 125 mod 21= 3 M (4) = 165 mod 21= 4 M (5) = 175 mod 21= 5

Как видим, результат совпал.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]