Защита данных на Linux с помощью Tomb

Зачем использовать Tomb
Шифрование — базовая практика безопасности. Но если вы пользуетесь общими машинами, ноутбуком друга или храните особо чувствительные файлы, системного шифрования диска может быть недостаточно. Tomb даёт простую модель: один файл-контейнер (tomb), отдельный файл-ключ и пароль. Без обеих частей содержимое недоступно.
Ключевые преимущества:
- Минималистичный дизайн и относительно небольшой объём кода.
- Поощряет разделение хранилища и ключей (физическая изоляция).
- Опирается на стандартные, проверенные реализации ядра Linux (cryptsetup/LUKS).
Важно: Tomb использует возможности ядра Linux (работает с cryptsetup/LUKS), которые присутствуют в ядрах с версий 2.6 и выше.
Краткое определение
Tomb — это файл-контейнер, который монтируется как файловая система только после предоставления соответствующего ключа и пароля. Когда контейнер закрыт — его содержимое недоступно; когда открыт — ведёт себя как обычная папка.
Факт-бокс
- Технология: LUKS/cryptsetup + loopback-устройство.
- Требования: совместимый Linux, cryptsetup и вспомогательные утилиты.
- Поддержка ядра: с 2.6 и выше.
Установка Tomb
Перед установкой убедитесь, что у вас установлены зависимости. Типичный набор:
- zsh
- sudo
- gnupg
- cryptsetup
- pinentry-curses
Если чего-то нет — установите через менеджер пакетов вашей системы (apt, dnf, pacman и т. п.). Пример для Debian/Ubuntu-подобных систем:
sudo apt update
sudo apt install zsh sudo gnupg cryptsetup pinentry-cursesДальше скачайте и установите Tomb (пример для версии 2.5):
wget https://files.dyne.org/tomb/Tomb-2.5.tar.gz
tar xvfz Tomb-2.5.tar.gz
cd Tomb-2.5
sudo make installПримечание: команда make install должна запускаться из распакованной директории; адаптируйте версию архива под актуальную.
Создание tomb
Команды Tomb имеют тематические имена: dig, bury, exhume и т. д. Список доступных команд можно посмотреть в man-странице:
man tombЧтобы создать новый tomb:
tomb dig -s 200 secrets.tombЭто создаст файл-контейнер объёмом 200 МБ. Размер можно подобрать под ваши нужды; tomb можно увеличивать командой resize, но уменьшить нельзя.
Создание ключа и блокировка tomb
Генерация файла-ключа:
tomb forge secrets.tomb.keyЕсли система обнаружит активную swap-раздел, Tomb предупредит: содержимое оперативной памяти может быть записано в swap, и ключи/пароли могут оказаться в дампе. Tomb рекомендует временно отключать swap при создании/использовании ключей.
Проверить активные swap-разделы:
sudo swapon -sОтключение и повторное включение swap:
sudo swapoff -a
sudo swapon -aЕсли вы готовы проигнорировать предупреждение, можно принудительно сгенерировать ключ:
tomb forge secrets.tomb.key -fГенерация ключа может занять время; утилита может просить вас совершать случайные движения мышью для ускорения накопления энтропии. Вас попросят задать и подтвердить пароль для файла-ключа.
Когда ключ готов, заблокируйте tomb:
tomb lock secrets.tomb -k secrets.tomb.keyОткрытие и использование tomb
Открыть tomb и смонтировать как файловую систему:
tomb open -k secrets.tomb.key secrets.tombВас попросят ввести пароль для файла-ключа. После успешной аутентификации tomb будет смонтирован и доступен в каталоге mountpoint (по умолчанию — /media/tomb/* или как настроено в конфиге).
Чтобы закрыть tomb:
tomb close [<имя-tomb> | all]Команда close не позволит закрыть container, если файлы используются процессами. Если нужно немедленно закрыть и выкинуть все томбы независимо от использования, действует команда:
tomb slam allВажно: slam может привести к потере несохранённых данных.
Сокрытие ключей и стеганография
Хранение tomb и файла-ключа на одной машине снижает уровень безопасности. Один из приёмов — скрыть ключ в другом файле, например в JPEG, с помощью стеганографии. Для этого можно использовать steghide.
Установка steghide (пример для Debian/Ubuntu):
sudo apt install steghideСкрыть ключ в изображении:
tomb bury -k secrets.tomb.key Picture-name.jpgЭто поместит ключ в файл-изображение; затем исходный файл-ключ можно удалить. Извлечь ключ обратно:
tomb exhume -k tempsecret.key Picture-name.jpgСоветы по сокрытию:
- Размещайте закопанный (bury) ключ среди множества похожих файлов.
- Не оставляйте tomb и ключ в корне диска: используйте маскирующие имена.
- Помните: стеганография увеличивает безопасность путём сокрытия, но не заменяет криптографическую стойкость.
Когда Tomb может не подойти
- Если требуется централизованное управление ключами для большого количества устройств, лучше подходят HSM/системы управления ключами.
- Для полного дискового шифрования всего устройства (включая swap и /boot) удобнее использовать LUKS на уровне диска или VeraCrypt для кроссплатформенности.
- На устройствах с малым запасом энтропии генерация ключей может быть медленной.
Альтернативные подходы и сравнение
- LUKS/cryptsetup: стандарт для шифрования дисков; хорош для полного шифрования диска и служб, но не даёт простого механизма «отдельный файл-ключ + сокрытие в JPEG». Подходит для серверов и ноутбуков.
- VeraCrypt: кроссплатформенное решение, популярно на Windows/macOS; удобно для совместного использования между ОС.
- eCryptfs: шифрование на уровне файловой системы (иногда устаревающее решение).
Короткое сравнение (справочно):
- Гибкость: Tomb — высокий (файловые контейнеры и ключи). LUKS — высокий для дисков. VeraCrypt — удобство на разных ОС.
- Уровень управления ключами: LUKS и HSM дают продвинутые возможности управления; Tomb — локальный файл-ключ.
- Маскирование ключей: Tomb поддерживает bury/exhume, другие решения — нет.
Практическое руководство / SOP: быстрый плейбук
- Проверка зависимостей и обновление системы.
- Создать tomb: tomb dig -s
name.tomb - Сгенерировать ключ: tomb forge name.tomb.key
- Отключить swap перед генерированием/работой с ключами: sudo swapoff -a
- Заблокировать: tomb lock name.tomb -k name.tomb.key
- Переместить/маскировать ключ (например, bury в JPG) или вынести на внешний носитель.
- Открывать по необходимости: tomb open -k name.tomb.key name.tomb
- Закрывать: tomb close name или tomb slam all в экстренных случаях.
- После работы восстановить swap: sudo swapon -a
Критерии приёмки:
- Контейнер открывается только при наличии правильного файла-ключа и пароля.
- Файлы внутри tomb недоступны, когда tomb закрыт.
- Файлы-ключи, если нужно, могут быть извлечены из стеганографического контейнера.
Роли и краткие чеклисты
Администратор:
- Установить зависимости и Tomb.
- Настроить директорию хранения tomb’ов.
- Документировать процедуру восстановления и резервного копирования ключей.
Конечный пользователь:
- Создать tomb и ключ по инструкции.
- Никогда не хранить ключ и tomb в одном каталоге.
- Использовать slam только при крайней необходимости.
Офисный пользователь (без root-доступа):
- Использовать GUI-инструменты из extras (если доступны) или проводить операции под контролем администратора.
- Хранить ключи на съёмных носителях при совместном использовании ПК.
Матрица рисков и смягчающие меры
- Утечка ключа на диске: минимизация — хранить ключи отдельно, использовать стеганографию или защищённый носитель.
- Swap содержит фрагменты ключей/паролей: при операциях отключать swap или шифровать swap.
- Несанкционированный доступ к машине: применять полный диск шифрование + BIOS/UEFI пароль.
- Потеря пароля к ключу: документация и безопасное резервное копирование; без пароля доступ к данным невозможен.
Меры усиления безопасности
- Отключайте swap при работе с ключами и tomb.
- Используйте сложные пароли и храните их в менеджере паролей.
- Храните резервные копии важных ключей в безопасном хранилище (например, аппаратный токен, безопасный сейф).
- Ограничьте доступ к папкам с tomb через файловые права и SELinux/AppArmor политики.
Критерии тестирования и приёмки
- Тест 1: Создать tomb, положить файл, закрыть, попытаться прочитать — должна быть ошибка доступа.
- Тест 2: Открыть tomb с корректным ключом и паролем — файлы доступны и неизменны.
- Тест 3: Спрятать ключ в изображении, удалить ключ-файл, извлечь ключ и открыть tomb.
- Тест 4: Попытаться close при открытом файле — close должен отказать; slam закрывает, но может привести к потере данных.
Краткий глоссарий
- tomb: файл-контейнер с зашифрованной файловой системой.
- key (файл-ключ): двоичный файл, используемый вместе с паролем для расшифровки tomb.
- bury/exhume: команды Tomb для скрытия и извлечения ключей (стеганография).
- slam: принудительное закрытие tomb, даже если он используется.
Практические советы по именованию и сокрытию
- Выбирайте нейтральные имена для файлов-изображений и tomb, чтобы они не выделялись.
- Храните копию ключа вне локальной машины, если доступ критичен.
- Не забывайте о метаданных: EXIF и другие данные картинок могут выдавать следы; для стеганографии выбирайте файлы с достаточным объёмом данных.
Заключение
Tomb — хороший инструмент для тех случаев, когда нужно простое и переносимое решение для хранения особо чувствительных данных. Он не предназначен для замены корпоративных систем управления ключами или HSM, но отлично подходит для личного использования и сценариев, где важна физическая изоляция ключа от контейнера. Следуйте рекомендациям по отключению swap, хранению ключей отдельно и резервному копированию, чтобы минимизировать риски.
Памятка: Keep It Secret, Keep It Safe — храните ключи и пароли в надёжном месте.
Image Credit: Photoloide/ Depositphotos
Похожие материалы
Установка Linux на Mac с Apple Silicon
Онлайн-книжный клуб: как найти идеальный в 2025
Световые уведомления на Android — Samsung и Pixel
Устранение ошибок загрузчика GRUB
Как посмотреть старые плейлисты Spotify Wrapped