Перейти к содержанию

Lyra2

Материал из BitcoinWiki
Схема матрицы памяти Lyra2
Схема матрицы памяти Lyra2.

Lyra2 — это схема хеширования паролей с жестким хранением в памяти, которая также может извлекать материал для криптографического ключа. Он был разработан Маркосом А. Симплисио-младшим, Леонардо К. Алмейдой, Эвертоном Р. Андраде, Паулу К.Ф. душ Сантосом и Паулу С.Л.М. Баррето в Университете Сан-Паулу.[1]

Lyra2 стала финалистом конкурса хеширования паролей 2013–2015 годов и получила особое признание. Argon2, а не Lyra2, была выбрана победителем конкурса.[2]

Цель

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

Lyra2 принадлежит к этой основанной на паролях ветви более широкого Key derivation function семья. Он принимает пароль, соль, желаемую длину вывода и параметры стоимости. Его выходные данные можно сохранить в качестве средства проверки пароля или использовать в качестве ключевого материала, в зависимости от приложения.[1] Соль разделяет записи, использующие один и тот же пароль; обычно это не секрет.

Дизайн

Lyra2 построена на основе криптографического губка, конструкция с внутренним состоянием, которая поглощает входные данные, а затем выдает псевдослучайные выходные данные. Алгоритм сохраняет промежуточные значения в матрице памяти и повторно обращается к ним во время обработки. Отбрасывание частей этой матрицы для экономии памяти вынуждает оценщика пересчитывать значения, что призвано сделать компромисс между временем и памятью дорогостоящим.[1]

Спецификация делит оценку на три широких этапа:

  1. Начальная загрузка и настройка впитайте пароль, соль и параметры, затем инициализируйте матрицу памяти.
  2. Блуждание пересматривает и изменяет строки матрицы в соответствии со значениями, полученными из развивающегося состояния губки. Параметр time-cost контролирует повторяющуюся работу.
  3. Заворачивать поглощает окончательное значение матрицы и сжимает запрошенный результат из губки.

Основными стоимостными параметрами являются количество блуждающих проходов (Т) и размеры матрицы памяти: строки (Р) и столбцы (С). С губчатым битрейтом б, матрица занимает б × Р × С биты. Выходная длина и базовые настройки губки, битрейт, вращение и уменьшенное число раундов также являются частью спецификации.[1] Эта возможность настройки позволяет разработчику увеличить время обработки без обязательного увеличения памяти или выбрать матрицу большего размера для платформы с большим объемом памяти.

В статье описываются два именованных расширения. Lyra2-δ изменяет долю ячеек матрицы, повторно посещаемых во время блуждания, чтобы регулировать использование полосы пропускания памяти. Lyra2p запускает несколько синхронизированных экземпляров губки по фрагментам общей матрицы, чтобы легитимная многоядерная платформа могла увеличить использование памяти или работать без такого же увеличения задержки.[1] Это параметризованные варианты плана исследования, а не независимые стандарты.

Обоснование безопасности

Авторы Lyra2 разработали изменяющийся шаблон доступа к памяти и повторяющиеся обновления строк, чтобы наказать злоумышленников, которые сохраняют меньше памяти, чем настроенный объем. Отброшенную строку, возможно, придется восстановить из более раннего состояния, а затем восстановить снова после последующих обновлений, поэтому уменьшение пиковой памяти требует дополнительной работы. Авторы также стремились сбалансировать сопротивление наблюдению по побочным каналам с сопротивлением реализациям, использующим недорогие и более медленные хранилища, а также увеличить стоимость специализированных реализаций FPGA или ASIC.[1] Это цели проектирования и анализ из статьи; они не гарантируют, что каждая реализация или набор параметров безопасны.

На этапе настройки используется предсказуемый шаблон доступа, а на этапе блуждания выбираются строки из развивающегося внутреннего состояния. Это различие отражает компромисс: доступ, зависящий от данных, может повысить устойчивость к некоторым стратегиям нехватки памяти, но может раскрыть информацию через кэши или другие побочные каналы. Альтернативы и варианты, представленные в документе, позволяют разработчикам выбирать разные точки этого компромисса, а это означает, что точная версия и конфигурация являются частью любого заявления о безопасности.[1]

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

Соревнования по хешированию паролей

На конкурсе хеширования паролей были представлены публичные предложения по современному стандарту хеширования паролей. Lyra2 вышла в финальный раунд и стала одной из четырех схем (наряду с Catena, Makwa и Yescrypt), получивших особое признание. В июле 2015 года комиссия выбрала Argon2 абсолютным победителем.[2]

Особое признание сделало Lyra2 выдающимся исследовательским проектом, а не универсальной рекомендацией по развертыванию. В текущем руководстве по протоколу или платформе может быть указана другая функция. Например, RFC 9106 предоставляет ориентированную на разработчиков спецификацию и рекомендуемые профили для Argon2id.[3]

Использование в доказательстве работы

Модифицированные конструкции с именем Lyra2 были включены в цепные алгоритмы доказательства работы, используемые некоторыми криптовалютами, включая Lyra2RE и Lyra2REv2. Эти алгоритмы майнинга сочетают в себе несколько функций и могут изменить параметры или роль Lyra2. Их использование не следует рассматривать как свидетельство того, что исходная схема хеширования паролей подходит для любого приложения для майнинга или хранения паролей.

Статус реализации

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

Ссылки

Внешние ссылки