16.4.1.3 Аутентификация Мы видели, что шифрование предлагает способ ограничения набора возможных получателей сообщения. Ограничение набора потенциальных отправителей сообщения называется аутентификацией. Таким образом, аутентификация дополняет шифрование. Аутентификация также используется для подтверждения того, что сообщение не было изменено. Далее мы обсудим аутентификацию как ограничение на возможных отправителей сообщения. Обратите внимание, что этот вид аутентификации похож на аутентификацию пользователя, но отличается от нее, которую мы обсудим в разделе 16.5. Алгоритм аутентификации с использованием симметричных ключей состоит из следующих компонентов:
Набор K ключей.
Набор М сообщений.
Набор А аутентификаторов.
Функция S: K → (M → A).
То есть для каждого k ∈ K Sk является функцией для генерации аутентификаторов из сообщений. И S, и Sk для любого k должны быть эффективно вычислимыми функциями.
Функция V: K → (M × A → {true, false}).
То есть для каждого k ∈ K Vk является функцией проверки аутентификаторов в сообщениях. И V, и Vk для любого k должны быть эффективно вычислимыми функциями. Критическое свойство этого алгоритма должно учитываться следующим образом: для сообщения m компьютер может сгенерировать аутентификатор a ∈ A такой, что Vk (m, a) = true только в том случае, если этот компьютер владеет k. Таким образом, компьютер, обладающий k, может генерировать аутентификаторы сообщений, которые любой компьютер, обладающий k, может их проверять. Однако компьютер, не имеющий k, не может генерировать аутентификаторы на сообщениях, которые могут быть проверены с использованием Vk. Поскольку аутентификаторы обычно подвергаются экспозиции (например, отправляются в сеть с сообщениями самих себя), его нельзя извлечь из аутентификаторов. Практически, если Vk (m, a) = true, то мы знаем, что он не был изменен, и что смысл сообщения имеет значение k. Если мы принимаем участие только в одном объекте, то мы знаем, что сообщение возникло из k. Так же, как есть два типа алгоритмов шифрования, есть два основных варианта алгоритмов аутентификации. Первым шагом в понимании этих алгоритмов является изучение хеш-функций. Хеш-функция H (m) создает небольшой блок данных фиксированного размера, известный как дайджест сообщения или значение хеш-функции, из сообщения m. Хэш-функции работают, принимая сообщение, разбивая его на блоки и обрабатывая блоки для получения n-битного хэша. H должен быть устойчивым к столкновениям, то есть, должно быть невозможно найти m ′ ≠ m такой, что H (m) = H (m ′). Теперь, если H (m) = H (m '), мы знаем, что m = m', то есть мы знаем, что сообщение не было изменено. Общие функции дайджеста сообщений включают MD5 (теперь считается небезопасным), который создает 128-битный хеш, и SHA-1, который выводит 160-битный хеш. Дайджесты сообщений полезны для обнаружения измененных сообщений, но не используются в качестве аутентификаторов. Например, H (m) может быть отправлено вместе с сообщением; но если H известен, то кто-то может изменить m на m 'и пересчитать H (m'), и изменение сообщения не будет обнаружено. Следовательно, мы должны подтвердить подлинность H (m).
Первый основной тип алгоритма аутентификации использует симметричное шифрование. В коде аутентификации сообщения (message-authentication code - MAC) криптографическая контрольная сумма генерируется из сообщения с использованием секретного ключа. MAC обеспечивает способ безопасной аутентификации коротких значений. Если мы используем его для аутентификации H (m) для H, который является устойчивым к коллизиям, то мы должны получить надежные данные для аутентификации длинных сообщений, сначала хэшируя их. Обратите внимание, что k необходимо для вычисления Sk и Vk, поэтому любой, кто может вычислить одно, может вычислить другое. Вторым основным типом алгоритма аутентификации является алгоритм цифровой подписи, и созданный аутентификатор называют цифровыми сигнатурами. Цифровые подписи очень полезны тем, что они позволяют любому человеку проверять подлинность сообщения. В алгоритме цифровой подписи невозможно вычислить ks из kv. Таким образом, kv - открытый ключ, а ks - закрытый ключ. В качестве примера рассмотрим алгоритм цифровой подписи RSA. Он похож на алгоритм шифрования RSA, но использование ключа обращено. Цифровая подпись сообщения получается путем вычисления Sks (m) = H (m)ks mod N. Ключом ks снова является пара ⟨d, N ⟩, где N - произведение двух больших случайно выбранных простых чисел p и q. Алгоритм проверки тогда Vkv (m, a) =? akv mod N = H (m)), где kv удовлетворяет kvks mod (p - 1) (q - 1) = 1. Цифровые подписи (как в случае со многими аспектами криптографии) могут использоваться на других объектах, кроме сообщений. Например, создатели программ могут «подписать свой код» с помощью цифровой подписи, чтобы подтвердить, что код не был изменен между его публикацией и его установкой на компьютер. Подписание кода стало очень распространенным методом улучшения безопасности во многих системах. Обратите внимание, что шифрование и аутентификация могут использоваться вместе или по отдельности. Иногда, например, мы хотим аутентификацию, но не конфиденциальность. Например, компания может предоставить программный патч и «подписать» этот патч, чтобы доказать, что он пришел от компании и не был изменен. Например, цифровые подписи являются ядром авторства, что является доказательством того, что объект выполнил действие. Типичный пример авторства включает заполнение электронных форм в качестве альтернативы подписанию бумажных контрактов. Авторство доказывает, что человек, заполняющий электронную форму, не может отрицать, что он это сделал.
Достарыңызбен бөлісу: |