<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.7.0) -->
<?rfc docmapping="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jfinkhaeuser-caps-for-distributed-auth-01" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.2 -->
  <front>
    <title abbrev="Capabilities for Distributed Authorization">Capabilities for Distributed Authorization</title>
    <seriesInfo name="Internet-Draft" value="draft-jfinkhaeuser-caps-for-distributed-auth-01"/>
    <author initials="J." surname="Finkhaeuser" fullname="Jens Finkhäuser" asciiFullname="Jens Finkhaeuser">
      <organization abbrev="Interpeer">Interpeer gUG (haftungsbeschraenkt)</organization>
      <address>
        <email>ietf@interpeer.io</email>
        <uri>https://interpeer.io/</uri>
      </address>
    </author>
    <author initials="S. D." surname="Penna" fullname="Sérgio Duarte Penna" asciiFullname="Sergio Duarte Penna">
      <organization abbrev="ISEP">Instituto Superior de Engenharia do Porto</organization>
      <address>
        <postal>
          <street>Rua Dr. António Bernardino de Almeida, 431</street>
          <city>Porto</city>
          <code>4249-015</code>
          <country>Portugal</country>
        </postal>
        <email>sdp@isep.ipp.pt</email>
        <uri>https://isep.ipp.pt/</uri>
      </address>
    </author>
    <date/>
    <workgroup>Interpeer Project</workgroup>
    <keyword>capabilities</keyword>
    <keyword>authorization</keyword>
    <keyword>authentication</keyword>
    <keyword>power of attorney</keyword>
    <keyword>cryptography</keyword>
    <abstract>
      <t>Authorization is often the last remaining centralized function in a distributed
system. Advances in compute capabilities of miniaturized CPUs make alternative
cryptographic approaches feasible that did not find such use when first
envisioned. This document describes the elements of such cryptographically backed
distributed authorization schemes as a reference for implementations.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://specs.interpeer.io/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jfinkhaeuser-caps-for-distributed-auth/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        interpeer Working Group mailing list (<eref target="mailto:interpeer@lists.interpeer.io"/>),
        which is archived at <eref target="https://lists.interpeer.io/pipermail/interpeer/"/>.
        Subscribe at <eref target="https://lists.interpeer.io/mailman/listinfo/interpeer"/>.
        Working Group information can be found at <eref target="https://interpeer.io/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://codeberg.org/interpeer/specs"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="sec_intro">
      <name>Introduction</name>
      <t>In 1964, Paul Baran at the RAND Corporation described centralized, decentralized
and distributed communications networks and their properties <xref target="RM3420"/>. Baran's
argument was that because in distributed systems, each node can reach many other
nodes, failure of a single node need not impact the ability of other nodes to
communicate.</t>
      <t>This resilience is desirable in distributed systems today. Therefore it seems
an oversight that authentication and authorization in modern system is often a
centralized function.</t>
      <t>This document explores previous attempts at distributed authorization schemes,
and outlines common elements of such solutions in order to provide a reference
for future work.</t>
    </section>
    <section anchor="sec_intro-conventions">
      <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>
      <t>In order to respect inclusive language guidelines from <xref target="NIST.IR.8366"/> and
<xref target="I-D.draft-knodel-terminology-10"/>, this document uses plural pronouns.</t>
    </section>
    <section anchor="sec_problem">
      <name>Problem Space</name>
      <t>Distributed authorization is not a goal in itself, but may be desirable in
distributed systems.</t>
      <t>It's also worth exploring how the distribution of authorization functions
related to authentication. In many systems, these are intrinsically linked.
Logging in with a user name and password is one such example. Providing the
correct password proves that the person at the keyboard is authorized to access
a resource. But at the same time, providing the correct password in combination
with a user name authenticates this user. Furthermore, any permissions granted
to the user are typically linked to the user name, as that remains stable
throughout password changes.</t>
      <section anchor="sec_authentication">
        <name>Authentication</name>
        <t>Password-based authentication mechanisms require that the tuple of user name and
password (or password hash) are sent to some central repository where records of
such tuples are kept; if the tuple is found, the user name is authenticated.</t>
        <t>This common scheme mixes different aspects to authentication, however, which are
worth disambiguating.</t>
        <dl>
          <dt>Endowment:</dt>
          <dd>
            <t><iref item="endowment" primary="true"/> The act of logging in establishes an association between a
user name and the person interacting with the device. More broadly speaking,
(parts of) a three-way endowment are performed: an <em>identifier</em> is endowed
with <em>attributes</em>, which describe a <em>person</em> in sufficient detail to identify
them. The term "endowment" is used here because it is a superset of the more
common "identity assertion", and also is less easily confused with the totality
of identification concerns.</t>
          </dd>
          <dt>Secret Proving:</dt>
          <dd>
            <t><iref item="secret proving" primary="true"/> Logging in also proves that the person interacting with
the device is in possession of some secret; this secret should only be known to the
person which matches the description in the endowment step above.</t>
          </dd>
        </dl>
        <t>This distinction becomes somewhat more relevant when we move towards distributed
authentication schemes, which rely on public key cryptography. For now, consider
that it is the combination of endowment and secret proving that make up
authentication.</t>
        <section anchor="sec_authentication-wot">
          <name>Web of Trust</name>
          <t>In Web of Trust based systems, starting with Philip R. Zimmermann's Pretty Good
Privacy (PGP), public keys are exchanged with some metadata attached. This
performs some part of endowment <iref item="endowment"/> in that it provides
the link between a public key and a user identifier (see
<xref section="11.1" sectionFormat="comma" target="RFC4880"/>).</t>
          <t>Other parts of endowment are not specified. These often consist of manual
checks that the user identifier belongs to some person holding the corresponding
private key, and may involve verifying of government issued identification
documents. Once such a check is passed, the verifier issues a digital signature
over the tuple of user identifier and public key to provide some proof that the
verification has occurred.</t>
          <t>Endowment in Web of Trust occurs when a sufficient number of sufficiently
trustworthy signatures have been reached. The precise number of signatures and
trust levels to be deemed sufficient is in the control of the recipient of
transferable public key packets, however.</t>
        </section>
        <section anchor="sec_authentication-tls">
          <name>TLS Certificates</name>
          <t>A similar concept is applied in TLS <xref target="RFC8446"/>, where <xref target="X.509"/> certificates
are used for endowment.</t>
          <t>The major difference to Web of Trust based systems is how trust is established.
Instead of relying on a recipient defined method of determining trust,
certificates are issued by one of a set of well-known trust sources. Information
on these is stored in root certificates, which are distributed to the machines
participating in the system.</t>
          <t>While there are globally issued root certificates for entities that perform
endowment professionally, it is always possible for a system designer to
include other root certificates.</t>
        </section>
        <section anchor="sec_authentication-secret">
          <name>Secret Proving</name>
          <t>Neither <xref target="X.509"/> certificates nor the transferable public key packets in
<xref target="RFC4880"/> provide any means for secret proving. This is left to other parts
of TLS or PGP.</t>
          <t>In TLS, the handshake during connection establishment is used to send challenges
that only machines with the correct private key can respond to. PGP, which aims
to provide privacy at rest, simply encrypts content with a secret key which is
then encrypted with the recipient's public key. Other parties cannot decrypt this,
which keeps content safe.</t>
          <t>TLS and PGP are not the only public key cryptography based authentication systems,
but they can stand in for the two most common classes of such systems: one aims
to establish trust from authoritative sources. The other aims to establish trust
based on the trust requirements of the recipient.</t>
          <t>Both systems also strictly speaking separate endowment from secret proving.
While in TLS the certificates are transmitted as part of the overall handshake,
creating certificates nevertheless occurs beforehand. This temporal decoupling
<iref item="temporal decoupling" primary="true"/> is a key property that may also be applied to
authorization.</t>
        </section>
      </section>
      <section anchor="sec_authorization">
        <name>Authorization</name>
        <t>Authorization occurs only after secret proving. Once an identity has been
established, it is then mapped to associated privileges, which determine which
object(s) it has access to.</t>
        <t>There exist a plethora of methods to establish this mapping. Access-control
lists (ACL) simply provide tuples of identities, privileges and associated
objects. Role-based access control (RBAC) is effectively identical, if the
identities specified are not those of individuals, but of groups (as a group
member, an individual inhabits the associated role). A comparable approach is
Organization-based access control (OrBAC), which not only abstracts the
identity to that of a role, but performs a similar abstraction on the object
and privilege.</t>
        <t>More complex systems such as context- or lattice-based access control (CBAC and
LBAC respectively) derive a mapping from properties of or labels attached to the
individuals and objects. Finally, graph-based access control (GBAC) starts with
a graph of an organization, and derives privileges from the properties inherited
by being part of a larger organizational structure.</t>
        <t>What these systems address is the problem of <em>managing</em> the mapping of an
identity to access privileges for objects, where each system has advantages and
disadvantages for various use cases.</t>
        <t>In the abstract, however, they each operate on the following pieces of
information:</t>
        <dl>
          <dt>Subject:</dt>
          <dd>
            <t>The subject <iref item="subject" primary="true"/> is the identity (individual or group/role) that
intends to perform an action.</t>
          </dd>
          <dt>Action:</dt>
          <dd>
            <t>The action <iref item="action" primary="true"/> the subject intends to perform may be as simple as
reading or writing a resource, but can be more complex.</t>
          </dd>
          <dt>Object:</dt>
          <dd>
            <t>Actions are performed on objects <iref item="object" primary="true"/>, such as a file or network
resource.</t>
          </dd>
          <dt>Request Tuple:</dt>
          <dd>
            <t>A request tuple <iref item="request tuple" primary="true"/> consists of the subject, action and
(optional) object.</t>
          </dd>
          <dt>Privilege:</dt>
          <dd>
            <t>A privilege <iref item="privilege" primary="true"/> encodes whether or not an action is permitted.</t>
          </dd>
          <dt>Authorization Tuple:</dt>
          <dd>
            <t>An authorization tuple <iref item="authorization tuple" primary="true"/> encodes system state, and
is thus a tuple of a subject, a privilege and an (optional) object.</t>
          </dd>
        </dl>
        <t>The act of authorization translates from a request tuple to a Boolean response
determining whether a request is permitted. A centralized authorization function
provides this answer in real-time, via an API invocation.</t>
        <t>By contrast, distributed authorization instead deals in authorization tuples,
which can be stored and distributed out-of-band.</t>
        <t>It may be of interest that and authorization tuple is semantically equivalent
to an RDF triple (<xref target="RDF"/>), in that it encodes a specific relationship between a
subject and an object. Authorization tuples that consists solely of IRIs
<xref target="RFC3987"/> is also syntactically an RDF triple. This implies that
authorization tuples can encode arbitrarily complex authorization information by
building the knowledge graph resulting from resolving such an RDF triple.</t>
        <section anchor="sec_authorization-spof">
          <name>Single Point of Failure</name>
          <t>A centralized function is very useful for managing authorization. The previous
section on different access control methods should illustrate sufficiently that
authorization management is a complex problem; complex enough for multiple
competing management methods to emerge.</t>
          <t>Faced with such a complex problem, it is no surprise that solutions tend to
bring this function to a centralized location. Managing this complexity in one
place is of course simpler than managing it across multiple locations.</t>
          <t>The downside to this is that failure of this single location may mean failure
of the system as a whole. Particularly vulnerable to this single point of failure
are private systems in which all access is controlled by specific privileges. Systems
with publicly available parts may still provide those functions that do not rely
on any privileges.</t>
        </section>
        <section anchor="sec_authorization-temp">
          <name>Temporal Coupling</name>
          <t>The other class of problems with centralized authorization relate to the
temporal coupling of granting access <iref item="access granting" primary="true"/> and resolving
authorization queries <iref item="authorization query" primary="true"/>. The abstract request
introduced above of resolving an request tuple <iref item="request tuple"/> to a
Boolean response tightly couples both steps.</t>
          <t>It may be beneficial to disambiguate between participants in such a system.</t>
          <t>From the perspective of the person operating the access control management
system, granting access occurs whenever they make an entry into an
authorization database.</t>
          <t>The machine permitting an authorized user to perform an action, however, grants
or denies access in the moment the action is requested. If this second form
of access granting is based on a real-time authorization query, it couples
granting access to such a query in the temporal dimension.</t>
          <t>The key insight into distributing authorization effectively is that it has
little to do with managing access control databases. Instead, it explicitly
temporally decouples the authorization query from granting access.</t>
        </section>
      </section>
    </section>
    <section anchor="sec_prior">
      <name>Previous Work</name>
      <t>Dividing the authentication problem into endowment and secret proving helps
illustrate how web of trust systems introduce temporal decoupling between these
functions, in a way that e.g. TLS does not.</t>
      <t>In much the same way, dividing the authorization problem into querying an
authorization database and granting access to an object suggests that
authorization, too, can be temporally decoupled.</t>
      <t>This section lists prior work where some temporal decoupling of this kind has
been performed.</t>
      <section anchor="sec_prior-ocap">
        <name>Object-Capabilities (OCAP)</name>
        <t>Dennis and Van Horn described an approach for securing computations in
"multiprogrammed" systems in 1965/66 (<xref target="OCAP"/>). The context in which they operated had
little to do with modern distributed systems.</t>
        <t>However, they recognized the trend of running computing systems complex enough
that multiple programmers would contribute to its overall function. This raised
a desire for access control to individual sub-functions, which a security kernel
within the operating system was to provide.</t>
        <t>The key differentiator to other systems was that in OCAP, a calling process was
to present a "capability", a serialized token to the process being invoked. This
capability was intended to encode all relevant information the called process
would need to determine whether the caller was permitted to perform such an
action.</t>
        <t>These properties of being serializable and containing all relevant authorization
information imply that, conceptually, capabilities are cached results of an
authorization query <iref item="authorization query"/>. The called process can then perform
access granting <iref item="access granting"/> without issuing such a query itself, thereby
temporally decoupling the two functions.</t>
      </section>
      <section anchor="sec_prior-icap">
        <name>Identity-Capabilities (ICAP)</name>
        <t>The OCAP system proved to have a particular weakness, namely that "the right to
exercise access carries with it the right to grant access". This is the result
the information encoded in an OCAP capability: it contains a reference to the
object and action to perform, but does not tie this to any identity.</t>
        <t>In 1988, Li Gong sought to address this with an Identity-Capability model
(<xref target="ICAP"/>). Including an identity in the capability token arrives at the
authorization tuple <iref item="authorization tuple"/> in <xref target="sec_authorization"/>.</t>
        <t>Furthermore, ICAP introduces the notion of capability use in networked systems.
ICAP does this by temporally decoupling the authorization query from access granting.</t>
        <t>The main criticism levelled against the paper and capability-based approaches in
general in the following years was that some functions were missing, such as a
check for revocations. Proposals to address this often added centralized
functions again, which led to criticism of the distributed approach in general.</t>
      </section>
      <section anchor="sec_pgp">
        <name>Pretty Good Privacy</name>
        <t>While we previously discussed PGP in terms of authentication in
<xref target="sec_authentication-wot"/>, a key property of PGP is the introduction of trust
signatures (<xref section="5.2.3.13" sectionFormat="comma" target="RFC4880"/>).</t>
        <t>Trust signatures do not merely authenticate a user, they introduce a kind of
authorization as well, as they carry specific notions for what the provided
public key may be trusted for. The trust signature thus encodes specific kinds
of privileges <iref item="privilege"/> of an authorization tuple <iref item="authorization tuple"/>,
while the public key encodes a subject <iref item="subject"/>. The only component
missing in the tuple is the object <iref item="object"/>.</t>
        <t>While the authorization tuple in PGP is incomplete, the system is based on
public key cryptography, and can thus be used to securely verify a binding
between the tuple elements.</t>
      </section>
      <section anchor="sec_jwt">
        <name>JSON Web Tokens (JWT)</name>
        <t>JSON Web Tokens (<xref target="RFC7519"/>) provide a standardized way for serializing
access tokens. Current uses are in systems with centralized authorization
functions such as OAuth (<xref target="RFC6749"/>).</t>
        <t>However, the fundamental notion of capabilities, that a serializable token
carries authorization information, is provided also here. Furthermore, JWT
combines this with cryptographic signatures, providing for - in theory -
temporal decoupling as previously discussed.</t>
        <t>It's well worth pointing out that JWT is suitable as a portable, modern
capability format - all it requires is to encode all necessary information
within its fields. One serialization format in JWT for this is <xref target="UCAN"/>.</t>
      </section>
      <section anchor="zcap-ld">
        <name>ZCAP-LD</name>
        <t>Aimed at the linked data space, <xref target="ZCAP-LD"/> is an expression of cryptographic
capabilities for authorization that relies heavily on linked data. While
conceptually, the specification shares many similarities with the capability
concept in this document, the use of linked data can lead to systems that
do not provide for temporal decoupling <iref item="temporal decoupling"/>.</t>
        <t>Linked data has the downside here that data relationships may need to be
resolved at the time of access granting <iref item="access granting"/>, thus effectively
re-introducing parts of an authorization query <iref item="authorization query"/> again
at this point.</t>
        <t>The concept of distributed systems underlying linked data thus differs
fundamentally from the one in <xref target="RM3420"/>. Where the former treats distribution
as distribution of concerns across different services providing parts of the
linked data set, the latter is more concerned with resilience, specifically how
to continue operating in the (temporary) absence of such services.</t>
      </section>
      <section anchor="sec_poa">
        <name>Power of Attorney</name>
        <t>The oldest kind of prior work in this field is the concept of Power of Attorney,
as exercised throughout much of human history.</t>
        <t>In a Power of Attorney system, an authority (a king, etc.) grants a token
(an official seal, ...) to a subordinate which makes this subordinate
recognizable as carrying some of the king's powers and privileges.</t>
        <t>Modern day Power of Attorney systems abound, and may be formalized as notarized
letters granting such and such rights to other people.</t>
        <t>Capability-based authorization schemes are no different to this kind of system
in principle. In both kinds of systems, the token itself encodes the privileges
of the bearer. <xref target="POA-IOT"/> describes such a system for the Internet-of-Things.</t>
      </section>
    </section>
    <section anchor="sec_use-cases">
      <name>Use Cases</name>
      <t>Use cases relate to one or more of the issues explored in the problem space.</t>
      <section anchor="sec_uc-iot">
        <name>IoT On-boarding</name>
        <t>On-boarding IoT devices into an overall system requires authentication and
authorization; this may need to be mutual.</t>
        <t>In such scenarios, new devices rarely have connectivity before completing
on-boarding. It follows that authentication and authorization must work in
a fully offline fashion, which in turn requires that authorization tokens
provided to the device contain all information required for the authorization
step. As described in <xref target="sec_prior-ocap"/>, this translates to a requirement
of temporally decoupling access granting from an authorization query.</t>
        <t>This specific problem is also addressed in <xref target="POA-IOT"/> and related work.</t>
      </section>
      <section anchor="sec_uc-uav">
        <name>UAV Control Handover</name>
        <t>A similar argument applies to control handover of unmanned aerial vehicles
(UAV). The concept of Beyond Visual Line of Sight (BVLOS) missions is to send
drones into places that are harder or more costly to reach for humans.</t>
        <t>Control handover refers to transferring operational control for a drone from one
ground control station to (GCS) another. Control handover bears similarities to IoT
on-boarding in that the drone is on-boarded to a new control system (and the
previous system relinquishes control).</t>
        <t>In general, aviation authorities such as FAA, EASA, etc. expect control handover
to occur under ideal circumstances, in which centralized authorization schemes
suffice. There is, however, a class of scenarios where connectivity to a central
service cannot be guaranteed.</t>
        <section anchor="sec_uc-uav-remote">
          <name>Remote Location</name>
          <t>In order to guarantee BVLOS operations in very remote locations, research
projects such as <xref target="ADACORSA"/> assume use cases in which two ground control
stations between which handover occurs to not have connectivity to each other.</t>
          <t>In such cases, it is necessary for the UAV to act as a time-delayed transmission
channel for authorization information between the GCSes.</t>
        </section>
        <section anchor="sec_uc-uav-emergency">
          <name>Emergency Response</name>
          <t>Emergency response teams may require UAVs in the vicinity to immediately clear
the airspace and go to ground. This effectively translates to the emergency
response team operating a ground control station that takes over control and
issues a single command.</t>
          <t>As emergency responses are, by definition, typically required in situations
where normal operations cannot be assumed, this includes the assumption that
connectivity cannot be assumed. Nevertheless, such an emergency control
handover must be possible.</t>
        </section>
        <section anchor="sec_uc-uav-mobile-gcs">
          <name>Mobile Ground Control Stations</name>
          <t>A comparable scenario to the above describes situations in which UAV attach
to a mobile ground control station. Specific scenarios may range from cave
exploration to investigating burning buildings.</t>
          <t>The commonality here is that the UAV cannot establish connectivity to a wider
system, but can connect to the mobile GCS. This in turn may act as a
communications relay to the outside world, but may be too limited in capacity
to permit online, centralized authorization.</t>
        </section>
      </section>
      <section anchor="sec_uc-0-rtt">
        <name>Zero Round-Trip-Time (0-RTT)</name>
        <t>If fast authorization is a goal, reducing the number of roundtrips to establish
a privilege follows. Due to the temporal decoupling that cryptographic
capabilities provide, they're suitable for use in 0-RTT scenarios.</t>
        <t>Of course, authorization can only follow when authentication already occurred.
Authentication in a 0-RTT protocol is predicated on prior key exchange and
verification.</t>
        <t>Both <xref target="WIREGUARD"/> and DTLS 1.3 <xref target="RFC9147"/> offer 0-RTT handshakes. In the
former, keys are pre-shared out of band, because WireGuard is used to establish
static VPN tunnels. Because mutual authentication is assumed to be part of this
process, authenticated encryption is sufficient to ensure that the keys are
safely associated with network addresses in a 0-RTT roundtrip.</t>
        <t>By contrast, DTLS simply offers different kinds of handshakes. 0-RTT can only
be used for reconnection when a previous full handshake has provided sufficient
authentication.</t>
        <t>In either case, adding a capability to this 0-RTT handshake would also yield
0-RTT authorization, as long as the key that authenticates the remote party is
also the subject of the authorization triple.</t>
      </section>
      <section anchor="sec_uc-hrpc">
        <name>Human Rights Considerations</name>
        <t><xref target="RFC8280"/> lists a number of distinct objectives that help support human rights
in protocol design. The above distributed authorization scheme addresses a number
of them, such as Connectivity, Reliability, Content agnosticism, Integrity,
Authenticity, Pseudonymity, Censorship Resistance, Outcome Transparency, Adaptability,
Decentralization and Security, and by way of producing this document,
Open Standards.</t>
        <t>Rather than address each in detail, suffice to say that the use of pseudonymous
public keys, and proofs based on cryptographic signatures, the majority of these
objectives are reached.</t>
        <t>It remains to highlight that the scheme outlined in this document observes the
end-to-end principle, precisely by temporally decoupling different concerns. This
permits for almost arbitrarily disrupted connectivity, and thus also censorship
resistance. As capabilities can travel entirely out-of-band to any resource data,
e.g. by sneakernet or similar means, they can be a building block of protocols
that provide better human rights protections than systems that rely on temporal
coupling of authorization concerns.</t>
      </section>
    </section>
    <section anchor="sec_elements">
      <name>Elements of a Distributed Authorization Scheme</name>
      <t>As explored in the previous sections, the most fundamental aspect of a
distributed authorization scheme is that it decouples access granting
<iref item="access granting"/> from authorization queries <iref item="authorization query"/> by
serializing the results in such a way that they can be transmitted and
evaluated at a later date. This effectively shifts the focus of distributed
authorization systems away from request tuples <iref item="request tuple"/> towards
authorization tuples. <iref item="authorization tuple"/></t>
      <t>This implies certain things about the contents of a capability token, but
it also introduces other elements and roles into the overall scheme.</t>
      <section anchor="sec_elements-grantor">
        <name>Grantor</name>
        <t>A grantor, sometimes called principal, has authority over an object,
<iref item="object"/> and generates authorization tuples <iref item="authorization tuple"/>
for use in the overall system.</t>
        <t>As we describe cryptographic systems, a grantor is represented by an asymmetric
key pair. Endowment for a grantor is out of scope of this document; for
the purposes of distributed authorization, the grantor key pair <em>is</em> the grantor.</t>
        <section anchor="sec_elements-grantor-id">
          <name>Grantor Identifier</name>
          <t>A grantor identifier uniquely identifiers the public key of the key pair; this
may be identical to a serialized form of the public key itself, or a
cryptographic hash over it (fingerprint), or some alternative scheme.</t>
          <t>What is sufficient is that there <bcp14>MUST</bcp14> exit a mechanism for uniquely mapping the
grantor public key to the grantor identifier and vice versa. This mapping
permits verification.</t>
        </section>
        <section anchor="sec_elements-grantor-sig">
          <name>Grantor Signature</name>
          <t>The grantor undersigns a capability by adding a cryptographic signature to it.</t>
        </section>
      </section>
      <section anchor="sec_elements-agent">
        <name>Agent</name>
        <t>The agent is the element in a distributed system that executes a requested
action after verifying a capability. It typically manages objects itself, or
provides access to them.</t>
      </section>
      <section anchor="sec_elements-verifier">
        <name>Verifier</name>
        <t>The verifier is a role in the system that verifies a capability. While verifiers
can exist in a variety of system nodes, it's a mandatory part of the agent role.</t>
        <t>Outside of the agent, verifiers may exist in intermediary nodes that mediate
access to agents. An example here might be an authorization proxy that sits
between the public internet and a closed system. While it may not be an agent
in and of itself, it can still decide to reject invalid requests, and only
forward those to agents that pass verification and its own forwarding rules.</t>
      </section>
      <section anchor="sec_elements-channel">
        <name>Time-Delayed Transmission Channel</name>
        <t>We introduce the concept of a time-delayed transmission channel to illustrate
that communications between grantor and verifier is not possible in real-time.</t>
        <t>In practice, of course the transmission channel does not have to be time-
delayed. But treating it as such implies that granting access must be temporally
decoupled from the authorization query.</t>
      </section>
      <section anchor="sec_elements-grantee">
        <name>Grantee</name>
        <t>The grantee is the entity to which a privilege is granted.</t>
        <t>A grantee <bcp14>SHOULD</bcp14> also be represented by an asymmetric key pair in order to
perform distributed authentication.</t>
        <section anchor="sec_elements-grantee-identifier">
          <name>Grantee Identifier</name>
          <t>A grantee identifier is the identifier used as the subject <iref item="subject"/> in
an authorization tuple.</t>
          <t>If the grantee is equivalent to an asymmetric key pair, it <bcp14>MUST</bcp14> also be possible
to map the grantee identifier to the grantee public key and vice versa. Such a
mapping <bcp14>SHOULD</bcp14> be feasible to perform without connectivity in order to maintain
the distributed authentication mechanisms achieved through the use of asymmetric
cryptography.</t>
        </section>
      </section>
      <section anchor="sec_elements-object">
        <name>Object</name>
        <t>An object is a resource the grantee wishes to access. This can be a file, or
a networked service, etc.</t>
        <section anchor="sec_elements-object-identifier">
          <name>Object Identifier</name>
          <t>The object identifier uniquely identifiers an object. This document places no
syntactic restrictions upon the object identifier, other than that there exists
a canonical encoding for it. For the purposes of cryptographic signing and
verification, the object identifier <bcp14>MUST</bcp14> be treated as equivalent to its
canonical encoding.</t>
        </section>
      </section>
      <section anchor="sec_elements-privilege">
        <name>Privilege</name>
        <t>A privilege encodes whether an action (on an object) is permitted (for a
subject); see {#sec:authorization} for an explanation.</t>
        <t>For the purposes of creating capabilities, a privilege must have a canonical
encoding. The semantics of each privilege are out of scope of this document,
and to be defined by the systems using distributed authorization.</t>
        <t>That being said, a typical set of privileges might include read and write
privileges for file-like resources.</t>
      </section>
      <section anchor="sec_elements-validity-metadata">
        <name>Validity Metadata</name>
        <t>In practical applications of distributed authorization scheme, validity of a
capability may be further scoped. We already discussed the need to scope it
to an authorization tuple, but further restrictions are likely desirable.</t>
        <t>For example, a set of <tt>not-before</tt> and <tt>not-after</tt> timestamps exist in e.g.
<xref target="X.509"/> certificates; similar temporal validity restrictions are likely
required in practical systems.</t>
        <t>However necessary they may be in practice, however, such additional validity
metadata has no bearing on the fundamental concepts outlined in this document,
and is therefore considered out of scope here.</t>
      </section>
      <section anchor="sec_elements-capability">
        <name>Capability</name>
        <t>A capability provides a serialized encoding of previously listed elements:</t>
        <ol spacing="normal" type="1"><li>
            <t>Fundamentally, a capability <bcp14>MUST</bcp14> encode an authorization tuple, consisting
of:
            </t>
            <ol spacing="normal" type="1"><li>A subject <iref item="subject"/> identifier.</li>
              <li>A privilege. <iref item="privilege"/></li>
              <li>An object <iref item="object"/> identifier.</li>
            </ol>
          </li>
          <li>A grantor identifier <bcp14>MAY</bcp14> be required in order to identify the grantor key
pair used in signing and verification.</li>
          <li>Validity Metadata <bcp14>SHOULD</bcp14> be included in practical systems.</li>
          <li>In order for a verifier to ensure the validity of a capability, it <bcp14>MUST</bcp14>
finally contain a grantor signature over all preceding fields.</li>
        </ol>
        <t>The authorization tuple permits an agent to determine what kind of access to
grant or deny. The grantor identifier provides information to the verifier
about key pairs used in the authorization. While the signature proves to the
verifier that the grantor did indeed authorize access, the validity metadata
limits access to whichever additional scope the grantor decided upon.</t>
        <section anchor="sec_elements-capability-extensions">
          <name>Extensions</name>
          <t>Note that each of the fields in an authorization tuple may be treated as a list
of zero or more such elements. While a longer discussion of this is out of scope
for this document, two notes should be made:</t>
          <ol spacing="normal" type="1"><li>Implementations must provide clarity what it means to provide a list. Does
the capability apply to each element in the list individually, or to some
combination? This is highly specific to the semantics of each capability,
so cannot be covered here.</li>
            <li>A tuple consisting of a subject and privilege only (zero objects) effectively
turns into a statement about the subject, and no longer relates to
authorization concerns. However, other aspects of a distributed trust system
still apply. This is the approach taken by Pretty Good Privacy.</li>
          </ol>
        </section>
      </section>
      <section anchor="sec_elements-process">
        <name>Authorization Process</name>
        <t>Having identified the elements, we can now describe an abstract process
in a distributed authorization system.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="672" width="448" viewBox="0 0 448 672" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,48 L 8,256" fill="none" stroke="black"/>
              <path d="M 8,384 L 8,640" fill="none" stroke="black"/>
              <path d="M 24,64 L 24,96" fill="none" stroke="black"/>
              <path d="M 24,176 L 24,224" fill="none" stroke="black"/>
              <path d="M 24,400 L 24,464" fill="none" stroke="black"/>
              <path d="M 56,104 L 56,152" fill="none" stroke="black"/>
              <path d="M 104,64 L 104,96" fill="none" stroke="black"/>
              <path d="M 104,400 L 104,464" fill="none" stroke="black"/>
              <path d="M 122,256 L 122,360" fill="none" stroke="black"/>
              <path d="M 118,256 L 118,360" fill="none" stroke="black"/>
              <path d="M 152,176 L 152,224" fill="none" stroke="black"/>
              <path d="M 200,496 L 200,608" fill="none" stroke="black"/>
              <path d="M 288,400 L 288,512" fill="none" stroke="black"/>
              <path d="M 336,592 L 336,624" fill="none" stroke="black"/>
              <path d="M 352,400 L 352,512" fill="none" stroke="black"/>
              <path d="M 384,448 L 384,584" fill="none" stroke="black"/>
              <path d="M 424,592 L 424,624" fill="none" stroke="black"/>
              <path d="M 440,32 L 440,240" fill="none" stroke="black"/>
              <path d="M 440,368 L 440,640" fill="none" stroke="black"/>
              <path d="M 24,32 L 440,32" fill="none" stroke="black"/>
              <path d="M 24,64 L 104,64" fill="none" stroke="black"/>
              <path d="M 336,64 L 408,64" fill="none" stroke="black"/>
              <path d="M 104,80 L 312,80" fill="none" stroke="black"/>
              <path d="M 24,96 L 104,96" fill="none" stroke="black"/>
              <path d="M 336,96 L 408,96" fill="none" stroke="black"/>
              <path d="M 40,160 L 136,160" fill="none" stroke="black"/>
              <path d="M 40,192 L 136,192" fill="none" stroke="black"/>
              <path d="M 40,240 L 136,240" fill="none" stroke="black"/>
              <path d="M 8,256 L 424,256" fill="none" stroke="black"/>
              <path d="M 168,304 L 240,304" fill="none" stroke="black"/>
              <path d="M 168,336 L 240,336" fill="none" stroke="black"/>
              <path d="M 24,368 L 440,368" fill="none" stroke="black"/>
              <path d="M 24,400 L 104,400" fill="none" stroke="black"/>
              <path d="M 288,400 L 352,400" fill="none" stroke="black"/>
              <path d="M 104,416 L 280,416" fill="none" stroke="black"/>
              <path d="M 112,448 L 288,448" fill="none" stroke="black"/>
              <path d="M 352,448 L 384,448" fill="none" stroke="black"/>
              <path d="M 24,464 L 104,464" fill="none" stroke="black"/>
              <path d="M 200,496 L 280,496" fill="none" stroke="black"/>
              <path d="M 288,512 L 352,512" fill="none" stroke="black"/>
              <path d="M 336,592 L 424,592" fill="none" stroke="black"/>
              <path d="M 200,608 L 336,608" fill="none" stroke="black"/>
              <path d="M 336,624 L 424,624" fill="none" stroke="black"/>
              <path d="M 8,640 L 440,640" fill="none" stroke="black"/>
              <path d="M 24,32 C 15.16936,32 8,39.16936 8,48" fill="none" stroke="black"/>
              <path d="M 336,64 C 327.16936,64 320,71.16936 320,80" fill="none" stroke="black"/>
              <path d="M 408,64 C 416.83064,64 424,71.16936 424,80" fill="none" stroke="black"/>
              <path d="M 336,96 C 327.16936,96 320,88.83064 320,80" fill="none" stroke="black"/>
              <path d="M 408,96 C 416.83064,96 424,88.83064 424,80" fill="none" stroke="black"/>
              <path d="M 40,160 C 31.16936,160 24,167.16936 24,176" fill="none" stroke="black"/>
              <path d="M 136,160 C 144.83064,160 152,167.16936 152,176" fill="none" stroke="black"/>
              <path d="M 40,192 C 31.16936,192 24,184.83064 24,176" fill="none" stroke="black"/>
              <path d="M 136,192 C 144.83064,192 152,184.83064 152,176" fill="none" stroke="black"/>
              <path d="M 40,240 C 31.16936,240 24,232.83064 24,224" fill="none" stroke="black"/>
              <path d="M 136,240 C 144.83064,240 152,232.83064 152,224" fill="none" stroke="black"/>
              <path d="M 424,256 C 432.83064,256 440,248.83064 440,240" fill="none" stroke="black"/>
              <path d="M 168,304 C 159.16936,304 152,311.16936 152,320" fill="none" stroke="black"/>
              <path d="M 240,304 C 248.83064,304 256,311.16936 256,320" fill="none" stroke="black"/>
              <path d="M 168,336 C 159.16936,336 152,328.83064 152,320" fill="none" stroke="black"/>
              <path d="M 240,336 C 248.83064,336 256,328.83064 256,320" fill="none" stroke="black"/>
              <path d="M 24,368 C 15.16936,368 8,375.16936 8,384" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="392,584 380,578.4 380,589.6" fill="black" transform="rotate(90,384,584)"/>
              <polygon class="arrowhead" points="320,80 308,74.4 308,85.6" fill="black" transform="rotate(0,312,80)"/>
              <polygon class="arrowhead" points="288,496 276,490.4 276,501.6" fill="black" transform="rotate(0,280,496)"/>
              <polygon class="arrowhead" points="288,416 276,410.4 276,421.6" fill="black" transform="rotate(0,280,416)"/>
              <polygon class="arrowhead" points="128,360 116,354.4 116,365.6" fill="black" transform="rotate(90,120,360)"/>
              <polygon class="arrowhead" points="120,448 108,442.4 108,453.6" fill="black" transform="rotate(180,112,448)"/>
              <polygon class="arrowhead" points="64,152 52,146.4 52,157.6" fill="black" transform="rotate(90,56,152)"/>
              <polygon class="arrowhead" points="64,104 52,98.4 52,109.6" fill="black" transform="rotate(270,56,104)"/>
              <g class="text">
                <text x="208" y="68">2. serializes &amp; signs</text>
                <text x="64" y="84">Grantor</text>
                <text x="372" y="84">capability</text>
                <text x="208" y="132">1. *authorization query* &amp; response</text>
                <text x="88" y="212">authorization</text>
                <text x="88" y="228">tuple store</text>
                <text x="264" y="292">time-delayed transmission channel</text>
                <text x="204" y="324">capability</text>
                <text x="192" y="404">1. access request</text>
                <text x="64" y="436">Grantee</text>
                <text x="320" y="452">Agent</text>
                <text x="192" y="468">4. *access grant*</text>
                <text x="128" y="548">3. verification</text>
                <text x="312" y="548">2. verification</text>
                <text x="140" y="564">response</text>
                <text x="320" y="564">request</text>
                <text x="380" y="612">Verifier</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
   .----------------------------------------------------.
  |                                                     |
  | +---------+  2. serializes & signs    .----------.  |
  | | Grantor +------------------------->| capability | |
  | +---------+                           '----------'  |
  |     ^                                               |
  |     | 1. *authorization query* & response           |
  |     v                                               |
  |  .-------------.                                    |
  | |               |                                   |
  | |'-------------'|                                   |
  | | authorization |                                   |
  | |  tuple store  |                                   |
  |  '-------------'                                    |
  '-------------+--------------------------------------'
                ║
                ║ time-delayed transmission channel
                ║    .----------.
                ║   | capability |
                ║    '----------'
                v
   .----------------------------------------------------.
  |                                                     |
  | +---------+  1. access request   +-------+          |
  | |         +--------------------->|       |          |
  | | Grantee |                      |       |          |
  | |         |<---------------------+ Agent +---+      |
  | +---------+  4. *access grant*   |       |   |      |
  |                                  |       |   |      |
  |                       +--------->|       |   |      |
  |                       |          +-------+   |      |
  |                       |                      |      |
  |       3. verification |      2. verification |      |
  |            response   |           request    |      |
  |                       |                      v      |
  |                       |                +----------+ |
  |                       +----------------+ Verifier | |
  |                                        +----------+ |
  '-----------------------------------------------------'
]]></artwork>
        </artset>
        <t>The process is split into two phases.</t>
        <t>In the first phase, the grantor issues an authorization query (((authorization
query))) to an authorization tuple store, which stands in here for the specific
process by which authorization is managed, and produces tuples. Based on the
response, it serializes a capability and adds its signature over it.</t>
        <t>The capability then gets transmitted via the time-delayed transmission channel
to the second phase, providing temporal decoupling between the phases.</t>
        <t>In the second phase, the grantee requests access to some object from the
agent. The agent must send a verification request to the verifier (which may
be a subroutine of the agent; no network transmission is implied here). The
verifier responds by either permitting access or not. If access is permitted,
the agent grants access to the grantee. Because the capability encodes all
required information for the verifier to perform this step, it does not need
access to the authorization tuple store itself.</t>
        <t>Note that the capability can be transmitted to any entity in the second phase;
all that is relevant is that it ends up at the verifier. If it is transmitted
to the grantee, it has to pass it on to the agent as part of the access request.
If the agent receives it, it has to pass it on to the verifier as part of the
verification request.</t>
      </section>
    </section>
    <section anchor="sec_delegation">
      <name>Delegation of Authority</name>
      <t>One of the more powerful applications of the power of attorney system is that
it is possible to further delegate authority. The constraint is that no entity
can provide more authority in a sub-grant than it possessed in the first place.</t>
      <t>The ability to generate sub-grants is easily provided in a specialized privilege.
Such a privilege must encode the specific other privileges a grantee may in turn
grant to other parties.</t>
      <t>As this may include the ability to grant further sub-grants, implementations
<bcp14>MUST</bcp14> take care here. They <bcp14>MAY</bcp14> wish to include a limit on the depth to which
sub-grants may be further delegated.</t>
    </section>
    <section anchor="sec_considerations">
      <name>Related Considerations</name>
      <section anchor="sec_human-rights-considerations">
        <name>Human Rights Considerations</name>
        <t>This document lists human rights considerations as a use case, see <xref target="sec_uc-hrpc"/>.</t>
      </section>
      <section anchor="sec_protocol-considerations">
        <name>Protocol Considerations</name>
        <t>There are no specific protocol considerations for this document.</t>
        <t>However, protocols transmitting capabilities <bcp14>MAY</bcp14> provide some relief to
human rights concerns <xref target="sec_uc-hrpc"/>, e.g. by providing confidentiality via
encrypted transmission.</t>
      </section>
      <section anchor="sec_security-considerations">
        <name>Security Considerations</name>
        <t>This document does not specify a network protocol. In fact, it deliberately
requires no specific protocol for transmitting capabilities. As such, much of
<xref target="BCP72"/> does not apply.</t>
        <t>However, distributed authorization does not require the invention of new
cryptographic constructs; the document is deliberately phrased such that the
choice of such constructs remains implementation defined.</t>
        <t>As such, some security considerations are supported by the use of capabilities
for distributed authorization, such as preventing unauthorized usage and
inappropriate use.</t>
        <t>Some notes on specific considerations follow.</t>
        <section anchor="sec_security-considerations-dos">
          <name>Denial of Service</name>
          <t>Denial of service mitigation is out of scope, because this document does not
describe a protocol.</t>
          <t>However, as avoiding a single point of failure (<xref target="sec_authorization-spof"/>)
is one of the problems that distributed authorization schemes address, it can
easily be argued that preventing denial of service is a major concern of this
document, and consequently fully addressed here.</t>
        </section>
        <section anchor="sec_security-considerations-revocation">
          <name>Revocation</name>
          <t>As ICAP was criticized for introducing a centralized solution for revocatins,
(see <xref target="sec_prior-icap"/>), a modern distributed authorization system must
adequately consider these.</t>
          <t>Fortunately, anything that can encode the granting of a privilege can also
encode the removal of said grant, by - essentially - encoding a negative
privilege. Doing so provides distributed revocations by the same overall
mechanism that distributed authorization is provided. A sequence of grants
and revocations for a particular request tuple will map to a sequence
of Boolean values, and can so be understood as a bit stream.</t>
          <t>This introduces a new requirement, namely that verifiers can reconstruct
the bit stream in order to understand the latest, most up-to-date state.
Unfortunately, this can be hard due to the time-delayed nature of the
transmission channel.</t>
          <t>Fortunately, research into conflict-free replicated data types has yielded
several methods for ordering also partially received streams, which can be
applied here by providing appropriate validity metadata. This yields eventually
consistent states in a distributed authorization system, which in many cases
may be sufficient.</t>
          <t>It is not the purpose of this document to prescribe any particular method
for ordering grants and revocations into a consistent stream, nor whether
revocations are used at all. However, implemtations <bcp14>MUST</bcp14> take care to consider
this aspect.</t>
        </section>
      </section>
      <section anchor="sec_privacy-considerations">
        <name>Privacy Considerations</name>
        <t>As part of supporting human rights considerations as a first class use case,
exploring privacy considerations as covered by <xref target="RFC6973"/> is worthwhile.</t>
        <t>In particular, distributed authorization schemes address the concerns of:
intrusion and misattribution (as related to pseudonyms only).</t>
        <t>It's also worth highlighting that surveillance and stored data concerns,
as well as disclosure, are <em>not</em> addressed. In order for distributed
capabilities to work, <em>any</em> likely recipient needs to be able to decode them.</t>
        <t>The threat model then assumes that all capability data is accessible to
anyone, which is why the use of pseudonymous public-key based identifiers
is suggested. Sufficient care must be taken in key rotation, etc. in order
to provide additional protections.</t>
        <t>Note that despite this, nothing prevents a system from encrypting capabilities
for use only by a single authorized party, which means that these last
concerns can be addressed in the surrounding system.</t>
      </section>
      <section anchor="sec_IANA">
        <name>IANA Considerations</name>
        <t>This document has no IANA actions.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="NIST.IR.8366">
          <front>
            <title>Guidance for NIST staff on using inclusive language in documentary standards</title>
            <author fullname="Kathryn Miller" initials="K." surname="Miller">
              <organization/>
            </author>
            <author fullname="David Alderman" initials="D." surname="Alderman">
              <organization/>
            </author>
            <author fullname="Lisa Carnahan" initials="L." surname="Carnahan">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Jim Foti" initials="J." surname="Foti">
              <organization/>
            </author>
            <author fullname="Barbara Goldstein" initials="B." surname="Goldstein">
              <organization/>
            </author>
            <author fullname="Mike Hogan" initials="M." surname="Hogan">
              <organization/>
            </author>
            <author fullname="Jennifer Marshall" initials="J." surname="Marshall">
              <organization/>
            </author>
            <author fullname="Karen K Reczek" initials="K." surname="Reczek">
              <organization/>
            </author>
            <author fullname="Nathalie Rioux" initials="N." surname="Rioux">
              <organization/>
            </author>
            <author fullname="Mary F Theofanos" initials="M." surname="Theofanos">
              <organization/>
            </author>
            <author fullname="David Wollman" initials="D." surname="Wollman">
              <organization/>
            </author>
            <date month="April" year="2021"/>
          </front>
          <seriesInfo name="National Institute of Standards and Technology (U.S.)" value="report"/>
          <seriesInfo name="DOI" value="10.6028/nist.ir.8366"/>
        </reference>
        <reference anchor="RM3420">
          <front>
            <title>On Distributed Communications: I. Introduction to Distributed Communications Networks</title>
            <author fullname="Paul Baran" initials="P." surname="Baran">
              <organization/>
            </author>
            <date year="1964"/>
          </front>
          <seriesInfo name="RAND Corporation" value="book"/>
          <seriesInfo name="DOI" value="10.7249/rm3420"/>
        </reference>
        <reference anchor="BCP72" target="https://www.rfc-editor.org/info/rfc3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="B. Korver" initials="B." surname="Korver">
              <organization/>
            </author>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak.  This document provides guidelines to RFC authors on how to write a good Security Considerations section.   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="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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="RFC8280" target="https://www.rfc-editor.org/info/rfc8280">
          <front>
            <title>Research into Human Rights Protocol Considerations</title>
            <author fullname="N. ten Oever" initials="N." surname="ten Oever">
              <organization/>
            </author>
            <author fullname="C. Cath" initials="C." surname="Cath">
              <organization/>
            </author>
            <date month="October" year="2017"/>
            <abstract>
              <t>This document aims to propose guidelines for human rights considerations, similar to the work done on the guidelines for privacy considerations (RFC 6973).  The other parts of this document explain the background of the guidelines and how they were developed.</t>
              <t>This document is the first milestone in a longer-term research effort.  It has been reviewed by the Human Rights Protocol Considerations (HRPC) Research Group and also by individuals from outside the research group.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8280"/>
          <seriesInfo name="DOI" value="10.17487/RFC8280"/>
        </reference>
        <reference anchor="RFC6973" target="https://www.rfc-editor.org/info/rfc6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="B. Aboba" initials="B." surname="Aboba">
              <organization/>
            </author>
            <author fullname="J. Peterson" initials="J." surname="Peterson">
              <organization/>
            </author>
            <author fullname="J. Morris" initials="J." surname="Morris">
              <organization/>
            </author>
            <author fullname="M. Hansen" initials="M." surname="Hansen">
              <organization/>
            </author>
            <author fullname="R. Smith" initials="R." surname="Smith">
              <organization/>
            </author>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications.  It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices.  It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.draft-knodel-terminology-10" target="https://datatracker.ietf.org/doc/html/draft-knodel-terminology-10">
          <front>
            <title>Terminology, Power, and Inclusive Language in Internet-Drafts and RFCs</title>
            <author fullname="Mallory Knodel" initials="M." surname="Knodel">
              <organization>Center for Democracy &amp; Technology</organization>
            </author>
            <author fullname="Niels ten Oever" initials="N." surname="ten Oever">
              <organization>University of Amsterdam</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document argues for more inclusive language conventions
   sometimes used by RFC authors and the RFC Production Centre in
   Internet-Drafts that are work in progress, and in new RFCs that may
   be published in any of the RFC series, in order to foster greater
   knowledge transfer and improve diversity of participation in the
   IETF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-knodel-terminology-10"/>
        </reference>
        <reference anchor="I-D.draft-irtf-hrpc-guidelines-16" target="https://datatracker.ietf.org/doc/html/draft-irtf-hrpc-guidelines-16">
          <front>
            <title>Guidelines for Human Rights Protocol and Architecture Considerations</title>
            <author fullname="Gurshabad Grover" initials="G." surname="Grover">
         </author>
            <author fullname="Niels ten Oever" initials="N." surname="ten Oever">
              <organization>University of Amsterdam</organization>
            </author>
            <date day="10" month="November" year="2022"/>
            <abstract>
              <t>   This document sets guidelines for human rights considerations for
   developers working on network protocols and architectures, similar to
   the work done on the guidelines for privacy considerations [RFC6973].
   This is an updated version of the guidelines for human rights
   considerations in [RFC8280].

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   This informational document has consensus for publication from the
   Internet Research Task Force (IRTF) Human Right Protocol
   Considerations Research (HRPC) Group.  It has been reviewed, tried,
   and tested by both by the research group as well as by researchers
   and practitioners from outside the research group (for example see:
   https://gitlab.com/hr-rt/documents).  The research group acknowledges
   that the understanding of the impact of Internet protocols and
   architecture on society is a developing practice and is a body of
   research that is still in development.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-hrpc-guidelines-16"/>
        </reference>
        <reference anchor="ISOC-FOUNDATION" target="https://www.isocfoundation.org/">
          <front>
            <title>Internet Society Foundation</title>
            <author>
              <organization>Internet Society Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="X.509">
          <front>
            <title>Information technology - Open Systems Interconnection - The Directory:
Public-key and attribute certificate frameworks</title>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date month="March" year="2000"/>
          </front>
          <seriesInfo name="ITU-T" value="Recommendation X.509"/>
          <seriesInfo name="ISO" value="Standard 9594-8"/>
        </reference>
        <reference anchor="OCAP">
          <front>
            <title>Programming semantics for multiprogrammed computations</title>
            <author fullname="Jack B. Dennis" initials="J." surname="Dennis">
              <organization>Massachusetts Institute of Technology, Cambridge</organization>
            </author>
            <author fullname="Earl C. Van Horn" initials="E." surname="Van Horn">
              <organization>Massachusetts Institute of Technology, Cambridge</organization>
            </author>
            <date month="March" year="1966"/>
          </front>
          <seriesInfo name="Communications of the ACM" value="vol. 9, no. 3, pp. 143-155"/>
          <seriesInfo name="DOI" value="10.1145/365230.365252"/>
        </reference>
        <reference anchor="ICAP">
          <front>
            <title>A secure identity-based capability system</title>
            <author fullname="L. Gong" initials="L." surname="Gong">
              <organization/>
            </author>
            <date month="January" year="2003"/>
          </front>
          <seriesInfo name="Proceedings. 1989 IEEE Symposium on Security and" value="Privacy"/>
          <seriesInfo name="DOI" value="10.1109/secpri.1989.36277"/>
        </reference>
        <reference anchor="ADACORSA" target="https://www.kdt-ju.europa.eu/projects/adacorsa">
          <front>
            <title>Airborne data collection on resilient system architectures</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="May" day="01"/>
          </front>
        </reference>
        <reference anchor="RDF" target="https://www.w3.org/TR/rdf11-concepts/">
          <front>
            <title>RDF 1.1 Concepts and Abstract Syntax</title>
            <author>
              <organization>RDF Working Group of the World Wide Web Consortium (W3C)</organization>
            </author>
            <date year="2014" month="February" day="25"/>
          </front>
        </reference>
        <reference anchor="WIREGUARD" target="https://www.wireguard.com/papers/wireguard.pdf">
          <front>
            <title>WireGuard: Next Generation Kernel Network Tunnel</title>
            <author initials="J. A." surname="Donenfeld" fullname="Jason A. Donenfeld">
              <organization/>
            </author>
            <date year="2020" month="June" day="01"/>
          </front>
        </reference>
        <reference anchor="UCAN" target="https://ucan.xyz/">
          <front>
            <title>User Controlled Authorization Network</title>
            <author>
              <organization>UCAN Working Group</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ZCAP-LD" target="https://w3c-ccg.github.io/zcap-spec/">
          <front>
            <title>Authorization Capabilities for Linked Data v0.3</title>
            <author fullname="Christine Lemmer-Webber">
              <organization/>
            </author>
            <author fullname="Manu Sporny">
              <organization/>
            </author>
            <author initials="M. S." surname="Miller" fullname="Mark S. Miller">
              <organization/>
            </author>
            <date year="2023" month="January" day="22"/>
          </front>
        </reference>
        <reference anchor="POA-IOT">
          <front>
            <title>Multi-level Sub-granting by Power of Attorney and OAuth Authorization Server in Cyber-Physical Systems</title>
            <author fullname="Sreelakshmi Vattaparambil Sudarsan" initials="S." surname="Sudarsan">
              <organization>Department Computer Science, Electrical and Space Engineering, Lulea University of Technology, Lule&amp;#x00E5;, Sweden</organization>
            </author>
            <author fullname="Olov Schelén" initials="O." surname="Schelén">
              <organization>Department Computer Science, Electrical and Space Engineering, Lulea University of Technology, Lule&amp;#x00E5;, Sweden</organization>
            </author>
            <author fullname="Ulf Bodin" initials="U." surname="Bodin">
              <organization>Department Computer Science, Electrical and Space Engineering, Lulea University of Technology, Lule&amp;#x00E5;, Sweden</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="IEEE Internet of Things Journal" value="pp. 1-1"/>
          <seriesInfo name="DOI" value="10.1109/jiot.2023.3265407"/>
        </reference>
        <reference anchor="RFC4880" target="https://www.rfc-editor.org/info/rfc4880">
          <front>
            <title>OpenPGP Message Format</title>
            <author fullname="J. Callas" initials="J." surname="Callas">
              <organization/>
            </author>
            <author fullname="L. Donnerhacke" initials="L." surname="Donnerhacke">
              <organization/>
            </author>
            <author fullname="H. Finney" initials="H." surname="Finney">
              <organization/>
            </author>
            <author fullname="D. Shaw" initials="D." surname="Shaw">
              <organization/>
            </author>
            <author fullname="R. Thayer" initials="R." surname="Thayer">
              <organization/>
            </author>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format.  It is not a step-by-step cookbook for writing an application.  It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network.  It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t>
              <t>OpenPGP software uses a combination of strong public-key and symmetric cryptography to provide security services for electronic communications and data storage.  These services include confidentiality, key management, authentication, and digital signatures.  This document specifies the message formats used in OpenPGP.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4880"/>
          <seriesInfo name="DOI" value="10.17487/RFC4880"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC3987" target="https://www.rfc-editor.org/info/rfc3987">
          <front>
            <title>Internationalized Resource Identifiers (IRIs)</title>
            <author fullname="M. Duerst" initials="M." surname="Duerst">
              <organization/>
            </author>
            <author fullname="M. Suignard" initials="M." surname="Suignard">
              <organization/>
            </author>
            <date month="January" year="2005"/>
            <abstract>
              <t>This document defines a new protocol element, the Internationalized  Resource Identifier (IRI), as a complement of the Uniform Resource  Identifier (URI). An IRI is a sequence of characters from the  Universal Character Set (Unicode/ISO 10646). A mapping from IRIs to   URIs is defined, which means that IRIs can be used instead of URIs,  where appropriate, to identify resources.</t>
              <t> The approach of defining a new protocol element was chosen instead of extending or changing the definition of URIs.  This was done in order  to allow a clear distinction and to avoid incompatibilities with  existing software. Guidelines are provided for the use and deployment of IRIs in various protocols, formats, and software components that currently deal with URIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3987"/>
          <seriesInfo name="DOI" value="10.17487/RFC3987"/>
        </reference>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="J. Bradley" initials="J." surname="Bradley">
              <organization/>
            </author>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.  The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC6749" target="https://www.rfc-editor.org/info/rfc6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt">
              <organization/>
            </author>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf.  This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="sec_ack">
      <name>Acknowledgments</name>
      <t>Jens Finkhaeuser's authorship of this document was performed as part of work
undertaken under a grant agreement with the Internet Society Foundation
<xref target="ISOC-FOUNDATION"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA819y3YcR5rePp4iBzrHBKmqIkFSlAT19AwIiBLbJEETpNQ9
c8aerKpAIZtZmeXMLIDVEOcdvPDei9l47Tdwv4mfxP/3XyIis6pIqb2xzpxp
IiszLn/891uMx2P3xRdfuC+y51Xnm8p347Mmv+yyl3nzfl7fVNlbv1yVeecd
Xnrjq3zps+6qaLPLovTZZVMvszm+GHf1vB5v6nWDV8arpu7qWV1OlvOsq7OF
77K2y5vOzyc0jszBY13WzTLvMhrwQMb5nY3x+/Hvburm/aKp1yv6Nz+i4Q4m
vJRndZMVVdEVeZm1vluvRhl9mNVVuckq73lWPy86WixNUjRtl03LevY+qy/p
T1/OWyzkHK8fdEVX+gP+rMV3U5/NrvJq4effZXNf+s5nB/l02vjrg6y4xDxN
xt9g2e1V3XQY66TaZDXN1mSzmoBZddksrzAWluHno2y67njovPGX6zKr6g6T
FVXX1PP1jN5rmrrhZV3UgAyvMrspyhKf0SazfN3VBK1ilpe07vm6KaqF7B7r
ork3GQ2erStdvoDqrK7uEISrWbme007GDx4cZAS9gzHOte1oT5VCqeTzxQpe
5FNftuEXOqTsVxyPjiiLaOkQphsaCyN0dV0ybGnvBCH6B57O1k0DQF37pi3q
6jvaCy1wXs8w2gGmzfyHnBDQy07eAvE6xUjM0Gbvm3wJRB03l7Pj7KrrVu3x
/fuLortaTyezenl/lk/r++lbNM6fCFNwOI2nkWae10LrKBoBgh5ytpLF5tm8
uKR/YKWCroDQKYM4AI4WSmeOXWBz9M7sKoCO8Ptw8mFZ8ob++PLFKPPdbDKZ
3MWmiPrcrJ7TSR5n6+5y/I1j1DrODk7zVT4tSsJx2ic+PSvarikIjQiyJ+uO
EK/4C2FDXR04Qc/f+JEC+liP9s+XRfX+KvcE12Y8y1ftmL4fz+P3Y8K/q/GD
Izcj8C/qZnNMCHJZu3Y9XRYt9t5tVh4P537l6f9VnStWzXHWNeu2e/jgwbcP
Hjo3p4+Ps9uzk7fff3TEFKr5f8nLuqJnG9+6VXGc/TOxjlHWEl3RAbT0r81S
/kELXuarFcFqRES2XNIE7b8AL87Pzukwl/W1D8+dq9bLqW+OHYHlkb5E/0PE
2dJBrVtels/++Mc/MikCVneSld+hdwmP8+Ps5M33Jy7g+rGwypUnzHjd1H/2
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
xBcyzGYgST9XQcBsTA4qctZe681+WYekxRzKwYnT7m6vfgqAWDeV5fdLg09J
pw7Bj9jUs8KVoHbEkrjN1Bwu9t0KxmWhQFO7u+vVXrzk3oUPSa8hBgI7m/hU
+k0XQsk4kgvRbHFXrfiuxuWvtR3Glj7Pj4lifsy5I1LgP/PUv4p+LXKValXf
JFdqVbE9mvUo2fLE7opv0Qr/7d/+Lcvz9ppF42T8N/wHGflL9rf89wt/+WUY
6csseziJSkKb/YdMHNn9pU3sy1+Cn/zLHeuS/37/S0pgv+yac+9/d+Iwd2xO
/Pef/6Z98r+gKdzb4bm6R3sN6a27vrz+2+bsn+jk1385PNFfc8L65Z3enHd+
w5cDJP0tXypD4q60v2W12WC1v+JD/rL/2X7864/uhkP9n//+33Y9+7wreOdX
WZ9O9rzTp4h9A9351LKv///gFkRMqtdYLD4LL3w5/DLOuvu0fm8v/LL9pXlg
96z8E1+Gv3+3c9IvNdD2ZVzxjn0+BtNIsi/uDeb8Jf3y84D8bV/Glfz+N36Z
PE9P5bd9ueNx+uWjST98o88f7n68NWfCc3/pPTZ0+n9Y7fXf8OWXKWr8ulMJ
r4cA5y+/FhP2zHlnOPav+u8OdAl3e5zlDXuUx6RUjKXdevv3B+Mxl4C0f//w
QF3E1hmMi/bKQptmQvteXfVvMLgki6qTp/0sCKvh+HV19i5kIO11Son8sNpK
7jXCdgo7kK1qx3RpSzvm/EaJGg3z3SVWPQ8Zh9oeSjOCnia3CYXilpFcOh90
oJ63gwOp8zkHvYcWcxF6BSSZQcgSXuC2rTR1Ct3iO+178GkhE6wF7riqJ5Bc
nfzpHpxbB9kfJw1YWNw2bb7KReNiT1jQz7Fxr1m1zDjZ/uJ7uvI+xYfsrL6l
nh1aCTsnV7PJ0tTo1diPqX8HI8OSvnuwCalaYg9J1Wa02fW+L8YKzaxOm+Zq
W16+OoFb2sZm08EhP3Ix7G+F+mlCg0EtJs0P7MjQi6gsUw9ldF8YKqeuHIuF
SVl/51eMiSHGC8+u6y9jLwFp0H6SOgAGS9yR0ae5oP2GbinKfOfgFeo0oSd2
a4z5i3ztx3pljT1sewxovcYpTuj60BzZ5UyABdICuDom7JVPY3ClVl/5mFgw
VBM2/MxzenDRfXrocAj90d0udObE0jPa+SK3rhsnIbtOjMp5+JUr6QNas8OE
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
fX5xfjp+dv7u1dnJ2+fn3FP6/wIsAbJbtagAAA==

-->

</rfc>
