Skip to content
项目

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

原文

en zh-cn zh-tw de ja fr es id

OpenNHP Logo

让互联网对攻击者隐身

Build Release License codecov Ask DeepWiki

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 零信任架构:

OpenNHP architecture

核心组件 职责
NHP-Agent 客户端,发送加密的"敲门"请求以获得访问权限
NHP-Server 认证并授权请求;独立部署,在架构上与受保护主机解耦
NHP-AC 访问控制器,管理受保护服务器上的防火墙规则
附加组件 职责
NHP-Relay HTTP 到 UDP 桥接,使浏览器代理能够通过 HTTPS 发送 NHP 敲门请求
NHP-KGC 基于身份加密(IBC)的密钥生成中心

协议流程

注册(每台设备一次)。 Agent 在本地生成自己的密钥对,然后登记公钥:

  1. Agent 请求一次性验证码(NHP_OTP),Server 的认证插件将验证码发送给用户(例如通过邮件)。
  2. Agent 提交验证码和公钥(NHP_REG),Server 将公钥与用户绑定并回复(NHP_RAK)。

私钥始终不离开设备。

敲门(每次访问)。

  1. Agent 向 Server 发送加密的敲门请求(NHP_KNK)。
  2. Server 校验敲门请求,并向 AC 发送操作请求(NHP_AOP)。
  3. AC 打开防火墙,并回复(NHP_ART)给 Server。
  4. Server 向 Agent 返回带访问信息的确认(NHP_ACK)。
  5. Agent 通过 AC 访问受保护资源。

浏览器无法直接发送 UDP 数据包,因此浏览器端 Agent 通过 HTTPS 连接 NHP-Relay,由 Relay 将每个数据包封装在经过认证的 NHP_RLY 报文中转发给 Server。

加密算法

OpenNHP 提供两种可互换的加密套件:

  • CIPHER_SCHEME_CURVE —— Curve25519 + AES-256-GCM + BLAKE2s
  • CIPHER_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 敲门

在浏览器中体验:


贡献

欢迎贡献代码!提交 Pull Request 前请先阅读 CONTRIBUTING.md。

注意: 所有提交必须使用已验证的 GPG 或 SSH 密钥签名。

git commit -S -m "your message"

安全

发现漏洞了吗?请遵循 SECURITY.md 中的负责任披露流程,而不是提交公开 issue。


赞助商

LayerV.ai logo    Tencent Cloud logo

许可协议

基于 Apache 2.0 许可协议发布。

联系方式

探索相关项目