Могут ли validationKey и decryptionKey быть найдены грубой силой из зашифрованного значения cookie? - PullRequest
1 голос
/ 14 мая 2009

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

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, использованное для создания шифра (это было бы катастрофично, поскольку он мог бы генерировать токены и выдавать себя за любого пользователя)

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

1 Ответ

5 голосов
/ 14 мая 2009

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

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

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

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

...