Известные в настоящее время недостатки SHA-1 не влияют на безопасность того, что вы пытаетесь сделать. Невозможность восстановить пароль из его хешированной версии зависит от «сопротивления прообразу», которое, насколько нам известно, все еще полностью невозможно с SHA-1. Это также полностью невозможно с SHA-512, SHA-256 или даже MD4 или MD5. Ум, ориентированный на научную фантастику, может представить себе, что компьютеры обретут способность находить прообразы для MD4 или MD5 примерно в 2050 году; для SHA-1 потребуется гораздо больше времени.
Теперь так получилось, что, хотя не существует известного способа вычисления прообразов на SHA-1, доказательств безопасности также мало. Говоря математическими словами, если функция сжатия, используемая в SHA-1, неотличима от "случайного оракула", то она защищена от прообразов. Но известные недостатки SHA-1, которые (теоретически) приводят к коллизиям, также показывают, что его функция сжатия не является случайным оракулом. Следовательно, безопасность SHA-1 против прообразов больше не связана с убеждением «есть веская математическая причина, по которой он не ломается». Это больше из разряда "блин, пока не нашел, как его сломать".
Говоря более приземленными словами, если вы используете SHA-1, вам, вероятно, придется оправдываться. Даже если вы не сделаете ничего плохого, ваш выбор SHA-1 будет поставлен под сомнение. Принимая во внимание, что никто не будет сомневаться в использовании SHA-256 или SHA-512, даже если это подразумевает некоторые накладные расходы на разработку. Короче говоря, использование SHA-1 — это плохие отношения с общественностью.
Обратите внимание, что соление полностью ортогонально этому вопросу. Посол предназначен для предотвращения распределения затрат между атаками на отдельные экземпляры паролей. Предварительно вычисленные таблицы (в том числе так называемые «радужные таблицы») представляют собой своего рода совместное использование (построение таблицы стоит дорого, но может использоваться для атаки на 2, 10, 10000 паролей с незначительной доплатой за атакуемый пароль). Соление побеждает деление. Солить хорошо. Победа над общим доступом важна, потому что возможна атака на один пароль: не из-за хеш-функции, а потому, что пароль умещается в человеческом мозгу и, следовательно, поддается грубой силе («атака по словарю»). Со всем, что связано с паролями, у вас возникнут проблемы не из-за слабости хеш-функций, а из-за того, что вы в первую очередь используете пароли.
person
Thomas Pornin
schedule
20.09.2010