2013-07-27 4 views
1

Я работаю над классом шифрования, который использует алгоритм Rijndael (C#, ASP.Net 4.5), и из любопытства я задавался вопросом, насколько полезно было бы зашифровать строку дважды. Я имею в виду шифрование строки с помощью ключа, а затем шифрование полученного шифрования с помощью другого ключа?Шифровать строку дважды ... Хорошо, Плохо или Уродливо?

Означает ли это, что гораздо безопаснее (я знаю, что ничто никогда не защищено, и в моем программном обеспечении могут быть другие дыры, которые можно использовать для использования)? Стоит ли накладные расходы процессора (не уверен, насколько это тяжело, но я не могу себе представить, чтобы он загорелся)?

Я искал некоторые предложения в Интернете, но не смог найти их. Есть предположения?

+0

Если шифрование является «безопасным», я не вижу, как может быть добавленная польза, за исключением, возможно, использования процессора. Некоторые программы, такие как KeePass, будут шифровать * миллионы раз * (1,2 М на моем ящике), чтобы * записать CPU * .., но 2 кажется глупым.Кроме того, был DES, затем 3DES, но это было возможно просто для исправления слабого DES. – user2246674

+0

@ user2246674 Вот что мне интересно, и это полностью из любопытства LOL, подумал, что это будет классная маленькая тема, чтобы услышать от экспертов здесь :) – hjavaher

+0

Мое взятие на себя: Rijndael/AES «безопасен». Тогда это просто вопрос безопасного использования: например. используя [правильный режим] (http://crypto.stackexchange.com/questions/967/aes-in-ecb-mode-weakness) и защищая ключи. В то время как я принимаю горящий подход KeePass для своего проблемного домена (потенциально слабый мастер-пароли), он действительно звучит отрывочно, чтобы зашифровать дважды в надежде, что это сделает шифрование «более безопасным». – user2246674

ответ

4

Есть несколько вопросов, которые могут быть вам полезны:

Общая идея выглядит следующим образом:

Ну, подумайте об этом так. Если взломать одно шифрование с помощью грубой , то сила будет занимать больше времени, чем срок службы юниверса. У вас есть безопаснее с схемой шифрования, которая займет в два раза больше времени жизни Вселенной? Нет. Первое шифрование не может быть нарушено. Добавление второго шифрования просто добавляет накладные расходы на вычисления без реальной выгоды. - mikeazo

Я бы посоветовал задать этот вопрос в https://crypto.stackexchange.com/, они могут предоставить вам более подробную информацию по этой теме.

+0

Спасибо, я даже не знал, что у Stack Exchange есть сайт Crypto. Я буду, но мое первоначальное чувство было выше, так что я думаю, что получил свой ответ. – hjavaher

+0

Nit: «Общая идея» предполагает, что ключ не может быть грубым (что является допустимым предположением с * сильными клавишами)), но что-то вроде KeePass может действительно выиграть от ожога. Дело не в том, что шифрование сильнее, но оно защищает в случаях атаки грубой силы на * ключи в ограниченном («слабом») ключевом пространстве *. Мой главный ключ гораздо менее безопасен (порядка порядка «60 бит» .. * возможно *), чем ключи, которые он защищает. Может быть, я должен это исправить - или просто полагаться на ожог. * Shrug *. – user2246674

+0

См. Также: http://blog.cryptographyengineering.com/2012/02/multiple-encryption.html – ntoskrnl

1

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

Теперь, будучи сказанным ..., вы можете получить дополнительную защиту, если будете ошибаться. Например, скажем, вы впервые зашифровали в режиме ECB (электронная книга кодов) из-за того, как работает этот режим (путем шифрования каждого блока вашего открытого текста отдельно), вы можете получить дополнительную защиту, зашифровав второй раз в более безопасном режиме (CBC или CTR). Но ... вы можете просто зашифровать в режиме CBC в первый раз.

Вы можете зашифровать первый раз с помощью небезопасного алгоритма (такого как DES) и зашифровать второй раз с гораздо лучшим алгоритмом (например, AES).

Но эти ситуации являются гипотетическими и требуют, чтобы вы сознательно совершали ошибки или были крайне небрежными. Если вы дважды используете AES (Rijandael) в безопасном режиме, например CTR или CBC, вы не получите никакой дополнительной защиты от шифрования дважды, пока ваш ключ будет храниться безопасно и выбран безопасным образом.

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

  • Нет связанных вопросов^_^