37 lines
2.1 KiB
Markdown
37 lines
2.1 KiB
Markdown
# Argon2id для входа/регистрации + блок «Расширенные»
|
||
|
||
Статус: `pending`
|
||
|
||
## Что сделано
|
||
|
||
- При непустом пароле derivation ключей переведён на Argon2id.
|
||
- В derivation участвуют и логин, и пароль.
|
||
- Для пустого пароля оставлен прежний тестовый режим (старый детерминированный вариант), чтобы сохранить текущий тестовый сценарий.
|
||
- На экранах входа и регистрации добавлен блок `Расширенные` с кратким описанием схемы и параметров.
|
||
|
||
## Параметры Argon2id (текущий профиль)
|
||
|
||
- `t = 3`
|
||
- `m = 262144 KiB` (256 MB)
|
||
- `p = 1`
|
||
- `dkLen = 32`
|
||
|
||
Формат salt:
|
||
|
||
- `saltSource = "shine-auth-v2|login=<lowercaseLogin>|suffix=<keySuffix>"`
|
||
- `salt = first16bytes( SHA-256(saltSource) )`
|
||
- `keySuffix` = `root.key` / `bch.key` / `dev.key`
|
||
|
||
## Как проверять
|
||
|
||
1. На входе/регистрации открыть `Расширенные` и проверить отображение описания.
|
||
2. Проверить тестовый режим: оставить пароль пустым и убедиться, что вход работает по старому сценарию.
|
||
3. Проверить новый режим: ввести непустой пароль и выполнить вход/регистрацию.
|
||
4. Проверить, что одинаковый пароль при разных логинах даёт разные ключи (например, вход под двумя логинами с тем же паролем и проверка несовпадения производных ключей/сессий).
|
||
|
||
## Ожидаемый результат
|
||
|
||
- Непустой пароль использует Argon2id.
|
||
- Пустой пароль остаётся тестовым legacy-вариантом.
|
||
- UI показывает пользователю, как сейчас считается секрет.
|