
opennhp v1.0.1
Легковесный, работающий на криптографии, набор инструментов с открытым исходным кодом, созданный для обеспечения безопасности по модели Zero Trust для инфраструктуры, приложений и данных в мире, управляемом ИИ.

OpenNHP: Открытый набор инструментов Zero Trust Security
OpenNHP — это лёгкий, основанный на криптографии открытый набор инструментов, реализующий безопасность с нулевым доверием (Zero Trust) для инфраструктуры, приложений и данных. Он является эталонной реализацией спецификации Cloud Security Alliance (CSA) Network-infrastructure Hiding Protocol (NHP) и включает два основных протокола:
- Network-infrastructure Hiding Protocol (NHP): Скрывает порты серверов, IP-адреса и доменные имена для защиты приложений и инфраструктуры от несанкционированного доступа.
- Data-content Hiding Protocol (DHP): Обеспечивает безопасность и конфиденциальность данных с помощью шифрования и конфиденциальных вычислений, делая данные «используемыми, но невидимыми».
Веб-сайт · Видение · Живая демонстрация · Документация · Discord
Почему OpenNHP
Сегодняшний интернет — это тёмный лес. Злоумышленники, всё чаще поддерживаемые LLM, которые сканируют, снимают отпечатки и эксплуатируют на машинной скорости с помощью Автономной эксплуатации уязвимостей, рассматривают каждый доступный сервис как цель. Gartner прогнозирует стремительный рост кибератак с использованием ИИ. Традиционные средства защиты аутентифицируют пользователей после того, как сеть впускает их, оставляя открытые порты, IP и домены в качестве постоянной поверхности атаки.
В эпоху ИИ ВИДИМОСТЬ = УЯЗВИМОСТЬ.
OpenNHP переворачивает эту модель: невидим, пока не проверен. Каждый порт, IP и имя хоста находятся за шлюзом по умолчанию запрещающим (default-deny). Доступ предоставляется только после того, как криптографически подписанный «стук» (knock) аутентифицирован и авторизован внеполосным способом. Атакующие не могут эксплуатировать то, что не могут обнаружить.
Протокол скрытия сети третьего поколения
NHP — это следующий шаг в линейке конструкций «сначала спрячь сервис»:
| Поколение | Протокол | Ограничения |
|---|---|---|
| 1 | Port Knocking | Открытый текст, подвержен повторному воспроизведению |
| 2 | Single Packet Authorization (SPA) | Общие секреты, однонаправленный, обычно скрывает только порты, обычно C/C++ |
| 3 | NHP | Современная криптография, двунаправленный с состоянием, скрывает домен + IP + порты, без сохранения состояния (stateless) и горизонтально масштабируемый, безопасный по памяти Go |
NHP встраивается вместе с существующими механизмами IAM, DNS, FIDO и политик Zero Trust, не заменяя их — он расширяет ваш стек, а не ответвляет его.
Архитектура
OpenNHP имеет модульную конструкцию с тремя основными компонентами, вдохновлённую Архитектурой нулевого доверия NIST:

| Основной компонент | Роль |
|---|---|
| NHP-Agent | Клиент, отправляющий зашифрованные запросы-стуки (knock) для получения доступа |
| NHP-Server | Аутентифицирует и авторизует запросы; работает отдельно и архитектурно отделён от защищаемого хоста |
| NHP-AC | Контроллер доступа, управляющий правилами межсетевого экрана на защищаемом сервере |
| Дополнительный компонент | Роль |
|---|---|
| NHP-Relay | Мост HTTP-to-UDP, позволяющий агентам на базе браузера отправлять NHP-стуки через HTTPS |
| NHP-KGC | Центр генерации ключей для криптографии на основе идентичности (IBC) |
Поток протокола
- Агент отправляет зашифрованный стук (
NHP_KNK) на Сервер. - Сервер проверяет стук и отправляет запрос на операцию (
NHP_AOP) на AC. - AC открывает межсетевой экран и отправляет ответ (
NHP_ART) на Сервер. - Сервер возвращает подтверждение (
NHP_ACK) с информацией о доступе Агенту. - Агент достигает защищённого ресурса через AC.
Криптография
OpenNHP поставляется с двумя взаимозаменяемыми наборами шифров:
CIPHER_SCHEME_CURVE— Curve25519 + AES-256-GCM + BLAKE2sCIPHER_SCHEME_GMSM— SM2 + SM4-GCM + SM3
Оба работают на основе Noise Protocol Framework. Режим криптографии на основе идентичности (IBC) доступен через Центр генерации ключей (KGC).
Подробнее о протоколе, моделях развёртывания и криптографической конструкции см. в документации.
Структура репозитория
opennhp/
├── nhp/ # Основная библиотека протоколов (модуль Go)
│ ├── core/ # Обработка пакетов, криптография, Noise Protocol, управление устройствами
│ ├── common/ # Общие типы и определения сообщений
│ ├── utils/ # Вспомогательные функции
│ ├── plugins/ # Интерфейсы обработчиков плагинов
│ ├── log/ # Инфраструктура журналирования
│ └── etcd/ # Поддержка распределённой конфигурации
└── endpoints/ # Реализации демонов (модуль Go, зависит от nhp)
├── agent/ # Демон NHP-Agent
├── server/ # Демон NHP-Server
├── ac/ # Демон NHP-AC (контроллер доступа)
├── db/ # NHP-DB (Брокер данных для DHP)
├── kgc/ # NHP-KGC (Центр генерации ключей)
└── relay/ # Демон NHP-Relay
Быстрый старт
Предварительные требования
- Go 1.25.6+
make- Docker и Docker Compose (для полнофункциональной демонстрации)
Сборка
# Собрать все компоненты
make
# Собрать отдельные демоны
make agentd # NHP-Agent
make serverd # NHP-Server
make acd # NHP-AC
make db # NHP-DB
make relayd # NHP-Relay
make kgc # NHP-KGC
Тестирование
cd nhp && go test ./...
cd endpoints && go test ./...
Запуск с Docker
cd docker && docker-compose up --build
Следуйте руководству по быстрому старту, чтобы смоделировать полный процесс аутентификации в среде Docker.
Вклад
Мы приветствуем вклад! Пожалуйста, прочитайте CONTRIBUTING.md перед отправкой pull request.
Примечание: Все коммиты должны быть подписаны проверенным ключом GPG или SSH.
git commit -S -m "ваше сообщение"
Безопасность
Нашли уязвимость? Пожалуйста, следуйте процессу ответственного раскрытия в SECURITY.md, а не открывайте публичный issue.
Спонсоры
Лицензия
Выпущено под лицензией Apache 2.0.
Контакты
- Эл. почта: [email protected]
- Discord: Присоединяйтесь к нашему Discord
- Веб-сайт: https://opennhp.org