Сейф для клиентской базы: как мы шифруем персональные данные в CRM и закрываем требование РКН
Когда мы регистрировались оператором персональных данных в РКН, в уведомлении оказался раздел «Описание мер, предусмотренных ст. 18.1 и 19 152-ФЗ». И там есть пункт, который нельзя написать «на будущее»: шифрование персональных данных. Декларация уходит в Роскомнадзор и становится обязательством — каждая строчка должна существовать в реальности. В этой статье — как мы реализовали этот пункт для собственной CRM: сейфовая модель шифрования, замок в один клик в интерфейсе и автозамок, который срабатывает, когда ноутбук уходит в сон.
Это не теория и не пересказ методичек — рабочий контур, который в момент написания статьи защищает базу из ~930 персональных данных в 294 файлах.
Проблема: ноутбук с клиентской базой
Типичная ситуация малого бизнеса: вся клиентская база — в CRM на рабочем ноутбуке. Телефоны, email, реквизиты, переписка — в открытом виде на диске. Вместе с тем:
- с 30 мая 2025 года штрафы за утечку персональных данных стали миллионными — даже для небольших компаний;
- ноутбук — самый вероятный носитель, который потеряют или украдут;
- если кража случится, «мы же подали уведомление в РКН» не поможет — поможет только если данные оказались зашифрованы.
Классическое решение — полное шифрование диска (LUKS на Linux, BitLocker на Windows). Это золотой стандарт, и если вам ничего не мешает его включить — включайте, это лучший вариант. Но у полного шифрования есть цена: переразметка диска, ввод пароля при каждой загрузке до логина, риск обнулить всё при ошибке. Мы решили задачу иначе — не для ноутбука целиком, а для самих данных.
Сейфовая модель: шифруем данные, а не весь диск
Идея проста, как банковская ячейка:
- Открыли сейф — работаете с базой как обычно: все скрипты, поиск, отчёты.
- Закрыли сейф — все персональные данные в базе превращаются в нечитаемый шифротекст. Украли ноутбук в закрытом состоянии — злоумышленник получил груду мусора без единого телефона.
Технически в нашей CRM (Obsidian-хранилище с markdown-карточками) персональные данные живут в полях карточек: phone, email, реквизиты, контактные лица. При закрытии каждое такое поле шифруется AES-256-GCM и принимает вид:
phone: "PD1:MaWWJ4RvcQ9GkTBXwwstKQp3HReEIj9StTti…"
Ключ шифрования выводится из пароля через PBKDF2-SHA256 с 400 000 итераций и нигде не хранится — ни на диске, ни в переменных окружения. Только в голове оператора. Открытие восстанавливает исходные значения байт-в-байт, карточки остаются валидными, а служебные поля (ID чатов, статусы, тарифы) не трогаются вовсе — их читают рабочие скрипты биллинга и рассылок.
Четыре секунды или четыре минуты: почему скорость решает
Первая версия замка выводила криптографический ключ отдельно для каждого поля. На базе из 930 полей это занимало 4–5 минут — открыть CRM утром означало заварить чай. С автозамком такое не работает: выключение ноутбука не будет ждать пять минут.
Две оптимизации закрыли проблему:
- одна соль на весь прогон шифрования — ключ выводится один раз, а не для каждого поля;
- кеш производных ключей при расшифровке.
Результат: полная база шифруется и расшифровывается за 0,3 секунды. Это тот случай, когда правильная архитектура делает функцию не просто возможной, а незаметной.
Автозамок: пароль один раз, дальше — самому не надо думать
Главный враг любой системы защиты — человек, который забыл её включить. Поэтому замок у нас замыкается сам:
- при входе в систему демон спрашивает пароль один раз (в окошке) и открывает базу;
- при уходе ноутбука в сон или закрытии крышки — мгновенное шифрование (демон держит задержку сна через systemd-inhibit, чтобы успеть);
- при пробуждении база открывается обратно;
- при выключении и выходе из сеанса — финальный замок.
Критичный момент: пароль живёт только в памяти процесса демона. Соблазн положить его в файл ради «полного автомата без ввода» — ловушка: украденный ноутбук достанется вору вместе с паролем, и шифрование превратится в декорацию. Плюс это прямое противоречие пункту уведомления РКН «ключ на носителях не хранится».
Замок в шапке CRM: зелёный — открыто, красный — закрыто
Ручное управление свели к одной кнопке в шапке дашборда:
- 🔓 зелёный замок — база открыта, можно работать; клик — шифрует;
- 🔒 красный замок — база закрыта; клик — расшифровывает;
- серый — демон не запущен, пароль не введён.
Клик — это 0,3 секунды и тост «🔒 База персональных данных зашифрована». Состояние иконки обновляется каждые 30 секунд по фактическому содержимому файлов, а не по памяти интерфейса — если закрыть базу из консоли, замок это заметит.
Архитектура цепочки тоже про безопасность: интерфейс → внутренний API → демон. Пароль не покидает процесс демона ни на одном шаге.
При чём здесь РКН
Связь прямая. В уведомлении оператора раздел мер — это не формальность, а инвентаризация фактов. Типовые пункты малый бизнес декларирует одинаковые: «шифрование персональных данных», «резервное копирование», «ограничение доступа». Разница между операторами — в том, что за строчками стоит.
Наш порядок был таким: сначала реализовать меру, потом вписать её в декларацию. Шифрование заработало до подачи уведомления — и в день подачи пункт «персональные данные хранятся в зашифрованном виде на уровне отдельных полей и блоков (AES-256-GCM; ключ формируется из пароля, известного только оператору, и на носителях не хранится)» был не обещанием, а описанием работающего контура.
Если вы уже подали уведомление и пункта про шифрование там нет — реализовать его всё равно стоит: утечка из-за кражи ноутбука карается независимо от декларации, а техническая защита работает лучше любого штрафа.
Как сделать у себя: чек-лист
- Найдите, где лежат персональные данные: поля CRM, таблицы, заметки.
- Выберите модель: LUKS/BitLocker для диска целиком — если возможно; сейфовая для полей — если нужна скорость и выборочность.
- AES-256-GCM + ключ из пароля (PBKDF2 от 400 000 итераций). Пароль — в менеджере паролей, забыли = не восстановить.
- Проверьте скорость на полном объёме: замок дольше секунды — автозамок будет отключать.
- Автоматизируйте замыкание: сон и выключение — обязательные точки.
- Добавьте ручной замок в интерфейс — видимая кнопка приучает закрывать базу осознанно.
Частые вопросы
А если ноутбук украли с открытой базой? Это единственное окно риска сейфовой модели. Митигируется автозамком на сон: ноутбуки почти всегда засыпают раньше, чем их выносят из офиса. Полное шифрование диска закрывает и это окно — потому оно и золотой стандарт.
Зачем замок в интерфейсе, если есть автозамок? Уехать из офиса на день с открытым ноутбуком в рюкзаке (не уснувшим) — реальный сценарий. Кнопка превращает «закрыть базу» в привычку уровня «закрыть дверь».
Сервисы и облака не проще? Проще, пока чужой сервер не стал чужой проблемой: трансграничная передача, компрометация провайдера, регион хранения. Свой зашифрованный файл на своём ноутбуке — минимальная поверхность атаки.
Выводы
- Декларация РКН должна описывать факты: меру «шифрование» реализуйте до подачи уведомления — или не пишите её.
- Сейфовая модель (AES-256-GCM на уровне полей) даёт малому бизнесу защиту кражи ноутбука без цены полного шифрования диска: открытие базы за 0,3 секунды, автозамок на сон и выключение, замок в один клик.
- Скорость — не деталь, а условие: медленный замок отключают, быстрый — становится частью рабочего дня.
Защита персональных данных клиентов — часть той же работы, что сайты, интеграции и автоматизация: если хотите привести базу в порядок к уведомлению РКН или после него — разберём вашу ситуацию.
📞 +7 (906) 311-77-69 · ✉ hello@automata.sale · 💬 Telegram: @automatasale · 🌐 automata.sale
ИП Урядов Евгений Евгеньевич · ИНН 645112058391 · ОГРНИП 312645301900058 Работаем по России, Беларуси и Казахстану
Частые вопросы
Обязательно ли шифровать персональные данные по 152-ФЗ?
Прямого требования «шифруйте всё» в законе нет — ст. 19 требует мер по обеспечению безопасности, а их состав определяет оператор. Но если вы указали шифрование в уведомлении РКН, оно должно реально работать: расхождение декларации с фактами при проверке хуже, чем минимальный честный набор мер.
Чем шифрование полей в CRM лучше полного шифрования диска?
Ничем в плане безопасности — LUKS надёжнее. Это компромисс для случаев, когда полное шифрование диска неудобно: сейфовая модель шифрует только персональные данные, база открывается за секунду по паролю и закрывается автоматически. Служебные поля остаются доступными рабочим скриптам.
Что будет с базой, если украли ноутбук?
Если база закрыта (шифрована) — злоумышленник получит только шифротекст без имён и телефонов. Поэтому автозамок настроен на уход в сон и выключение: в остальных состояниях данные защищены. Открытая база в момент кражи — единственное окно риска.
Можно ли сделать автозапуск базы без ввода пароля?
Технически да, если хранить пароль на диске. Но это превращает шифрование в декорацию: украденный ноутбук достанется злоумышленнику вместе с паролем. Правильная схема — пароль один раз при входе в систему, дальше он живёт только в памяти процесса.
Сколько времени занимает шифрование клиентской базы?
При правильной реализации — доли секунды: на нашей базе из 900+ полей шифрование и расшифровка занимают около 0,3 секунды. Ключевая оптимизация — одна соль на прогон и кеш производных ключей вместо вывода ключа для каждого поля.
Как это связано с уведомлением оператора в РКН?
В уведомлении есть раздел мер по ст. 18.1 и 19 152-ФЗ. Шифрование и резервное копирование — типовые пункты этой декларации. Мы реализовали шифрование до подачи уведомления, чтобы каждая строчка соответствовала фактам.
Работаю удалённо — цены и условия для вашего города: