MCPcopy
hub / github.com/OpenNHP/opennhp

github.com/OpenNHP/opennhp @v1.0.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.0.0 ↗
1,632 symbols 4,693 edges 183 files 401 documented · 25%
README

en zh-cn zh-tw de ja fr es

OpenNHP Logo

OpenNHP:オープンソースのゼロトラスト・セキュリティ・ツールキット

Build Release License codecov Ask DeepWiki

OpenNHP は軽量かつ暗号技術を基盤としたオープンソースのツールキットであり、インフラ・アプリケーション・データに対してゼロトラスト・セキュリティを実現します。クラウドセキュリティアライアンス(CSA)Network-infrastructure Hiding Protocol(NHP)仕様 のリファレンス実装であり、次の 2 つのコアプロトコルを備えています:

  • Network-infrastructure Hiding Protocol(NHP): サーバーのポート、IP アドレス、ドメイン名を隠蔽し、アプリケーションやインフラを不正アクセスから保護します。
  • Data-content Hiding Protocol(DHP): 暗号化とコンフィデンシャル・コンピューティングによりデータのセキュリティとプライバシーを確保し、データを「使えるが見えない」状態にします。

ウェブサイト · ビジョン · ライブデモ · ドキュメント · Discord


なぜ OpenNHP か

現代のインターネットは暗黒森林です。攻撃者は—— LLM の力を得て Autonomous Vulnerability Exploitation により機械的なスピードでスキャン、フィンガープリンティング、エクスプロイトを実行し——到達可能なすべてのサービスを標的とみなします。Gartner は AI 駆動型サイバー攻撃が急増すると予測しています。従来の防御策はネットワークにユーザーを通した に認証を行うため、露出したポート、IP、ドメインは永続的な攻撃面となり続けます。

AI 時代において、可視性 = 脆弱性。

OpenNHP はこのモデルを反転させます:信頼されるまで不可視。すべてのポート、IP、ホスト名はデフォルト拒否のゲートの背後に置かれます。アクセスが許可されるのは、暗号署名された「ノック」がアウトオブバンドで認証・認可された後に限られます。攻撃者は発見できないものを悪用できません。

第 3 世代のネットワーク隠蔽プロトコル

NHP は「まずサービスを隠す」という設計思想の次なる一歩です:

世代 プロトコル 制限事項
1 ポートノッキング(Port Knocking) 平文、リプレイ攻撃に弱い
2 Single Packet Authorization(SPA) 共有秘密、一方向通信、通常はポートのみを隠蔽、多くが C/C++ 実装
3 NHP 現代的な暗号、ステータス付きの双方向通信、ドメイン + IP + ポートを隠蔽、ステートレスで水平スケール可能、メモリ安全な Go

NHP は既存の IAM、DNS、FIDO、ゼロトラスト・ポリシーエンジンを置き換えるのではなく、それらと並んで動作します——スタックをフォークせず拡張します。


アーキテクチャ

OpenNHP は NIST ゼロトラスト・アーキテクチャ を参考に、3 つのコアコンポーネントから成るモジュラー設計を採用しています:

OpenNHP architecture

コアコンポーネント 役割
NHP-Agent 暗号化された「ノック」リクエストを送信し、アクセスを得るクライアント
NHP-Server リクエストを認証・認可。独立して稼働し、保護対象ホストとアーキテクチャ上分離されている
NHP-AC 保護対象サーバーのファイアウォール・ルールを管理するアクセス・コントローラ
アドオンコンポーネント 役割
NHP-Relay ブラウザベースのエージェントが HTTPS 経由で NHP ノックを送信できるようにする HTTP-UDP ブリッジ
NHP-KGC Identity-Based Cryptography(IBC)用の鍵生成センター

プロトコル・フロー

  1. Agent が暗号化されたノック(NHP_KNK)を Server に送信する。
  2. Server がノックを検証し、操作リクエスト(NHP_AOP)を AC に送る。
  3. AC がファイアウォールを開き、Server に応答(NHP_ART)する。
  4. Server が Agent にアクセス情報を含む確認応答(NHP_ACK)を返す。
  5. Agent は AC を通して保護対象リソースに到達する。

暗号方式

OpenNHP は 2 つの互換可能な暗号スイートを提供します:

  • CIPHER_SCHEME_CURVE —— Curve25519 + AES-256-GCM + BLAKE2s
  • CIPHER_SCHEME_GMSM —— SM2 + SM4-GCM + SM3

いずれも Noise Protocol Framework に基づきます。Identity-Based Cryptography(IBC)モードは Key Generation Center(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(Key Generation Center)
    └── 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 環境で完全な認証ワークフローをシミュレートしてください。


コントリビューション

コントリビューションを歓迎します! Pull Request を送る前に CONTRIBUTING.md をご一読ください。

注意: すべてのコミットは検証済みの GPG または SSH キーで署名されている必要があります。

git commit -S -m "your message"

セキュリティ

脆弱性を発見した場合は、公開の issue を開くのではなく、SECURITY.md に記載された責任ある情報開示プロセスに従ってください。


スポンサー

LayerV.ai logo


ライセンス

Apache 2.0 ライセンス の下で公開されています。

お問い合わせ

Extension points exported contracts — how you extend this code

TokenEntry (Interface)
TokenEntry is an interface for token entries that have an expiration time. Both AccessEntry (AC) and ACTokenEntry (Serve [3 …
nhp/common/tokenstore.go
Transport (Interface)
Common transport interface [3 implementers]
endpoints/js-agent/src/NHPAgent.ts
Policy (Interface)
Policy interface implemented in Go, designed for interaction between host and a WebAssembly (WASM) virtual machine. That [2 …
nhp/core/wasm/policy/interface.go
SessionGetFunc (FuncType)
Session helper function types for plugin access to HTTP session. These bypass Go plugin type system limitations by using
nhp/plugins/serverpluginhandler.go
Curve (Interface)
(no doc) [2 implementers]
endpoints/kgc/curve/curve.go
OpennhpLibrary (Interface)
OpenNHP agent sdk interface @author haochangjiu @version JDK 8 @className OpennhpLibrary @date 2025/10/27
examples/client_sdk/desktop/java/OpennhpLibrary.java
INHPHeader (Interface)
(no doc) [2 implementers]
endpoints/js-agent/src/protocol/header.ts
DataKeyPairGenerator (Interface)
Data Key Pair generation interface - Support locally stored key generation by DB - Support KMS (Key Management Service) [2 …
nhp/core/ztdo/noise.go

Core symbols most depended-on inside this repo

Error
called by 598
nhp/core/device.go
String
called by 205
endpoints/kgc/kgc.go
Add
called by 147
endpoints/kgc/curve/curve.go
Close
called by 121
nhp/plugins/serverpluginhandler.go
ErrorCode
called by 96
nhp/core/device.go
Bytes
called by 70
nhp/core/packet.go
Write
called by 70
nhp/log/logger.go
log
called by 45
endpoints/js-agent/src/NHPAgent.ts

Shape

Method 785
Function 554
Struct 214
Interface 39
Class 20
TypeAlias 13
FuncType 6
Enum 1

Languages

Go85%
TypeScript14%
Java1%

Modules by API surface

nhp/core/ztdo/ztdo.go49 symbols
endpoints/agent/udpagent.go42 symbols
nhp/common/nhpmsg.go41 symbols
endpoints/server/udpserver.go41 symbols
nhp/core/peer.go36 symbols
nhp/core/packet.go35 symbols
nhp/utils/ebpf/ebpf.go33 symbols
nhp/plugins/serverpluginhandler.go33 symbols
endpoints/db/udpdevice.go32 symbols
nhp/core/verifier/csv/csv.go31 symbols
nhp/core/ztdo/noise.go30 symbols
nhp/core/device.go29 symbols

Dependencies from manifests, versioned

github.com/Azure/go-ansitermv0.0.0-2025010203350 · 1×
github.com/asaskevich/govalidatorv0.0.0-2023030114320 · 1×
github.com/blang/semverv3.5.1+incompatible · 1×
github.com/boombuler/barcodev1.0.1-0.20190219062 · 1×
github.com/bytedance/gopkgv0.1.3 · 1×
github.com/bytedance/sonicv1.15.0 · 1×
github.com/bytedance/sonic/loaderv0.5.0 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×
github.com/cloudwego/base64xv0.1.6 · 1×

For agents

$ claude mcp add opennhp \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact