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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-garciapardo-panrg-drkey-03" category="info">

  <front>
    <title abbrev="I-D">Dynamically Recreatable Keys</title>

    <author initials="J." surname="Garcia-Pardo" fullname="Juan A. Garcia-Pardo">
      <organization>ETH Zürich</organization>
      <address>
        <email>juan.garcia@inf.ethz.ch</email>
      </address>
    </author>
    <author initials="C." surname="Krähenbühl" fullname="Cyrill Krähenbühl">
      <organization>ETH Zürich</organization>
      <address>
        <email>cyrill.kraehenbuehl@inf.ethz.ch</email>
      </address>
    </author>
    <author initials="B." surname="Rothenberger" fullname="Benjamin Rothenberger">
      <organization>ETH Zürich</organization>
      <address>
        <email>benjamin.rothenberger@inf.ethz.ch</email>
      </address>
    </author>
    <author initials="A." surname="Perrig" fullname="Adrian Perrig">
      <organization>ETH Zürich</organization>
      <address>
        <email>adrian.perrig@inf.ethz.ch</email>
      </address>
    </author>

    <date year="2022" month="July" day="24"/>

    
    <workgroup>PANRG</workgroup>
    

    <abstract>


<t>DRKey is a pragmatic Internet-scale
key-establishment system that allows any
host to locally obtain a symmetric key to enable a remote service to
perform source-address authentication,
and enables first-packet authentication.
The remote service can itself
locally derive the same key with efficient cryptographic operations.</t>

<t>DRKey was developed with path aware networks in mind, but it is also
applicable to today’s Internet.
It can be incrementally deployed and it offers incentives to the
parties using it independently of its dissemination in the network.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>In today’s Internet,
denial-of-service (DoS)
attacks often use reflection and amplification techniques enabled
by connectionless protocols like DNS or NTP and the possibility
of source-address spoofing.
<!-- This issue has been tackled
in the past through several different approaches: source-address
filtering at the network edge, cookie-based challenge–response
systems, or client certificates and asymmetric cryptography.
Unfortunately, these systems provide relatively weak
guarantees (filtering and cookies) or introduce a substantial overhead
and open up additional DoS vulnerabilities (asymmetric cryptography). -->
<!-- We describe several widely known systems and their
downsides in §3.1 and provide an extensive overview in §8. We
conclude that  -->
The main goal of DRKey is to provide a
highly efficient global first-packet authentication system.
DRKey
provides packet authentication at the network layer based on the
network address (i.e., the IP address in the current Internet or the
combination of AS number and local address in SCION),
and not
based on a higher-level identity such as a domain name or
web-server identity.</t>

<t>To obtain strong guarantees with high efficiency on
a per-packet basis, an authentication system based on symmetric
cryptography is required.
DRKey does not rely on in-band protocols to negotiate
keys, so it is able to authenticate already the first packet received
from a host.
DRKey also does not store the symmetric keys for all potential
senders, as it would be infeasible in an Internet-scale system.</t>

<t>The core property achieved by DRKey is to enable a service to rapidly
derive a symmetric key to perform network-address authentication for an
arbitrary source host. This enables services such as DNS or NTP
to instantly authenticate the first request originating from a client,
thus providing a defense against reflection-based DoS attacks.
The key can also be used to authenticate the payload of the
request and reply, which is particularly useful for DNS which by
default does not include any authentication.</t>

<t>The prototype
system enables the server to derive the symmetric key within two
AES operations, which corresponds to 18 ns on a commodity server
platform, and authenticate the first packet within 85 ns on commodity
hardware.
Such speeds cannot be achieved with
protocols based on asymmetric cryptography that require multiple
messages to be exchanged to establish a shared session key.
For
example, DRKey outperforms RSA 1024–based source authentication
by a factor of more than 220, even under the assumption that
the service already knows the client’s public key.
In addition to
providing highly efficient network address verification, DRKey can
also be used to authenticate Diffie–Hellman (DH) keys in a protocol
such as TCPcrypt.</t>

<section anchor="outline" title="Outline">

<t>The main ideas behind DRKey are as follows. Autonomous systems
(ASes) can obtain certificates for their AS number and IP
address range from a public-key infrastructure (PKI), i.e., SCION’s
control-plane PKI in a SCION deployment or the Resource
Public Key Infrastructure (RPKI) in today’s Internet.
DRKey
uses such a PKI to bootstrap its own symmetric-key infrastructure.
DRKey key servers are set up in all deploying ASes and contact
each other on a regular basis to set up symmetric keys between
pairs of ASes. These symmetric keys are then used as a root keys to
efficiently derive a hierarchy of symmetric per-host and per-service
keys. The hardware implementation of the AES block cipher
on most modern CPUs (Intel, AMD, ARM), allows such a key derivation in
about four to seven times faster than a single DDR4 DRAM memory
fetch.
The approach described ensures rapid key derivation on the
server side, whereas a slower key fetch is required by the client
to a local key server. This one-sidedness makes the source
authentication for the receiving side as efficient as possible and
ensures that DRKey does not introduce new DoS attack vectors.
DRKey is incrementally deployable and provides immediate benefits to
deploying entities.</t>

<t>A fundamental tradeoff in DRKey is the additional trust requirements
of end hosts in their local AS: as the key server is able to
derive the end-to-end symmetric key, this key cannot be used directly
to achieve secrecy between two end hosts. However, 
DRKey keys can be used to authenticate that the source host
indeed belongs to the claimed AS, which suffices to resolve DoS
attacks.</t>

<!-- The main contributions of this work are the following:
• We develop a key-establishment infrastructure using a key hierarchy
and dynamic key derivation as a scalable and highly
efficient approach for global key establishment.
• We describe how PISKES can be integrated into the SCION
architecture and deployed in today’s Internet.
• We formally verify the security guarantees of the proposed
key-establishment protocol using the Tamarin prover tool.
• We describe how first-packet authentication can be achieved
based on this key hierarchy and provide a prototype implementation
of PISKES that demonstrates its efficiency. -->

</section>
</section>
<section anchor="terminology" title="Terminology">

<t><list style="hanging">
  <t hangText='AS:'>
  Autonomous System. A one-entity managed network.</t>
  <t hangText='SCION:'>
  A Path-Aware inter-networking architecture.</t>
  <t hangText='Network Node:'>
  An entity that processes packets.</t>
  <t hangText='Key Server:'>
  An entity connected to the network, that contains
cryptographic keys, and is able to provide such keys to their
respective hosts, granted they have the required permissions.</t>
  <t hangText='End Host:'>
  A node in the network that executes programs in behalf of
users. Users usually have full control of their end hosts.</t>
  <t hangText='PRF:'>
  Pseudo Random Function. Function that has a low time complexity
to evaluate, but which inverse is very expensive to obtain, making it
infeasible to compute. PRF may have as parameters a key and a value to
which the function is applied.</t>
  <t hangText='DRKey Secret Value:'>
  A sequence of bytes kept in secret by the AS,
inside the Key Server. The validity of the secret value is configurable
per AS, and dictates the validity of other keys derived from it.
The secret value is either random, or derived via a PRF from a random
or secret sequence of bytes only known by the AS. Secret values are
the root of the DRKey key hierarchy.
A secret value for AS A is denoted as <spanx style="verb">SVa</spanx>. More generally, a secret value
can be bound to a standard protocol p (denoted as <spanx style="verb">SVa^p</spanx>). Non-standard protocols
do not have their own secret value.</t>
  <t hangText='DRKey Key Arrow Notation:'>
  In DRKey, level 1 and level 2 keys exist to allow the 
authentication of the communication
between one source entity <spanx style="verb">a</spanx> and one destination entity <spanx style="verb">b</spanx>.
The key is derived by one side and copied to the other.
The side that derives the key is the source of the arrow in the
DRKey key notation.
So the key <spanx style="verb">K_{b-&gt;a}</spanx> denotes a key that is derived at <spanx style="verb">b</spanx>’s side
and obtained on <spanx style="verb">a</spanx>’s side, independently of the flow of the packets.
The source side of the arrow is also called the “fast side”,
and the destination, the “slow side”.
The fast side is typically a server, and the slow side an end host.</t>
  <t hangText='DRKey Level 1 Key:'>
  A key derived from a protocol bound secret value,
by specifying the source and
destination AS IDs of the ASes involved in the communication.
The level 1 key can be derived by applying a PRF
keyed on the secret value, to the identifiers
of the source and destination ASes of the derivation.
A level 1 key between fast side AS A and slow one AS B
is denoted as <spanx style="verb">K_{A-&gt;B}^p</spanx> for a standard protocol “p”,
of <spanx style="verb">K_{A-&gt;B}^*</spanx> for non-standard ones.</t>
  <t hangText='DRKey Level 2 Key:'>
  A key derived from a level 1 key, and used to authenticate
the source of packets from
end-hosts to infrastructure nodes, or to further derive
level 3 keys.
A level 2 key is derived by applying a PRF keyed on the level 1 key to
the identifiers of the source and destination of the communication.
These identifiers can be the AS ID plus the IP address for the
slow side, and the AS ID or the AS ID plus the IP address for
the fast side of the DRKey protected communication.
All level 2 keys are anchored to a protocol, identified by a string.
We distinguish two possible level 2 keys, depending on the fast and slow sides of the key.
(1) A level 2 key between the fast side AS A and
the slow side end host Hb in AS B for standard protocol “p” is denoted
as <spanx style="verb">K_{A-&gt;B:Hb}^p</spanx>.
(2) A level 2 key between the fast side endhost Ha in AS A and
the slow side AS B for standard protocol “p” is denoted
as <spanx style="verb">K_{A:Ha-&gt;B}^p</spanx>.
For non-standard protocols the notation is the same but replacing <spanx style="verb">p</spanx> with <spanx style="verb">*,p</spanx>.</t>
  <t hangText='DRKey Level 3 Key:'>
  A key derived from a level 2 host-to-AS key, used to authenticate
the source of end-host to end-host packets.
A level 2 key between the fast side endhost Ha in AS A and
the slow side end host Hb in AS B for standard protocol “p” is denoted
as <spanx style="verb">K_{A:Ha-&gt;B:Hb}^p</spanx>.
For non-standard protocols the notation is the same but replacing <spanx style="verb">p</spanx> with <spanx style="verb">*,p</spanx>.</t>
  <t hangText='MAC:'>
  Message Authentication Code is a sequence of bytes that authenticates
and protects the integrity of a message. Modifying the sender identity
or the content of the message is detected by the MAC.</t>
</list></t>

</section>
<section anchor="key-derivation" title="Key Derivation">

<t>To convey an intuition of the operation of the DRKey system,
a high-level overview is provided first.</t>

<section anchor="overview" title="Overview">

<t>The basic use case of DRKey is when a host Ha in AS A desires to
communicate with a server Hb in AS B, and Hb wants to authenticate
the network address of Ha using a symmetric key.
ASes A and B have set up one DRKey key server each,
KSa and KSb respectively. Each AS randomly selects a local secret value,
SVa and SVb, which is only shared with trustworthy entities
(in particular the key servers) in the same AS.
The secret values are never shared outside the AS.
<!-- Since hosts are typically not trustworthy, they
would not obtain the local secret value. -->
The secret value will serve as the root of a symmetric-key hierarchy,
where keys of a level are derived from keys of the preceding level.
In DRKey, the keys are derived using a CMAC with AES,
which is an efficient pseudorandom function (PRF).
The key derivation used by KSb in the example is:
<spanx style="verb">K_{B-&gt;A} = PRF_{SVb}(A)</spanx>.</t>

<t>Thanks to the key-secrecy property of a secure PRF, K_{B-&gt;A} can be
shared with another entity without disclosing SVb.
The arrow notation indicates the secret value used to
derive the key. Thus K_{B-&gt;*} would typically be used if AS B is on
the performance critical side, where <spanx style="verb">*</spanx> denotes the set of remote ASes.</t>

<t>To continue with the example, KSa will prefetch keys K_{*-&gt;A} from
key servers in other ASes, including K_{B-&gt;A} from KSb.
In the example, the server Hb is trustworthy,
and can thus obtain the secret value SVb to derive keys quickly.
When Ha wants to authenticate to Hb, it contacts its local key server
KSa and requests the key K_{B:Hb-&gt;A:Ha}, which KSa can locally
derive from K_{B-&gt;A}. Ha can now directly use this symmetric key for
authenticating to Hb.</t>

<t>The important property of DRKey is that Hb can rapidly derive
H_{B:Hb-&gt;A:Ha} by using SVb and performing two PRF operations.
The key-derivation function being one-way allows a key server
to delegate key derivation to specific entities.
The key derivation process exhibits an asymmetry, meaning that the
delegated entity Hb can directly derive a required key, whereas
host Ha is required to fetch the corresponding key from
its local key server.
As opposed
to other systems that rely on a dedicated server for key generation
and distribution (such as Kerberos), this delegation mechanism
allows entities to directly obtain a symmetric key without
communication to the key server.</t>

</section>
<section anchor="assumptions" title="Assumptions">

<t><list style="symbols">
  <t>There exists an AS-level PKI, that authenticates the public
key of an asymmetric key pair for each participating AS E
and certifies its network resources; e.g.
the SCION control-plane PKI certifying AS numbers
for a deployment in SCION and RPKI certifying AS
numbers and IP address ranges for a deployment in today’s
Internet.</t>
  <t>To verify the expiration time of keys and messages, DRKey
relies on time synchronization among ASes with a precision on
the order of several seconds. This can be achieved using a secure
time-synchronization protocol such as Roughtime.</t>
  <t>There exists an authentication mechanism
for end hosts within an AS. This is needed for access control.</t>
</list></t>

</section>
<section anchor="key-hierarchy" title="Key Hierarchy">

<t>The DRKey key-establishment framework uses a key hierarchy
consisting of four levels:</t>

<t><list style="symbols">
  <t>0th-Level (AS-internal). On the zeroth level of the hierarchy,
each AS A randomly generates a local AS-specific secret value SVa.
The secret value represents the per-AS basis of the key hierarchy
and is renewed frequently (e.g., daily). In addition, an AS can
generate protocol-specific secret values:
<spanx style="verb">SVa^p = PRF_{SVa}("p")</spanx>
for a standard protocol p, where “p” is its ASCII encoding.
The purpose of these values is that they can be shared with specific
services, such as DNS servers, that cannot be trusted with SVa
but should still be able to efficiently derive additional keys.
This construction introduces additional communication and storage
overhead, so only widely used protocols such as DNS or NTP would
have their own secret values.
Non-standard arbitrary protocols will not have their own independent secret value,
and thus it won’t be shareable among services.
For these protocols, their level 1 keys will be derived from a special
secret value denoted as <spanx style="verb">SVa^*</spanx>, only used for the derivation purpose.</t>
  <t>1st-Level (AS-to-AS). By using key derivation, an AS A can
derive different symmetric keys using a PRF
from the special local secret value SVa^* or a protocol-specific secret
value SVa^p. These derived keys, which are shared between AS A
and a second AS B, form the first level of the key hierarchy and are
called first-level keys:
<spanx style="verb">K_{A-&gt;B}^x = PRF_{SVa^x}(B)</spanx>.
The input to the PRF is the (globally unique) AS number of AS
B. The value of <spanx style="verb">x</spanx> will be either <spanx style="verb">p</spanx> for standard protocols or <spanx style="verb">*</spanx>
for arbitrary ones.
The first-level keys are periodically exchanged between key servers of
different ASes.
<!-- Note that, instead of deriving first-level keys from a common
secret value, it is also possible to use the keys defined by Passport.
Protocol-specific first-level keys could then be derived from the
standard first-level keys. However, this approach would require all
entities that want to use PISKES to store and frequently update a
key for each AS instead of being able to derive them from a single
secret value. In the remainder of the paper, we therefore focus
on the DRKey-inspired key hierarchy with explicit key-exchange
messages. --></t>
  <t>2nd-Level (AS-to-host, host-to-AS). Using the symmetric
keys of the first level of the hierarchy, second-level keys are derived
to provide symmetric keys for authentication (AS-to-host cases) or
further derivation (host-to-AS cases) into the third level keys.
Second-level keys can be established between:
  <list style="symbols">
      <t>An AS as fast side, and an end-host as slow, for a standard protocol p:
<spanx style="verb">K_{A-&gt;B:Hb}^p = PRF_{K_{A-&gt;B}^p}(0||Hb)</spanx></t>
      <t>An end-host as fast side, and an AS as slow, for a standard protocol p:
<spanx style="verb">K_{A:Ha-&gt;B}^p = PRF_{K_{A-&gt;B}^p}(1||Ha)</spanx></t>
      <t>An AS as fast side, and an end-host as slow, for a non-standard, arbitrary protocol p:
<spanx style="verb">K_{A-&gt;B:Hb}^{*,p} = PRF_{K_{A-&gt;B}^*}(0||Hb||"p")</spanx></t>
      <t>An end-host as fast side, and an AS as slow, for a non-standard, arbitrary protocol p:
<spanx style="verb">K_{A:Ha-&gt;B}^{*,p} = PRF_{K_{A-&gt;B}^*}(1||Ha||"p")</spanx></t>
    </list></t>
  <t>3rd-Level (host-to-host). These keys are derived from the second level host-to-AS, DRKeys.
Depending on the protocol type, we observe two cases:
  <list style="symbols">
      <t>Standard protocol p: the PRF is keyed on the level 2 host-to-AS DRKey:
<spanx style="verb">K_{A:Ha-&gt;B:Hb}^p = PRF_{K_{A:Ha-&gt;B}^p}(Hb)</spanx></t>
      <t>Non-standard, arbitrary protocol p: the PRF is keyed on the level 2 host-to-AS DRKey:
<spanx style="verb">K_{A:Ha-&gt;B:Hb}^{*,p} = PRF_{K_{A:Ha-&gt;B}^{*,p}}(Hb)</spanx></t>
    </list></t>
</list></t>

</section>
</section>
<section anchor="key-establishment" title="Key Establishment">

<t>There are two types of key establishment: first level, and second or third level
key establishment, depending on the level of the key in the hierarchy.</t>

<section anchor="level1-establishment" title="First Level Key Establishment">

<t>Key exchange is offloaded to
the key servers deployed in each AS. The key servers are not only
responsible for first-level key establishment, they also derive
second-level keys and provide them to hosts within the same AS.
To exchange a first-level key, the key servers of corresponding
ASes perform the key exchange protocol. The key exchange is
initialized by key server KSb by sending the request:</t>

<figure><artwork><![CDATA[
  req = A || B || val_time || TS || [p]
]]></artwork></figure>

<t>Where TS denotes a timestamp of the current time and val_time
specifies a point in time at which the requested key is valid. If an
optional protocol p is supplied, the protocol-specific first-level key
<spanx style="verb">K'_{A-&gt;B}^p</spanx> is requested, otherwise the general <spanx style="verb">K_{A-&gt;B}</spanx> is.
The requested key may not be valid at the time of request,
either because it already
expired or because it will become valid in the future. For example,
prefetching future keys allows for seamless transition to the new
key.
The request token is signed with B’s private key to prove
authenticity of the request.</t>

<t>Upon receiving the initial request, KSa checks the signature for
authenticity and the timestamp for expiration. If the request has
not yet expired, the key server KSa will reply with an encrypted
and signed first-level key derived from the local secret value SVa
or, if an optional protocol p was supplied in the request, SVa^p:</t>

<figure><artwork><![CDATA[
  key = PRF_{SVa}(B)
      or
  key = PRF_{SVa^p}(B)

  repl = {A || key}_{PK_B} || exp_time || TS
]]></artwork></figure>

<t>The term <spanx style="verb">{A || key}_{PK_B}</spanx> indicates that the concatenation of A with
the <spanx style="verb">key</spanx> is encrypted with asymmetric cryptography using B’s public
key.
The reply token is signed with A’s private key.</t>

<t>Once the requesting key server KSb has received the key, it shares it
among other local key servers to ensure a consistent view. Each key
server can now respond to queries by entities within the same AS
requesting second-level keys. Alternatively, the proposed first-level
key exchange protocol could also make use of TLS 1.3 with client
certificates to secure the key exchange.</t>

<t>All first-level keys for other ASes are prefetched such that
second-level keys can be derived without delay. However, on-demand key
exchange between ASes is also possible. For example, in case a key
server is missing a first-level key that is required for the derivation
of a second-level key, the key server initiates a key exchange. ASes
that contain a large number of end hosts benefit from prefetching
most first-level keys, as they are likely to communicate with a
large set of destination ASes. In today’s Internet there exist around
68000 active ASes. Thus, setting up symmetric keys between all
entities requires minor effort and state.
To avoid explicit revocation, the shared keys are short-lived and
new keys are established frequently (e.g., daily). Subsequent key
exchanges to establish a new first-level key can use the current key
as a first line of defense to avoid signature-flooding attacks.</t>

</section>
<section anchor="second-or-third-level-key-establishment" title="Second or Third Level Key Establishment">

<t>End hosts request a second-level key from their local key server with
the following request format:</t>

<t>format = {type, requestID, protocol, source, destination}</t>

<t>An end host Ha in AS A uses this format for issuing the following
request to its local key server KSa:</t>

<figure><artwork><![CDATA[
  format || val_time || TS
]]></artwork></figure>

<t>It is assumed that this request and the reply are sent over a secure
channel.
Similar to the first-level key exchange,
val_time specifies a point in time at which the requested key is
valid. The key server only replies with a key to requests with a
valid timestamp and only if the querying host is authorized to use
the key. An authorized host must either be an end point of the
communication that is authenticated using the second-level key or
authorized separately by the AS.</t>

<t>If the end host requested a third level key, it must now be derived.
It is done so from the obtained second level key.</t>

</section>
<section anchor="key-server-discovery" title="Key Server Discovery">

<t>When a key server wants to contact another key server in a remote
AS, it needs to know the IP address of the remote server.</t>

<t>In the SCION architecture, the concept of service addresses can
be used to anycast to a key server in a specific AS.</t>

<t>For the regular Internet, RPKI can be used, which connects
Internet resource information to a trust anchor.
<!-- It is typically
used as a trusted mapping from allocated IP prefixes to ASes
authorized to originate them in BGP. -->
As the deployment numbers of
RPKI are growing, the RPKI certificate can be extended
with the IP address of the key server (e.g., by encoding it into the
common name field or creating a separate extension).
Using this mechanism, each AS publishes a list of IP addresses
(or an IP anycast address) that is publicly accessible and shared by
all key servers. The routing infrastructure will direct the packets
to the topologically nearest key server. This mapping from an AS
identifier to an IP address is verifiable through RPKI to prevent
unauthorized announcements of key servers.
In case RPKI has not been fully deployed, key-server discovery
could also work using a DNS entry that maps a domain to IP
addresses of key servers.</t>

</section>
<section anchor="key-expiration" title="Key Expiration">

<t>Shared symmetric keys are short-lived (i.e., up to one day lifetime)
to avoid the additional complication of explicit key revocation.
However, letting all keys expire at the same time would lead to
peaks in key requests.
Such peaks are avoided by spreading out
key expiration, which in turn leads to spreading out the fetching
requests.
To this end, a deterministic mapping
offset (A, B) -&gt; [0, t) is introduced.
This function uniformly maps the AS identifiers of
the source in AS A and the destination in AS B to a range between
0 and the maximum lifetime t of SVa.
This mapping is computed using a (non-cryptographic) hash function:</t>

<figure><artwork><![CDATA[
  offset(A,B) = H(A || B) mod t
]]></artwork></figure>

<t>The offset is then used to determine the validity period of a key by
determining the secret value SVa^j that is used to derive K_{A-&gt;B} at
the current sequence j as follows:</t>

<figure><artwork><![CDATA[
  [ start(SVa^j) + offset(A, B) , start(SVa^j+1) + offset(A, B) )
]]></artwork></figure>

<t>I.e., depending on the destination B, the secret value SVa can be
different, even when chosen for the same point in time.</t>

</section>
</section>
<section anchor="packet-authentication" title="Packet Authentication">

<t>The DRKey keys enable source authentication of every packet.
To send DRKey source authenticated packets from end host
Ha located in AS A to endhost Hb located in AS B,
end host Ha first obtains the second level key
K_{B:Hb-&gt;A}^p from the key server located in its AS A, KSa.
With it derives the third level key
K_{B:Hb-&gt;A:Ha}^p, which is used to authenticate.
For a packet pkt, the source Ha then calculates
the authentication tag by computing the MAC keyed on the third level
key K_{B:Hb-&gt;A:Ha}^p, over an immutable part of the packet pkt.
This immutable part of pkt can include parts of the layer-3 and
layer-4 headers, and optionally the layer-4 payload.
It is important to only include immutable fields as the
verification would otherwise fail at the destination.</t>

<t>The packet received at the destination is used to determine the
source address Ha and source AS.</t>

<t><list style="symbols">
  <t>In SCION these are part of the regular header, thus no extra
information is needed other than the tag itself.</t>
  <t>In the current internet, 4 bytes containing the AS ID, plus the
tag are added to the packet.</t>
</list></t>

<t>The destination Hb then derives or obtains the key K_{B:Hb-&gt;A:Ha}^p
and uses it with the same MAC function to recalculate the
authentication tag. The tag is then compared to the one present
in the packet.</t>

<section anchor="high-speed-dns-authentication" title="High-Speed DNS Authentication">

<t>A protocol specific secret value is used SVb^p, with p = “DNS”.
The level 1 key for a slow side A is derived
directly in the DNS server:</t>

<figure><artwork><![CDATA[
  K_{B->A}^p = PRF_{SVb^p}(A)
]]></artwork></figure>
<t>This first level key is exchanged with other AS via the level 1 key
requests, as described in <xref target="level1-establishment"/>.
For a DNS query from a end host Ha, located in AS A,
to a DNS server located in AS B,
the first level key is derived as described above, and then the
second level key is derived:</t>

<figure><artwork><![CDATA[
  K_{B->A:Ha}^p = PRF_{K_{B->A}^p}(0 || Ha)
]]></artwork></figure>
<t>How to compute the authentication tag and obtain the AS ID is
described in <xref target="packet-authentication"/>.</t>

</section>
<section anchor="edns0-authentication-option" title="EDNS(0) Authentication Option">

<t>DRKey can use EDNS(0) to avoid breaking the existing DNS resolvers
and authoritative servers.
With a DRKey custom extension that includes the total query/response
length, the source AS number, a timestamp, and the per packet MAC.
The per-packet MAC for DNS queries and responses is computed 
the DNS header and all fields contained in the
extension.
Using the DRKey EDNS(0) option, packet authentication for every
DNS packet introduces 28 bytes of header overhead.</t>

</section>
</section>
<section anchor="deployment" title="Deployment">

<t>DRKey allows incremental deployment, as key servers could be gradually
deployed in each AS.
Already in the incremental deployment phase, DRKey prevents the
addresses of upgraded ASes from being spoofed at other upgraded
destination ASes. Early adopters can immediately profit from
DRKey’s security properties.
Authenticating a packet requires packet modification either at
the end host, or at a network appliance such as a middlebox or border
router. Adding the MAC at the end host does not increase the
request size en-route.</t>

<t>When updating end hosts is not
possible in the short-term, DRKey can be implemented
on a middlebox that computes a per-packet MAC and modifies applicable
bypassing packets.</t>

<t>Packet verification at the destination
AS can be performed by a middlebox as well.
If a destination does not understand DRKey traffic, it could
fail to process this traffic.
In this case, the sending host contacts
its local key server and asks if the destination AS supports DRKey.
The key server might have previously derived second-level keys for
an end host in the corresponding AS or might forward the query
to a key server in the destination AS.
If an AS
supports DRKey, then it may deploy a middlebox that performs the
DRKey operations in case the end host does not support it.
This
will prevent sending authenticated traffic to a destination host that
does not support DRKey.
In the worst case, the end host could fall
back to legacy traffic.</t>

<t>In case of operational failures (e.g., a single key server fails), the
end entity will try to contact another key server in the same AS.
If all key servers fail, the system could fall
back to the current system with unauthenticated traffic.</t>

<section anchor="deployment-incentives" title="Deployment Incentives">

<t>Since DRKey can be deployed on commodity hardware and integrates well
with the current Internet
infrastructure, the deployment obstacle for DRKey is low.
DRKey traffic can be recognized
outside of ASes that have deployed DRKey and can thus be prioritized
by servers.
This means that even when relatively few companies deploy DRKey
to authenticate packets at their services (e.g., popular open DNS
resolvers of Google or Cloudflare), there are strong incentives for
ISPs to deploy DRKey and provide its services to their customers.</t>

</section>
<section anchor="key-server-latency" title="Key-Server Latency">

<t>The initial connection setup depends on
the latency of the connection between the client and the key server.
To lower latency, DRKey’s key servers should be positioned in an AS at
a similar location as local DNS resolvers.
As even public resolvers
have an average query latency of less than 20 ms traversing
the Internet, it is expected that the latency of a local
key derivation will be in
the order of a few ms.
In most cases locally fetching a
key will result in a lower latency than a full round-trip between client
and server.
For ASes that are
geographically dispersed, multiple key servers may be deployed
(e.g., co-located with an access router or per point-of-presence).</t>

</section>
<section anchor="network-mobility" title="Network Mobility">

<t>Network mobility allows entities to move
from one AS to another while maintaining communication sessions.
In DRKey, key derivations are based on the current location of
the entity in the Internet. Therefore, as soon as an entity moves to
another AS, it needs to contact the key server of the new AS and
fetch new second-level keys. Because local key derivation is fast
and the latency of obtaining a key is small, the overhead is minimal.</t>

</section>
<section anchor="lighting-filter-system-as-a-drkey-deployment" title="Lighting Filter System as a DRKey Deployment">

<t>The Lightning Filter (LF) mechanism is a novel system that is intended
to complement traditional firewalls by enabling cryptographically
authenticated traffic shaping, based on the autonomous system
of the source host of the traffic.
This reduces significantly the load on the traditional firewall
during denial-of-service attacks, and even allows LF to be
the only network defense mechanism for a specific sub-network,
e.g. by securing a DMZ that exposes external services to
untrusted networks.</t>

<t>The core principle of the LF system relies on DRKey, using the
high speed source authentication that DRKey enables. This way,
the system can authenticate each packet, assuring that it came
from the host it claimed to.</t>

<t>In case a breach is detected, the network administrators can immediately
add the host and/or the origin AS to a blacklist, preventing packets
originating there from reaching past the Lightning Filter.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<section anchor="drkey-and-trust-in-ases" title="DRKey and Trust in ASes">

<t>The keys provided by DRKey do
not provide full end-to-end authenticity or secrecy properties: The
source and destination ASes are able to derive the keys and could
thus perform an active attack.
This attack is limited to these two
ASes; active attacks by intermediate ASes are not possible.
DRKey always enables AS-level source authentication and host-level
source authentication under the additional assumption of an honest
source AS.</t>

</section>
<section anchor="authentication-within-an-as" title="Authentication within an AS">

<t>To achieve secrecy as well as
end-host authentication for communication between end hosts
and key servers, an AS needs an intra-domain end-host and/or
user-authentication system.
Different authentication mechanisms based on the operational
environment are discussed:</t>

<t><list style="symbols">
  <t>Authentication using TLS. In order to securely exchange second-level
DRKey keys between end hosts and key server, the end host
can establish a secure TLS channel to the key server. The identity
of the communicating parties is authenticated using public-key
cryptography for both the key server and the end host. Thus, the key
server can uniquely identify the end host and verify its legitimacy
to obtain a second-level key.</t>
  <t>Deployment in ISPs. If the corresponding AS is an ISP, we assume
that they can identify their customers (e.g., terminal connection
number or router that has been deployed by the ISP). In this case,
only an attacker that is present at the customers local network can
gain access to learn keys.</t>
  <t>Company / University. For ASes that are under the control of
companies or universities, login credentials or other local
authentication mechanisms can be used to identify the user. This gives
companies the ability to run their own web servers and have full
control over their key material.</t>
  <t>Mobile Devices. For mobile devices such as smart phones that
are connected to the Internet through a mobile telecommunication
network, clients could be authenticated by the telecom provider, for
example using the International Mobile Equipment Identity (IMEI).</t>
</list></t>

</section>
<section anchor="adversary-model" title="Adversary Model">

<t>The adversary can deviate from the protocol and
attempt to violate its security goals.
The Dolev–Yao model is assumed,
where the adversary can reside at arbitrary
locations within the network.
The adversary can passively eavesdrop on messages
and also actively tamper with the communication by injecting,
dropping, delaying, or altering packets.
However, the adversary
has no efficient way of breaking cryptographic primitives such as
signatures, pseudorandom functions (PRFs), and message authentication
codes (MACs).
It is assumed that there exists
a secure channel between end hosts and a key server within the
same AS.</t>

<t>Assuming the mentioned
capabilities, the goal of the adversary is to obtain cryptographic
keys of other parties to forge authenticated messages.
By compromising an entity, the adversary learns all cryptographic
keys and settings stored.
The adversary can also control how the
entity behaves, including fabrication, replay, and modification of
packets.
Both end hosts and network nodes compromises are considered.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>





  </back>

<!-- ##markdown-source:
H4sIAM393GIAA7V925Ibx5nmfT5FrrQR6pYB8CCPQ+7dcSx4MnskSgw2bceO
fGABSAAlFqrgqkI3YYkbfoe52tuNjZiXmKvxm/hJ9v/+Q2ZWAeR6ZmcZQbIb
qMrDn//5lNPp1PVlX4Ur/+RYF7tyWVTV0b8KyzYUfbGogv8qHDtXLBZtuL3y
19MnbtUs6Ul6Y9UW6366KdplWeyLdtVM90Xdbqar9m04Tu9/4T71q6KnBx/e
f/hgev/h9MGXbkkfbJr2eOXLet24ct9e+b49dP3D+/d/fv+hu2vat5u2Oeyv
/Mv5N69+6dy+vPLf9c1y4rum7duw7uin4w4//M654tBvm/bK+amnEbsr/w8z
/0te0fQlluQ8/ZHl/sOhqP38zNdNu7nyT18/9//4l39py+WWPwy7oqyu/Pf0
0ky2+N9oxbPQb/80wyM23+OZ/6r9y//ehnrxl3/ZVtl8j49tWVWn335suiW/
M3vbFgHvHMK2Oj/to5l/1fR4JrSb0GbTPgr193SQ9en3H5t4oW/N2uyt81MT
CF+Gti032aTzVVsSdLPPPzZZwU/P9vz0YBJXN+2u6MvbcEXY4/2rZ48fPnjw
8yvvP/W74jjxO0KViV/SXBMf+mV86GcPfiZvEIbOytCvp8umDfRPsb9y9OdT
/03Thw4/PGtav3u78uFdsdtXofNdoB1s+37fXd27tyn77WExWza7e8ti0dyj
o9itmrt62q6XD3/28Oc0wLd1VdbB901T+aaOb5b721n37h5TRTv9vrtHj76g
RfCDnV+FbtmWi7DK37m7u5vRwNOwKvumnRHQ7u0Pi33bLEPX3eMX72HNvzyU
q4BZu6vBu9gpv9X1Rb0ijO7ulfR3Ex/HIh5vw/Ktn/XvejrmNVbUHRa7su/L
ejMY7mdpPJm6XNVlz2Pc4I2uK5s6vUHEXfRtsXwb2mwhPDQv+lVYhzbUtBUc
Tb7sbkkDTYmqtmUflv2hDbM69Pf2q/U94hX3p/uyexu6Gf2evZidDKFoWwqk
p6HebGnjvTKffdFvpwRAQq6+lAN/1Rx6HBh4y7pq7rCaKZ3HdHvcE6776X/m
D9qwa26DX5a0K1pe53/73Xe/XU38737y298NHmibrqNfbHP+X/8ZKMSPLBnU
xX4firagL32z9rRYTL3yL69vvnp6gxXd9OAMr7998m32Fp67bUp66eKTu/DJ
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
A9jD/HrHiAAA

-->

</rfc>

