Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора 1 - 25.doc
Скачиваний:
19
Добавлен:
25.04.2019
Размер:
173.06 Кб
Скачать
  1. Трудные задачи. Необратимые функции. Эллиптические кривые

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

Существуют два главных класса задач, которые представляют интерес для криптографии: полиномиальные (Polynomial, Р) — если задача решается за количество времени (или действий), которое можно выразить полиномом, и неполиномиальные (NonPolynomial, NP) — если за время или за количество действий, описываемое полиномом, можно лишь оценить правильность предложенного решения.

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

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

Эллиптические кривые — это математические конструкции теории чисел и алгебраической геометрии, которые в недавние годы нашли многочисленные применения в криптографии.

Эллиптическая кривая состоит из всех элементов (х; у), удовлетворяющих уравнению

У2 = х3 + ах+ b,

и отдельного элемента, обозначаемого О и называемого «точка в бесконечности», который является точками вверху и в основа­нии каждой вертикальной линии.

  1. Хэширование и хэш-функции. Коллизии хэш-функций

Хеширование (иногда хэширование, англ. hashing) — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины.

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

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

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

  1. Алгоритм md5

MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины и последующей проверки их подлинности.

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

Алгоритм работы:

Шаг 1. Выравнивание потока

Шаг 2. Добавление длины сообщения

Шаг 3. Инициализация буфера

Шаг 4. Вычисление в цикле

Шаг 5. Результат вычислений

Хеш содержит 128 бит (16 байт) и обычно представляется как последовательность из 32 шестнадцатеричных цифр