﻿<?xml version='1.0' encoding='utf-8'?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" consensus="true" docName="draft-moskowitz-drip-dki-00"
	category="std" ipr="trust200902" obsoletes="" submissionType="IETF"
	xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">

<front> <title abbrev="DRIP DKI">The DRIP DET public Key Infrastructure</title>
    <seriesInfo name="Internet-Draft" value="draft-moskowitz-drip-dki-00"/>
	<author fullname="Robert Moskowitz" initials="R" surname="Moskowitz">
    <organization>HTT Consulting</organization>
    <address>
      <postal>
	    <street></street>
        <city>Oak Park</city>
        <region>MI</region>
        <code>48237</code>
        <country>USA</country>
      </postal>
      <email>rgm@labs.htt-consult.com</email>
	</address>
	</author>
	<author fullname="Stuart W. Card" initials="S." surname="Card">
	<organization>AX Enterprize, LLC</organization>
	<address>
	  <postal>
	    <street>4947 Commercial Drive</street>
	    <city>Yorkville</city>
	    <region>NY</region>
	    <code>13495</code>
	    <country>USA</country>
	  </postal>
	  <email>stu.card@axenterprize.com</email>
	</address>
	</author>
<date year="2023" />
   <area>Internet</area>
   <workgroup>INTAREA</workgroup>
    <keyword>RFC</keyword>
     <keyword>Request for Comments</keyword>
     <keyword>I-D</keyword>
     <keyword>Internet-Draft</keyword>
     <keyword>DRIP</keyword>
     <keyword>PKIX</keyword>
<abstract>
<t>
	The DRIP Entity Tag (DET) public Key Infrastructure (DKI) is a 
	specific variant of classic Public Key Infrastructures (PKI) where 
	the orginization is around the DET, in place of X.520 Distinguished 
	Names. Further, the DKI uses DRIP Endorsements in place of X.509 
	certificates for establishing trust within the DKI.
</t>
<t>
	There is a shadow PKI behind the DKI, with many of its X.509 fields 
	mirroring content in the DRIP Endorsements.  This PKI can at times 
	be used where X.509 is expected and non-constrained communication 
	links are available that can handle their larger size.
</t>
</abstract>
</front>
<middle>
<section numbered="true" toc="default"> <name>Introduction</name>
<t>
	A DRIP Entity Tag (DET, <xref target="RFC9374" format="default"/>) 
	public Key Infrastructure (DKI) is a strict hierarchy, governed by 
	the administrator of the DET prefix <xref target="IPv6-SPECIAL" 
	format="default"/> and having the authority to authorize RAAs. RAAs 
	in turn authorize HDAs within their domain. This authorization is 
	managed via a set of DETs whose sole use is to define the DKI.  The 
	RAA Authorization DETs MUST reside in  HID = RAA#|0 (Apex 
	Authorization DET in HID = 0|0).
</t>
<t>
	There are three main classifications/types of DETs:
</t>
<ul empty="true">
	<li>
	<dl newline="true" spacing="normal">
		<dt>Authorization DETs</dt>
		<dd>
			Used to assert the authorization of a DKI level.
		</dd>
		<dt>Endorsing DETs</dt>
		<dd>
			Used to assert operations within DKI level.
		</dd>
        <dt>Operational DETs</dt>
        <dd>
			Used by operational entities within DKI level
		</dd>
 	</dl>
 	</li>
</ul>
<t>
	All DETs exist in DET-Endorsements (<xref 
	target="I-D.ietf-drip-registries" section="B" format="default"/>). 
	These DET-Endorsements provide the proof of registration and thus 
	trust.  These DETs, through chained Endorsements define the DKI as 
	follows:
</t>
<figure anchor="reg-class-fig"> <name>The DKI Endorsements</name>
	<artwork align="center" name="" type="" alt="">
<![CDATA[
                +----------+
                |   Auth   | 
                +-o------o-+
                  |      |
                  |    +-o-----+
 Apex             |   +--o----+|
                  |   |Endorse|+
                  |   +---o---+
                  |      |
                  |    +-o-----+
                  |   +--o----+|
                  |   |CRL,Srv|+
                  |   +-------+
                  |      
******************|************************************
                +-o--------+
               +-o--------+|
               |   Auth   |+
               +--o-----o-+
                  |     |
                  |   +-o-----+
 RAAs             |  +--o----+|
                  |  |Endorse|+
                  |  +---o---+
                  |     |
                  |   +-o-----+
                  |  +--o----+|
                  |  |CRL,Srv|+
                  |  +-------+
                  |      
******************|************************************
                +-o--------+
               +-o--------+|
               |   Auth   |+
               +----o-----+
                    |
                  +-o-----+
 HDAs            +--o----+|
                 |Endorse|+
                 +---o---+
                     |
                   +-o-----+
                  +--o----+|
                  |CRL,Srv||
                  |UAS    |+
                  +-------+
                   
*******************************************************
]]>
	</artwork>
</figure>
<t>
	The Authorization DETs exist in a set of 
	DET-Authorization-Endorsements.  The lifetime of these endorsements 
	SHOULD be no less than 1 year, recommended 5 years, and should not 
	exceed 10 years.  Endorsements SHOULD be reissued prior to expiry 
	(may be for a new DET).  DETs used to define this authorization are 
	replaced per undetermined policy (note these DETs do very little 
	signing, see section...).
</t>
<t>
	This separation of DET type roles reduce the risk of private key 
	loss for the critical Authentication DETs by making them 
	infrequently used.  It does make the chain of trust for a HDA 
	customers' Operational DETs to be 4 Endorsements.
</t>
</section>
<section anchor="terms" numbered="true" toc="default"> <name>Terms and Definitions</name>
<section numbered="true" toc="default"> <name>Requirements Terminology</name>
	<t>
		The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
		NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
		"MAY", and "OPTIONAL" in this document are to be interpreted as
		described in BCP 14 <xref target="RFC2119" /> <xref
		target="RFC8174" /> when, and only when, they appear in all
		capitals, as shown here.
	</t>
</section>
<section numbered="true" toc="default"> <name>Definitions</name>
<t>
	This document uses the terms defined in <xref target="RFC9153" 
	section="2.2" format="default" /> and in <xref 
	target="I-D.ietf-drip-arch" section="2" format="default" />.  The 
	following new terms are used in the document:
</t>
	<dl newline="true" spacing="normal">
		<dt>DKI</dt>
		<dd>
			A DRIP Entity Tag (DET) public Key Infrastructure.
		</dd>
 	</dl>
</section>
</section>
<section anchor="DKI_Levels" numbered="true" toc="default"> <name>The DKI Levels</name>
<section anchor="DKI_apex" numbered="true" toc="default"> <name>The Apex</name>
<t>
	The Apex Authorization DET is used to endorse RAA Authorization 
	DETs and its own Apex Endorsing DETs; it has no other use.  This is 
	the case for all Authorization DETs.  Apex Endorsing DETs are used 
	to endorse DETs, with HID= 0|0, used by Apex services.
</t>
</section>
<section anchor="DKI_raas" numbered="true" toc="default"> <name>The RAAs</name>
<t>
	Each RAA use its Authorization DET (HID = RAA#|0) to endorse its 
	RAA Endorsing DET(s) (also HID = RAA#|0) and for endorsing its HDA 
	Authorization DETs (HID = RAA#|HDA#).
</t>
<t>
	An RAA may have multiple Endorsing DETs (HID = RAA#|0), each for a 
	different use (e.g. CRL signing, RAA server signing).  It is 
	expected that, over time, an RAA will rollover its Endorsing DETs, 
	thus at times there will be more than ONE Endorsing DET  per role 
	in use.
</t>
</section>
<section anchor="DKI_hdas" numbered="true" toc="default"> <name>The HDAs</name>
<t>
	Each HDA use its Authorization DET to endorse its HDA Endorsing 
	DETs (e.g. RAA=267, HDA=567).
</t>
<t>
	An HDA Endorsing DET is used to endorse Operational DETs; those 
	used by the HDA for its services (e.g. USS) and for Devices (e.g. 
	UA, GCS, ground infrastructure) partaking in the HDA's services.
</t>
</section>
</section>
<section anchor="DKI_dns" numbered="true" toc="default"> <name>DNS view of DKI</name>
<t>
	The primary view of the DKI is within DNS.  There are two main DNS 
	structures, one for DETs and one for DKI entities.
</t>
<t>
	In the DET DNS structure, only the Apex and RAA levels MUST be 
	DNSSEC signed.  The HDA level may be too dynamic for DNSSEC signing 
	(e.g. hundreds of new EE Operational DETs per hour); trust in the 
	EE Operational DETs within the HDA level comes through inclusion of 
	the HDA Endorsement of EE object.  A slow-churn HDA MAY use DNSSEC. 
	The RAA and HDA levels MUST contain their Endorsement by higher 
	object; this provides the needed trust in the Endorsement of EE 
	objects.  The Apex level Endorsement is self-signed, thus trust in 
	it is only possible via DNSSEC.  Other RR within these levels will 
	vary.  There may be HIP, TLSA, URI RR.
</t>
<t>
	Each level needs FQDNs for its Authorization DET and Endorsing 
	DET(s) (e.g. PTR to DETs?).  FQDNs for services offered may also be 
	present, or a URI for the commercial FQDN for the DKI Entity.  TLSA 
	RR of DET SPKI may be directly included here.  Same with HIP RR. 
	The Authorization Endorsement SHOULD be present, as SHOULD be 
	Endorsing Endorsements.
</t>
</section>
<section anchor="Offline_cache" numbered="true" toc="default"> <name>The Offline cache of HDA Endorsements</name>
<t>
	The Offline cache of HDA Endorsements, used to verify various EE 
	signed objects without needing DNS access, SHOULD consist of the 
	HDA Authentication DET Endorsements of the HDA Endorsement DETs.  
	Thus the receiver has a trusted source of the HDA Endorsement DET 
	Public Key (HI) in a DRIP standard object (136 bytes).  If the DKI 
	DNS tree includes GEO location data and coverage, a receiver could 
	query some service for a trusted cache within some radius of its 
	location.  Such as, please tell me of all HDAs within 100KM of...
</t>
<t>
	This cache MAY contain the full chain up to the Apex.  This could 
	be helpful in limited connectivity environments when encountering 
	an Endorsing HDA DET under a know Authenticated HDA or RAA.  The 
	needed trust chain could be shorter.
</t>
</section>
<section anchor="test_raas" numbered="true" toc="default"> <name>RAAs set aside for Testing</name>
<t>
	The RAA range of 16376 - 16383 are reserved for testing.  It test 
	DET DNS structure under drip-testing.org will use these.  RAAs 
	16376 - 16389 are preallocated in this test DNS with 16390 - 16383 
	available for testing setting up RAAs.  Within RAAs 16376 - 16383, 
	HDAs 16376 - 16383 will be preset for testing of Operational DETs. 
	Other HDAs within RAAs 16376 - 16383 additional HDAs can be made 
	available for testing of HDA setup and running said HDAs.
</t>
<t>
	It is anticipated that once a production DNS is established, these 
	test RAAs and HDAs will carry forward.  The migration could be as 
	simple as the production Apex Endorsing the test RAA Authorization 
	DETs and moving the various test DNS structures to the production 
	structure.
</t>
</section>
<section anchor="Shadow_PKI" numbered="true" toc="default"> <name>The DKI's Shadow PKI</name>
<t>
	TBD
</t>
<t>
	In development is an X.509 PKI to shadow the DKI.  The X.509 
	certificates are minimalistic (less than 400 bytes for DER).  Any 
	DRIP specific OIDs should come from the ICAO arc (e.g. 
	1.3.27.16.2).  Important X.509 fields like issuerKeyIdentifier will 
	have DETs rather than public key hashes, so software will need to 
	specifically handle them.
</t>
<t>
	Distiguished Names will follow DET hierarchy and not map well into 
	traditional PKI usage.
</t>
<t>
	This is a work in progress.
</t>
</section>
<section anchor="IANA" numbered="true" toc="default"> <name>IANA Considerations</name>
<t>
	TBD
</t>
</section>
<section anchor="security-considerations" numbered="true" toc="default"> <name>Security Considerations</name>
<t>
	TBD
</t>
<t>
	Needs description of risk to Authorization DET private keys for 
	broad trees (e.g. lots of RAAs).
</t>
</section>
</middle>
<back>
<displayreference target="I-D.ietf-drip-arch" to="drip-architecture"/>
<displayreference target="I-D.ietf-drip-registries" to="drip-registries"/>
<references> <name>References</name>
<references title="Normative References">
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
</references>
<references title="Informative References">
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9153.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9374.xml"/>
	<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-drip-arch.xml"/>
	<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-drip-registries.xml"/>
	<reference anchor="IPv6-SPECIAL"  target="https://www.iana.org/assignments/iana-ipv6-special-registry/">
		<front>
			<title>IANA IPv6 Special-Purpose Address Registry</title>
			<author><organization>IANA</organization></author>
		</front>
	</reference>
</references>
</references>
<section numbered="false" toc="default"> <name>Acknowledgments</name>
<t>
	TBD
</t>
</section>
</back>
</rfc>
