Могут ли validationKey и decryptionKey быть найдены методом перебора из зашифрованного значения файла cookie?

StackOverflow https://stackoverflow.com/questions/862141

Вопрос

Я использую следующий код для создания зашифрованного токена:

var ticket = new System.Web.Security.FormsAuthenticationTicket(
    2, 
    "", 
    DateTime.Now, 
    DateTime.Now.AddMinutes(10), 
    false, 
    "user id here");
var cipherText = System.Web.Security.FormsAuthentication.Encrypt(ticket);

Этот код использует ключ и алгоритм, указанные в app/web.config:

<system.web>
    <machineKey validationKey="SOME KEY" 
                decryptionKey="SOME OTHER KEY" 
                validation="SHA1" />
</system.web>

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

  1. Значение, которое хранится в зашифрованном виде (идентификатор пользователя, который не представляет конфиденциальной информации и меня не сильно беспокоит)
  2. Значение validationKey и decryptionKey, используемых для создания шифра (это было бы катастрофой, поскольку он был бы способен генерировать токены и выдавать себя за любого пользователя)

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

Это было полезно?

Решение

То, что вы здесь описываете, — это известная атака с использованием открытого текста.Злоумышленник изучает как открытые тексты, так и соответствующие зашифрованные тексты, и его цель — найти ключи.Современные шифры предназначены для защиты от такого рода атак.

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

Это очень затрудняет разработку нового шифра.Но, к счастью, у нас уже есть хорошие шифры, такие как AES.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top