Безопасность является фундаментальным аспектом проекта Phantom. Наша главная цель — обеспечить конфиденциальность, целостность и аутентичность коммуникаций пользователей. Мы серьезно относимся к безопасности нашего кода и ценим вклад независимых исследователей безопасности.
Эта политика описывает процесс ответственного раскрытия информации об уязвимостях (Responsible Disclosure), а также предоставляет обзор архитектуры безопасности проекта.
Мы предоставляем обновления безопасности только для последней стабильной версии, выпущенной в main ветке. Мы настоятельно рекомендуем всем пользователям использовать самую последнюю версию Phantom.
| Версия | Поддержка безопасности |
|---|---|
Последний main commit |
✅ Да |
| Все предыдущие версии | ❌ Нет |
Мы призываем всех, кто обнаружил потенциальную уязвимость в безопасности Phantom, немедленно и ответственно сообщить нам об этом.
Пожалуйста, НЕ создавайте публичные GitHub Issues для сообщения об уязвимостях.
Вместо этого, пожалуйста, отправьте нам электронное письмо на адрес security@snaart.com.
Чтобы помочь нам быстрее понять и устранить проблему, пожалуйста, включите в ваше сообщение следующую информацию:
- Тип уязвимости: Например, "Удаленное выполнение кода (RCE)", "Межсайтовый скриптинг (XSS)", "Обход аутентификации", "Слабость в криптографическом протоколе" и т.д.
- Подробное описание: Четкое описание уязвимости, включая шаги для ее воспроизведения (Proof-of-Concept).
- Затронутые компоненты: Укажите, какая часть проекта затронута (например,
phantomcore,cmd/daemon, P2P-протокол). - Потенциальное воздействие: Ваша оценка того, как эта уязвимость может быть использована злоумышленником.
- Конфигурация: Любая информация о среде, в которой была обнаружена уязвимость (ОС, версия Go, зависимости).
- Подтверждение: Мы стремимся подтвердить получение вашего отчета в течение 48 часов.
- Анализ: Наша команда проанализирует уязвимость, определит ее серьезность (используя CVSS) и разработает план по ее устранению. Мы можем связаться с вами для получения дополнительной информации.
- Исправление: Мы разработаем патч для устранения уязвимости.
- Раскрытие: После того как исправление будет готово и протестировано, мы выпустим новую версию. Мы скоординируем с вами дату публичного раскрытия информации об уязвимости. Мы будем рады упомянуть вас в списке благодарностей (security acknowledgments), если вы этого хотите.
Мы просим вас соблюдать эмбарго и не разглашать информацию об уязвимости до нашего совместного публичного объявления.
Phantom построен на нескольких ключевых принципах безопасности:
- Протокол: Мы используем протокол
Double Ratchet, вдохновленный Signal Protocol, для обеспечения совершенной прямой секретности (Perfect Forward Secrecy) и пост-разрывной секретности (Post-Compromise Security). - Гибридная криптография: Мы сочетаем классическую криптографию на эллиптических кривых (
X25519) с постквантовыми алгоритмами (Kyber-1024для KEM иDilithium5для подписей), чтобы обеспечить защиту от атак как со стороны классических, так и квантовых компьютеров. - Аутентификация: Все сообщения аутентифицируются с помощью
AEAD(AES-GCM), что предотвращает их подделку.
- Шифрование на диске: Все приватные ключи и конфиденциальные данные шифруются на диске с использованием
ChaCha20-Poly1305. - Вывод ключа: Ключ для шифрования базы данных генерируется из PIN-кода пользователя с помощью
Argon2id, что обеспечивает защиту от брутфорс-атак. - Защита от Timing Attacks: При проверке PIN-кода используется функция
subtle.ConstantTimeCompareдля предотвращения атак по времени. - Очистка памяти (
Zeroize): Все приватные ключи удаляются из оперативной памяти, как только они больше не нужны, чтобы минимизировать их время жизни.
- Идентификация узлов: Каждый узел в сети идентифицируется по криптографическому ключу.
- Защита от Replay-атак: Протокол включает в себя временные метки и одноразовые номера (nonce) для предотвращения повторной отправки перехваченных сообщений.
Следующие проблемы в настоящее время считаются вне области действия нашей программы безопасности:
- Уязвимости, связанные с физическим доступом к разблокированному устройству.
- Атаки типа "отказ в обслуживании" (DoS), не приводящие к компрометации данных.
- Социальная инженерия и фишинг.
- Уязвимости в сторонних зависимостях (пожалуйста, сообщайте о них напрямую разработчикам соответствующих библиотек, но мы будем благодарны, если вы уведомите и нас).
Спасибо за ваш вклад в безопасность Phantom!