Stonqs
Как считаются цифры и что приложение с ними делает

Приватность и ваши данные

Что защищает пароль профиля, а что нет

5 мин чтения

Stonqs держит портфель в одном файле на вашем диске. Если задать профилю пароль, этот файл шифруется SQLCipher под случайным 256-битным ключом, который пароль только отпирает. Это закрывает украденный ноутбук и скопированный бэкап. И не закрывает ещё четыре вещи.

Ваш пароль не шифрует базу. Звучит как недостаток, а на деле наоборот.

Когда вы задаёте профилю пароль, приложение создаёт случайный 256-битный ключ и отдаёт его SQLCipher. Пароль растягивается Argon2id во второй ключ, и этот второй запечатывает первый в маленьком файле рядом с базой. Смена пароля перепечатывает 32 байта. Она не переписывает портфель, который может весить сотню мегабайт операций, и не оставляет наполовину переделанный файл, если посреди операции выключат свет.

Параметры, потому что их обычно не пишут

Argon2id, 64 МиБ памяти, 3 прохода, 1 полоса, на выходе 32 байта. Это заметно выше минимума, который рекомендует OWASP, и стоимость хранится в самом профиле, а не зашита в программу, так что её можно поднять позже, не ломая существующие файлы. Запечатанные блоки — XChaCha20-Poly1305, каждый привязан к своему назначению и своему профилю: ключ, скопированный из одной папки профиля в другую, отвергается, а не принимается молча.

Ключ базы случайный и уже 256-битный, поэтому SQLCipher получает его сырым и собственного вывода ключа не делает. Угадывать там нечего. Атаковать имеет смысл только пароль, и именно там стоят 64 МиБ и три прохода.

Самый короткий принимаемый пароль — восемь символов, без требований к составу. Ровно этого просит NIST SP 800-63B и ничего сверх, потому что требования к заглавной букве и цифре в основном рождают пароли, которые никто не помнит и записывает на бумажке.

От чего защищает

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

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

От чего не защищает

Страница про безопасность, которая обещает всё, не стоит чтения, поэтому вот границы — в том порядке, в каком они беспокоят нас.

  • Вредоносная программа, запущенная от вашего имени при отпертом профиле. База открыта, ключ в памяти. Шифрование на диске не спасает от кода, который работает внутри сессии и законно держит ключ.
  • Любой за клавиатурой отпертой сессии. Автоматической блокировки по бездействию пока нет. Это пробел, и назвать его честнее, чем сделать вид, что он закрыт.
  • Профиль без пароля. Его база — обычный файл, который откроет что угодно. В списке профилей видно, какие защищены.
  • Слабый пароль. Argon2id делает перебор дорогим, а не невозможным. Запоминающаяся фраза из нескольких слов лучше короткого пароля со спецсимволом.

Что остаётся незашифрованным намеренно

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

Если этот размен важен, стоит знать: раскладка импорта помнит, какая колонка файла брокера что означала, и ничего о ваших позициях.

Если пароль забыт

Данные потеряны. Сброса, файла восстановления и чёрного хода нет, и приложение говорит об этом на том же экране, где пароль задают.

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

Что всё-таки уходит с компьютера

Шифрование на диске ничего не говорит про сеть, поэтому остальная часть картины. Запросы уходят за котировками, курсами валют, данными по инфляции и поиском бумаг — к тем источникам, которые вы включили, а у нового профиля выключены все, пока вы не выберете. Кроме этого есть ежедневная проверка обновления на странице релизов, которую можно отключить, и ИИ-ассистент, если вы его подключите. Запросы котировок и курсов несут тикер или валютную пару и ничего о вас.

Ваши позиции не уходят никому. Исключение — ассистент, и только те части, которые вы разрешили, но это отдельная тема.

Источники