Master Password

Материал из Национальной библиотеки им. Н. Э. Баумана
Master Password
Login.png
Создатели: Мартен Биллемонт
Выпущена: 15 июня 2012
Постоянный выпуск: 19 апреля 2015
Состояние разработки: Активно
Написана на: Java, C, javascript
Операционная система: Microsoft Windows, Unix-like, включая OS X, iOS и Android
Локализация: English
Лицензия: GNU General Public License
Веб-сайт masterpasswordapp.com

Мастер-пароль(Master password) - это алгоритм, разработанный Маартеном Биллемонтом для создания уникальных паролей воспроизводимым образом. Он отличается от традиционных менеджеров паролей тем, что пароли не хранятся на диске или в облаке, но каждый раз воссоздаются с использованием информации, введенной пользователем.

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

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

Thumb-process-black.png

Алгоритм

Алгоритм включает в себя следующие параметры:

  1. name: полное имя пользователя, используемое в качестве соли. Полное имя пользователя выбрано, поскольку оно обеспечивает достаточно высокий уровень энтропии, хотя вряд ли его можно забыть.
  2. master_password: секрет, используемый для создания мастер-ключа.
  3. site_name: уникальное имя службы, для которой предназначен пароль. Обычно голый доменный домен является хорошим выбором.
  4. counter: Целое число, которое может быть увеличено, когда служба запрашивает новый пароль. По умолчанию это 0.
  5. password_type: Тип пароля определяет длину и структуру результирующего пароля, см. Ниже.

Генерация master key

Master key - это 64-байтовый секретный ключ, сгенерированный путем выполнения дорогостоящего деривации ключа с использованием мастер-пароля пользователя, засоренного их полным именем. Он представляет собой глобальный секрет пользователя.

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

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

salt = "com.lyndir.masterpassword" + length(name) + name
master_key = scrypt(master_password, salt, 32768, 8, 2, 64)

Шаблон SEED

С известным основным ключом мы можем перейти к вычислению SEED шаблона для сайта. SEED шаблон является, по существу, сайто-специфичным секретом в двоичной форме.

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

Мы используем алгоритм HMAC-SHA-256 для получения достаточно большого количества SEED для последующего шага кодирования.

seed = hmac_sha256(master_key, "com.lyndir.masterpassword" + length(site_name) + site_name + counter)