Internet-Draft | DRIP DKI | May 2023 |
Moskowitz & Card | Expires 30 November 2023 | [Page] |
The DRIP Entity Tag (DET) public Key Infrastructure (DKI) is a specific variant of classic Public Key Infrastructures (PKI) where the organization 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.¶
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.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 30 November 2023.¶
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
A DRIP Entity Tag (DET, [RFC9374]) public Key Infrastructure (DKI) is a strict hierarchy, governed by the administrator of the DET prefix [IPv6-SPECIAL] 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).¶
There are three main classifications/types of DETs:¶
All DETs exist in DET-Endorsements (Appendix B of [drip-registries]). These DET-Endorsements provide the proof of registration and thus trust. These DETs, through chained Endorsements define the DKI as follows:¶
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...).¶
This separation of DET type roles reduce the risk of private key loss for the critical Authentication DETs by making them infrequently used and only used in offline operations. It does make the chain of trust for a HDA customers' Operational DETs to be 4 Endorsements.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This document uses the terms defined in Section 2.2 of [RFC9153] and in Section 2 of [drip-architecture]. The following new terms are used in the document:¶
The Apex Authorization DET is used to endorse RAA Authorization DETs and its own Apex Issuing DETs; it has no other use. This is the case for all Authorization DETs. Apex Issuing DETs are used to endorse DETs, with HID= 0|0, used by Apex services.¶
Each RAA use its Authorization DET (HID = RAA#|0) to endorse its RAA Issuing DET(s) (also HID = RAA#|0) and for signing its HDA Authorization DETs (HID = RAA#|HDA#).¶
An RAA may have multiple Issuing 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 Issuing DETs, thus at times there will be more than ONE Issuing DET per role in use.¶
These Issuing DETs, like those at the Apex level, constitute an implicit HDA. There is no Authorization DET for this implicit HDA, but other than only signing for entities like servers needed by the RAA, it should be considered as an HDA in terms of policies.¶
It is expected that each nation state will manage RAAs for use of its National Air Space (NAS). The allocation of RAA numbers for this purpose will initially be based on the ISO 3166 3-digit codes ([ISO-3166]).¶
The initial allocation of RAAs will be (ISO-3166 number)*4 + [0-3]. It is up to each state what they do with this initial allocation.¶
Any allocation of RAAs to non-states will start with RAA 4096.¶
Each HDA use its Authorization DET to endorse its HDA Issuing DETs (e.g. RAA=267, HDA=567).¶
An HDA Issuing 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.¶
If the Operational DET is a Manufacturer DET, the "valid not after" date (vna) MUST be 99991231235959Z.¶
The Authentication DETs private keys MUST NEVER be on a system with any network connectivity. Also efforts MUST be taken to limit any external digital media connections to these offline systems. Compromise of an Authentication DET compromises its and all lower hierarchy levels. Such a compromise could result in a major re-signing effort with a new Authentication DET. Also, during the time of compromise, fraudulent additions to the DKI could have occurred.¶
This means that the process whereby the Authentication DET is used to sign the Endorsement/X.509 certificate of its level's Issuing DET(s) and lower level Authentication DETs MUST be conducted in an offline manner.¶
This offline process need not be onerous. For example, QR codes could be used to pass CSR objects to the offline Authentication DET system, and this system could produce QR codes containing the Endorsements and X.509 certificates it signed.¶
A video conference between the parties could have one side show its QR code and the other copy and print it to move between the video conferencing system and the offline system. This is a simplification of a larger signing operation, but shows how such a signing need not require travel and expensive hand-off methodologies.¶
It should be noted that the endorsement of Issuing DETs follow the same restriction, as it is done with the Authentication DET. It MUST be conducted in an offline manner.¶
The primary view of the DKI is within DNS. There are two main DNS structures, one for DETs and one for DKI entities.¶
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.¶
Endorsements are currently stored in DNS via the CERT RR using a private OID of 1.3.6.1.4.1.6715.2 (an alternative OID may be 1.3.9.16.2) and further classified by the Endorsement Type. The CERT RR is only a temporary RR for Endorsements, as it cannot support DET revocation (Section 3.4). Other RR within these levels will vary. There may be HIP, TLSA, and/or URI RR.¶
Each level needs FQDNs for its Authorization DET and Issuing 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 Issuing Endorsements.¶
For Operational DETs, there is no direct concept of DET revocation. Operational DETs are either discoverable via DNS or not valid despite being in a non-expired Endorsement signed an Issuing DET. Thus if an Issuing Entity needs to "revolk" an Operational DET it removes all entries for it from DNS, so a short TTL on those records is recommended.¶
Authorization and Issuing DETs are not so easily "revoked"; something akin to an X.509 CRL mechanism is needed. This could best be dealt with by Endorsements managed in a RR that includes revocation status. Thus [drip-registries] needs to define a specific RR for Endorsements that will be used here. Minimally, at least the revocation status and revocation date(s) need to be in this RR. Until this RR is defined, there is no mechanism, other than removal for Authorization and Issuing DET revocations.¶
The Offline cache of HDA Issuing Endorsements, used to verify various EE signed objects without needing DNS access, SHOULD consist of the HDA Authentication DET Endorsements of the HDA Issuing DETs. Thus the receiver has a trusted source of the HDA Issuing 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...¶
This cache MAY contain the full chain up to the Apex. This could be helpful in limited connectivity environments when encountering an HDA Issuing DET under a unknowned Authenticated HDA or RAA. The needed trust chain could be shorter.¶
There situations where a list of specific HDAs for an entity to trust for some application is needed. This can best be met by maintaining a cache as above but only of the trusted HDA Issuing Endorsements. How a list of this limited trust is maintain and distributed is out of scope of this document and is left to those needing this specific feature.¶
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.¶
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.¶
The following defines the components of a DKI's shadow PKI built from X.509 certificates with content that mirrors that in the DKI Endorsements. Further, the PKI tree mirrors that of the DKI levels (Section 3.1).¶
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).¶
The following is the profile for the DRIP X.509 certificates¶
The certificates will contain a 8-byte randomly generated Serial Number, compliant with CABForum recommendations. Serial Numbers are included for CRL functionality.¶
The certificates Subject will be coded in the commonName attribute. This will either be the DET or the left 8 bytes of the DET (for Authentication and Issuing DET certificates). Thus CN=2001003000000005 is for an Apex Authentication certificate for prefix 2001003/28 and SuiteID 5.¶
Author's Note: When the Subject is a DET, it may be better to put it in Subject Alternative Name and leave out Subject. As the DET is an IPv6 address and using SAN for them is recommended in [RFC5280].¶
To distinguish the various Issuing DET certificates for the Authentication DET certificate, they will have a letter appended to the CN to identify their role. For consistency across the PKI, these should be in an IANA registry. Current thought is for at least:¶
The Subject Alternative Name is NOT used in DET certificates with the exception of Manufacturer DETs. These will contain the hardwareModuleName as described in [IEEE 802.1AR] that references [RFC4108].¶
Per [RFC5280] and [IEEE 802.1AR], Manufacturer DET certificates MUST have the notAfter date as 99991231235959Z.¶
The Issuer MUST be the higher level's Subject.¶
The Issuer for the Apex Authentication certificate MUST be the Subject (indicating self-signed).¶
The Subject Key Identifier MUST be the DET. This is a major deviation from "standard" X.509 certificates that hash (normally with SHA2) the Public Key to fill the Subject Key Identifier.¶
The Authority Key Identifier MUST be the higher level's Subject Key Identifier (i.e. DET). This partially follows standard practice to chain up the Authority Key Identifier' from the Subject Key Identifier, except for how the Subject Key Identifiers are populated.¶
The Authority Key Identifier for the Apex Authentication certificate MUST be the Subject Key Identifier (indicating self-signed).¶
The test PKI, following the test DKI, was built with openSSL using the "req" command to create a CSR and the "ca" command to sign the CSR, making the certificate. It should be noted that these CSRs have all the content for making a DRIP Endorsement, such that a registrar may prefer to receive CSRs and use it to make both structures.¶
The self-signed certificates created by "req -x509" does not allow selection of the validity dates, only the number of days from NOW. The hack used around this limitation is to create a throw-away self-signed certificate as above with the Apex's DET. Then create a CSR with that DET and sign it with the throw-away certificate, setting the validity dates as desired. This now becomes the actual Apex self-signed Authentication certificate and the throw-away certificate can now be thrown away.¶
TBD - may need a registry of Signing certificate types.¶
Risks in the DKI are similar to those in any X.509 PKI. The methodologies to mitigate risk in PKI management should be considered and implemented as appropriate.¶
The DKI presents a tree-breath problem that is rarely seen in PKIs and needs practical solutions to minimize cost of operations and not introduce risks needlessly. Consider that there can be 16,384 RAAs. Assume only 10,000 RAAs, each of which Authentication DET Endorsement has a 10 year validity period. This means that, on average, 1,000 RAAs per year need to rekey their Authentication DET Endorsement, or on average, 3 per day. Current witnessed key signing processes will not scale to this volume. Some virtual method (like in Section 3.2) is needed.¶
There is always a risk of key compromise that could be a major setback to the operation of a PKI and likewise the DRIP DKI. To mitigate this risk, the Authentication DETs MUST only be used in offline signing operations. They MUST NEVER be used on connected systems. The information needed to create the Endorsements and X.509 certificates are brought to them on media that cannot transfer code, for example in a QR code. The objects that are created are then transferred away from the offline system to be used where needed.¶
It should be noted that this offline process MUST be followed down the DKI/PKI tree. That is, the Apex has offline operations that include signing the RAA Authentication DET that will be used in the RAA's set up.¶
The following are test DETs and Endorsements for the test DKI. This testing environment is open to all. There are 4 RAAs available for others to build out. HDAs under the 4 preset RAAs, or under any of the 4, built out be others, are available. Finally the test HDAs are available for setting up a handful of entities. Any tester wanting more than a few DETs for entities should plan on doing that under their own HDA.¶
The following are the test values and objects. They were generated using the det-gen.py and endorse.py scripts available at [drip_scripts].¶
The following the test DRIP X.509 certificates that mirror the test Endorsements.¶
The following openssl-conf file was used to create the above certificates. It is dependent on a number of environment variables to make each unique certificate. The conf file is a bit of a hack of multiple conf files and some sections are really not used. It is included here as a guide.¶
Many people assisted in creating the python scripts for making DETs and DRIP Endorsements. Any roughness in the scripts is all my doing.¶
The openssl-user mailing list provided needed help in getting openssl command line to do what was needed to build the test PKI.¶