<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-opennhp-saag-nhp-00" category="info" submissionType="independent" number="0" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <link href="https://datatracker.ietf.org/doc/draft-opennhp-saag-nhp-00" rel="prev"/>
  <front>
    <title abbrev="NHP">Network-Infrastructure Hiding Protocol</title>
    <seriesInfo name="RFC" value="0"/>
    <author fullname="Benfeng Chen">
      <organization>OpenNHP</organization>
      <address>
        <email>benfeng@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="January" day="01"/>
    <area>Security</area>
    <workgroup>saag</workgroup>
    <keyword>zero trust</keyword>
    <keyword>session layer</keyword>
    <keyword>network obfuscation</keyword>
    <keyword>SDP</keyword>
    <abstract>
      <?line 66?>

<t>The Network-Infrastructure Hiding Protocol (NHP) is a cryptography-based session-layer protocol designed to operationalize Zero Trust principles by concealing protected network resources from unauthorized entities. NHP enforces authentication-before-connect access control, rendering IP addresses, ports, and domain names invisible to unauthorized users. This document defines the protocol architecture, cryptographic framework, message formats, and workflow to enable independent implementation of NHP. It represents the third generation of network hiding technology—evolving from first-generation port knocking to second-generation Single-Packet Authorization (SPA) and now to NHP with advanced asymmetric cryptography, mutual authentication, and scalability for modern threats. This specification also provides guidance for integration with Software-Defined Perimeter (SDP), DNS, FIDO, and Zero Trust policy engines.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://OpenNHP.github.io/ietf-rfc-nhp/draft-opennhp-saag-nhp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-opennhp-saag-nhp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SAAG Working Group mailing list (<eref target="mailto:saag@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/saag/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/saag/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/OpenNHP/ietf-rfc-nhp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Since its inception in the 1970s, the TCP/IP networking model has prioritized openness and interoperability, laying the foundation for the modern Internet. However, this design philosophy also exposes systems to reconnaissance and attack. As Vint Cerf, who personally designed many of these components, stated, "We didn't focus on how you could wreck this system intentionally."</t>
      <t>Today, the cyber threat landscape has been dramatically reshaped by the rise of AI-driven attacks, which bring unprecedented speed and scale to vulnerability discovery and exploitation. Automated tools continuously scan the global network space, identifying weaknesses in real-time. Large Language Models (LLMs) can now autonomously exploit one-day vulnerabilities, and AI systems can generate working exploits for published CVEs in minutes. As a result, the Internet is evolving into a "Dark Forest," where <strong>visibility equates to vulnerability</strong>. In such an environment, any exposed service becomes an immediate target.</t>
      <t>The Zero Trust model, which mandates continuous verification and eliminates implicit trust, has emerged as a modern approach to cybersecurity. Within this context, the Network-Infrastructure Hiding Protocol (NHP) offers a new architectural element: authenticated-before-connect access at the session layer.</t>
      <t>NHP builds upon foundational work in the Cloud Security Alliance's Software-Defined Perimeter (SDP) and Single-Packet Authorization (SPA) frameworks, representing the third generation of network hiding technology:</t>
      <ul spacing="normal">
        <li>
          <t><strong>First Generation - Port Knocking:</strong> Simple port sequences vulnerable to interception and replay attacks.</t>
        </li>
        <li>
          <t><strong>Second Generation - SPA:</strong> Encrypted single-packet authorization with improved security but limited scalability.</t>
        </li>
        <li>
          <t><strong>Third Generation - NHP:</strong> Advanced asymmetric cryptography, mutual authentication, Noise Protocol-based key exchange, and enterprise-grade scalability.</t>
        </li>
      </ul>
      <t>This document outlines the motivations behind NHP, its design objectives, message structures, integration options, and security considerations for adoption within Zero Trust frameworks.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The following terms are used throughout this document:</t>
      <dl>
        <dt>NHP</dt>
        <dd>
          <t>Network-Infrastructure Hiding Protocol</t>
        </dd>
        <dt>NHP-Agent</dt>
        <dd>
          <t>The client-side component that initiates NHP communication</t>
        </dd>
        <dt>NHP-Server</dt>
        <dd>
          <t>The control-plane service that validates requests and makes access decisions</t>
        </dd>
        <dt>NHP-AC</dt>
        <dd>
          <t>NHP Access Controller, the enforcement component near protected resources</t>
        </dd>
        <dt>SPA</dt>
        <dd>
          <t>Single-Packet Authorization</t>
        </dd>
        <dt>SDP</dt>
        <dd>
          <t>Software-Defined Perimeter</t>
        </dd>
        <dt>ZTA</dt>
        <dd>
          <t>Zero Trust Architecture</t>
        </dd>
        <dt>ECC</dt>
        <dd>
          <t>Elliptic Curve Cryptography</t>
        </dd>
        <dt>AEAD</dt>
        <dd>
          <t>Authenticated Encryption with Associated Data</t>
        </dd>
        <dt>ASP</dt>
        <dd>
          <t>Authorization Service Provider</t>
        </dd>
        <dt>PEP</dt>
        <dd>
          <t>Policy Enforcement Point</t>
        </dd>
        <dt>KGC</dt>
        <dd>
          <t>Key Generation Center</t>
        </dd>
      </dl>
    </section>
    <section anchor="design-objectives">
      <name>Design Objectives</name>
      <t>The NHP protocol is designed to achieve the following objectives:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Infrastructure Invisibility:</strong> Eliminate unauthorized network visibility by enforcing authentication prior to session establishment. Protected resources remain invisible to unauthorized scanners and attackers.</t>
        </li>
        <li>
          <t><strong>Session Layer Operation:</strong> Operate at OSI Layer 5, complementing existing TCP, UDP, and QUIC transports without requiring changes to underlying network infrastructure.</t>
        </li>
        <li>
          <t><strong>Decentralized Trust:</strong> Support decentralized trust using asymmetric cryptography and ephemeral key exchange, eliminating single points of trust failure.</t>
        </li>
        <li>
          <t><strong>Fine-Grained Access Control:</strong> Enable context-based policy enforcement across heterogeneous environments, supporting least-privilege access.</t>
        </li>
        <li>
          <t><strong>Integration Capability:</strong> Integrate with existing Zero Trust controllers, SDP gateways, identity systems (IAM), DNS infrastructure, and FIDO authentication.</t>
        </li>
        <li>
          <t><strong>Scalability:</strong> Support enterprise-scale deployments with clustered servers, distributed access controllers, and multi-tenant isolation.</t>
        </li>
        <li>
          <t><strong>AI Threat Mitigation:</strong> Reduce the attack surface against AI-driven reconnaissance and exploitation by denying visibility before authentication.</t>
        </li>
      </ol>
    </section>
    <section anchor="relationship-to-tls">
      <name>Relationship to TLS</name>
      <t>NHP and TLS (Transport Layer Security) are complementary protocols that operate at different OSI layers and serve distinct security purposes. This section clarifies their differences and how they work together.</t>
      <section anchor="osi-layer-positioning">
        <name>OSI Layer Positioning</name>
        <artwork><![CDATA[
+-------------------+
| Application (L7)  |  HTTP, SMTP, SSH, etc.
+-------------------+
        ↓
+-------------------+
| Presentation (L6) |  TLS/SSL - Data encryption & integrity
+-------------------+
        ↓
+-------------------+
| Session (L5)      |  NHP - Authentication before connection
+-------------------+
        ↓
+-------------------+
| Transport (L4)    |  TCP, UDP, QUIC
+-------------------+
        ↓
+-------------------+
| Network (L3)      |  IP
+-------------------+
]]></artwork>
      </section>
      <section anchor="key-differences">
        <name>Key Differences</name>
        <table>
          <thead>
            <tr>
              <th align="left">Aspect</th>
              <th align="left">NHP (Layer 5)</th>
              <th align="left">TLS (Layer 6)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <strong>Primary Purpose</strong></td>
              <td align="left">Infrastructure hiding and access control</td>
              <td align="left">Data encryption and integrity</td>
            </tr>
            <tr>
              <td align="left">
                <strong>When Authentication Occurs</strong></td>
              <td align="left">BEFORE connection establishment</td>
              <td align="left">AFTER TCP connection established</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Service Visibility</strong></td>
              <td align="left">Services are INVISIBLE to unauthorized users</td>
              <td align="left">Services are VISIBLE, communication is encrypted</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Attack Surface</strong></td>
              <td align="left">Eliminates pre-authentication attack surface</td>
              <td align="left">Protects data in transit, but service ports remain exposed</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Port Exposure</strong></td>
              <td align="left">No ports exposed until authenticated</td>
              <td align="left">Ports must be open to initiate TLS handshake</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Vulnerability Window</strong></td>
              <td align="left">None—no connection without authentication</td>
              <td align="left">TLS handshake vulnerabilities can be exploited</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="the-pre-authentication-problem">
        <name>The Pre-Authentication Problem</name>
        <t>TLS provides excellent protection for data in transit, but it has a fundamental limitation: <strong>the service must be reachable to initiate the TLS handshake</strong>. This creates a pre-authentication attack window:</t>
        <artwork><![CDATA[
Traditional TLS Flow:

Attacker    ──────►  Open Port 443  ──────►  TLS Handshake  ──────►  Authentication
                         ↑
                    Service is VISIBLE
                    Port scan succeeds
                    Pre-auth exploits possible
]]></artwork>
        <artwork><![CDATA[
NHP + TLS Flow:

Attacker    ──────►  No Open Ports  ──────►  BLOCKED (Service Invisible)
                         ↑
                    Cannot discover service
                    Port scan fails

Authorized  ──────►  NHP Knock  ──────►  Port Opens  ──────►  TLS  ──────►  Application
User                     ↑                    ↑
                    Authenticated         Encrypted
                    BEFORE connect        data transfer
]]></artwork>
      </section>
      <section anchor="complementary-security-model">
        <name>Complementary Security Model</name>
        <t>NHP and TLS are designed to work together, not replace each other:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>NHP provides:</strong> Authentication-before-connect, infrastructure invisibility, access control</t>
          </li>
          <li>
            <t><strong>TLS provides:</strong> Data encryption, integrity verification, server authentication</t>
          </li>
        </ol>
        <t>A complete Zero Trust deployment <bcp14>SHOULD</bcp14> use both:</t>
        <ul spacing="normal">
          <li>
            <t><strong>NHP</strong> ensures only authorized users can discover and reach the service</t>
          </li>
          <li>
            <t><strong>TLS</strong> encrypts all data exchanged after access is granted</t>
          </li>
        </ul>
      </section>
      <section anchor="vulnerabilities-addressed-by-nhp-but-not-tls">
        <name>Vulnerabilities Addressed by NHP but Not TLS</name>
        <table>
          <thead>
            <tr>
              <th align="left">Vulnerability Type</th>
              <th align="left">TLS Protection</th>
              <th align="left">NHP Protection</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Port scanning and service discovery</td>
              <td align="left">✗ None</td>
              <td align="left">✓ Service invisible</td>
            </tr>
            <tr>
              <td align="left">Pre-authentication exploits (e.g., Heartbleed)</td>
              <td align="left">✗ Vulnerable</td>
              <td align="left">✓ No connection possible</td>
            </tr>
            <tr>
              <td align="left">TLS implementation bugs before handshake</td>
              <td align="left">✗ Vulnerable</td>
              <td align="left">✓ No handshake initiated</td>
            </tr>
            <tr>
              <td align="left">DDoS attacks on exposed services</td>
              <td align="left">✗ Service reachable</td>
              <td align="left">✓ Service hidden</td>
            </tr>
            <tr>
              <td align="left">Credential stuffing on login pages</td>
              <td align="left">✗ Page accessible</td>
              <td align="left">✓ Page invisible</td>
            </tr>
            <tr>
              <td align="left">Zero-day exploits before authentication</td>
              <td align="left">✗ Service exposed</td>
              <td align="left">✓ Service protected</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="why-both-are-needed">
        <name>Why Both Are Needed</name>
        <t>NHP alone does not encrypt application data—it only controls access. TLS alone does not hide services—it only encrypts traffic. Together, they provide defense in depth:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Without NHP:</strong> Attackers can scan, probe, and exploit services before any authentication occurs</t>
          </li>
          <li>
            <t><strong>Without TLS:</strong> Authorized traffic would be transmitted in plaintext after NHP grants access</t>
          </li>
          <li>
            <t><strong>With Both:</strong> Services are invisible to attackers, and all authorized traffic is encrypted</t>
          </li>
        </ul>
        <t>This layered approach aligns with Zero Trust principles: never trust, always verify, and minimize attack surface at every layer.</t>
      </section>
    </section>
    <section anchor="threat-model">
      <name>Threat Model</name>
      <t>NHP is designed to mitigate the following threat categories:</t>
      <section anchor="reconnaissance-and-scanning">
        <name>Reconnaissance and Scanning</name>
        <t>Automated scanning tools and AI-driven reconnaissance continuously probe Internet-facing services. NHP eliminates the ability to discover protected resources by requiring cryptographic authentication before any network visibility is granted.</t>
      </section>
      <section anchor="pre-authentication-exploits">
        <name>Pre-Authentication Exploits</name>
        <t>Many vulnerabilities can be exploited before authentication occurs. By enforcing authentication-before-connect, NHP prevents attackers from reaching vulnerable services.</t>
      </section>
      <section anchor="ddos-attacks">
        <name>DDoS Attacks</name>
        <t>NHP reduces DDoS attack surface by hiding service endpoints. Attackers cannot target what they cannot discover.</t>
      </section>
      <section anchor="credential-theft-and-replay">
        <name>Credential Theft and Replay</name>
        <t>NHP uses ephemeral keys and timestamp-based nonces to prevent credential replay attacks. Each session requires fresh cryptographic material.</t>
      </section>
      <section anchor="man-in-the-middle-attacks">
        <name>Man-in-the-Middle Attacks</name>
        <t>Mutual authentication using asymmetric cryptography ensures both parties verify each other's identity before establishing communication.</t>
      </section>
    </section>
    <section anchor="architectural-overview">
      <name>Architectural Overview</name>
      <t>NHP operates as a distributed session-layer protocol that enforces authentication-before-connect access between clients and protected resources.</t>
      <section anchor="core-components">
        <name>Core Components</name>
        <section anchor="nhp-agent">
          <name>NHP-Agent</name>
          <t>The NHP-Agent is a client-side process, SDK, or embedded module that initiates communication with the protected network. Its responsibilities include:</t>
          <ul spacing="normal">
            <li>
              <t>Generating and sending NHP-KNK (Knock) messages to the NHP-Server</t>
            </li>
            <li>
              <t>Performing cryptographic key exchange using Noise Protocol handshakes</t>
            </li>
            <li>
              <t>Managing client identity credentials and device attestation</t>
            </li>
            <li>
              <t>Handling session lifecycle including keepalives and re-authentication</t>
            </li>
          </ul>
        </section>
        <section anchor="nhp-server">
          <name>NHP-Server</name>
          <t>The NHP-Server is the core control-plane service responsible for:</t>
          <ul spacing="normal">
            <li>
              <t>Receiving and validating NHP-KNK messages from NHP-Agents</t>
            </li>
            <li>
              <t>Authenticating the NHP-Agent identity and device posture</t>
            </li>
            <li>
              <t>Interfacing with external Authorization Service Providers (ASP) or IAM systems</t>
            </li>
            <li>
              <t>Evaluating access policies based on identity, context, and resource attributes</t>
            </li>
            <li>
              <t>Instructing NHP-AC components to open or close access paths</t>
            </li>
            <li>
              <t>Managing session state and expiration</t>
            </li>
          </ul>
          <t>Functionally, the NHP-Server maps to the <strong>Policy Administrator</strong> role defined in NIST SP 800-207 Zero Trust Architecture.</t>
        </section>
        <section anchor="nhp-ac-access-controller">
          <name>NHP-AC (Access Controller)</name>
          <t>The NHP-AC is the enforcement component residing logically or physically near protected resources. Its responsibilities include:</t>
          <ul spacing="normal">
            <li>
              <t>Maintaining default-deny firewall rules for all protected resources</t>
            </li>
            <li>
              <t>Receiving NHP-AOP (AC Operations) commands from the NHP-Server</t>
            </li>
            <li>
              <t>Temporarily opening access paths for authorized NHP-Agents</t>
            </li>
            <li>
              <t>Automatically reverting to default-deny state when sessions expire</t>
            </li>
            <li>
              <t>Reporting access logs and status to the NHP-Server</t>
            </li>
          </ul>
          <t>The NHP-AC corresponds to the <strong>Policy Enforcement Point (PEP)</strong> in NIST SP 800-207 terminology.</t>
        </section>
        <section anchor="authorization-service-provider-asp">
          <name>Authorization Service Provider (ASP)</name>
          <t>The ASP is an external identity and policy service that the NHP-Server queries for authorization decisions. This may include:</t>
          <ul spacing="normal">
            <li>
              <t>Identity Providers (IdP) such as LDAP, Active Directory, or OIDC providers</t>
            </li>
            <li>
              <t>Policy Decision Points (PDP) implementing ABAC or RBAC policies</t>
            </li>
            <li>
              <t>Device posture assessment services</t>
            </li>
            <li>
              <t>Risk scoring engines</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="component-interactions">
        <name>Component Interactions</name>
        <t>The following diagram illustrates the relationship between NHP components:</t>
        <artwork><![CDATA[
+-------------+          +-------------+          +-------------+
|             |  NHP-KNK |             |  Auth    |             |
| NHP-Agent   |--------->| NHP-Server  |<-------->|    ASP      |
|             |<---------|             |  Query   |   (IAM)     |
+-------------+  NHP-ACK +-------------+          +-------------+
      |                        |
      |                        | NHP-AOP
      |                        v
      |                  +-------------+
      |    NHP-ACC       |             |
      +----------------->|   NHP-AC    |
      |                  |             |
      v                  +-------------+
+-------------+                |
|  Protected  |<---------------+
|  Resource   |   Data Plane
+-------------+
]]></artwork>
      </section>
      <section anchor="deployment-models">
        <name>Deployment Models</name>
        <t>NHP components can be deployed in different configurations:</t>
        <section anchor="standalone-deployment">
          <name>Standalone Deployment</name>
          <t>For small environments or testing scenarios, the NHP-Server and NHP-AC can coexist on the same host. This configuration simplifies setup while maintaining full protocol compliance.</t>
        </section>
        <section anchor="clustered-deployment">
          <name>Clustered Deployment</name>
          <t>In enterprise or cloud environments, multiple NHP-Servers can be deployed in a load-balanced cluster. Each server manages a pool of NHP-AC instances distributed across data centers or network segments. The NHP-Agent dynamically discovers the nearest NHP-Server through DNS or bootstrap configuration.</t>
        </section>
        <section anchor="edge-ac-deployment">
          <name>Edge AC Deployment</name>
          <t>Edge nodes (e.g., gateways, routers, or micro-segmentation agents) can host lightweight NHP-AC components. These edge ACs enforce fine-grained policies close to workloads, improving latency and fault isolation.</t>
        </section>
        <section anchor="multi-tenant-deployment">
          <name>Multi-Tenant Deployment</name>
          <t>In service-provider or multi-cloud environments, each tenant can operate an independent NHP-Server while sharing an underlying AC infrastructure. The NHP protocol's namespace isolation ensures complete tenant separation through identity-scoped keys and per-tenant policy databases.</t>
        </section>
      </section>
    </section>
    <section anchor="protocol-workflow">
      <name>Protocol Workflow</name>
      <section anchor="control-plane-vs-data-plane">
        <name>Control Plane vs Data Plane</name>
        <t>The <strong>Control Plane</strong> carries cryptographic authentication and authorization information among NHP-Agent, NHP-Server, NHP-AC, and optional external ASP. Control plane messages are encrypted using Noise Protocol handshakes.</t>
        <t>The <strong>Data Plane</strong> carries application data between the resource requester (NHP-Agent host) and the protected resource, but only after NHP-AC explicitly authorizes access.</t>
        <t>This strict separation enforces the <em>authenticate-before-connect</em> principle central to Zero Trust.</t>
      </section>
      <section anchor="workflow-steps">
        <name>Workflow Steps</name>
        <t>The complete NHP workflow consists of the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Knock Request:</strong> NHP-Agent sends NHP-KNK message to NHP-Server containing encrypted identity claims and access request.</t>
          </li>
          <li>
            <t><strong>Authorization Query:</strong> NHP-Server validates the cryptographic envelope and queries ASP for authorization decision.</t>
          </li>
          <li>
            <t><strong>Authorization Response:</strong> ASP returns authorization decision with granted permissions and session parameters.</t>
          </li>
          <li>
            <t><strong>Door Opening:</strong> NHP-Server sends NHP-AOP command to NHP-AC instructing it to open access for the specific NHP-Agent.</t>
          </li>
          <li>
            <t><strong>AC Confirmation:</strong> NHP-AC enforces the access rule and replies with NHP-ART confirming the operation.</t>
          </li>
          <li>
            <t><strong>Agent Notification:</strong> NHP-Server sends NHP-ACK to NHP-Agent with access token and connection parameters.</t>
          </li>
          <li>
            <t><strong>Resource Access:</strong> NHP-Agent sends NHP-ACC to NHP-AC and establishes data plane connection to protected resource.</t>
          </li>
          <li>
            <t><strong>Session Maintenance:</strong> NHP-Server and NHP-AC maintain session state through NHP-KPL keepalive messages.</t>
          </li>
          <li>
            <t><strong>Logging and Audit:</strong> NHP-AC uploads access logs via NHP-LOG messages for compliance and auditing.</t>
          </li>
        </ol>
      </section>
      <section anchor="sequence-diagram">
        <name>Sequence Diagram</name>
        <artwork><![CDATA[
NHP-Agent           NHP-Server            NHP-AC             ASP/IAM
    |                    |                    |                   |
    |--- NHP-KNK ------->|                    |                   |
    |                    |--- Auth Query -----|------------------>|
    |                    |<-- Auth Result ----|-------------------|
    |                    |                    |                   |
    |                    |--- NHP-AOP ------->|                   |
    |                    |<-- NHP-ART --------|                   |
    |                    |                    |                   |
    |<-- NHP-ACK --------|                    |                   |
    |                    |                    |                   |
    |--- NHP-ACC --------|------------------>|                   |
    |<================== Data Session ======>|                   |
    |                    |                    |                   |
    |                    |<-- NHP-LOG --------|                   |
    |                    |--- NHP-LAK ------->|                   |
    |                    |                    |                   |
]]></artwork>
      </section>
    </section>
    <section anchor="cryptographic-framework">
      <name>Cryptographic Framework</name>
      <t>NHP employs the Noise Protocol Framework <xref target="NoiseFramework"/> for all cryptographic operations. This section defines the required cryptographic primitives and handshake patterns.</t>
      <section anchor="cryptographic-primitives">
        <name>Cryptographic Primitives</name>
        <t>Implementations <bcp14>MUST</bcp14> support the following cryptographic primitives:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Function</th>
              <th align="left">Algorithm</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DH</td>
              <td align="left">Curve25519</td>
              <td align="left">RFC 7748</td>
            </tr>
            <tr>
              <td align="left">Cipher</td>
              <td align="left">ChaCha20-Poly1305</td>
              <td align="left">RFC 8439</td>
            </tr>
            <tr>
              <td align="left">Hash</td>
              <td align="left">SHA-256</td>
              <td align="left">RFC 6234</td>
            </tr>
            <tr>
              <td align="left">Key Derivation</td>
              <td align="left">HKDF</td>
              <td align="left">RFC 5869</td>
            </tr>
          </tbody>
        </table>
        <t>Implementations <bcp14>MAY</bcp14> additionally support:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Function</th>
              <th align="left">Algorithm</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DH</td>
              <td align="left">P-256 (secp256r1)</td>
              <td align="left">RFC 8422</td>
            </tr>
            <tr>
              <td align="left">Cipher</td>
              <td align="left">AES-256-GCM</td>
              <td align="left">RFC 5116</td>
            </tr>
            <tr>
              <td align="left">Hash</td>
              <td align="left">BLAKE2s</td>
              <td align="left">RFC 7693</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="noise-protocol-handshake-patterns">
        <name>Noise Protocol Handshake Patterns</name>
        <t>NHP supports the following Noise handshake patterns:</t>
        <section anchor="xx-pattern-default">
          <name>XX Pattern (Default)</name>
          <t>The XX pattern provides full forward secrecy and identity protection for both parties. It is the <bcp14>RECOMMENDED</bcp14> pattern for most deployments.</t>
          <artwork><![CDATA[
XX:
  -> e
  <- e, ee, s, es
  -> s, se
]]></artwork>
        </section>
        <section anchor="ik-pattern-performance-optimized">
          <name>IK Pattern (Performance Optimized)</name>
          <t>The IK pattern is used when the NHP-Agent knows the NHP-Server's static public key in advance, reducing round trips.</t>
          <artwork><![CDATA[
IK:
  <- s
  ...
  -> e, es, s, ss
  <- e, ee, se
]]></artwork>
        </section>
        <section anchor="k-pattern-one-way">
          <name>K Pattern (One-Way)</name>
          <t>The K pattern is used for one-way initiation where only the initiator needs to be authenticated by the responder.</t>
          <artwork><![CDATA[
K:
  <- s
  ...
  -> e, es, ss
]]></artwork>
        </section>
      </section>
      <section anchor="key-management">
        <name>Key Management</name>
        <section anchor="static-keys">
          <name>Static Keys</name>
          <t>Each NHP component maintains a static Curve25519 key pair:</t>
          <ul spacing="normal">
            <li>
              <t>NHP-Agent: Used for client identity and authentication</t>
            </li>
            <li>
              <t>NHP-Server: Used for server identity and authentication</t>
            </li>
            <li>
              <t>NHP-AC: Used for secure communication with NHP-Server</t>
            </li>
          </ul>
          <t>Static public keys <bcp14>MUST</bcp14> be distributed through a secure out-of-band mechanism or registered through the NHP-REG message flow.</t>
        </section>
        <section anchor="ephemeral-keys">
          <name>Ephemeral Keys</name>
          <t>Ephemeral keys are generated for each session to provide forward secrecy. Implementations <bcp14>MUST</bcp14> use cryptographically secure random number generators for ephemeral key generation.</t>
        </section>
        <section anchor="key-rotation">
          <name>Key Rotation</name>
          <t>Static keys <bcp14>SHOULD</bcp14> be rotated periodically. The NHP-REG and NHP-RAK messages support key re-registration without service interruption.</t>
        </section>
      </section>
    </section>
    <section anchor="message-format">
      <name>Message Format</name>
      <t>All NHP messages share a common header structure followed by an encrypted payload.</t>
      <section anchor="message-header">
        <name>Message Header</name>
        <t>The NHP message header is 32 bytes with the following structure:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Version    |     Type      |     Flags     |   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                          Nonce (96 bits)                      +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                       Timestamp (64 bits)                     +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Payload Length         |        Header Checksum        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <section anchor="header-fields">
          <name>Header Fields</name>
          <dl>
            <dt>Version (8 bits)</dt>
            <dd>
              <t>Protocol version. Current version is 0x01.</t>
            </dd>
            <dt>Type (8 bits)</dt>
            <dd>
              <t>Message type code. See <xref target="message-types"/>.</t>
            </dd>
            <dt>Flags (8 bits)</dt>
            <dd>
              <t>Control flags:
* Bit 0: Compression enabled
* Bit 1: Fragmentation flag
* Bit 2: Priority message
* Bits 3-7: Reserved</t>
            </dd>
            <dt>Reserved (8 bits)</dt>
            <dd>
              <t>Reserved for future use. <bcp14>MUST</bcp14> be set to zero.</t>
            </dd>
            <dt>Nonce (96 bits)</dt>
            <dd>
              <t>Unique nonce for AEAD encryption. <bcp14>MUST</bcp14> be unique per message within a session.</t>
            </dd>
            <dt>Timestamp (64 bits)</dt>
            <dd>
              <t>UNIX epoch time in milliseconds. Used for replay protection.</t>
            </dd>
            <dt>Payload Length (16 bits)</dt>
            <dd>
              <t>Length of the encrypted payload in bytes.</t>
            </dd>
            <dt>Header Checksum (16 bits)</dt>
            <dd>
              <t>CRC-16 checksum of the header for integrity verification.</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="message-types">
        <name>Message Types</name>
        <table>
          <thead>
            <tr>
              <th align="left">Type Code</th>
              <th align="left">Name</th>
              <th align="left">Direction</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">NHP-KPL</td>
              <td align="left">Any</td>
              <td align="left">Keepalive message</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">NHP-KNK</td>
              <td align="left">Agent→Server</td>
              <td align="left">Knock request</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">NHP-ACK</td>
              <td align="left">Server→Agent</td>
              <td align="left">Knock acknowledgment</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">NHP-AOP</td>
              <td align="left">Server→AC</td>
              <td align="left">AC operation command</td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">NHP-ART</td>
              <td align="left">AC→Server</td>
              <td align="left">AC operation result</td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">NHP-LST</td>
              <td align="left">Agent→Server</td>
              <td align="left">Resource list request</td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">NHP-LRT</td>
              <td align="left">Server→Agent</td>
              <td align="left">Resource list response</td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">NHP-COK</td>
              <td align="left">Server→Agent</td>
              <td align="left">Cookie for session resumption</td>
            </tr>
            <tr>
              <td align="left">0x08</td>
              <td align="left">NHP-RKN</td>
              <td align="left">Agent→Server</td>
              <td align="left">Re-knock with cookie</td>
            </tr>
            <tr>
              <td align="left">0x09</td>
              <td align="left">NHP-RLY</td>
              <td align="left">Relay→Server</td>
              <td align="left">Relayed message</td>
            </tr>
            <tr>
              <td align="left">0x0A</td>
              <td align="left">NHP-AOL</td>
              <td align="left">AC→Server</td>
              <td align="left">AC online notification</td>
            </tr>
            <tr>
              <td align="left">0x0B</td>
              <td align="left">NHP-AAK</td>
              <td align="left">Server→AC</td>
              <td align="left">AC acknowledge</td>
            </tr>
            <tr>
              <td align="left">0x0C</td>
              <td align="left">NHP-OTP</td>
              <td align="left">Any</td>
              <td align="left">One-time password request</td>
            </tr>
            <tr>
              <td align="left">0x0D</td>
              <td align="left">NHP-REG</td>
              <td align="left">Agent→Server</td>
              <td align="left">Public key registration</td>
            </tr>
            <tr>
              <td align="left">0x0E</td>
              <td align="left">NHP-RAK</td>
              <td align="left">Server→Agent</td>
              <td align="left">Registration acknowledgment</td>
            </tr>
            <tr>
              <td align="left">0x0F</td>
              <td align="left">NHP-ACC</td>
              <td align="left">Agent→AC</td>
              <td align="left">Access request</td>
            </tr>
            <tr>
              <td align="left">0x10</td>
              <td align="left">NHP-LOG</td>
              <td align="left">AC→Server</td>
              <td align="left">Log upload</td>
            </tr>
            <tr>
              <td align="left">0x11</td>
              <td align="left">NHP-LAK</td>
              <td align="left">Server→AC</td>
              <td align="left">Log acknowledgment</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="message-definitions">
        <name>Message Definitions</name>
        <section anchor="nhp-kpl-keepalive">
          <name>NHP-KPL (Keepalive)</name>
          <t>Keepalive messages maintain session state between components. The payload contains:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Session ID</td>
                <td align="left">16 bytes</td>
                <td align="left">Current session identifier</td>
              </tr>
              <tr>
                <td align="left">Sequence</td>
                <td align="left">4 bytes</td>
                <td align="left">Monotonic sequence number</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-knk-knock">
          <name>NHP-KNK (Knock)</name>
          <t>The knock message initiates access request from NHP-Agent to NHP-Server. The encrypted payload contains:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">User ID</td>
                <td align="left">Variable</td>
                <td align="left">Unique user identifier</td>
              </tr>
              <tr>
                <td align="left">Device ID</td>
                <td align="left">Variable</td>
                <td align="left">Unique device identifier</td>
              </tr>
              <tr>
                <td align="left">Device Fingerprint</td>
                <td align="left">32 bytes</td>
                <td align="left">Device attestation hash</td>
              </tr>
              <tr>
                <td align="left">Requested Resources</td>
                <td align="left">Variable</td>
                <td align="left">List of resource identifiers</td>
              </tr>
              <tr>
                <td align="left">Context Data</td>
                <td align="left">Variable</td>
                <td align="left">Additional context (location, etc.)</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-ack-acknowledge">
          <name>NHP-ACK (Acknowledge)</name>
          <t>The acknowledge message confirms knock success and provides access parameters:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Status Code</td>
                <td align="left">2 bytes</td>
                <td align="left">Result status</td>
              </tr>
              <tr>
                <td align="left">Session ID</td>
                <td align="left">16 bytes</td>
                <td align="left">Assigned session identifier</td>
              </tr>
              <tr>
                <td align="left">Access Token</td>
                <td align="left">Variable</td>
                <td align="left">Token for NHP-AC access</td>
              </tr>
              <tr>
                <td align="left">AC Addresses</td>
                <td align="left">Variable</td>
                <td align="left">List of AC endpoints</td>
              </tr>
              <tr>
                <td align="left">Expiration</td>
                <td align="left">8 bytes</td>
                <td align="left">Session expiration timestamp</td>
              </tr>
              <tr>
                <td align="left">Granted Resources</td>
                <td align="left">Variable</td>
                <td align="left">List of granted resource access</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-aop-ac-operations">
          <name>NHP-AOP (AC Operations)</name>
          <t>The AC operations message instructs NHP-AC to modify access rules:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Operation</td>
                <td align="left">1 byte</td>
                <td align="left">OPEN (0x01) or CLOSE (0x02)</td>
              </tr>
              <tr>
                <td align="left">Agent Address</td>
                <td align="left">Variable</td>
                <td align="left">Source IP/port of authorized agent</td>
              </tr>
              <tr>
                <td align="left">Resource ID</td>
                <td align="left">Variable</td>
                <td align="left">Target resource identifier</td>
              </tr>
              <tr>
                <td align="left">Expiration</td>
                <td align="left">8 bytes</td>
                <td align="left">Rule expiration timestamp</td>
              </tr>
              <tr>
                <td align="left">Access Token</td>
                <td align="left">Variable</td>
                <td align="left">Token for agent verification</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-art-ac-result">
          <name>NHP-ART (AC Result)</name>
          <t>The AC result message reports operation status:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Status Code</td>
                <td align="left">2 bytes</td>
                <td align="left">Operation result</td>
              </tr>
              <tr>
                <td align="left">Operation ID</td>
                <td align="left">16 bytes</td>
                <td align="left">Reference to NHP-AOP</td>
              </tr>
              <tr>
                <td align="left">Details</td>
                <td align="left">Variable</td>
                <td align="left">Additional status information</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-acc-access">
          <name>NHP-ACC (Access)</name>
          <t>The access message is sent from NHP-Agent to NHP-AC to initiate data plane access:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">User ID</td>
                <td align="left">Variable</td>
                <td align="left">User identifier</td>
              </tr>
              <tr>
                <td align="left">Device ID</td>
                <td align="left">Variable</td>
                <td align="left">Device identifier</td>
              </tr>
              <tr>
                <td align="left">Access Token</td>
                <td align="left">Variable</td>
                <td align="left">Token from NHP-ACK</td>
              </tr>
              <tr>
                <td align="left">Requested Service</td>
                <td align="left">Variable</td>
                <td align="left">Target service identifier</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-reg-register">
          <name>NHP-REG (Register)</name>
          <t>The registration message registers NHP-Agent public key with NHP-Server:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">User ID</td>
                <td align="left">Variable</td>
                <td align="left">User identifier</td>
              </tr>
              <tr>
                <td align="left">Device ID</td>
                <td align="left">Variable</td>
                <td align="left">Device identifier</td>
              </tr>
              <tr>
                <td align="left">Public Key</td>
                <td align="left">32 bytes</td>
                <td align="left">Agent's static public key</td>
              </tr>
              <tr>
                <td align="left">OTP</td>
                <td align="left">Variable</td>
                <td align="left">One-time password for verification</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-rak-register-acknowledge">
          <name>NHP-RAK (Register Acknowledge)</name>
          <t>Confirms successful registration:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Status Code</td>
                <td align="left">2 bytes</td>
                <td align="left">Registration result</td>
              </tr>
              <tr>
                <td align="left">Server Public Key</td>
                <td align="left">32 bytes</td>
                <td align="left">Server's static public key</td>
              </tr>
              <tr>
                <td align="left">Certificate</td>
                <td align="left">Variable</td>
                <td align="left">Optional server certificate</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-log-log">
          <name>NHP-LOG (Log)</name>
          <t>Log upload message from NHP-AC to NHP-Server:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">AC ID</td>
                <td align="left">Variable</td>
                <td align="left">Access controller identifier</td>
              </tr>
              <tr>
                <td align="left">Log ID</td>
                <td align="left">32 bytes</td>
                <td align="left">Unique log identifier (hash)</td>
              </tr>
              <tr>
                <td align="left">Log Content</td>
                <td align="left">Variable</td>
                <td align="left">Compressed log entries</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="nhp-lak-log-acknowledge">
          <name>NHP-LAK (Log Acknowledge)</name>
          <t>Confirms log receipt:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Log ID</td>
                <td align="left">32 bytes</td>
                <td align="left">Received log identifier</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="logging-and-auditing">
      <name>Logging and Auditing</name>
      <t>NHP provides comprehensive logging capabilities to support security monitoring, compliance, and forensic analysis.</t>
      <section anchor="log-types">
        <name>Log Types</name>
        <t>NHP defines the following log categories:</t>
        <dl>
          <dt>Access Logs</dt>
          <dd>
            <t>Record all access attempts, including source identity, timestamp, requested resource, and decision outcome.</t>
          </dd>
          <dt>Authentication Logs</dt>
          <dd>
            <t>Record authentication events including key exchanges, identity verification, and authentication failures.</t>
          </dd>
          <dt>Policy Logs</dt>
          <dd>
            <t>Record policy evaluation decisions and the factors considered.</t>
          </dd>
          <dt>System Logs</dt>
          <dd>
            <t>Record component health, configuration changes, and operational events.</t>
          </dd>
        </dl>
      </section>
      <section anchor="log-format">
        <name>Log Format</name>
        <t>All NHP logs <bcp14>SHOULD</bcp14> use structured JSON format with the following mandatory fields:</t>
        <sourcecode type="json"><![CDATA[
{
  "timestamp": "2025-01-01T12:00:00.000Z",
  "log_type": "access",
  "component": "nhp-ac-01",
  "session_id": "abc123...",
  "user_id": "user@example.com",
  "device_id": "device-uuid",
  "source_ip": "192.0.2.1",
  "resource_id": "resource-001",
  "action": "access_granted",
  "details": {}
}
]]></sourcecode>
      </section>
      <section anchor="log-transmission">
        <name>Log Transmission</name>
        <t>NHP-AC components transmit logs to NHP-Server using NHP-LOG messages. Implementations <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Encrypt all log transmissions using the established Noise session</t>
          </li>
          <li>
            <t>Batch logs to reduce network overhead</t>
          </li>
          <li>
            <t>Implement retry logic for failed transmissions</t>
          </li>
          <li>
            <t>Store logs locally if transmission fails</t>
          </li>
        </ul>
      </section>
      <section anchor="compliance-considerations">
        <name>Compliance Considerations</name>
        <t>NHP logging supports compliance with:</t>
        <ul spacing="normal">
          <li>
            <t>SOC 2 Type II audit requirements</t>
          </li>
          <li>
            <t>GDPR access logging requirements</t>
          </li>
          <li>
            <t>HIPAA audit trail requirements</t>
          </li>
          <li>
            <t>PCI-DSS logging requirements</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="integration-with-sdp">
      <name>Integration with SDP</name>
      <t>NHP is designed to integrate seamlessly with existing Software-Defined Perimeter (SDP) deployments as defined in <xref target="CSA.SDP.Spec2.0"/>.</t>
      <section anchor="integration-architecture">
        <name>Integration Architecture</name>
        <t>In an SDP integration, NHP components map to SDP components as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="left">NHP Component</th>
              <th align="left">SDP Component</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">NHP-Agent</td>
              <td align="left">SDP Initiating Host</td>
            </tr>
            <tr>
              <td align="left">NHP-Server</td>
              <td align="left">SDP Controller</td>
            </tr>
            <tr>
              <td align="left">NHP-AC</td>
              <td align="left">SDP Gateway</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="integration-process">
        <name>Integration Process</name>
        <ol spacing="normal" type="1"><li>
            <t><strong>Discovery:</strong> SDP Controller advertises NHP-Server endpoint to SDP Initiating Hosts.</t>
          </li>
          <li>
            <t><strong>Authentication:</strong> SDP Initiating Host uses NHP-KNK to authenticate with NHP-Server instead of SPA.</t>
          </li>
          <li>
            <t><strong>Authorization:</strong> NHP-Server queries SDP Controller for policy decisions.</t>
          </li>
          <li>
            <t><strong>Enforcement:</strong> NHP-AC opens ports on SDP Gateway based on NHP-AOP commands.</t>
          </li>
        </ol>
      </section>
      <section anchor="benefits-of-nhp-sdp-integration">
        <name>Benefits of NHP-SDP Integration</name>
        <ul spacing="normal">
          <li>
            <t><strong>Stronger Cryptography:</strong> NHP's Noise-based key exchange provides better forward secrecy than traditional SPA.</t>
          </li>
          <li>
            <t><strong>Mutual Authentication:</strong> Both client and server authenticate each other.</t>
          </li>
          <li>
            <t><strong>Scalability:</strong> NHP's architecture supports enterprise-scale deployments.</t>
          </li>
          <li>
            <t><strong>Extensibility:</strong> NHP message types support richer interaction patterns.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="integration-with-dns">
      <name>Integration with DNS</name>
      <t>NHP can integrate with DNS infrastructure to provide stealth resolution of protected resources.</t>
      <section anchor="dns-integration-architecture">
        <name>DNS Integration Architecture</name>
        <artwork><![CDATA[
+-------------+     +-------------+     +-------------+
| NHP-Agent   |---->| NHP-Server  |---->| DNS Server  |
|             |     |             |     | (Internal)  |
+-------------+     +-------------+     +-------------+
      |                   |
      v                   v
+-------------+     +-------------+
| Public DNS  |     | NHP-AC      |
| (No Records)|     |             |
+-------------+     +-------------+
]]></artwork>
      </section>
      <section anchor="integration-process-1">
        <name>Integration Process</name>
        <ol spacing="normal" type="1"><li>
            <t>Protected resources have no public DNS records.</t>
          </li>
          <li>
            <t>NHP-Agent authenticates with NHP-Server via NHP-KNK.</t>
          </li>
          <li>
            <t>NHP-Server returns resource IP addresses in NHP-ACK only after successful authentication.</t>
          </li>
          <li>
            <t>NHP-Agent can then connect to the resolved addresses.</t>
          </li>
        </ol>
        <t>This prevents DNS enumeration attacks and keeps resource addresses invisible to unauthorized users.</t>
      </section>
    </section>
    <section anchor="integration-with-fido">
      <name>Integration with FIDO</name>
      <t>NHP supports integration with FIDO2/WebAuthn for strong user authentication.</t>
      <section anchor="fido-integration-flow">
        <name>FIDO Integration Flow</name>
        <ol spacing="normal" type="1"><li>
            <t>User initiates NHP-KNK with FIDO assertion</t>
          </li>
          <li>
            <t>NHP-Server validates FIDO assertion with FIDO server</t>
          </li>
          <li>
            <t>Upon successful FIDO authentication, NHP-Server proceeds with access grant</t>
          </li>
        </ol>
      </section>
      <section anchor="recovery-and-fallback">
        <name>Recovery and Fallback</name>
        <t>For FIDO authentication failures, NHP supports fallback to:</t>
        <ul spacing="normal">
          <li>
            <t>One-Time Password (OTP) via NHP-OTP message</t>
          </li>
          <li>
            <t>SMS/Email verification codes</t>
          </li>
          <li>
            <t>Recovery codes</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="infrastructure-invisibility">
        <name>Infrastructure Invisibility</name>
        <t>NHP ensures infrastructure invisibility by:</t>
        <ul spacing="normal">
          <li>
            <t>Encrypting all control plane traffic using Noise Protocol</t>
          </li>
          <li>
            <t>Requiring mutual authentication before any resource visibility</t>
          </li>
          <li>
            <t>Maintaining default-deny firewall rules on all NHP-AC components</t>
          </li>
          <li>
            <t>Supporting ephemeral port allocation for data plane connections</t>
          </li>
        </ul>
      </section>
      <section anchor="replay-attack-prevention">
        <name>Replay Attack Prevention</name>
        <t>NHP prevents replay attacks through:</t>
        <ul spacing="normal">
          <li>
            <t>Timestamp validation with configurable tolerance (<bcp14>RECOMMENDED</bcp14>: 60 seconds)</t>
          </li>
          <li>
            <t>Unique nonce per message</t>
          </li>
          <li>
            <t>Session-bound tokens that cannot be reused across sessions</t>
          </li>
        </ul>
      </section>
      <section anchor="key-security">
        <name>Key Security</name>
        <t>Implementations <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Use cryptographically secure random number generators for all key generation</t>
          </li>
          <li>
            <t>Store private keys in secure enclaves or HSMs where available</t>
          </li>
          <li>
            <t>Implement key rotation policies</t>
          </li>
          <li>
            <t>Securely erase key material when no longer needed</t>
          </li>
        </ul>
      </section>
      <section anchor="session-security">
        <name>Session Security</name>
        <ul spacing="normal">
          <li>
            <t>Sessions <bcp14>MUST</bcp14> have configurable expiration (<bcp14>RECOMMENDED</bcp14> default: 4 hours)</t>
          </li>
          <li>
            <t>Sessions <bcp14>MUST</bcp14> be revocable by NHP-Server</t>
          </li>
          <li>
            <t>Session tokens <bcp14>MUST</bcp14> be bound to client identity and IP address</t>
          </li>
        </ul>
      </section>
      <section anchor="denial-of-service-mitigation">
        <name>Denial of Service Mitigation</name>
        <t>NHP provides DoS resistance through:</t>
        <ul spacing="normal">
          <li>
            <t>Cryptographic puzzles for computationally expensive operations</t>
          </li>
          <li>
            <t>Rate limiting on NHP-Server and NHP-AC</t>
          </li>
          <li>
            <t>Cookie-based session resumption to avoid repeated handshakes</t>
          </li>
        </ul>
      </section>
      <section anchor="limitations">
        <name>Limitations</name>
        <t>NHP does not protect against:</t>
        <ul spacing="normal">
          <li>
            <t>Compromised endpoints with valid credentials</t>
          </li>
          <li>
            <t>Insider threats with legitimate access</t>
          </li>
          <li>
            <t>Attacks on the data plane after access is granted</t>
          </li>
          <li>
            <t>Social engineering attacks targeting user credentials</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests IANA to establish a new registry for NHP Message Types with the following initial values:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x00</td>
            <td align="left">NHP-KPL</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x01</td>
            <td align="left">NHP-KNK</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x02</td>
            <td align="left">NHP-ACK</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x03</td>
            <td align="left">NHP-AOP</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x04</td>
            <td align="left">NHP-ART</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x05</td>
            <td align="left">NHP-LST</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x06</td>
            <td align="left">NHP-LRT</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x07</td>
            <td align="left">NHP-COK</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x08</td>
            <td align="left">NHP-RKN</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x09</td>
            <td align="left">NHP-RLY</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x0A</td>
            <td align="left">NHP-AOL</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x0B</td>
            <td align="left">NHP-AAK</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x0C</td>
            <td align="left">NHP-OTP</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x0D</td>
            <td align="left">NHP-REG</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x0E</td>
            <td align="left">NHP-RAK</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x0F</td>
            <td align="left">NHP-ACC</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x10</td>
            <td align="left">NHP-LOG</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">0x11</td>
            <td align="left">NHP-LAK</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <t>Values 0x12-0xFF are reserved for future use.</t>
    </section>
    <section anchor="reference-implementation">
      <name>Reference Implementation</name>
      <t>An open-source reference implementation of NHP is available at:</t>
      <t>https://github.com/OpenNHP/opennhp</t>
      <section anchor="implementation-characteristics">
        <name>Implementation Characteristics</name>
        <t>The OpenNHP reference implementation is designed with the following characteristics:</t>
        <section anchor="memory-safe-language">
          <name>Memory-Safe Language</name>
          <t>OpenNHP is implemented in <strong>Go (Golang)</strong>, a memory-safe programming language that eliminates entire classes of vulnerabilities common in C/C++ implementations:</t>
          <ul spacing="normal">
            <li>
              <t><strong>No Buffer Overflows:</strong> Go's built-in bounds checking prevents buffer overflow attacks.</t>
            </li>
            <li>
              <t><strong>No Use-After-Free:</strong> Automatic garbage collection eliminates dangling pointer vulnerabilities.</t>
            </li>
            <li>
              <t><strong>No Null Pointer Dereferences:</strong> Go's type system and nil handling prevent null pointer crashes.</t>
            </li>
            <li>
              <t><strong>Race Condition Detection:</strong> Built-in race detector helps identify concurrency issues during development.</t>
            </li>
          </ul>
          <t>This choice aligns with recommendations from CISA, NSA, and other security agencies advocating for memory-safe languages in critical infrastructure software.</t>
        </section>
        <section anchor="cross-platform-support">
          <name>Cross-Platform Support</name>
          <t>OpenNHP provides native support across multiple platforms:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Platform</th>
                <th align="left">Components</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Linux</td>
                <td align="left">Agent, Server, AC</td>
                <td align="left">Full production support for x86_64, ARM64</td>
              </tr>
              <tr>
                <td align="left">Windows</td>
                <td align="left">Agent, Server, AC</td>
                <td align="left">Native Windows service integration</td>
              </tr>
              <tr>
                <td align="left">macOS</td>
                <td align="left">Agent</td>
                <td align="left">Desktop client with system integration</td>
              </tr>
              <tr>
                <td align="left">FreeBSD</td>
                <td align="left">Agent, Server, AC</td>
                <td align="left">BSD-family operating system support</td>
              </tr>
              <tr>
                <td align="left">Android</td>
                <td align="left">Agent (Library)</td>
                <td align="left">Mobile SDK for Android applications</td>
              </tr>
              <tr>
                <td align="left">iOS</td>
                <td align="left">Agent (Library)</td>
                <td align="left">Mobile SDK for iOS applications</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="modular-architecture">
          <name>Modular Architecture</name>
          <t>The implementation provides separate binaries for each NHP component:</t>
          <ul spacing="normal">
            <li>
              <t><strong>nhp-agent:</strong> Client-side agent for initiating NHP connections</t>
            </li>
            <li>
              <t><strong>nhp-server:</strong> Control plane server for authentication and authorization</t>
            </li>
            <li>
              <t><strong>nhp-ac:</strong> Access controller for policy enforcement</t>
            </li>
          </ul>
          <t>Each component can be deployed independently, enabling flexible deployment topologies from standalone to distributed enterprise configurations.</t>
        </section>
        <section anchor="cryptographic-implementation">
          <name>Cryptographic Implementation</name>
          <t>The reference implementation uses well-audited cryptographic libraries:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Noise Protocol:</strong> flynn/noise library for Noise Framework handshakes</t>
            </li>
            <li>
              <t><strong>Curve25519:</strong> golang.org/x/crypto for elliptic curve operations</t>
            </li>
            <li>
              <t><strong>ChaCha20-Poly1305:</strong> Standard library crypto/cipher for AEAD encryption</t>
            </li>
            <li>
              <t><strong>HKDF:</strong> golang.org/x/crypto/hkdf for key derivation</t>
            </li>
          </ul>
        </section>
        <section anchor="performance-characteristics">
          <name>Performance Characteristics</name>
          <t>The Go implementation provides:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Low Latency:</strong> Typical NHP handshake completes in under 10ms on local networks</t>
            </li>
            <li>
              <t><strong>High Throughput:</strong> Single NHP-Server can handle thousands of concurrent sessions</t>
            </li>
            <li>
              <t><strong>Minimal Footprint:</strong> Agent binary under 15MB, low memory consumption</t>
            </li>
            <li>
              <t><strong>Concurrent Design:</strong> Goroutine-based concurrency for efficient resource utilization</t>
            </li>
          </ul>
        </section>
        <section anchor="open-source-governance">
          <name>Open Source Governance</name>
          <t>The OpenNHP project operates under the Apache 2.0 license, fostering community collaboration and transparent development to accelerate adoption and ensure rigorous peer review of its security mechanisms.</t>
        </section>
      </section>
      <section anchor="practical-use-case-stealthdns">
        <name>Practical Use Case: StealthDNS</name>
        <t>StealthDNS is a Zero Trust DNS client powered by OpenNHP that demonstrates practical application of the NHP protocol for DNS-level infrastructure hiding. It is available at:</t>
        <t>https://github.com/OpenNHP/StealthDNS</t>
        <t>StealthDNS implements the NHP-DNS integration described in this specification, providing:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Invisible DNS Resolution:</strong> Protected domains have no public DNS records. Only authenticated clients can resolve hidden service addresses.</t>
          </li>
          <li>
            <t><strong>NHP-Powered Authentication:</strong> Uses the OpenNHP library to perform cryptographic NHP knocking before DNS resolution.</t>
          </li>
          <li>
            <t><strong>Transparent Local Resolver:</strong> Runs as a local DNS resolver (127.0.0.1:53), requiring no application changes.</t>
          </li>
          <li>
            <t><strong>Cross-Platform Support:</strong> Available on Windows, macOS, Linux, Android, and iOS.</t>
          </li>
        </ul>
        <t>The StealthDNS workflow demonstrates the authenticate-before-connect principle:</t>
        <ol spacing="normal" type="1"><li>
            <t>Application performs DNS lookup for a protected domain.</t>
          </li>
          <li>
            <t>StealthDNS checks if the domain is NHP-protected.</t>
          </li>
          <li>
            <t>If protected, StealthDNS performs NHP knock with identity and device context.</t>
          </li>
          <li>
            <t>Upon successful authentication, the NHP Controller returns ephemeral address mappings.</t>
          </li>
          <li>
            <t>StealthDNS returns valid DNS records only to authorized clients.</t>
          </li>
          <li>
            <t>Unauthorized clients receive NXDOMAIN—the service remains invisible.</t>
          </li>
        </ol>
        <t>This enforces <strong>identity before visibility</strong> and <strong>authorization before connectivity</strong>, demonstrating real-world application of NHP principles.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="NoiseFramework" target="https://noiseprotocol.org/noise.html">
          <front>
            <title>The Noise Protocol Framework</title>
            <author initials="T." surname="Perrin" fullname="Trevor Perrin">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NIST.SP.800-207">
          <front>
            <title>Zero Trust Architecture</title>
            <author initials="S." surname="Rose" fullname="Scott Rose">
              <organization/>
            </author>
            <author initials="O." surname="Borchert" fullname="Oliver Borchert">
              <organization/>
            </author>
            <author initials="S." surname="Mitchell" fullname="Stu Mitchell">
              <organization/>
            </author>
            <author initials="S." surname="Connelly" fullname="Sean Connelly">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-207"/>
        </reference>
        <reference anchor="CSA.SDP.Spec2.0">
          <front>
            <title>Software Defined Perimeter Specification v2.0</title>
            <author>
              <organization>Cloud Security Alliance</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="CSA.NHP.Whitepaper">
          <front>
            <title>Stealth Mode SDP for Zero Trust Network Infrastructure: Introducing the Network-Infrastructure Hiding Protocol (NHP)</title>
            <author>
              <organization>Cloud Security Alliance</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1010?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work builds upon foundational research from the Cloud Security Alliance (CSA) Zero Trust Working Group, particularly the "Stealth Mode SDP for Zero Trust Network Infrastructure" whitepaper <xref target="CSA.NHP.Whitepaper"/>. The authors acknowledge the contributions of the CSA Zero Trust Research Working Group.</t>
      <t>The authors would also like to thank the China Computer Federation (CCF) for their collaborative support, and the OpenNHP open source community for their contributions, testing, and feedback on early implementations of the Network-Infrastructure Hiding Protocol.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81923IjyZXYO74izY7wkBwATbIv08PQaoUGyW66ecESnIvk
cCgKqCRQ24UqqKrAHmg4Cj3p3V6F/eIHf4cf/SnzJT7XrMxCgd0tjSLUq5UI
IK8nz/2cPNnr9TpVUqX22Oxc2epDXrzvnWd3RVRWxWparQpr3iZxks3MqMir
fJqnO51oMinsPXZ4O9rpTKPKzvJifWyS7C7vxPk0ixYwXFxEd1UvX9osmy97
ZRTNevjHwUGnXE0WSVkmeVatlxb7xRaaxTarOtlqMbHFsYFmMQx8bI4Ojl72
Dg7hPx2Y8lknKmwEU4/tdFUk1Xqng0ueFflqCd/iLDud93YNX8bHHdMzf7RF
bmArZYWfSkvTmjRa2wK/yHjLJp/crUrYCfyIX49PRp17m60sjGF08PFg8GYH
PvOid76DfgiXN/gzfr+IklTW8JvEVnf9vJjh91ExncP386palsdPn2Iz/Cq5
t31t9hS/eDop8g+lfYoDPMWOs6SarybQ9RqgA7B+is17xd0UAYkNUoBQWXlj
S8M+9+wnedDlafuR9OfVAk61E62qeV4g1GBoY+5Wacon+dpmdxZ2OpzbjH6C
FUdZ8kcC17GRSekXy0CYcI/fzPBjf5ovOp0sLxbQ4Z5AenM2PDo8/Fr+fHX4
1XP58+uDgwP99vnzl/rt4Sv69ipPSntWwKLw0I5pRkXe27nl3x2iGtdyh1q6
/dE/3totIHJemJEtioT3plh3+IqHj4qZBRArhDOcYikz0NHRNwTDTgcpwNvm
1fn4tj8e9V8dHPSODr4KF/w7xMxbxEwzQHSoLJFb21p7strxNK8qc5OXtvHD
dQozFuZ1DgPZomp2q1bmMqngpzRt/mSjzAzzLIOf1sH+jw7oY2mLxJa4L10M
bgo6Lu00iVIzWk3ShAnHyDah3XA86AMN9bHVUf8g3Pg4v6s+ABmbE3uXZDZG
6CcLW8EGaNQ7He8euraBA6B+bIZpvoqNsgEzSNMkyqY23MORrAVp4jsE8TJa
2qKxnMpGaTU3l3lskfANHKHxDke4ogm54jF8roo8Xk2RB1SIfJ/EPc0urGXv
79vVy06n1+uZaAKzRNOq07n9zOlNUprITIv1sspnRbScr3uTqISTEP7YI/5o
FM1NDBgww5OqcgPco6DjidLkj9YH1BJIaJosU1uaydpMc1g3tIHJcRxAbuiv
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
mwAA

-->

</rfc>
