<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.1.7) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-johani-dnsop-dnssec-alg-split-01" category="std" consensus="true" submissionType="IETF" updates="4035, 6840">
  <front>
    <title abbrev="Algorithm-Split DNSSEC">Algorithm-Split DNSSEC: KSK/ZSK Algorithm Separation</title>

    <author fullname="Johan Stenstam">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <email>johan.stenstam@internetstiftelsen.se</email>
      </address>
    </author>

    <date year="2026" month="June" day="27"/>

    <area>Internet</area>
    <workgroup>DNSOP Working Group</workgroup>
    <keyword>DNSSEC</keyword> <keyword>post-quantum</keyword> <keyword>KSK</keyword> <keyword>ZSK</keyword> <keyword>DNSKEY</keyword> <keyword>transport</keyword>

    <abstract>


<?line 50?>

<t>Post-quantum DNSSEC signature algorithms have much larger keys and/or
signatures than the elliptic-curve algorithms in common use today. For
any such algorithm the apex DNSKEY RRset grows, since it carries the
key material; the open question is whether the rest of the zone has to
grow with it. A key-signing key (KSK) signs only the apex DNSKEY RRset,
so its signature size is nearly irrelevant; a zone-signing key (ZSK)
signs every other RRset, so keeping its signatures small is what keeps
ordinary responses small. Confining a large algorithm to the KSK, and
using a small-signature algorithm for the ZSK, keeps the cost of the
large algorithm contained in the DNSKEY RRset.</t>

<t>This document specifies the changes that make this pattern safe and
practical: (1) it relaxes the DNSSEC signing rule that requires a zone
to be signed with every algorithm present in the apex DNSKEY RRset, so
that an algorithm used only by a key-signing key need not be applied
to the rest of the zone; (2) it relies on ordinary ZSK rotation to
bound the residual exposure of the ZSK algorithm; and (3) it specifies
how a resolver can use the algorithm number in the parent's DS RRset
to recognize a likely-oversized DNSKEY RRset and select a transport
suitable for large responses, avoiding the truncate-then-retry round
trip. This document updates RFC 4035 and RFC 6840.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-johani-dnsop-dnssec-alg-split/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Domain Name System Operations Working Group mailing list (<eref target="mailto:dnsop@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dnsop/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dnsop/"/>.
      </t>
    </note>


  </front>

  <middle>


<?line 74?>

<section anchor="introduction"><name>Introduction</name>

<t>DNSSEC signature and key sizes are about to grow substantially. The
post-quantum signature algorithms standardized by NIST -- ML-DSA
<xref target="FIPS204"/> and SLH-DSA <xref target="FIPS205"/>, with FN-DSA and others to follow --
have public keys and signatures that are one to two orders of magnitude
larger than the elliptic-curve algorithms (ECDSA, Ed25519) in common use
today. Signing an entire zone with such an algorithm inflates every
RRSIG in the zone, and with it every signed response.</t>

<t>A natural transition strategy is to apply a large (for example,
post-quantum) algorithm only where its cost is bounded -- the
key-signing key (KSK), which signs only the apex DNSKEY RRset -- while
continuing to sign the bulk of the zone with a smaller ZSK. The DNSKEY
RRset is then the only large object in the zone; ordinary query
responses remain small.</t>

<t>Asymmetric key strength between the KSK and ZSK is already common
operational practice. Operators routinely deploy RSA zones with a
longer (i.e. stronger) KSK and a shorter ZSK, trading
larger DNSKEY-RRset signatures for smaller signatures on the rest of
the zone. The KSK/ZSK strength asymmetry proposed by this document is
the same operational pattern; the only difference is that the
asymmetry crosses the algorithm-number boundary rather than a
key-length boundary within a single algorithm. It is that crossing --
not the strength asymmetry itself -- that interacts with the
completeness rule of <xref target="RFC4035"/> and motivates the updates in this
document.</t>

<t>The deeper motivation is to decouple two requirements that a single
zone algorithm is forced to satisfy at once. A KSK and a ZSK protect
very different things and are exposed in very different ways, yet today
both must be the same algorithm, so that algorithm has to satisfy the
union of both roles' constraints. In practice the binding constraint
is the ZSK's: the algorithm must produce signatures small enough that
ordinary responses do not overflow common UDP size limits. That
"ZSK property" -- small signatures -- ends up dictating the algorithm
for the KSK as well, even though the property that actually matters for
a KSK is a different one: strength great enough that the key need never
be rolled merely because its algorithm has become too weak. A KSK
signs only the apex DNSKEY RRset, so its signature size is nearly
irrelevant; what matters is its longevity as a trust anchor. Today the
small-signature requirement of the ZSK role effectively caps the
strength available to the KSK role.</t>

<t>Algorithm splitting removes that coupling. For the first time it
becomes possible to choose each key's algorithm for the property that
matters most in that key's role -- a strong, long-lived (for example
post-quantum) algorithm for the KSK, whose large signatures are
confined to the DNSKEY RRset, and a small-signature algorithm for the
ZSK, whose signatures appear on every RRset. Seen this way, the
primary effect of this document is not that the ZSK becomes weaker; it
is that the KSK is, for the first time, allowed to be much stronger
than the "fits in a UDP response" constraint would otherwise permit.</t>

<t>This document specifies three changes that together enable this
deployment pattern:</t>

<t><list style="numbers" type="1">
  <t>Distinct algorithms for the KSK and the ZSK (<xref target="p-algsep"/>). DNSSEC's
current signing rules require a zone to be signed with every
algorithm present in the apex DNSKEY RRset. This document relaxes
that rule for an algorithm used solely by a key-signing key, so that
a large KSK algorithm need not be applied to every RRset in the zone.</t>
  <t>A bounded ZSK rotation cadence (<xref target="p-zskcadence"/>). Rolling the ZSK
at an appropriate cadence bounds the window in which a break of the
ZSK algorithm could be exploited. For the intended deployment, in
which the ZSK algorithm is itself PQ-safe, this is an ordinary
rotation schedule; the cadence becomes a tighter security parameter
only in the fallback case where the ZSK algorithm is weaker than the
KSK algorithm (for example a classical ZSK during the transition).</t>
  <t>Using the DS algorithm number to signal a large DNSKEY RRset
(<xref target="p-dssignal"/>). Because the parent's DS RRset carries the child
KSK's algorithm number, a resolver can recognize from the DS alone
that the child's DNSKEY RRset is likely to exceed common UDP
response-size limits, and query it over a transport suitable for
large responses (TCP, DoT, DoQ, or another) directly -- avoiding a
truncated UDP response and the consequent retry.</t>
</list></t>

<t>The three parts work together. Part 1 makes the deployment pattern
possible; part 2 bounds the residual exposure of the ZSK algorithm; part
3 makes the resulting transport profile efficient. The safety of the
relaxation in Part 1 rests on the structural asymmetry between the KSK
and ZSK roles (see <xref target="security"/>), which holds independently of the
cadence; Part 2 then bounds whatever residual exposure remains. Part 3
is a pure efficiency optimization that a resolver may implement or
ignore.</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>This document uses "key-signing key" (KSK) and "zone-signing key" (ZSK)
in the operational sense of <xref target="RFC6781"/>: a KSK is a key whose role is to
sign the apex DNSKEY RRset and which is referenced by a DS record at the
parent, while a ZSK signs the other RRsets of the zone. This
KSK/ZSK distinction is operational; the DNSSEC protocol itself does not
require it, and the Secure Entry Point (SEP) bit is advisory rather than
normative. The normative conditions in this document do not rely on the
SEP bit; instead, they are expressed in terms of the algorithms present
in the parent DS RRset and the apex DNSKEY RRset (see <xref target="p-algsep"/>).</t>

</section>
<section anchor="p-algsep"><name>Part 1: Distinct Algorithms for the KSK and the ZSK</name>

<section anchor="the-current-rule"><name>The Current Rule</name>

<t>Section 2.2 of <xref target="RFC4035"/>, as restated in Section 5.11 of <xref target="RFC6840"/>,
governs which algorithms must be used to sign a zone. On the signer
side: "The zone <bcp14>MUST</bcp14> also be signed with each algorithm (though not each
key) present in the DNSKEY RRset." In other words, every RRset in the
zone must carry a signature from each algorithm appearing in the apex
DNSKEY RRset.</t>

<t>If the apex DNSKEY RRset contains a large-algorithm KSK and a
small-algorithm ZSK, this rule requires every RRset in the zone to carry
a large-algorithm signature, which defeats the purpose of confining the
large algorithm to the KSK.</t>

</section>
<section anchor="the-change-signer-side"><name>The Change (Signer Side)</name>

<t>This document updates the signer-side requirement of <xref target="RFC4035"/> and
<xref target="RFC6840"/> as follows. A zone <bcp14>MAY</bcp14> be signed under the following
<em>algorithm-split profile</em>. Let K be the set of algorithms appearing in
the parent DS RRset for the zone, and let Z be a non-empty set of
algorithms disjoint from K (K and Z share no algorithm). The profile
holds when:</t>

<t><list style="symbols">
  <t>The apex DNSKEY RRset of the zone contains at least one key of each
algorithm in K and at least one key of each algorithm in Z.</t>
  <t>The apex DNSKEY RRset <bcp14>MUST</bcp14> be signed by every algorithm in K. It <bcp14>MAY</bcp14>
additionally be signed by one or more algorithms in Z.</t>
  <t>Every non-DNSKEY authoritative RRset in the zone <bcp14>MUST</bcp14> be signed by
every algorithm in Z and <bcp14>MUST NOT</bcp14> be required to be signed by any
algorithm in K.</t>
</list></t>

<t>Within this profile, the algorithms in K play the role of KSK
algorithms and the algorithms in Z play the role of ZSK algorithms.
K and Z are disjoint by definition; no single algorithm can
simultaneously serve as a KSK algorithm and a ZSK algorithm in this
profile. The profile is defined entirely in terms of the contents of
the parent DS RRset and the apex DNSKEY RRset, so that compliance can
be checked without reference to the (advisory) SEP bit.</t>

<t>The common steady-state case has |K| = |Z| = 1 (a single KSK algorithm
A and a single ZSK algorithm B, with A != B). |K| &gt; 1 corresponds to
a KSK-algorithm rollover (the zone is transitioning between two KSK
algorithms, both of which appear in the parent DS RRset and the apex
DNSKEY RRset during the rollover window). |Z| &gt; 1 corresponds to a
ZSK-algorithm rollover (every non-DNSKEY RRset carries a signature
from each old and new ZSK algorithm during the rollover window). A
ZSK-algorithm rollover under this profile is no easier and no harder
than the existing ZSK-algorithm rollover for an all-ZSK zone, and its
size cost is the same.</t>

<t>The profile is defined in terms of algorithm separation alone; it does
not assume any particular character for either algorithm. In the
intended deployment both algorithms are post-quantum -- a strong,
long-lived KSK algorithm paired with a ZSK algorithm whose signatures
are small enough to be acceptable on every RRset in the zone. The
profile applies equally in a transitional deployment where the KSK
algorithm is post-quantum but the ZSK algorithm is still a classical
elliptic-curve algorithm. As the set of standardized post-quantum
signature algorithms grows, the profile is expected to admit an
increasing range of ZSK choices; the strength of the chosen ZSK
algorithm against future cryptanalysis informs only the cadence
requirement of <xref target="p-zskcadence"/>, not the structural shape of the
profile itself.</t>

<t>A zone that does not match this profile remains subject to the existing
completeness rule of <xref target="RFC4035"/> Section 2.2 and <xref target="RFC6840"/> Section
5.11.</t>

</section>
<section anchor="the-change-validator-side"><name>The Change (Validator Side)</name>

<t>This document also updates the validator-side behavior of <xref target="RFC4035"/>
and <xref target="RFC6840"/>. When a validator processes a zone whose parent DS and
apex DNSKEY RRsets match the algorithm-split profile of the preceding
section, with KSK-algorithm set K and ZSK-algorithm set Z, the
validator:</t>

<t><list style="symbols">
  <t><bcp14>MUST</bcp14> validate the apex DNSKEY RRset using a signature of some
algorithm in K (the algorithms present in the parent DS RRset), as
required by the existing chain-of-trust rules.</t>
  <t><bcp14>MUST</bcp14> validate non-DNSKEY RRsets of the zone using signatures of some
algorithm in Z.</t>
  <t><bcp14>MUST NOT</bcp14> treat the zone as Bogus solely because non-DNSKEY RRsets lack
signatures of any algorithm in K.</t>
</list></t>

<t>A validator that supports some algorithm in K but no algorithm in Z
treats the zone as it would any zone whose data signatures are in an
unsupported algorithm (see Section 5.2 of <xref target="RFC4035"/>). A validator
that supports no algorithm in K treats the delegation as Insecure, as
today.</t>

<t>The validator-side update is essential. Without it, a strict reading
of the existing completeness rules would cause a conforming validator
to mark every algorithm-split zone as Bogus. Implementations that
support this document <bcp14>MUST</bcp14> therefore implement the relaxation on both
the signer and validator sides.</t>

<t>This relaxation is defined structurally, in terms of the parent DS and
apex DNSKEY contents alone, and does not depend on which algorithms
appear in K. A validator <bcp14>MAY</bcp14> nonetheless apply a stricter local policy
-- for example, accepting the relaxation only when the KSK algorithm is
in an operator-configured set. This is additive local caution, not a
change to the acceptance rule defined here, and is analogous to the
algorithm denylists validators may already maintain; like the
classifier of <xref target="p-dssignal"/>, it is best expressed as a compiled-in
default that the operator can override.</t>

</section>
</section>
<section anchor="p-zskcadence"><name>Part 2: Bounded ZSK Rotation Cadence</name>

<section anchor="what-the-cadence-bound-does"><name>What the Cadence Bound Does</name>

<t>The safety of the completeness relaxation rests on the structural
asymmetry between the KSK and ZSK roles, derived in <xref target="security"/>: an
adversary who breaks the ZSK algorithm cannot substitute a ZSK of their
own without also forging a KSK-algorithm signature. That argument holds
regardless of how often the ZSK is rolled. What the rotation cadence
adds is a bound on the <em>residual</em> exposure -- the window during which a
break of the ZSK algorithm could be used to forge data that validates
against a currently published ZSK.</t>

<t>For readability the rest of this section describes the steady-state case
|K| = |Z| = 1 with KSK algorithm A and ZSK algorithm B; the argument
extends directly to rollover windows where K or Z is larger, in which
case every algorithm in K plays the role of A and every algorithm in Z
plays the role of B.</t>

<t>The KSK algorithm A and the ZSK algorithm B occupy distinct positions
in a fixed chain of trust:</t>

<t><list style="numbers" type="1">
  <t>The parent DS RRset, validated by the parent's own chain of trust,
authenticates the child's KSK (algorithm A).</t>
  <t>The KSK signs the apex DNSKEY RRset, authenticating the ZSK
(algorithm B) as key material.</t>
  <t>The ZSK signs the non-DNSKEY RRsets of the zone.</t>
</list></t>

<t>The effect of the split is that the KSK -- the trust anchor for the
zone, referenced by the parent DS -- can be given a stronger,
longer-lived algorithm than was previously possible, because its
signature size no longer has to fit the constraints of the ZSK role.
The ZSK is not made weaker by this; it keeps whatever strength it would
have had anyway. What changes is that the ZSK signature no longer has a
same-strength KSK-algorithm signature sitting alongside it on every
RRset.</t>

<t>An adversary who breaks the ZSK algorithm can forge signatures that
validate against a currently published ZSK, but cannot substitute a ZSK
of their own choosing without forging a KSK-algorithm signature on the
apex DNSKEY RRset -- which the upgraded KSK is chosen to resist. The
adversary's forgery window is therefore bounded by the lifetime of any
individual ZSK. Bounding that lifetime is the role of the rotation
cadence.</t>

<t>This is not a new obligation invented by this document. The completeness
rule of <xref target="RFC4035"/> never prevented this scenario on its own:
<xref target="RFC6840"/> Section 5.11 already permits a validator to validate using
any single supported algorithm. What completeness did do was make a
second-algorithm signature available on every RRset, so a validator that
supported it <em>could</em> choose to require it. The algorithm-split profile
makes that fallback unnecessary rather than unavailable: the ZSK is held
at a strength the operator already trusts, and its exposure is bounded
by ordinary rotation instead of by signature redundancy.</t>

</section>
<section anchor="the-requirement"><name>The Requirement</name>

<t>A zone signed under the algorithm-split profile of <xref target="p-algsep"/> <bcp14>SHOULD</bcp14>
roll its ZSK at a cadence T appropriate to the threat estimate against
the ZSK algorithm. T is intentionally not a fixed value in this
document, because the appropriate value depends on the chosen ZSK
algorithm and on cryptanalytic progress, neither of which can be fixed
at the time of writing. The safety of the completeness relaxation does
not depend on this cadence (it rests on the structural argument of
<xref target="security"/>); the cadence bounds the residual exposure of the ZSK
algorithm, and matters most in the fallback case below.</t>

<t>For the intended deployment, in which the ZSK algorithm is itself
PQ-safe (see <xref target="p-algsep"/>), the appropriate cadence is an ordinary
rotation schedule -- the months-scale intervals that current operational
practice already supports -- because the ZSK algorithm is not expected
to be broken within the operational lifetime of any individual key. The
cadence becomes a tighter security parameter only in the fallback case
where the ZSK algorithm is materially weaker than the KSK algorithm (for
example a classical ZSK retained during the transition); there, T should
be reduced as the threat estimate against that algorithm sharpens.</t>

<t>The appropriate value of T is a matter of operator security policy,
informed by external threat tracking -- for example, the post-quantum
cryptanalysis guidance of the IETF (notably the Crypto Forum Research
Group) and of national bodies such as NIST's post-quantum cryptography
project -- rather than fixed by this document. Operationally, T is
expressed as the ZSK effectivity period and realized using the
established key-rollover machinery of <xref target="RFC6781"/> and the
rollover-timing parameters of <xref target="RFC7583"/>.</t>

<t>Signing implementations (including BIND, Knot, Cascade, and others)
are expected to encode per-algorithm minimum cadences as
policy and may refuse to operate a zone under the algorithm-split
profile with a ZSK lifetime exceeding those minima. Such policies are
out of scope for this document, which only recommends that <em>some</em>
appropriate cadence be applied.</t>

</section>
<section anchor="the-parents-signature-on-the-child-ds-is-part-of-the-argument"><name>The Parent's Signature on the Child DS Is Part of the Argument</name>

<t>The chain-of-trust argument in <xref target="p-zskcadence"/> assumes that the
parent's DS RRset is authentic. That authenticity rests on the key
with which the parent signs the child's DS RRset -- typically the
parent's ZSK, though a parent operating with a CSK signs with that key
instead. If an adversary can forge that signature, the adversary can
substitute the child's DS, and thereby the child's KSK; the child's
KSK-algorithm protection then provides no benefit.</t>

<t>This is a general property of DNSSEC: a zone is no more trustworthy
than the weakest link between it and the trust anchor. The relevant
property of the parent is therefore the strength of the key signing
the child DS RRset against the threat -- a function of both that
key's algorithm and the cadence at which the parent rolls it. A
parent that signs with a strong algorithm needs to roll only at the
normal operational cadence; a parent that signs with a weaker
algorithm needs to roll faster, to bound the window in which a future
cryptanalytic break against that algorithm could be exploited.
Either way, the obligation is on the parent's own configuration,
independent of whether any particular child uses the algorithm-split
profile. <xref target="s-root"/> discusses the special case of
the root zone.</t>

</section>
</section>
<section anchor="p-dssignal"><name>Part 3: DS Algorithm Number as a Size Signal for the DNSKEY RRset</name>

<section anchor="the-truncation-round-trip"><name>The Truncation Round Trip</name>

<t>When a resolver validates a delegation, it retrieves the child's DNSKEY
RRset. If the KSK uses a large algorithm, the DNSKEY RRset together
with its RRSIG commonly exceeds the EDNS(0) UDP response size that has
become a de facto ceiling in much of the deployed base (frequently 1232
octets). A UDP query for such a DNSKEY RRset returns a truncated
response with the TC bit set, and the resolver must repeat the query
over a connection-oriented transport. This costs an extra round trip
and a handshake on the first validation of the zone.</t>

</section>
<section anchor="resolver-behavior"><name>Resolver Behavior</name>

<t>A resolver that has obtained a child's DS RRset <bcp14>MAY</bcp14> use the algorithm
number(s) in that DS RRset to decide how to query the child DNSKEY
RRset. If the resolver recognizes a DS algorithm as one whose keys and
signatures are large enough that the DNSKEY RRset is likely to exceed
its UDP response-size limit, the resolver <bcp14>SHOULD</bcp14> query the DNSKEY RRset
directly over a transport it expects to handle a large response,
rather than first attempting UDP and incurring a truncated response.</t>

<t>This document deliberately does not name a specific transport. A
resolver may use TCP, DNS-over-TLS, DNS-over-QUIC, or any other
transport it considers suitable for large responses. The choice of
transport is a local matter and is expected to evolve as the transport
landscape evolves; this document defines the <em>signal</em> but not the
response to it.</t>

<t>This is a local optimization. It changes neither the wire format nor
the validation outcome. A resolver that does not implement it simply
experiences the existing UDP-then-fallback behavior.</t>

</section>
<section anchor="identifying-large-algorithms"><name>Identifying Large Algorithms</name>

<t>To apply this signal a resolver needs to map an algorithm number to the
property "the DNSKEY RRset is likely too large for UDP."</t>

<t>A compiled-in default set of algorithm numbers that are classified as
"large" is a reasonable starting point, and resolver implementations
are expected to ship such a default reflecting the algorithms known at
the time of release.</t>

<t>A compiled-in default is not sufficient on its own. Until the set of
post-quantum DNSSEC algorithms in operational use has stabilized -- a
process that will include experimentation, including through the
experimental algorithm range suggested by
<xref target="I-D.johani-dnsop-dnssec-alg-experimental-range"/> -- resolver
implementations <bcp14>SHOULD</bcp14> provide a configuration mechanism that allows
the operator to override the compiled-in classification.</t>

</section>
<section anchor="limitations"><name>Limitations</name>

<t>The DS algorithm number reflects the KSK algorithm only. The signal is
reliable when the KSK is the large component of the DNSKEY RRset, which
is exactly the deployment of <xref target="p-algsep"/>. If a zone instead paired a
small KSK algorithm with a large ZSK algorithm, the DNSKEY RRset could
still be large while the DS signaled a small algorithm; the signal would
be a false negative and the resolver would fall back to the existing
UDP-then-fallback behavior. A false positive (treating a small DNSKEY
RRset as large) causes only an unnecessary use of a large-capable
transport and never affects correctness.</t>

</section>
</section>
<section anchor="s-root"><name>The Root Zone</name>

<t>The root zone is the most exposed zone in DNSSEC: its KSK is a trust
anchor for the entire namespace, and its ZSK signs the DS RRsets of
every TLD. The mechanisms of this document apply to the root zone with
particular force. This section is a worked example: it illustrates how
<xref target="p-algsep"/>, <xref target="p-zskcadence"/>, and <xref target="p-dssignal"/> apply at the root,
and recommends a deployment profile. The normative requirements of
<xref target="p-algsep"/> and <xref target="p-zskcadence"/> continue to apply; the
recommendations in this section are non-normative, with the
exception of the resolver-transport recommendation in
<xref target="s-root-transport"/>, which restates a <bcp14>SHOULD</bcp14> applicable to resolvers
generally.</t>

<section anchor="root-ksk"><name>Root KSK</name>

<t>The root KSK <bcp14>SHOULD</bcp14> use a post-quantum algorithm with conservative
security properties. Hash-based signature schemes such as those of
<xref target="FIPS205"/> are well-suited to this role because their security rests
on the hash function alone, with no algebraic structure to attack.
Concrete instantiations such as SLH-DSA-128s offer small public keys
and very long-lived security at the cost of large signatures -- a
trade-off that is acceptable for a key whose signature appears only on
the apex DNSKEY RRset.</t>

</section>
<section anchor="root-zsk"><name>Root ZSK</name>

<t>The root ZSK <bcp14>SHOULD</bcp14> also use a post-quantum algorithm, but one with
smaller signatures than the root KSK algorithm. The algorithm-split
profile of <xref target="p-algsep"/> does not require the ZSK algorithm to be
classical; it requires only that it differ from the KSK algorithm.
Selecting a post-quantum ZSK algorithm with comparatively smaller
signatures (examples in the current literature include some
multivariate constructions, with MAYO as one candidate among others)
keeps DS responses and other root-zone responses within a manageable
size envelope while still providing post-quantum integrity for root
zone data.</t>

<t>Naming a specific algorithm is out of scope for this document; the
recommendation is that the root ZSK algorithm be (a) post-quantum and
(b) substantially smaller in signature size than the root KSK
algorithm.</t>

</section>
<section anchor="root-zsk-rotation-cadence"><name>Root ZSK Rotation Cadence</name>

<t>The root zone has on the order of a thousand delegations and a small,
well-resourced operational team; its ZSK rotation cadence is not
limited by signing throughput. Given the root's role as the apex of
every DNSSEC trust chain, and the cross-dependency discussed in
<xref target="p-zskcadence"/>, the strength of the key signing DS RRsets in the
root zone is a security parameter of every zone in the tree. That
strength is the combination of the algorithm used and the cadence at
which the key is rolled. The root zone operators have historically
chosen and managed the root ZSK with this combined strength in mind,
and are expected to continue doing so as threat estimates evolve.</t>

</section>
<section anchor="s-root-transport"><name>Transport for Root Queries</name>

<t>The root zone is a special case for the DS-based size signal of
<xref target="p-dssignal"/>: by construction it has no parent, so no DS RRset
exists from which a resolver could learn that the root's KSK uses an
algorithm with large signatures. The size-signal logic of
<xref target="p-dssignal"/> therefore does not apply to root queries.</t>

<t>This document takes a forward-looking position: well in advance of
any rollover of the root zone to a PQ-safe algorithm with large
signatures, resolvers <bcp14>SHOULD</bcp14> adopt a transport suitable for large
responses (TCP, DoT, DoQ, or another) for all queries to the root
zone, rather than UDP/53. Resolvers make relatively few distinct
queries to the root zone in steady state, so the per-query cost of
doing this for all root queries is small in aggregate, and the
transition to a large-signature root then becomes operationally
invisible to resolvers that have already moved their root traffic
off UDP/53. A coordinated truncation event affecting the entire
resolver population at the moment of a root rollover to a
large-signature algorithm is thereby avoided.</t>

<t>A consequence of the preceding paragraph is that the size constraints
on the root zone are largely a question of cache and bandwidth, not of
UDP truncation. The root <bcp14>MAY</bcp14> therefore use larger DS-RRset signatures
than would be acceptable for a zone served predominantly over UDP.</t>

</section>
</section>
<section anchor="operational-considerations"><name>Operational Considerations</name>

<t>The large DNSKEY RRset of an algorithm-split zone is retrieved and
validated once per DNSKEY-TTL per resolver and then cached; subsequent
queries for ordinary zone data return small, ZSK-signed responses
that fit comfortably in UDP. The large object is thus a
once-per-TTL-per-cache cost, which <xref target="p-dssignal"/> further reduces by
avoiding the truncated-UDP round trip.</t>

<t>Rolling a large KSK transiently enlarges the DNSKEY RRset further, as
it must hold both the outgoing and incoming KSKs during the rollover.
Operators should account for this when sizing transport expectations.</t>

<t>A validator that does not support the KSK algorithm cannot follow the
DS-based chain of trust and treats the delegation as Insecure, exactly
as for any rollout of a new algorithm. Deploying a large or
post-quantum KSK therefore has the same backward-compatibility profile
as introducing any new DNSSEC algorithm.</t>

<t>The ZSK rotation cadence recommended in <xref target="p-zskcadence"/> interacts with
cache TTLs, key-management automation, and HSM throughput. Operators
adopting the algorithm-split profile <bcp14>SHOULD</bcp14> verify that their
operational pipeline can sustain the chosen cadence before deploying
the profile.</t>

</section>
<section anchor="security"><name>Security Considerations</name>

<section anchor="why-the-completeness-relaxation-is-safe"><name>Why the Completeness Relaxation Is Safe</name>

<t>The DNSSEC algorithm-completeness rule of <xref target="RFC4035"/> Section 2.2
and <xref target="RFC6840"/> Section 5.11 exists to prevent algorithm-downgrade
attacks in deployments where multiple algorithms play <em>peer</em> roles:
each algorithm is independently capable of authenticating zone data,
and an attacker who breaks the weaker of two peers can forge data
and strip signatures from the stronger one. Completeness ensures
that every RRset is independently protected under every algorithm a
validator might choose, and operator policy can require validation
under the strongest available algorithm.</t>

<t>In the algorithm-split profile of <xref target="p-algsep"/>, the KSK-side and
ZSK-side algorithms are <em>not</em> peers. They occupy distinct,
structurally asymmetric roles in a fixed chain of trust: the parent DS
authenticates the KSK, the KSK authenticates the ZSK, and the ZSK signs
zone data. An adversary who breaks the ZSK algorithm cannot substitute
a ZSK of their own choosing without also forging a KSK-algorithm
signature on the apex DNSKEY RRset -- and the KSK algorithm is, under
this profile, chosen to be strong precisely because the split frees it
from the ZSK's size constraint. The peer-role downgrade that
completeness was designed to prevent therefore does not apply: the
algorithms are not peers, and the algorithm protecting the
chain-of-trust step is the stronger of the two, not the weaker. This
structural argument is the basis for the safety of the relaxation, and
it holds independently of how often the ZSK is rolled.</t>

<t>The relaxation does change one thing. Where every RRset previously
carried signatures from every DNSKEY-RRset algorithm, a validator that
supported the stronger algorithm <em>could</em> choose to require it on zone
data and thereby refuse any forgery made under a weaker one. Under the
split, zone data carries only ZSK-algorithm signatures, so that
particular fallback is no longer available. Its place is taken by
bounding the ZSK's exposure through rotation (<xref target="p-zskcadence"/>): the ZSK
is held at a strength the operator already trusts, and the window in
which a break of it could be exploited is bounded by the ZSK lifetime
rather than by signature redundancy. For the intended PQ-safe ZSK this
is an ordinary rotation schedule.</t>

</section>
<section anchor="what-the-validator-can-and-cannot-verify"><name>What the Validator Can and Cannot Verify</name>

<t>The time-bounded guarantee of <xref target="p-zskcadence"/> rests on the zone
operator actually rolling the ZSK at an appropriate cadence. A validator
cannot verify this: nothing in the DS RRset, the DNSKEY RRset, or the
signatures reveals how often the ZSK is rolled, or whether it is ever
rolled at all. The relaxation therefore asks the validator to accept
ZSK-signed data on the strength of an operator obligation it cannot
check.</t>

<t>This is not a new property introduced by this document. A validator
has never been able to observe an operator's key-rotation behaviour,
and in practice a large fraction of signed zones roll their keys rarely
or never -- historically because rolling was perceived as difficult or
risky, and operationally because nothing forces it. The absolute
forgery-window bound that completeness is sometimes credited with was,
for those zones, already unrealised: it required both that the operator
maintain genuine multi-algorithm coverage and that a validator choose
to demand the stronger algorithm. Against that real-world baseline, a
diligently rolled ZSK under <xref target="p-zskcadence"/> is <em>stronger</em>, not weaker,
than the prevailing practice.</t>

</section>
<section anchor="the-zsk-need-not-be-the-weak-link"><name>The ZSK Need Not Be the Weak Link</name>

<t>Some of the language in <xref target="p-zskcadence"/>, and the threat model below,
analyses the demanding case in which the ZSK algorithm is materially
weaker than the KSK algorithm -- typically a classical ZSK (ECDSA,
Ed25519) paired with a post-quantum KSK. The intended deployment is not
that case. The expectation is that the ZSK algorithm is itself
post-quantum, with a security margin comparable to the long-lived
classical keys (such as 2048-bit or larger RSA) that are, in practice,
rarely or never rolled today -- chosen for the "ZSK property" of small
signatures rather than for a short security horizon.</t>

<t>When the ZSK is that strong, the cadence recommendation of
<xref target="p-zskcadence"/> is a conservative margin rather than the sole barrier
to forgery, and the net effect of the profile is almost entirely on the
other side of the split: it lets the KSK, for the first time, be chosen
for strength and longevity instead of being held down to the ZSK's
size constraint. The proposal is better understood as a gain in
trust-anchor strength than as a concession in ZSK strength. (The
cross-zone dependency of <xref target="cross-zone-dependency"/> still applies: until
a zone's parent transitions, the strength of the parent's DS-signing
key, not the child's KSK, caps the chain.)</t>

</section>
<section anchor="threat-model-for-the-transition"><name>Threat Model for the Transition</name>

<t>In the intended deployment both the KSK and the ZSK use PQ-safe
algorithms (the KSK a strong, long-lived one; the ZSK one with small
signatures). Against the arrival of a cryptographically relevant
quantum computer (CRQC), both the trust anchor and bulk zone data are
then protected, and the ZSK rotation cadence is an ordinary schedule
that bounds residual exposure as a margin.</t>

<t>The more demanding case is a transitional one, in which the KSK has
already been upgraded to a PQ-safe algorithm but the ZSK is still a
classical algorithm such as ECDSA or Ed25519. It is worth working
through explicitly, because a profile that is safe here is safe a
fortiori when the ZSK is also PQ-safe. The relevant threat is a CRQC
capable of breaking the classical ZSK algorithm. Under that threat:</t>

<t><list style="symbols">
  <t>Long-term data integrity for non-DNSKEY RRsets is not provided in
this transitional case; an attacker with a CRQC can forge ZSK-signed
data within the window of a published ZSK's lifetime. The
<xref target="p-zskcadence"/> cadence bounds this window, which is why the cadence
matters most in exactly this case.</t>
  <t>Long-term trust-anchor integrity <em>is</em> provided, because the KSK
algorithm is chosen to resist a CRQC. A validator with a stable
PQ-safe trust anchor retains the ability to detect substituted KSKs
across time.</t>
  <t>The combination is therefore appropriate even as an early transition
step: it upgrades the longest-lived element (the trust anchor) first,
and exercises large-key handling, transport, and operational tooling,
while full protection of bulk zone data against a CRQC follows once
the ZSK is also PQ-safe (as discussed for the root in <xref target="s-root"/>).</t>
</list></t>

</section>
<section anchor="cross-zone-dependency"><name>Cross-Zone Dependency</name>

<t><xref target="p-zskcadence"/> establishes that a child zone in the algorithm-split
profile is no more secure than the parent's signature on its DS
RRset. This is a general DNSSEC property and not a novel weakness,
but the algorithm-split profile makes it operationally visible: a
child KSK that uses a strong post-quantum algorithm can give the
misleading impression that the child is post-quantum-secure
end-to-end, when in fact the parent's DS-signing key -- typically a
classical ZSK -- remains the binding strength of the chain until the
parent itself transitions.</t>

<t>The operational implication: a parent whose children adopt the
algorithm-split profile <bcp14>SHOULD</bcp14> treat the strength of its DS-signing
key (algorithm and rotation cadence together) as a security
parameter of those children, not solely of itself.</t>

</section>
<section anchor="transport-signal"><name>Transport Signal</name>

<t>The DS-based size signal of <xref target="p-dssignal"/> is a transport optimization
with no effect on validation. A misjudgment about an algorithm's size
results only in an unnecessary use of a large-capable transport, or in
a fallback to the existing UDP-then-fallback behavior; it cannot affect
whether data validates.</t>

</section>
</section>
<section anchor="iana"><name>IANA Considerations</name>

<t>This document requires no IANA action. <xref target="p-algsep"/> and
<xref target="p-zskcadence"/> update the signing and validation rules of
<xref target="RFC4035"/> and <xref target="RFC6840"/>, and <xref target="p-dssignal"/> is a resolver-side
local optimization.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC4035">
  <front>
    <title>Protocol Modifications for the DNS Security Extensions</title>
    <author fullname="R. Arends" initials="R." surname="Arends"/>
    <author fullname="R. Austein" initials="R." surname="Austein"/>
    <author fullname="M. Larson" initials="M." surname="Larson"/>
    <author fullname="D. Massey" initials="D." surname="Massey"/>
    <author fullname="S. Rose" initials="S." surname="Rose"/>
    <date month="March" year="2005"/>
    <abstract>
      <t>This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of new resource records and protocol modifications that add data origin authentication and data integrity to the DNS. This document describes the DNSSEC protocol modifications. This document defines the concept of a signed zone, along with the requirements for serving and resolving by using DNSSEC. These techniques allow a security-aware resolver to authenticate both DNS resource records and authoritative DNS error indications.</t>
      <t>This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4035"/>
  <seriesInfo name="DOI" value="10.17487/RFC4035"/>
</reference>
<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="RFC6840">
  <front>
    <title>Clarifications and Implementation Notes for DNS Security (DNSSEC)</title>
    <author fullname="S. Weiler" initials="S." role="editor" surname="Weiler"/>
    <author fullname="D. Blacka" initials="D." role="editor" surname="Blacka"/>
    <date month="February" year="2013"/>
    <abstract>
      <t>This document is a collection of technical clarifications to the DNS Security (DNSSEC) document set. It is meant to serve as a resource to implementors as well as a collection of DNSSEC errata that existed at the time of writing.</t>
      <t>This document updates the core DNSSEC documents (RFC 4033, RFC 4034, and RFC 4035) as well as the NSEC3 specification (RFC 5155). It also defines NSEC3 and SHA-2 (RFC 4509 and RFC 5702) as core parts of the DNSSEC specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6840"/>
  <seriesInfo name="DOI" value="10.17487/RFC6840"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="FIPS204" target="https://csrc.nist.gov/pubs/fips/204/final">
  <front>
    <title>Module-Lattice-Based Digital Signature Standard</title>
    <author >
      <organization>National Institute of Standards and Technology (NIST)</organization>
    </author>
    <date year="2024" month="August"/>
  </front>
  <seriesInfo name="FIPS" value="204"/>
</reference>
<reference anchor="FIPS205" target="https://csrc.nist.gov/pubs/fips/205/final">
  <front>
    <title>Stateless Hash-Based Digital Signature Standard</title>
    <author >
      <organization>National Institute of Standards and Technology (NIST)</organization>
    </author>
    <date year="2024" month="August"/>
  </front>
  <seriesInfo name="FIPS" value="205"/>
</reference>


<reference anchor="RFC6781">
  <front>
    <title>DNSSEC Operational Practices, Version 2</title>
    <author fullname="O. Kolkman" initials="O." surname="Kolkman"/>
    <author fullname="W. Mekking" initials="W." surname="Mekking"/>
    <author fullname="R. Gieben" initials="R." surname="Gieben"/>
    <date month="December" year="2012"/>
    <abstract>
      <t>This document describes a set of practices for operating the DNS with security extensions (DNSSEC). The target audience is zone administrators deploying DNSSEC.</t>
      <t>The document discusses operational aspects of using keys and signatures in the DNS. It discusses issues of key generation, key storage, signature generation, key rollover, and related policies.</t>
      <t>This document obsoletes RFC 4641, as it covers more operational ground and gives more up-to-date requirements with respect to key sizes and the DNSSEC operations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6781"/>
  <seriesInfo name="DOI" value="10.17487/RFC6781"/>
</reference>
<reference anchor="RFC7583">
  <front>
    <title>DNSSEC Key Rollover Timing Considerations</title>
    <author fullname="S. Morris" initials="S." surname="Morris"/>
    <author fullname="J. Ihren" initials="J." surname="Ihren"/>
    <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
    <author fullname="W. Mekking" initials="W." surname="Mekking"/>
    <date month="October" year="2015"/>
    <abstract>
      <t>This document describes the issues surrounding the timing of events in the rolling of a key in a DNSSEC-secured zone. It presents timelines for the key rollover and explicitly identifies the relationships between the various parameters affecting the process.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7583"/>
  <seriesInfo name="DOI" value="10.17487/RFC7583"/>
</reference>

<reference anchor="I-D.johani-dnsop-dnssec-alg-experimental-range">
   <front>
      <title>Experimental and Private-Use Ranges in the DNSSEC Algorithm Numbers Registry</title>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="12" month="June" year="2026"/>
      <abstract>
	 <t>   The DNSSEC Algorithm Numbers registry contains two code points, 253
   (PRIVATEDNS) and 254 (PRIVATEOID), intended for private and
   experimental algorithms.  These code points identify the algorithm by
   prepending a domain name or an object identifier to the &quot;Public Key&quot;
   field of the DNSKEY RDATA, overloading the semantics of that field
   and forcing every implementation to special-case algorithm dispatch.
   Because all such algorithms share a single code point, they cannot be
   distinguished on the wire by the algorithm number alone.

   This document reserves two small ranges of DNSSEC algorithm numbers:
   one for Private Use, requiring no IANA registration, and one for
   experimental algorithms, registered on a First Come First Served
   basis.  Code points drawn from these ranges behave identically to
   ordinary algorithm numbers and require no overloading of the DNSKEY
   RDATA.  This enables clean experimentation with the growing set of
   post-quantum and other candidate signature algorithms.  This document
   updates RFC 6014 and RFC 9157.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-johani-dnsop-dnssec-alg-experimental-range-00"/>
   
</reference>



    </references>

</references>


<?line 748?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The author acknowledges that Ondřej Surý arrived independently at the
idea of splitting the KSK and ZSK algorithms, and thanks him for
substantive discussions on this topic during RIPE 92.</t>

<t>The author also thanks Joe Abley (Cloudflare), Christian Elmerot
(Cloudflare), Peter Thomassen (deSEC), and Erik Bergström (Swedish
Internet Foundation) for valuable insights and suggestions.</t>

</section>
<section numbered="false" anchor="change-history-to-be-removed-before-publication"><name>Change History (to be removed before publication)</name>

<section numbered="false" anchor="draft-johani-dnsop-dnssec-alg-split-01"><name>draft-johani-dnsop-dnssec-alg-split-01</name>

<t>-01 is the first substantive version (-00 was a brief initial posting,
quickly superseded). Relative to -00:</t>

<t><list style="symbols">
  <t>The motivation leads with per-role algorithm choice: the split lets
the KSK and ZSK each use the algorithm suited to its role, the
primary effect being a stronger KSK rather than a weaker ZSK.</t>
  <t>The safety argument for the completeness relaxation is the structural
(not-peers) one and holds independently of rotation cadence; the
cadence is presented as a bound on residual ZSK exposure, an ordinary
rotation schedule for the intended PQ-safe ZSK.</t>
  <t>Dropped "with Bounded ZSK Cadence" from the title; the threat model
leads with the PQ-safe-ZSK case; and a validator <bcp14>MAY</bcp14> apply a stricter
local policy on which KSK algorithms it accepts the relaxation for.</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA819S5PbVpbm/v4KdHrhTAVJPWx3uTK7qjqVkstqyZKsTLej
1DExAZIgiUoQYOECmaZV+iGzm18xu9lMx/yvPt85574AUnJFzGK8sJIkcHEf
5/GdJ6bTqenKrirOs5PLat20ZbfZTq93Vdllz15fXz+/Os9eXr98+P76ZeZ/
z66LXd7mXdnUJyafz9vi7ujtJ2aRdwX9sj/PbLc0y2ZR51t63LLNV930r80m
r8vpsrbNDv+3xWKaV+upxRDTR4+N7efb0lp6VLff0W0vnt98Z8pde551bW+7
J48e/f7RE5O3RU5TeFF3RVsX3Ym5b9rbddv0O/qWJvLmbfYzfVPW6+zP+PbE
9LslzcueZ18/+uqbSfbP3379yNwWe7pveW6yqc4ef+0a203/1ud112/xmbYD
/7yXf+i6l8//gr+6Nq/trmk7c1fUfUGjZH4GzTYv6+w1LTy73tuu2GZvdoXs
oD2hC2VtJ4M5ZhndVtH3vD3/Whbdata0a/yQt4sN/bDpup09f/gQ1+Gr8q6Y
ucse4ouH87a5t8VDHuHhiTG2y+vlf8+rpqYH7gtrTN53m6bFomncLFv1VSUn
9G84m+y6K2q6acs/0rB0XL/yxM+zmw0t575YlnaTua3Pvmv6eskX8B2FLIHP
eWZ1rH8t9WrblauuqGxBvxXGlPWqabd08x1v33cv3l4/efT1OQ/kqPSHZtlX
xfRV3nXlopg+zW2xzJ6V67LLq+y6XNd517c0L6wzb5cncnPerosu2rCFbRez
urTdbN3cPdz1c/twVe7sQ3oc/VHnldzn94b/m2L9NMhrXh497gWtpuz6rsia
lX+izejf7KZYbOqmatb77PT1i+ubMxkQRHeePXn05Ovpo2/5G1u0ZWGxcvcY
LJueQlM58ZvwTboJ9CzatsLa7Pvcbv7fb8I3//9swjdEtNPpNMvnljhs0Rnz
NmJI5dPM+jXnTgzZbJPfFdm2X2yyCktvM2JwntjDpjX+Dpt1oPOOiLmoqnJH
ZDVd9O1dMhRx76LZbps6622Rdc0y38+I1FuT1/vM4hH+Yh4p3xW/qGzI3r2z
xBdrMOKEJloviozE4yJvsWZcDcFDrE4sUebVBd/f7Io6+1tfWGxyVtrsflPQ
9y3/SHPusNn4+1diZFoojdMYPCK7pznQ+LPsEsudYpkQKXjEKYmuM94qmzV1
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
P50VStn/C1XLBKiBlQAA

-->

</rfc>

