2009-05-14 2 views
1

Я использую следующий код для создания зашифрованных маркеров:Может ли проверка validationKey и decryptionKey быть найдена грубой силой из зашифрованного значения cookie?

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); 

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

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

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

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

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

ответ

5

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

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

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

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

+0

@Accipitridae, спасибо за этот информативный ответ. –

Смежные вопросы