The DRIP DET public Key InfrastructureHTT ConsultingOak ParkMI48237USArgm@labs.htt-consult.comAX Enterprize, LLC4947 Commercial DriveYorkvilleNY13495USAstu.card@axenterprize.com
Internet
INTAREARFCRequest for CommentsI-DInternet-DraftDRIPPKIX
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.
Introduction
A DRIP Entity Tag (DET, )
public Key Infrastructure (DKI) is a strict hierarchy, governed by
the administrator of the DET prefix 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:
Authorization DETs
Used to assert the authorization of a DKI level.
Issuing DETs
Used to assert operations within DKI level.
Operational DETs
Used by operational entities within DKI level
All DETs exist in DET-Endorsements ().
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.
Terms and DefinitionsRequirements Terminology
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 when, and only when, they appear in all
capitals, as shown here.
Definitions
This document uses the terms defined in and in . The
following new terms are used in the document:
Authorization DETs
DETs whose use is to define a hierarchy level and endorse
lower hierarchy level Authorization DETs and finally
Issuing DETs at this hierarchy level. They the DETs in the
Authentication Endorsements and X.509 certificates.
DKI
A DRIP Entity Tag (DET) public Key Infrastructure. Similar
to an X.509 PKI, but built on the DRIP Endorsements.
Issuing DETs
DETs whose use is to sign Endorsements and X.509
certificates for Operational DETs that are at the same
hierarchy level as the Issuing DET.
Operational DETs
DETs used by various entities in DRIP protocols and as
non-routable IPv6 addresses. A partial list of such
entities includes: GCS, Infrastructure (e.g. wireless tower
systems), Pilots-in-command, Servers, UA.
The DET public Key Infrastructure (DKI)The DKI LevelsThe Apex
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.
The RAAs
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.
Initial RAA assignments
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
().
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.
The HDAs
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 Offline Requirement for Authentication DETs
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.
DNS view of DKI
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. Other RR within these levels will
vary. There may be HIP, TLSA, 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.
The Offline cache of HDA Issuing Endorsements
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.
RAAs set aside for Testing
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 DKI's Shadow PKI
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
().
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).
DRIP X.509 certificate profile
The following is the profile for the DRIP X.509 certificates
Serial Number
The certificates will contain a 8-byte randomly generated Serial
Number, compliant with CABForum recommendations. Serial Numbers
are included for CRL functionality.
Subject
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 .
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:
Issuing - S
CRL signing - CRL
Subject Alternative Name
The Subject Alternative Name is NOT used in DET certificates with
the exception of Manufacturer DETs. These will contain the
hardwareModuleName as described in that
references .
Per and ,
Manufacturer DET certificates MUST have the notAfter date as
99991231235959Z.
Issuer
The Issuer MUST be the higher level's Subject.
The Issuer for the Apex Authentication certificate MUST be the
Subject (indicating self-signed).
Subject Key Identifier
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.
Authority 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
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.
IANA Considerations
TBD - may need a registry of Signing certificate types.
Security Considerations
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 ) is needed.
Protecting against DKI/PKI compromise
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.
ReferencesIANA IPv6 Special-Purpose Address RegistryIANAISO 3166 Country CodesISOPython scripts to generate DETs and EndorsementsTest DETs and Endorsements
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 .
Test DNS
The DNS tree(s) for the above test data is still in limbo and will
be added in a later version of this draft. But some of the RR for
these DETs are available below:
Test X.509 certificates
The following the test DRIP X.509 certificates that mirror the test Endorsements.
openSSL config file
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.
Acknowledgments
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.