| Internet-Draft | IPv7 Identity Protocol | September 2026 |
| Oliveira | Expires 27 March 2027 | [Page] |
This document specifies IPv7, an identity-centric network protocol that replaces purely numerical source addressing with a hierarchical identity string and a Variable-Length Identity Block (VLIB). The VLIB carries an Ephemeral Identity Token (EIT), provider and tenant identifiers, role/policy signalling, and an Origin Signature verifiable by the originating provider. Validation occurs in three layers at the first-hop router: Origin Verification, Identity Verification, and Policy Enforcement. A quantum-resistant signature option using CRYSTALS-Dilithium (ML-DSA-65) is incorporated. This document also describes an optional local extension for Rate-Limit Tokens issued by ISPs and enforced in hardware. A reference implementation in Rust is available as the arkhe-ipv7 and arkhe-ipv7-cli crates.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 27 March 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.¶
The current Internet Protocol suite (IPv4 and IPv6) identifies endpoints by numerical addresses that carry no verifiable identity. This limitation enables a class of attacks in which malicious actors use residential proxies and compromised IoT devices to obscure their origin.¶
IPv7 addresses this limitation by making identity a first-class component of the network layer. Each packet carries a Variable-Length Identity Block (VLIB) that encodes a hierarchical identity string.¶
The protocol defines three validation layers at the first-hop router: Origin Verification, Identity Verification, and Policy Enforcement. The cryptographic foundation is quantum-resistant: CRYSTALS-Dilithium (ML-DSA-65) is specified as the signature algorithm.¶
A reference implementation in Rust is available as the arkhe-ipv7 and arkhe-ipv7-cli crates on crates.io.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The VLIB is the core identity structure of IPv7. It is a hierarchical string with the following canonical format:¶
EIT/service.location.provider.tenant.role.trustlevel. reputationscope.origin_signature¶
The components are separated by a forward slash (after the EIT) and by periods (between the remaining components). The EIT is placed before the slash; all other components follow.¶
The canonical format without the signature contains seven components after the slash. With the signature, there are eight components.¶
The Origin Signature MUST cover the canonical form without the signature field. Including the signature in its own payload would create a circular dependency and is therefore forbidden.¶
Example VLIB:¶
eit_7f3a9c2b/web.nyc.exampleisp.home.guest.medium.local. sig_abc123¶
The EIT is a time-bound token with the following fields:¶
The EIT MUST have a non-zero time-to-live (TTL). A token with a TTL of zero is invalid. The expires_at field MUST be computed as issued_at + ttl, with overflow checking.¶
A router validating an EIT MUST reject it if the current time is before the issued_at timestamp (clock skew) or if the current time is at or after the expires_at timestamp.¶
The Origin Signature is an ML-DSA-65 signature over the canonical VLIB form without the signature field. It is represented as a hexadecimal string.¶
The signature binds the VLIB to the originating provider's public key. A router verifying the signature MUST:¶
If any step fails, the packet MUST be dropped.¶
The VLIB includes a role field that asserts the privilege level of the origin. The role values are:¶
A router enforcing policy MUST compare the asserted role against the minimum role required by the destination. If the asserted role is lower than the required role, the packet MUST be dropped.¶
Resource matching MUST be exact. A policy for "web" MUST NOT apply to "webhook" or "myweb". Prefix matching, when used, MUST normalize the resource to end with a separator (e.g., "/admin/" to match "/admin/users" but not "/administration").¶
The Rate-Limit Token is an optional local extension. It is issued by the ISP and carries:¶
A router implementing this extension MUST reject packets if the token has expired or if the provider does not match the VLIB's provider. If the token is absent and the router requires it, the packet MUST be dropped (fail-closed).¶
The router processing pipeline consists of three mandatory layers and one optional layer. The pipeline is fail-closed: if any required layer fails, the packet is dropped.¶
The router parses the VLIB, extracts the Origin Signature, and verifies it against the Provider ID's public key. The signature MUST cover the canonical VLIB form without the signature field.¶
If the provider is unknown, the packet is quarantined. If the signature is invalid, the packet is dropped.¶
The router validates the EIT:¶
If any check fails, the packet is dropped.¶
The router extracts the asserted role from the VLIB and compares it against the destination's ACL. The comparison uses exact resource matching or explicitly configured prefix matching.¶
If no policy matches the destination resource, the packet is allowed by default (fail-open for unconfigured resources). If a policy matches but the role is insufficient, the packet is dropped.¶
If the router is configured to require at least one policy (require_policy = true), then the absence of any policy causes the packet to be dropped (fail-closed).¶
The IPv7 header is 40 bytes, structured as follows:¶
+--------+--------+--------+--------+ |Version | TC | Flow Label | (4 bytes) +--------+--------+--------+--------+ | Payload Length | (2 bytes) +--------+--------+--------+--------+ | Next | Hop | Reserved | (4 bytes) | Header | Limit | | +--------+--------+--------+--------+ | Source VLIB (16 bytes) | +-----------------------------------+ | Destination VLIB (16 bytes) | +-----------------------------------+ | Extensions (variable) | +-----------------------------------+ | Payload | +-----------------------------------+¶
Extension headers are TLV-encoded. The following Next Header values are defined:¶
Each extension header has the format:¶
+--------+--------+--------+--------+ | Extension Length | (2 bytes) +-----------------------------------+ | Extension Data | +-----------------------------------+ | Next Header | (1 byte) +-----------------------------------+¶
IPv7 is expected to be deployed incrementally. Early deployment models include:¶
The protocol is designed to be backward-compatible at the application layer: applications continue to use existing transport protocols (TCP, UDP, QUIC) over IPv7.¶
The security of IPv7 depends on the following:¶
This document has no IANA actions.¶
Note to RFC Editor: If this document is published as an RFC, the Next Header values (60, 61, 62, 63) may require IANA registration in the "Assigned Internet Protocol Numbers" registry.¶