Вопрос о целесообразности использования блочных шифров
Добрый день.
О криптографии знаю не много.
Последние пару дней читал всевозможные форумы/FAQ-и.
И вот что бросаеться сразу в глаза:
почему используют болчные шифры, в то в ремя когда трудно обеспечить стойкий режим работы таких шифров? И почему именно 128 бит, а не более? Не лучше использовать длину блока скажем 1024 бит?
Да возмоджно связано с тем что такие алгоритмы часто реализуються на микросхемах...
Но все же...
[какой-то глюк с форумом, второй раз пишу, а ничего нет]
комментариев: 9796 документов: 488 редакций: 5664
Выше правильно заметили – это не от перебора. При переборе эффективная энтропия останется 2128. Это на случай, если один из трёх шифров ненадёжен к какой-либо атаке с известным или подобранным текстом.
Ну примерно как узлы сети Tor :)
Допустим, мы знаем, в каком виде поступает открытый текст на вход первого шифра, но не зная ключа, мы не можем посмотреть его выход в виде шифртекста в чистом виде (чтобы собирать пары открытый-шифртекст и на их основе пытаться вычислить ключ нестойкого шифра). Последний шифр даёт нам посмотреть шифртекст, но мы не знаем, в каком виде на него поступает открытый текст.
Даже если нам удалось восстановить ключ путём криптоанализа одного из нестойких шифров каскада, то восстановить ключ двух других, при условии, что KDF – стойкая, нам не удасться.
Насчёт каскада KDF. Предположим, противник взламывает один из шифров в каскаде (как он это точно определит кстати?). Он узнает один из выходов KDF. Каким типом нестойкости KDF или составляющих её хэш-функций он сможет воспользоваться, чтобы вычислить два других выхода KDF?
Почему в KDF нужно использовать каскад, а не XOR трёх KDF? Это же псевдослучайные функции (PRF), а не псевдослучайные перестановки (PRP), как блочные шифры.
Кстати, есть одна теоретическая работа, где показано, что XOR трёх (при ряде допущений даже двух) PRP даёт хорошее приближение к PRF, что хотели даже использовать в дизайне хэш-функций. Можно было бы взять три разных блочных шифра, и поксорив их выход получать PRF для KDF. Ведь основа любой KDF – это PRF, поэтому и используют хэш-функции.
Только может всё-таки доверить эту работу известным теоретикам, пусть под неё хоть какую-то доказательную базу подведут. Зачем самим-то это всё изобретать и обосновывать стойкость "на пальцах", если методами доказуемой безопасности на уровне ведущих специалистов мы всё-равно не владеем?
unknown:
"Это на случай, если один из трёх шифров ненадёжен к какой-либо атаке с известным или подобранным текстом."
А где гарантия что таким не окажеться весь каскад?
комментариев: 9796 документов: 488 редакций: 5664
Может их ненамного будет в каскадной связке вместе сложнее сломать, чем если бы по потдельности, но оценка всё-равно скорее будет неутешительной.
Оценки колеблются от "затраты на взлом каскада по крайней мере не меньше, чем на взлом самого стойкого шифра из каскада", до "если первый шифр нестоек к атакам с известными открытыми текстами, то его взлом открывает путь к взлому последующего шифра" – принцип последовательного взлома.
Хотя, наверное могут быть и более сложные варианты взаимодействия уязвимостей.
И если мы перед применением к паролю рекомендованной KDF произведём его шифрование, как это может ухудшить ситуацию? Хотя бы гипотетически/теоретически?
комментариев: 9796 документов: 488 редакций: 5664
Ну надо хотя бы чётко понимать, что блочный шифр – это PRP, хэш-функция – PRF (до конкурса SHA3 все хэш-функции могут быть не совсем полноценными PRF из-за особенностей дизайна). Для KDF нужна PRF.
Ну такова теория KDF. Вариант каскадной KDF как XOR выхода блочных шифров я предложил выше.
Другой вариант мне попался в соседней ветке в моём же сообщении про Keccac и структуру Sponge – вот если там взять три разных блочных шифра и из них получить каскадную PRF-KDF? Если есть одно из лучших на мой скромный взгляд доказательств близости для структуры Sponge из хэша Keccak к идеальной модели Random Oracle среди всех кандидатов SHA3, то на него можно положиться.
Но самостоятельное конструирование – это всё "игры разума", бездоказательные варианты.
есть разрозненные и малочисленные работы, но полной теории нет.
Доказано что, если зашифровать с независмыми ключами E1( <R> ), E2(R XOR M), где R – истинно случайные данные и увеличить таким образом шифртекст в два раза, то такой каскад будет идеальным (на его взлом понадобиться взлом обязательно двух шифров) – это как бы передача одноразового блокнота и ключа к нему посредством двух разных шифров плюс полная рэндомизация открытого текста. Можно использовать хоть n шифров, только шифртекст будет больше открытого текста в n раз и понадобиться n-1 блоков истинно случайных (от физического источника) чисел.
Нет доказательств, что обычный последовательный каскад или какой-то режим соединения шифров в каскаде аналогичен по стойкости идеальному.
Нужны ли вообще каскады?
вот некоторые утверждают пока не решены проблемы с ассиметрикой (постоянная недостаточность размеров ключей и резкое снижение быстродействия при их увеличении)-- то даже AES-256 не нужен.
собаководамикриптографами блочных шифров. КАК ЭТО МОЖЕТ УХУДШИТЬ БЕЗОПАСНОСТЬ ???Это другой вопрос. Но уж если используется каскад из шифров, странно использовать KDF без каскада.
На фоне того, как все дружно громким хором кричат "AES наше всё", это наводит на нехорошие подозрения. Ну пусть нет доказательств, но хоть рекомендации-то должны бы были быть? Чтобы "на коленке" тут не изобретать...
комментариев: 9796 документов: 488 редакций: 5664
Ну хотя бы вики по хэшам из блочных шифров почитайте.
Схемы построения хэшей из блочных шифров Davies-Meyer, Matyas-Meyer-Oseas, Miyaguchi-Preneel, Hirose видимо изобретены просто так и доказательства к ним придумывались от нечего делать.
Возмите три разных блочных шифра, чтобы получить каскадный хэш, и из него выведите готовую KDF. Ну нет тут никакого заговора – такая работа может быть просто никому неинтересна. Нет тут ни практического спроса, ни теоретического интереса. Мутная тема просто. А без формального доказательства стойкости никто это рассматривать и продвигать не будет.
Я уже третий вариант каскада из шифров для построения хэша предлагаю. Каскад PRP остаётся PRP, а KDF основана на PRF. Раз на это есть доказательства, то этому и надо следовать. Слишком много примеров, когда в элементарной и очевидной казалось бы конструкции, если её проанализировать по формальным моделям, находят уязвимости.
Какой смысл подавать PRP на вход PRF?
Может из всех компонентов PRP сформировать PRF (воспользовавашись готовым доказательством, что каскад PRP в данной конструкции образует PRF) и уже на основе этой каскадной PRF создавать KDF?
Три варианта получения PRF из PRP:
1) XOR выхода нескольких PRP
2) Новая схема Sponge
3) Старые схемы – Davies-Meyer, Matyas-Meyer-Oseas, Miyaguchi-Preneel, относительно новая – Hirose.
и ещё режим S2V.
комментариев: 9796 документов: 488 редакций: 5664
Кстати, как отмечено в рассылке Crypto на нынешнем Еврокрипте на Rump Session представили
анонс доказательства нестойкости AES.
Если это так, то это исторический момент. Найден различитель, отсчёт пошёл...
Хотя может как в DES – будет куча непрактичных атак, а стандарт просто объявят со временем устаревшим.
Слишком громко сказано, на мой взгляд. Related key атаки на блочный шифр скорее выявляют нехорошие характеристики, а не снижают стойкость как таковую.