README.zh-tw.md
OpenNHP 是一套輕量級、以密碼學為基礎的開源工具套件,為基礎架構、應用程式與資料提供零信任安全保障。它是雲端安全聯盟(CSA) *網路基礎架構隱藏協定(NHP)規範*的參考實作,包含兩項核心協定:
官方網站 · 願景 · 線上展示 · 文件 · Discord
當今的網際網路是一座黑暗森林。攻擊者——日益仰賴大型語言模型(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)的金鑰產生中心 |
NHP_KNK)。NHP_AOP)。NHP_ART)給 Server。NHP_ACK)。OpenNHP 提供兩套可互換的加密套件:
CIPHER_SCHEME_CURVE —— Curve25519 + AES-256-GCM + BLAKE2sCIPHER_SCHEME_GMSM —— SM2 + SM4-GCM + SM3兩者皆以 Noise 協定框架為基礎。以身分為基礎的密碼學(IBC)模式透過金鑰產生中心(KGC)提供。
更多協定細節、部署模型與密碼學設計,請參閱官方文件。
opennhp/
├── nhp/ # 核心協定函式庫(Go 模組)
│ ├── core/ # 封包處理、密碼學、Noise 協定、裝置管理
│ ├── 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 背景程式
make# 建置所有元件
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 ./...
cd docker && docker-compose up --build
請依循快速入門教學,在 Docker 環境中模擬完整的認證工作流程。
歡迎貢獻!送出 Pull Request 前請先閱讀 CONTRIBUTING.md。
注意: 所有 commit 必須以已驗證的 GPG 或 SSH 金鑰簽署。
git commit -S -m "your message"
發現漏洞了嗎?請依循 SECURITY.md 所述的負責任揭露流程,請勿直接提交公開 issue。
依 Apache 2.0 授權條款發布。