Математические основы криптографии

Автор работы: Пользователь скрыл имя, 10 Марта 2013 в 18:01, курсовая работа

Описание

Цель: изучение и создание криптографических преобразований и алгоритмов
Задачи: 1. Дать определение и основные понятия криптографии.
2. Сравнить использование шифров.
3. Рассмотреть математические основы криптографии.
4. Почувствовать сложность кодирования
5. Научиться составлять программу кодирования сообщений.

Содержание

Введение 3
Глава I. Криптография. Основные понятия. 5
1.1 Основные понятия. Защита информации 5
1.2. Основной объект криптографии 6
1.3 Ключ 8
1.4 Атака на шифр и стойкость шифра 9
Глава II. Математические основы и методы криптографии. 11
2.1 Математические основы криптографии. 11
Двоичный код информации 11
2.2 Случайность и закономерность 12
2.3. Алгоритм и его сложность 15
2.4 Шифры замены и перестановки 17
2.5 Абсолютно стойкий шифр 19
2.6 Теория и практика стойкости шифра 20
2.7 Без атаки на ключ 21
2.8 Криптосистема RSA 22
Глава III Реализация математической криптографии 24
Шифр Цезеря 24
Заключение 29

Работа состоит из  1 файл

курсовая математические основы криптографии.doc

— 165.00 Кб (Скачать документ)

Из более специфических  приведем еще три примера возможностей противника:

▪ противник может перехватывать все шифрованные сообщения, но не имеет соответствующих им открытых текстов;

▪ противник может  перехватывать все шифрованные  сообщения и добывать соответствующие  им открытые тексты;

▪ противник имеет  доступ к шифру (но не к ключам!) и поэтому может зашифровывать и дешифровывать любую информацию.

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

Английский математик Чарльз Беббидж (XIX в): «Всякий человек, даже если он не знаком с техникой вскрытия шифров, твердо считает, что сможет изобрести абсолютно стойкий шифр, и чем более умен и образован этот человек, тем более твердо это убеждение. Я сам разделял эту уверенность в течение многих лет».

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

 

Глава II. Математические основы и методы криптографии.

2.1 Математические основы криптографии.

Двоичный код информации

 

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

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

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

При использовании компьютеров  удобно представлять информацию в виде последовательностей нулей и единиц. Это, в частности, обусловлено применяемыми техническими средствами: в компьютере используются элементы, которые могут находиться в одном из двух состояний. Одно из них обозначается «0», а другое – «1».

С другой стороны, слова  в любом алфавите можно легко перевести в двоичные слова. Пусть мы имеем дело с текстами на русском языке и пусть буквы «е» и «ё», а также «и» и «й» не различаются, а пробел между словами считается отдельной буквой (обозначение: _). Тогда наш алфавит состоит из тридцати двух символов. Рассмотрим теперь телеграфный код – старое техническое применение двоичной системы счисления. Он состоит тоже из 32 символов – двоичных слов длины 5. Сопоставим каждой букве двоичное слово длины 5 следующим образом:

_ > 00000, А > 00001, В > 00010, В > 00011, Г > 00100, Д > 00101, ... , Ю > 11110, Я > 11111.

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

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

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

Таким образом, двоичные слова и  двоичные последовательности – типовые  объекты в криптографических  исследованиях.

2.2 Случайность и закономерность

 

Понятие последовательности известно еще со школьных лет. Однако последовательности, которые там изучались, были детерминированными – они однозначно восстанавливались по их нескольким элементам. Так, арифметическая и геометрическая прогрессии восстанавливаются по любым двум своим подряд идущим членам. Значения многочлена в целых точках также образуют детерминированную последовательность: она определяется любыми n+1 своими членами, где n – степень данного многочлена.

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

Пусть мы подбрасываем «правильную» монету. В зависимости от того, как  она падает, полагаем очередной член последовательности равным 0 (орел) или 1 (решка). Как показывает опыт, обычно нельзя угадать, как монета упадет в очередной раз. Однако, если подбрасывать монету достаточно долго, примерно в половине случаев выпадет орел, а в половине – решка. Говорят, что монета падает случайным образом, причем в каждом подбрасывании с одинаковой вероятностью 1/2 выпадает орел (0) или решка (1).

Однако бывают ситуации («кривая  монета»), когда орел и решка выпадают с разной вероятностью – р и q соответственно (р≠q). Отметим, что р+q=1. В случайной двоичной последовательности, полученной на основе подбрасывания «кривой монеты», р можно считать частотой появления нуля, а q – частотой появления единицы.

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

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

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

Опишем, например, один простейший датчик, предложенный в 1949 году Д.Х. Лемером  и в дальнейшем получивший название линейного конгруэнтного метода. Для заданного начального числа  а0 он вырабатывает бесконечную последовательность натуральных чисел {ak} по следующему рекуррентному закону:

аk=d+ak-1 ∙ I (modN).

Здесь параметры датчика d, l, N – некоторые целые числа. Запись a=b(modN), вообще говоря, означает, что а–b делится на число N; в данном случае в качестве аk берется остаток от деления d+ak-1 ∙ I на N.

Поскольку все члены  последовательности {ak} – неотрицательные целые числа, не превосходящие N–1, то среди них найдутся два одинаковых, скажем аi,- и аi+t. Тогда, как легко видеть, аk=d+ak+t  для k≥i, т.е. последовательность – периодическая с длиной периода t. Конечно, периодичность не вполне согласуется с нашими представлениями о случайности, но, оказывается, можно подбирать такие параметры датчика, чтобы период был достаточно большим и у последовательности были многие признаки случайности.

Следует отметить, что  «хорошей во всех отношениях случайной  последовательности» практически  не существует: насколько «хорошей»  является случайная последовательность, зависит от ее назначения.

2.3. Алгоритм и его сложность

 

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

Понятие алгоритма очень  долго оставалось интуитивным понятием. Только в 30-е годы XX века в работах выдающихся математиков Д. Гильберта, А. Черча, С. Клини, Э. Поста и А. Тьюринга были предложены формальные определения алгоритма на основе понятия рекурсивной функции и на основе описания алгоритмического процесса. Тем самым формировалась теория алгоритмов – новое направление в математике, которое стало впоследствии теоретической основой развития вычислительной техники. В настоящее время теория алгоритмов бурно развивается, многие ее понятия проясняются и уточняются (доказуемость, разрешимость, эффективность и др.).

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

Очень важным понятием в  математике является сложность алгоритма. Приведем простой пример. Пусть требуется угадать задуманное число, про которое известно, что оно натуральное и не превосходит 1000. Разрешается задавать вопросы, на которые можно ответить «да» или «нет». Одним из способов (алгоритмов) угадывания может быть такой: последовательно перебираются все числа от 1 до 1000 до тех пор, пока нужное число не будет найдено. В худшем случае для этого потребуется 999 вопросов. Однако можно предложить и другой алгоритм, позволяющий угадать число за 10 вопросов: сначала выясняется, больше ли угаданное число 500 или нет, если да, то больше 750 или нет и т.д. С каждым шагом число возможных кандидатов уменьшается в два раза. Здесь сложностью алгоритма можно считать число вопросов. Тогда первый алгоритм в 100 раз «сложнее» второго.

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

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

Рассмотрим алгоритм простого перебора всех двоичных Ключей длины n. Ясно, что таких ключей – 2n, и поэтому в данном алгоритме 2n шагов, т.е. его сложность равна 2». Это – простейший пример экспоненциального алгоритма (его сложность выражается через n экспонентой). Большинство экспоненциальных алгоритмов – это просто варианты полного перебора.

Рассмотрим теперь алгоритм умножения столбиком двух n-значных чисел. Он состоит из 2n умножений однозначных чисел, т.е. его сложность, измеренная количеством таких умножений, равна 2n. Это – простейший пример полиномиального алгоритма (его сложность выражается через n полиномом).

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

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

2.4 Шифры замены и перестановки

 

В своей работе «Математическая  теория секретной связи» Клод Шеннон обобщил накопленный до него опыт разработки шифров. Оказалось, что даже в сложных шифрах в качестве типичных компонентов можно выделить шифры замены, шифры перестановки или их сочетания. Эти шифры можно считать как бы базовыми.

Информация о работе Математические основы криптографии