Финансовые данные — почти как ключи от квартиры. Передавая их сервису для учёта расходов, ждёшь полной гарантии безопасности. Никто не хочет, чтобы личная информация случайно ушла гулять по чужим рукам или всплыла где не нужно.
В этой статье расскажем, как работает безопасность в сервисе Считаю. Разберём, какие криптографические методы стоят на страже ваших данных. Объясним, почему ваши личные расходы никто не узнает без вашего согласия.
1. Философия приватности
Считаю работает по одному простому правилу. Нужно доверять инфраструктуре как можно меньше. Представьте, что любой сервер может быть взломан. Абсолютной защиты не существует. Поэтому наш подход такой. Если кто-то получит доступ к базе, он увидит только зашифрованные данные. Взломщик останется ни с чем.
Лишние данные нам не нужны. Никто не попросит ваш паспорт или номер карты. Для работы ассистента хватает суммы и категории покупки. Детали транзакции просты и понятны.
2. Как устроена защита данных
В Считаю защищают данные. Для этого используют шифрование хранимых данных прямо на уровне полей в базе.
Вообразите обычный сейф. Вот так обычно работают базы данных. Одна дверь закрыта, внутри отделения открыты. Вор взломал дверь — унес всё. В «Считаю» всё иначе. Каждая секция, где лежит что-то важное, закреплена отдельным криптографическим замком. Ключи от замков спрятаны в памяти сервера. Ни один из них не попадает на жесткие диски.
Шифрование встроено прямо в ORM-модели через SQLAlchemy TypeDecorator. Вся работа идёт через библиотеку cryptography с использованием Fernet. Основной алгоритм — AES-128 в CBC-режиме. Для защиты данных от подделок используется электронная подпись на HMAC-SHA256. Ключ для шифрования хранится только в оперативной памяти сервера, из переменной окружения DB_ENCRYPTION_KEY. Ключ никогда не попадает в базу. При каждом сохранении данных в PostgreSQL все значения автоматически превращаются в зашифрованную бинарную строку с префиксом gAAAAA. При чтении всё расшифровывается в исходный вид без особых усилий.
3. Что именно мы шифруем
Есть два типа данных. Одни требуют шифрования, потому что содержат личную информацию. Другие нужны для фильтров, бюджета или построения графиков.
Личные данные людей под надежной защитой. Имена, электронные адреса и телефоны шифруются всегда. Как же проверить номер телефона, если данные уже скрыты? Решение простое — используем Blind Index.
Человек регистрируется. Его номер телефона шифруется с помощью AES, после чего попадает в базу. Сразу после этого номер пропускаем через HMAC-SHA256 с секретной солью. Итоговый хэш записывается в поле с именем phone_hash.
Когда человек возвращается и вводит свой номер, система снова считает хэш, используя ту же соль. Она сравнит новый результат с тем, что уже хранится. Если значения совпали — всё работает, человек узнается по хэшу, а сам номер так и остается скрытым.
Что именно шифруется:
- Текст уведомлений из банков и SMS, по которым создается покупка.
- Ваши личные заметки к покупкам.
- Описание операции, которое система получает от банка.
В базе хранятся сумма покупки, валюта, дата и категория трат. Например, это может быть "Продукты" или "Рестораны". Эти данные нужны для работы с отчетами по расходам. База может быстро строить графики или считать траты за месяц. Учет лимитов бюджета становится проще. Вся информация обезличена. Нет связи с именем, банком или комментарием к покупке. Отдельно такие данные ничего не скажут о человеке.
4. Безопасный нейросетевой анализ
Мне кажется, что искусственный интеллект здорово помогает разобраться в расходах. Он сам понимает, зачем и куда ушли деньги. Категории появляются автоматически. В чате поддержки можно сразу получить ответ на любой вопрос.
Мы сделали нейросеть максимально изолированной. Бэкенд удаляет любые сведения о человеке из запроса до отправки. Модель видит только текст вроде "Перевод 500р в супермаркет Магнит" и не знает, кто отправитель.
Наша команда выбирает только корпоративные API искусственного интеллекта. По контрактам обработка происходит в памяти, без записи на диск. Информация не уходит для обучения новых моделей. Всё защищено юридически.
5. Многоуровневый подход к безопасности
Защита базы — только часть дела. Мы следим за данными на каждом этапе их жизни.
- Все данные между приложением и сервером проходят только через HTTPS с TLS 1.3. Никто не сможет подсмотреть ваш трафик даже в кафе с бесплатным Wi-Fi.
Авторизация работает через короткоживущие JWT. Если токен устарел, генерируется новый с помощью другой технологии. Взять сессию чужому человеку просто не получится.
Логи тщательно очищаются от личной информации. Даже разработчик, который их смотрит, не узнает ваш email или телефон. Вместо этих данных всегда виден шаблон со звёздочками.
6. Заключение
Современные финансовые сервисы должны быть умными. Безопасность — не менее важна. В основе "Считаю" лежит нейросетевой анализ. Для нас важно удобство работы. Корпоративные стандарты защиты соблюдаются всегда.
Система использует AES-128-CBC. Применяются слепые индексы для авторизации. Запросы к нейросети изолированы максимально строго. Ваши финансы никто не узнает. Ваши покупки останутся приватными.