id: Гость   вход   регистрация
текущее время 19:59 28/03/2024
Автор темы: Гость, тема открыта 09/11/2012 16:24 Печать
Категории: криптография, алгоритмы
http://www.pgpru.com/Форум/Криптография/ДвойноеШифрованиеФайлаИБрутфорс
создать
просмотр
ссылки

Двойное шифрование файла и брутфорс


Всем привет.
На Википедии написано про такой подход шифрования, суть: если файл зашифровать дважды, то брутфорс не поможет, даже если у ПК, перебирающего ключи, будет, скажем, неограниченная мощность, так как когда правильный ключ будет найден, результат расшифровки никак не будет отличаться от результата расшифровки с неправильным ключём – такой же хаотический набор символов и программа (как и человек) просто не сможет распознать, что это и есть открытый текст и будет считать, что этот ключ так же неверен. Это действительно так? Зашифровать файл, а результат ещё раз, и ключ "1234" никто не подберёт?


 
На страницу: 1, 2 След.
Комментарии
— unknown (09/11/2012 17:06, исправлен 09/11/2012 17:22)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

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



2128 • 22 = 2130, поздравляю, вы увеличили стойкость шифрования на 2 бита. Даже если взять два стойких ключа 128-бит, то при чётном числе последовательных шифрований в каскаде можно делать размен числа подбираемых операций на память.

— Гость (09/11/2012 23:23)   <#>
Зашифровать файл, а результат ещё раз
Запускаем алгоритм, который пробует двойную расшифровку, что сразу сводит задачу к исходной. Если не исходить из принципа «безопасность через неясность», то что это даст?
— Гость (09/11/2012 23:31)   <#>
Если не исходить из принципа «безопасность через неясность», то что это даст?

Ещё один бит к ключу (не понял где unknown нашёл второй бит). Безопасность через неясность тоже довольно эффективный способ в плане повышения затрат на взлом. Но конечно не основной, а в качестве дополнения к стойким алгоритмам.
— lkjashrfoiquytljket (10/11/2012 13:35)   <#>


Я не понял, о чём тут вообще речь? Или вы имеете ввиду:


Если так, то, допустим, для обоих зашифровок применять разные пароли и алгоритмы. То есть сначала зашифровать при помощи CAST5 и паролем "1234", а результат алгоритмом AES с паролем "abcP". Пароли пустячковые, но кто сможет понять, что оно так зашифровано?
— Гость (10/11/2012 13:40)   <#>
На Википедии написано

То есть сначала зашифровать при помощи CAST5 и паролем "1234", а результат алгоритмом AES с паролем "abcP". Пароли пустячковые, но кто сможет понять, что оно так зашифровано?

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

Если 2 алгоритма с 2-мя разными стойкими ключами – получится немного стойче.

Если 2 алгоритма с ключами "1234" – стокости нету, и еникакие каскады не помогут.
— lkjashrfoiquytljket (10/11/2012 15:49)   <#>


Можете объяснить, почему немного стойче? Я в самом первом сообщении описал логику, какой она мне представляется. И если она верна и применяются 2 разных алгоритма и 2 разных пароля, почему увеличение стойкости будет небольшим?
— SATtva (10/11/2012 17:29, исправлен 10/11/2012 17:29)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Потому что Ваша схема нарушает допущение Кирхгоффа. Unknown выше Вам на это указал.

— Гость (10/11/2012 17:41)   <#>
lkjashrfoiquytljket, придется вам поверить мне на слово. И внимательно прочитать слова Влада.
— unknown (10/11/2012 18:27, исправлен 10/11/2012 18:28)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Тогда, для простого брутфорса то, что это именно 1234 противник не знает. И для чисел в интервале {0000} … {9999} прибавится целых 13 бит. А для 4 произвольных байтов стойкость возрастёт аж на 32 бита. Хотя, реально при задействовании 7 бит на символ, то на 28.


То есть сначала зашифровать при помощи CAST5 и паролем "1234", а результат алгоритмом AES с паролем "abcP"

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


Два ключа, стойкостью 28 бит казалось бы дадут 56 бит. Это всё равно мало, но на самом деле, всё ещё хуже.


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


Пусть k1, k2 — ключи. P — открытый текст, C — шифртекст, E — функция зашифровывания, D — функция расшифровывания.


Тогда операция двойного шифрования будет выглядеть так:


C = Ek2 (Ek1 (P))


Двойного расшифрования, соответственно так:


P = Dk1 (Dk2 (C))


Промежуточный результат между операциями шифрования или расшифрования будет выглядеть как:


X = Ek1 (P) = Dk2 (C)


Пусть противнику станет известна хотя бы одна пара {P, C}.


Тогда он зашифрует P с каждым возможным k1, делая X' = Ek1 (P) и одновременно отсортирует таблицу, заполняя таблицу значениями X',k1. Затем он будет расшифровывать шифртекст X'' = Dk2 (C) и сравнивать каждое X'' с табличным X'. Если обнаружится совпадение X' = X'', то с большой вероятностью найдена вторая половинка ключа. Правда, вероятность ложного совпадения велика, но она падает обратно экспоненциально при проверке на каждой последующей паре {P, C}. Обычно достаточно дву-трёх проверок.


Т.о., стойкость двойного ключа можно свести к стойкости одинарного + 2 бита на двойное шифрования + 2n/2 затрат памяти для количества строк в таблице для стойкости ключа n (помножить на ширину строки, равную размеру половинки ключа и размеру блока шифра). Если памяти не хватает, то есть трюки с оптимизацией наподобие радужных таблиц.


Т.е. ваши четыре байта (печатных символа) стойкостью 32 (28) бит в удвоенном до 8-байтов ключе превращаются в 34 (или 30)-битную стойкость. А если только на одних циферках или наиболее распространённых печатаемых символах, так и вообще далеко не уедете.


Сокрытие порядка применения алгоритмов тоже не увеличит намного ключ. Выбор двойного шифрования из 8 алгоритмов добавит порядка 6 битов стойкости. Проще использовать стойкий ключ.


Безопасность через неясность тоже довольно эффективный способ в плане повышения затрат на взлом. Но конечно не основной

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

— Гость (10/11/2012 21:33)   <#>
unknown 2 и 3 года назад писал про каскады (о том, что не всё там так просто, как вам кажется, с этим «двойным шифрованием»). Начинайте раскручивать с /comment37486, найдёте много интересного.
— Гость (12/11/2012 00:04)   <#>
Тогда, для простого брутфорса то, что это именно 1234 противник не знает. И для чисел в интервале {0000} … {9999} прибавится целых 13 бит. А для 4 произвольных байтов стойкость возрастёт аж на 32 бита. Хотя, реально при задействовании 7 бит на символ, то на 28.

Я имел в виду что двойное шифрование одним ключом увеличивает время перебора в 2 раза, что равнозначно увеличению длины ключа на 1 бит.

Безопасность через неясность не стандартизируется и не масштабируется.

Не являюсь криптоаналитиком, поэтому рассуждения только с позиции здравого смысла. Несоответствие стандарту имеет и обратную (положительную) сторону. Взлом стандартных решений автоматизирован. Нестандартные решения требуют вмешательства человека, в данном случае квалифицированного специалиста. У противника, во-первых ограничен штат таких специалистов, во-вторых их время может стоить дороже машинного. Ограничение численности вынуждает атакующих определять приоритеты для задач, и вашу нестандартную задачу могут отложить, ввиду наличия более актуальных. Повторюсь, что безопасность через неясность не означает отмены стандартной защиты. Это добавка к стандартным решениям. В итоге противнику всё-равно необходимо осуществить взлом стандартных алгоритмов – автоматизированно, но при этом преодолеть дополнительный барьер – вручную.
— unknown (12/11/2012 00:42)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Схожие аргументы в пользу безопасности через неясность немного упоминались здесь.

Отчасти согласен, скорее не спорю, только дополняю.

Вот придумали некую тайную защиту. Даже среди небольшой группы лиц её распространить и сохранить в тайне трудно. А если "тайное решение" раскроется — как его быстро поменять, это же не пароль и не ключ? А если какому-нибудь главнокомандующему на over 9999 подразделений, то что — для каждого уникальную хитрость придумывать? Нереально. А если "хитрость" одинаковая, то в общем случае произойдёт утечка.

Здесь же связанная проблема со стандартизацией. Как дать на проверку "тайную уловку" специалистам? Как с кем-то посоветоваться по поводу решения, которое никому нельзя открывать? Поддерживать тайный стандарт внутри организации? Так и делают в очень закрытых структурах, но скорее для того, чтобы противник не имел наработок такого же уровня для своих целей в условиях соперничества. Это становится всё менее актуальным по мере развития т.н. "гражданской" криптографии и даже устаревания деления на "гражданскую" и какую-либо другую (military-grade — звучит как устаревшее маркетинговое слово).

Я имел в виду что двойное шифрование одним ключом увеличивает время перебора в 2 раза, что равнозначно увеличению длины ключа на 1 бит.

Тогда верно. Вот что имел ввиду вопрощающий при неточно сформулированных вопросах, выяснить сложнее. Сплошная безопасность через неясность.
— Гость (12/11/2012 01:13)   <#>
Хотите принцип медведя?
— Гость (12/11/2012 19:13)   <#>
unknown
Согласен с вами, нестандартные решения больше подходят для индивидуального использования, когда не требуется их распространение. Лично я их не применяю.
— resolvents (13/11/2012 19:59)   профиль/связь   <#>
комментариев: 1   документов: 1   редакций: 0
Нехорошо смешивать в каскаде шифры с разным размером блока. Ну да ладно, это слишком тонкий теоретический вопрос.

Расскажите пожалуйста поподробнее почему нехорошо.
На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3