Всю информацию человека можно разделить по степени важности, примерно так:
- системные бэкапы (важность 1/10);
- текущие рабочие файлы (3);
- личный архив: фотографии, видео (6);
- копии бумажных документов (8);
- секреты: ключи, пароли, кошельки (10/10).
Терять файлы всегда неприятно. Поэтому мы делаем резервные копии. Но степень параноидальности усилий по защите информации зависит от важности. Есть категория файлов, которую нельзя терять ни при каких обстоятельствах, даже в случае БП. Это наши главные секреты, то есть ключи, пароли и кошельки.
Как мы рассказывали в прошлой статье, холодные кошельки желательно продублировать на разных накопителях и хранить физически удалённо друг от друга, чтобы минимизировать риск потери в одном событии.
0. Защищённые флешки
Популярный вариант для хранения холодных криптокошельков — флешки с шифрованием типа Digital Bitbox, Trezor, Ledger и KeepKey. Они автоматически шифруют файлы и оснащены красивым дисплеем.
Такие флешки (леджеры, трезоры) обеспечивают дополнительную защиту криптокошелька. Здесь у нас добавляется как минимум один уровень защиты:
- пин-код для доступа к флешке;
Это вдобавок к стандартным:
- сид-фраза (восстановление доступа к средствам в случае потери кошелька);
- пароль (в дополнение к сид-фразе).
При этом у защищённых флешек есть несколько недостатков по сравнению с обычными:
- они дороже;
- их сложнее дублировать для надёжности;
- меньше объём хранимой информации;
- они привлекают внимание злоумышленников.
По последнему пункту. Например, на обычную потерянную флешку никто не обратит внимания. А вот когда на дороге валяется Trezor, то нашедший может обратиться к хакерам, которые подбирают пин-код за вознаграждение. И/или постарается найти владельца, который сразу становится потенциальной жертвой вымогательства. Если «леджер» нашли у человека в личных вещах, на связке ключей (например, во время обыска) — жди беды. Это лишние риски, которых можно избежать. Особенно в трудные времена, которые наступают сейчас.
Преимущества такой красивой флешки — скорее в удобстве и «статусности» в мирное время. Но на самом деле может получиться так, что человек жертвует своей безопасностью ради удобства.
По сути, продавцы таких товаров зарабатывают на страхе людей потерять кошелёк. Бизнес-модель чем-то похожа на продавцов антивирусных программ. Чем больше нагнать страху — тем выше продажи.
С другой стороны, обычная дешёвая флешка ни у кого не вызывает никаких подозрений. Чем она дешевле и грязнее, тем лучше.
Многое из вышесказанного относится к «менеджерам паролей», которые представляют собой удобный GUI для зашифрованного хранилища случайно сгенерированных символов (LastPass, BitWarden, 1Password, KeePass). Да, это удобно. Но генерацию случайных символов и шифрование можно выполнять самостоятельно с помощью специализированных инструментов. Как и в случае с защищёнными флешками, приходится искать компромисс между удобством, безопасностью и сложностью процедур, то есть жертвовать чем-то одним ради другого.
1. Шифрование
В реальности самая лучшая защита — это не какой-то волшебный гаджет, а банальная математика, которую мы проходили в школе. Невозможность разложить на множители произведение больших простых чисел. Уникальность координат пересечения прямой линии и эллиптической кривой. То есть современная криптография и шифрование.
Говорят, что всё лучшее в мире — бесплатно. Любовь, дружба, честность и др. Введение финансовых расчётов зачастую портит искренние отношения. То же правило действует для криптографических инструментов. Надёжные инструменты часто распространяются с открытым исходным кодом, хотя тут тоже бывают исключения. Вот некоторые программы для шифрования файлов и дисков под Linux и Windows:
- GnuPG
- VeraCrypt
- Cascade Encryptor
- WinSesame
- AutoKrypt
- Softwinter
- Invisible Secrets
- ccrypt, утилита командной строки
Берём секретные файлы — ключи, пароли, кошельки — шифруем их и закрываем надёжным паролем с максимальной энтропией.
Затем прячем под видом обычных фотографий/видео, чтобы никто не догадался о наличии секретов. Это стеганография — опциональный шаг для дополнительной защиты.
2. Стеганография + обфускация
Стеганография и обфускация — сокрытие зашифрованных файлов в массиве другой информации. Например, в видеофайлах или фотографиях.
В идеальной ситуации никто не сможет доказать факт существования скрытой информации, пока не узнает механизм стеганографии. Это как азбука Морзе в моргании человека на экране ТВ. Невозможно доказать, что там присутствует полезный сигнал, пока мы не узнаем схему кодирования, о которой человек с экрана заранее договорился с сообщником.
Предположим, что байты ваших секретных файлов записываются в разные пиксели видеокадров домашнего видеофильма, маскируясь под окружающие цвета. Например, каждый байт секретного файла можно кодировать путём добавления/вычитания небольших значений R, G, B из соседних пикселей. В первом кадре это может быть один пиксель, во втором кадре — другой и так далее. Можно вносить незначительные искажения в канал яркости, звуковую дорожку и другие медиаданные. В обычном контейнере MKV огромное количество мест, куда легко записать свою информацию совершенно незаметно.
Не зная алгоритма распределения данных в информационном контейнере, злоумышленник не сможет предположить скрытие там дополнительных данных. Более того, даже наличие такой идеи ничем не поможет злоумышленнику, потому что вариантов обфускации бесчисленное множество. Практически невозможно угадать конкретную схему и случайно выбранные коэффициенты. Даже в случае извлечения секретных данных их невозможно будет расшифровать без пароля, так что это двойная защита.
Для оптимальной защиты лучше придумать собственный вариант стеганографии/обфускации — и реализовать его своим уникальным способом. Наверняка у каждого человека есть много идей, в каких файлах лучше спрятать секретные биты, чтобы их никто не нашёл. Это не обязательно могут быть статические файлы. В качестве носителя можно использовать открытый интернет-трафик. Например, добавлять по несколько бит полезной информации в каждом пятом пакете с веб-камеры, примерно как делали авторы продвинутого трояна SolarWinds.
Некоторые инструменты стеганографии:
- Steghide (JPEG, BMP, WAV, AU).
- Exiftool (запись метаданных в заголовки файлов, поддерживается 196 форматов файлов).
- WavSteg (WAV).
- OpenStego (PNG).
- mp3stegz (MP3).
После шифрования и обфускации наступает следующий этап — резервное копирование.
3. Резервное копирование (разные континенты, разные облака)
Если файлы надёжно зашифрованы и защищены паролями, то можно относительно безопасно хранить их даже в публичных облаках типа Google Drive, Яндекс.Облако, Apple iCloud или неограниченное по размеру облачное хранилище Telegram (файлы до 2 ГБ).
Разумеется, с дополнительными мерами безопасности, включая стеганографию. То есть секретная информация хранится под видом видеофайлов или фотографий, растворившись среди бит медиаконтента.
Как мы писали в прошлый раз, при дублировании информации применяются обычные техники резервного копирования, когда каждый элемент резервирования уменьшает вероятность отказа узла в соответствии с формулой:
- где m — число резервных элементов (кратность резервирования);
- q_{i} — вероятность отказа элемента i;
- Q — вероятность отказа узла из n элементов (вероятность отказа всех элементов).
Каждый выбирает уровень надёжности в зависимости от своей параноидальности: от 99% до 99,(9)%.
Несколько стратегий дублирования, некоторые из которых можно сочетать друг с другом:
- Разные облака: на случай если один или несколько облачных хостингов выйдут из строя, обанкротятся, станут недоступны в вашей стране, удалят файлы по какой-то причине (зачастую хостинг имеет полное право удалять файлы пользователя, согласно ToS).
- Разные носители: SSD, флешки, CD, DVD и другие, с периодическим обновлением носителей, например, каждые 5–10 лет.
- Разные локации: схроны и закладки в разных городах, странах и континентах. Кто знает, куда судьба забросит вас или ваших наследников спустя столетия.
4. Разделение секрета
Последний уровень защиты файлов — схема разделения секрета Шамира. Она предусматривает разделение ключа на определённое количество фрагментов.
При составлении секрета мы можем разбить его на произвольное количество фрагментов (n) и установить минимальное количество фрагментов, которые собирают функциональный ключ (k). Например, n=4, k=3.
Схема разделения секрета удовлетворяет ряду условий, в том числе:
- Потеря нескольких фрагментов не влияет на сохранность информации.
- Злоумышленник не получает никакой информации от обладания одним фрагментом ключа или любым количеством фрагментов, меньше необходимого (k-1).
Улучшенный вариант — проверяемые схемы разделения секрета, такие как схема Фельдмана и схема Бенало. Они дополнительно защищены от атаки с подделкой фрагментов секрета. То есть алгоритм способен верифицировать подлинность любого фрагмента, что бывает полезно.
На практике в блокчейне можно использовать мультиподписи, то есть мультисиг-адреса. Это такие адреса, где для совершения транзакции требуется предъявить несколько ключей. Например, 2 из 3 или 3 из 5.
Поскольку ни один человек не является единоличным владельцем секрета, мультиподпись повышает уровень безопасности, защищая членов коллектива от захвата или смерти одного из них.
Dark Crystal
В качестве одного из практических вариантов разделения секрета можно упомянуть Dark Crystal. Это набор протоколов, библиотек и техник для безопасного управления секретными файлами, такими как ключи, кошельки и приватные подписи.
Dark Crystal создан для внедрения в сторонние программы и поддерживает любые транспортные протоколы. Разработаны справочные имплементации на Java, Javascript и Rust. Справочные имплементации реализованы на основе конвенций из криптографической библиотеки libsodium и библиотеки разделения секрета Шамира от Даана Шпренкля. В каждой имплементации есть список модулей, которые можно свободно использовать.
Корневой групповой ключ для надёжности разделяется на части (семья, друзья, единомышленники)
Один из модулей Dark Crystal — пиринговый мессенджер Briar, который работает в отсутствие интернета (Bluetooth, WiFi) и поддерживает мультиподпись с разделением секрета. Собственно, эти функции для него реализованы благодаря интеграции модулей Dark Crystal.
Организация социального бэкапа, выбор пользователей для хранения фрагментов секретного ключа. На правом скриншоте меню активации дистанционного удаления аккаунта
Протокол Dark Crystal Key Backup прошёл независимую аудиторскую проверку Include Security, см. итоговый отчёт по результатам проверки.
На фото вверху — процедура восстановления аккаунта и генерации нового ключа. Для инициации требуется сбор в одном месте пользователей, получивших от вас фрагменты секрета во время социального бэкапа. Это могут быть члены семьи, друзья или единомышленники, например, четыре из шести человек (фото из отчёта Dark Crystal — Briar Project Case Report).
Разделение ключа между родственниками позволяет сохранить ценные файлы, в том числе после смерти владельца. Кроме реализации воли умершего, у разделения ключей есть другие варианты применения. В научной статье с описанием Dark Crystal указаны следующие:
- Социальный бэкап.
- Дистанционное удаление секретов (в случае если товарищ арестован или похищен). Поддерживается в Briar.
- Коллективное управление (принятие решений, голосования, референдумы).
- Повторная генерация индивидуального ключа в случае потери, через коллективное голосование.
Процедура выдачи нового ключа
Заключение
Подведём итог. Надёжное хранение секретных файлов допускает несколько уровней защиты:
- Шифрование.
- Стеганография и обфускация (скрытие самого факта существования зашифрованных файлов).
- Дублирование на физических накопителях.
- Дублирование на разных хостингах.
- Разделение ключа.
Можно использовать отдельные уровни защиты и комбинировать их практически в любых сочетаниях, в зависимости от необходимой параноидальности в конкретной ситуации.