AspansQulyp/notes/DECISIONS.md
deni.reyton 45de8f9f51 Qulyp: локальный менеджер паролей на Rust + egui
- Шифрованный файл .qulyp: Argon2id + XChaCha20-Poly1305, атомарная запись и .bak
- Записи с TOTP, папками, избранным и историей паролей; генератор паролей
- Синхронизация через облачную папку с послезаписным слиянием и ручное слияние файлов
- Автоблокировка, автоочистка буфера обмена, тёмная/светлая тема
- Сборка под Windows и Linux, CI для Gitea Actions
- Заметки проекта в notes/ с лимитами строк (tests/notes.rs)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 14:32:11 +05:00

26 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- limit: 80 -->
# Решения
**egui/eframe вместо Tauri/Qt.** Чистый Rust, один бинарник, без WebView и Node; одинаково на Windows и Linux.
Рендер `glow` (OpenGL) — легче wgpu и быстрее собирается.
**Свой формат, а не .kdbx.** KDBX сложен (XML, много версий KDF/шифров). Свой формат — 60 байт заголовка
+ зашифрованный JSON, легко проверить. Импорт KDBX — отдельной задачей (см. PLAN).
**Argon2id 64 МиБ / 3 прохода / p=4.** Рекомендация OWASP-уровня, ~0.5 с на разблокировку.
Параметры пишутся в заголовок — можно усилить позже без смены формата.
**XChaCha20-Poly1305.** 24-байтный случайный nonce на каждое сохранение — без риска повтора.
Весь заголовок — AAD, подмена параметров ломает расшифровку.
**Синхронизация = файл в облачной папке.** Никакого своего сервера. Перед записью файл на диске
сливается с памятью; раз в 2 с проверяется внешнее изменение. Слияние — по записям, свежая побеждает,
старый пароль уходит в историю, удаления — через надгробия.
**Автосохранение после каждого изменения.** Нет кнопки «Сохранить» и риска забыть. Старая версия → `.qulyp.bak`.
**RustCrypto старых стабильных версий** (argon2 0.5, chacha20poly1305 0.10, hmac 0.12): новые мажорные
версии меняют API, а эти широко проверены.
**Язык интерфейса — русский.** Локализация — если понадобится.