Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Румбешт_Уч.пос._для печати.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
11.86 Mб
Скачать

2.1.2. Односторонние функции

Все асимметричные криптосистемы основаны на использовании односторонних функций с секретом.

Функция называется односторонней, если выполняются следующие два условия:

1) существует эффективный алгоритм, вычисляющий для любого ;

2) не существует эффективного алгоритма обращения функции F, т.е. алгоритма, позволяющего определить значение x по значению .

В данном определении "эффективным" называется полиномиальный алгоритм, т.е. алгоритм, который для получения результата для входа длины n тратит не более P(n) шагов, где P – некоторый полином.

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

  • функция , то есть произведение двух чисел. Если a и x простые числа, то по известному можно однозначно определить a и x. Задача нахождения двух множителей по известному их произведению называется задачей факторизации числа. До сих пор не известен ни один полиномиальный алгоритм для решения задачи факторизации в общем случае (когда множители не являются простыми числами), хотя вычисление произведения чисел (т.е. самой функции F) не вызывает ни каких сложностей.

  • функция , где a, x и N целые числа. При известных a, x и N значение может быть вычислено за полиномиальное количество шагов. Однако для обратной задачи – определить x по известным a, b и N (задача дискретного логарифмирования) – полиномиальные алгоритмы, в общем случае, пока не известны.

Не любая односторонняя функция не может быть использована для шифрования. Действительно, если преобразовать открытый текст M с помощью односторонней функции: C=F(M), то расшифровать полученный текст, то есть по C восстановить M, не сможет уже никто, в том числе и законный получатель. Для использования в криптографии необходимо, чтобы задача обращения шифрующего преобразования была разрешима за приемлемое время, но сделать это мог только тот, кто знает секретный ключ. Такие функции называются односторонними функциями с секретом (или с потайным ходом).

Односторонняя функция с секретом – это функция , зависящая от параметра (этот параметр называется секретом), для которой выполняются следующие условия:

1) при любом существует эффективный алгоритм, вычисляющий для любого ;

2) при неизвестном k не существует эффективного алгоритма обращения функции ;

3) при известном k существует эффективный алгоритм обращения функции .

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

2.1.3. Хэш-функции

Хэш-функция – это вычислительно эффективная функция h:PS, отображающая двоичную строку произвольной длины pP, называемую прообразом в двоичную строку некоторой фиксированной длины h(p), где sS, называемую хэш-значением. Здесь P – множество прообразов (счетное множество двоичных строк произвольной длины), S – конечное множество хэш-значений.

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

Смысл хэш-функции состоит в получении характерного признака прообраза h(p) – значения, по которому анализируются различные прообразы при решении обратной задачи p = h–1(s). Так как хэш-функция представляет собой соотношение "многие к одному" (существуют различные прообразы, имеющие одинаковые хэш-значения), невозможно со всей определенностью сказать, что две строки совпадают при совпадении хэш-значений, но их можно использовать, получая приемлемую оценку точности.

Однонаправленная или криптографическая хэш-функция – это хэш-функция, удовлетворяющая следующим свойствам:

1) существует эффективный алгоритм нахождения h(p) для любого p (легко вычислить значение хэш-функции по прообразу);

2) не существует эффективного алгоритма обращения функции h, то есть вычислительно сложно найти h–1(s) (трудно создать прообраз, значение хэш-функции которого равно заданной величине);

3) зная прообраз p трудно определить другой прообраз p', для которого h(p) = h(p').

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

Кроме этого, хорошей однонаправленной хэш-функцией считается хэш-функция c малой вероятностью возникновения коллизий – трудно подобрать два прообраза p и p' с одинаковым хэш-значением h(p) = h(p').

В криптографических приложениях у однонаправленной хэш-функции может быть множество имен, например, функция сжатия или функция сокращения. Хэш-значения, также могут называться по-разному: краткое изложение сообщения (message digest, MD), характерный признак, криптографическая контрольная сумма, код целостности сообщения (message integrity check, MIC) и код обнаружения манипуляции (manipulation detection code, MDC). Последние два названия отражают возможность применения хэш-функции для обеспечения целостности информации.

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

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

С другой стороны, имеются хэш-функции, предполагающие использование секретного ключа и обеспечивающие как аутентификацию источника сообщения, так и целостность данных. Значения таких хэш-функций называются кодами аутентификации сообщения (message authentication code, MAC).

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

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

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

Следует отметить, что в отношении хэш-функций, предполагающих использование секретного ключа, в России используются несколько иные термины, такие как имитовставка и имитозащита. Так, в соответствии со стандартом ГОСТ 28147-89, имитовставка – это хэш-значение сообщения, который вырабатывают по определенному правилу из открытых данных с использованием ключа и затем добавляют к зашифрованным данным для обеспечения их имитозащиты. Имитозащита – это защита системы шифрованной связи от навязывания ложных данных.