OpenNHP/opennhp
OpenNHP/opennhp has 13,950 GitHub stars and 2,481 forks. GitHot measured -2 stars in 24 hours. Last checked 2026-11-06 17:23 UTC. Last push 2026-11-04.
Make your infrastructure invisible to attackers. OpenNHP implements the Network-infrastructure Hiding Protocol (NHP): authenticate before connection, cryptographically. IETF draft.
实测星标增长
- 24小时
- -2
- 7天
- 更新延迟
- 15天
- 更新延迟
- 1个月
- 更新延迟
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.zh-cn.md
原文
让互联网对攻击者隐身
OpenNHP 将你的服务器、端口和域名从公共互联网上隐藏起来。在客户端用一个加密数据包证明身份之前,任何服务都不会响应——扫描器、机器人和 AI 驱动的攻击者将无从下手。
OpenNHP 是一个轻量级、基于加密技术的开源工具套件,为基础设施、应用和数据提供零信任安全保障。它是云安全联盟(CSA) *网络基础设施隐藏协议(NHP)规范*的参考实现,包含两项核心协议:
- 网络基础设施隐藏协议(NHP): 隐藏服务器端口、IP 地址和域名,防止应用和基础设施被未授权访问。
- 数据内容隐藏协议(DHP): 通过加密和机密计算保障数据安全与隐私,实现数据*"可用而不可见"*。
官方网站 · 愿景 · 在线演示 · 文档 · Discord
为什么选择 OpenNHP
当今的互联网是一片黑暗森林。攻击者——越来越多地借助大语言模型(LLM)通过自主漏洞利用(AVE)以机器速度进行扫描、指纹识别和漏洞利用——将所有可达的服务都视为攻击目标。Gartner 预测 AI 驱动的网络攻击将快速增长。传统防御仅在网络放行之后才对用户进行身份验证,使得暴露的端口、IP 和域名成为永久的攻击面。
在 AI 时代,可见性 = 脆弱性。
OpenNHP 颠覆了这一模式:验证之前不可见。 所有端口、IP 和主机名均置于默认拒绝的门之后。只有经过加密签名的"敲门"请求通过带外认证与授权之后,才会开放访问。攻击者无法利用他们发现不了的东西。
第三代网络隐藏协议
NHP 是"先隐藏服务"这一设计思路的下一代演进:
| 代际 | 协议 | 局限 |
|---|---|---|
| 1 | 端口敲门(Port Knocking) | 明文传输,易受重放攻击 |
| 2 | 单包授权(SPA) | 共享密钥、单向通信、通常仅隐藏端口、通常使用 C/C++ 实现 |
| 3 | NHP | 现代加密、带状态的双向通信、同时隐藏域名 + IP + 端口、无状态可水平扩展、内存安全的 Go 实现 |
NHP 与现有的 IAM、DNS、FIDO 和零信任策略引擎协同工作,而不是取代它们——它是对现有技术栈的扩展,而非分叉。
架构
OpenNHP 采用模块化设计,包含三个核心组件,灵感来自 NIST 零信任架构:

| 核心组件 | 职责 |
|---|---|
| NHP-Agent | 客户端,发送加密的"敲门"请求以获得访问权限 |
| NHP-Server | 认证并授权请求;独立部署,在架构上与受保护主机解耦 |
| NHP-AC | 访问控制器,管理受保护服务器上的防火墙规则 |
| 附加组件 | 职责 |
|---|---|
| NHP-Relay | HTTP 到 UDP 桥接,使浏览器代理能够通过 HTTPS 发送 NHP 敲门请求 |
| NHP-KGC | 基于身份加密(IBC)的密钥生成中心 |
协议流程
注册(每台设备一次)。 Agent 在本地生成自己的密钥对,然后登记公钥:
- Agent 请求一次性验证码(
NHP_OTP),Server 的认证插件将验证码发送给用户(例如通过邮件)。 - Agent 提交验证码和公钥(
NHP_REG),Server 将公钥与用户绑定并回复(NHP_RAK)。
私钥始终不离开设备。
敲门(每次访问)。
- Agent 向 Server 发送加密的敲门请求(
NHP_KNK)。 - Server 校验敲门请求,并向 AC 发送操作请求(
NHP_AOP)。 - AC 打开防火墙,并回复(
NHP_ART)给 Server。 - Server 向 Agent 返回带访问信息的确认(
NHP_ACK)。 - Agent 通过 AC 访问受保护资源。
浏览器无法直接发送 UDP 数据包,因此浏览器端 Agent 通过 HTTPS 连接 NHP-Relay,由 Relay 将每个数据包封装在经过认证的 NHP_RLY 报文中转发给 Server。
加密算法
OpenNHP 提供两种可互换的加密套件:
CIPHER_SCHEME_CURVE—— Curve25519 + AES-256-GCM + BLAKE2sCIPHER_SCHEME_GMSM—— SM2 + SM4-GCM + SM3
两者均基于 Noise 协议框架。基于身份的加密(IBC)模式通过密钥生成中心(KGC)提供。
更多协议细节、部署模型和加密设计,请参阅官方文档。
仓库结构
opennhp/
├── nhp/ # 核心协议库(Go 模块)
│ ├── core/ # 数据包处理、加密、Noise 协议、设备管理
│ ├── common/ # 共享类型与消息定义
│ ├── keystore/ # 私钥加密存储(静态加密)
│ ├── ebpf/ # eBPF/XDP 程序(AC 访问控制、Server 入站过滤)
│ ├── plugins/ # 插件处理接口
│ ├── utils/ log/ metrics/ audit/ etcd/
│ └── ...
├── endpoints/ # 守护进程与 SDK(Go 模块,依赖 nhp)
│ ├── agent/ # NHP-Agent 守护进程,以及 iOS/Android SDK(agent/iossdk)
│ ├── js-agent/ # 浏览器 JavaScript Agent SDK(经由 NHP-Relay)
│ ├── server/ # NHP-Server 守护进程
│ ├── ac/ # NHP-AC(访问控制器)守护进程
│ ├── relay/ # NHP-Relay 守护进程(HTTPS 到 UDP 的桥接)
│ ├── db/ # NHP-DB(DHP 的数据经纪人)
│ ├── kgc/ # NHP-KGC(密钥生成中心)
│ └── keystorecli/ # 所有守护进程共用的 `seal` / `unseal` 密钥子命令
├── examples/ # Server 认证插件与客户端 SDK 示例
├── demoapp/ # 使用 OpenNHP 保护登录的示例 Web 应用
├── docker/ # Docker Compose 全栈环境
└── docs/ # 文档站点(docs.opennhp.org)
快速开始
先决条件
- 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 环境中模拟完整的认证工作流。
注册 Agent
通过 OTP 流程将设备密钥登记到 Server。未提供的参数会以交互方式提示输入:
./nhp-agentd register --email [email protected] --asp-id <认证服务 ID> --res-id <资源 ID>
Agent 在本地生成密钥对,请求 Server 发送一次性验证码,输入验证码后即完成公钥注册。可使用 nhp-agentd seal 对私钥进行静态加密保存。
客户端、SDK 与在线演示
| 客户端 | 获取方式 |
|---|---|
| 原生 Agent 守护进程 | make agentd 构建 nhp-agentd |
| iOS / Android SDK | make iosagentsdk / make androidagentsdk |
| JavaScript(浏览器)SDK | endpoints/js-agent,经由 NHP-Relay 敲门 |
在浏览器中体验:
- agent.opennhp.org:使用 JavaScript SDK 向隐藏的服务器敲门
- reg.opennhp.org:体验设备注册流程(NHP-OTP → NHP-REG)
- demo.opennhp.org:登录受 OpenNHP 保护的 Web 应用
贡献
欢迎贡献代码!提交 Pull Request 前请先阅读 CONTRIBUTING.md。
注意: 所有提交必须使用已验证的 GPG 或 SSH 密钥签名。
git commit -S -m "your message"
安全
发现漏洞了吗?请遵循 SECURITY.md 中的负责任披露流程,而不是提交公开 issue。
赞助商
许可协议
基于 Apache 2.0 许可协议发布。
联系方式
- 邮箱:[email protected]
- Discord:加入我们的 Discord
- 官网:https://opennhp.org
探索相关项目
trimstray/the-book-of-secret-knowledge
汇集各类启发灵感的清单、手册、速查表、博客、技巧、单行命令、CLI/Web 工具等内容。
256,523 星标Hack-with-Github/Awesome-Hacking
面向黑客、渗透测试人员与安全研究人员的各类 Awesome 清单合集。
124,831 星标swisskyrepo/PayloadsAllTheThings
一份用于 Web 应用安全以及渗透测试/CTF 的实用 payload 与绕过方法列表。
82,444 星标caddyserver/caddy
快速、可扩展的跨平台 HTTP/1-2-3 Web 服务器,支持自动 HTTPS
78,857 星标