<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?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" docName="draft-moskowitz-hip-hhit-registries-02" 
	category="std" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" 
	xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.37.1 -->
<front>
	<title abbrev="HHIT Registries">Hierarchical HIT Registries</title>
	<seriesInfo name="Internet-Draft" value="draft-moskowitz-hip-hhit-registries-02"/>
	<author fullname="Robert Moskowitz" initials="R" surname="Moskowitz">
	<organization>HTT Consulting</organization>
	<address>
	  <postal>
		<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</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>
	<author fullname="Adam Wiethuechter" initials="A." surname="Wiethuechter">
	<organization>AX Enterprize</organization>
	<address>
	  <postal>
		<street>4947 Commercial Drive</street>
		<city>Yorkville</city>
		<region>NY</region>
		<code>13495</code>
		<country>USA</country>
	  </postal>
	  <email>adam.wiethuechter@axenterprize.com</email>
	</address>
	</author>
    <date year="2020"/>
    <area>Internet</area>
    <workgroup>HIP</workgroup>
    <keyword>RFC</keyword>
    <keyword>Request for Comments</keyword>
    <keyword>I-D</keyword>
    <keyword>Internet-Draft</keyword>
    <keyword>HIP</keyword>
<abstract>
<t>
	This document describes using the registration protocol and 
	registries to support hierarchical HITs (HHITs).  New and existing 
	HIP parameters are used to communicate Registry Policies and data 
	about the HHIT device and the Registries.  Further Registries are 
	expected to provide RVS services for registered HHIT devices.
</t>
</abstract>
</front>
<middle>
<section numbered="true" toc="default"> <name>Introduction</name>
<t>
	This document expands on <xref 
	target="I-D.moskowitz-hip-hierarchical-hit" 
	format="default">Hierarchical HITs</xref>, defining HIP 
	registration protocol enhancements, the Registry services to 
	support hierarchical HITs (HHITs), and given a HHIT, how to get 
	additional information about the device.
</t>
<t>
	Registries will tend to be organized regionally and by nature of 
	their clients.  For example, an RAA may be US centric and only have 
	HDAs that are US-based.
</t>
<t>
	Registries will need to work in a federation.  Devices that are 
	clients of one HDA/RAA will be needing information and connectivity 
	to devices that are clients of other HDA/RAA.  The policies for 
	establishing such federations are outside the scope of this 
	document.
</t>
<t>
	Access to information at a Registry about a device may require 
	authorization.  The nature and process of such an authorization is 
	outside the scope of this document.
</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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all 
		capitals, as shown here.
</t>
</section>
<section numbered="true" toc="default"> <name>Definitions</name>
<dl newline="false" spacing="normal">
	<dt>CSR (Certificate Signing Request):</dt>
	<dd>
		Request to a Certificate Authority to create an X.509 
		certificate with the provided information.
	</dd>
	<dt>HDA (Hierarchical HIT Domain Authority):</dt>
	<dd>
		The 14 bit field identifying the HIT Domain Authority under a 
		RAA.
	</dd>
	<dt>HID (Hierarchy ID):</dt>
	<dd>
		The 32 bit field providing the HIT Hierarchy ID.
	</dd>
	<dt>RAA (Registered Assigning Authority):</dt>
	<dd>
		The 18 bit field identifying the Hierarchical HIT Assigning 
		Authority.
	</dd>
	<dt>RVS (Rendezvous Server):</dt>
	<dd>
		The HIP Rendezvous Server for enabling mobility, as defined in 
		<xref target="RFC8004" format="default"/>.
	</dd>
</dl>
</section>
</section>
<section anchor="prob-space" numbered="true" toc="default"> <name>Problem Space</name>
<section numbered="true" toc="default"> <name>Desire for administrative control of HHITs</name>
<t>
	For HHITs to be effectively used, the HHIT Domain Authorities 
	(HDAs) need to provide information on the HHIT devices.  Minimally 
	this would be the corresponding HI, information on the device owner 
	(only to authorized requesters), and where in the network the 
	device has last reported from.
</t>
<t>
	The HHIT space creates a type of a business labeling for the HDAs.  
	"These are my customers."
</t>
</section>
<section numbered="true" toc="default"> <name>Desire for administrative control by RVS providers</name>
<t>
	An <xref target="RFC8004" format="default">RVS</xref> provider may 
	only be willing to provide discovery (RVS) services to HIP devices 
	it knows and trusts.  A flat HIT space does not provide any 
	intrinsic functionality to support this.  A HHIT space can be 
	mapped to the RVS provider.  DNS can effectively be used to provide 
	the HHIT to IP mapping without <xref target="RFC6537" 
	format="default">Distributed Hash Table (DHT)</xref>.
</t>
</section>
<section numbered="true" toc="default"> <name>Defense against fraudulent HITs</name>
<t>
	How can a host protect against a fraudulent HIT?  That is, a second 
	pre-image attack on the HI hash that produces the HIT.  A strong 
	defense would require every HIT/HI registered and openly 
	verifiable.  With HHITs, the HDAs can provide the HI and proof of 
	registration (e.g. X.509 certificate including HHIT).
</t>
<t>
	This would best be done as either part of the R1 and I2 validation, 
	or anytime a HHIT is presented.
</t>
</section>
</section>
<section numbered="true" toc="default"> <name>HHIT Registry services to support hierarchical HITs</name>
<t>
	Hierarchical HIT registration SHOULD be performed using the HIP 
	Registration Extension <xref target="RFC8003" format="default"> 
	</xref>.  The client either uses an X.509 certificate <xref 
	target="RFC8002" format="default"> </xref>, or use a PSK, as 
	defined in Appendix A of HIP-DEX <xref target="I-D.ietf-hip-dex" 
	format="default"> </xref>, to validate the registration.
</t>
<t>
	The Registration should include additional client information. This 
	information may be contained within the X.509 certificate (CERT 
	parameter) and/or is carried in the CLIENT_INFO parameter, see 
	<xref target="CLIENT_INFO" format="default"/>. The Registrar can 
	include its requirements in the R1 packet, and the client provide 
	its information in the I2 packet. This parameter may be encrypted 
	within the ENCRYPTED parameter.  If the CLIENT_INFO contains 
	Personal Identifying Information (PII), then it MUST be placed into 
	the ENCRYPTED parameter.
</t>
<t>
	The content and internal format of the CLIENT_INFO parameter is set 
	by the HDA"s policy and is outside the scope of this document.  
	Examples of client information can by phone number, IMEI, and 
	ICCID.  
</t>
<section numbered="true" toc="default"> <name>Hierarchical HIT Registration using X.509 Certificates</name>
<t>
	This requires the HIP client to possess a client certificate 
	trusted by the HDA/Registrar.  Registration will either succeed or 
	fail.
</t>
<t>
	Certificate registration can be a "chicken and egg" problem: where 
	did the device get its certificate?  Thus this is more likely used 
	in a re-registration situation with updated information.
</t>
</section>
<section numbered="true" toc="default"> <name>Hierarchical HIT Registration using a PSK</name>
<t>
	This requires the HIP client and the HDA/Registrar to share a PSK. 
	The PSK is carried in the ENCRYPTED_KEY parameter <xref 
	target="I-D.ietf-hip-dex" format="default"> </xref>. The PSK may 
	already exist prior to starting the registration and just be used 
	within the registration.  A PSK out-of-band exchange may be 
	triggered by performing the registration without any 
	authentication.
</t>
<t>
	If no client authentication is included in the I2 packet, the 
	registration fails with "No Authentication provided".  If the I2 
	packet included the proper HDA required client information, the HDA 
	can use it to set up a side channel for an out-of-band delivery of 
	a PSK.  And example of this would be to send an SMS message with 
	the PSK.  Once the client possesses the PSK, it can rerun the 
	registration at which point the HI and HIT duplicate checks are 
	performed.
</t>
<t>
	The I2 packet may contain a CERT parameter containing a CSR, and 
	the R2 would return the X.509 certificate for later use.
</t>
</section>
<section anchor="hippars" numbered="true" toc="default"> <name>HIP Parameters</name>
<t>
	The HIP parameters carry information that is necessary for 
	establishing and maintaining a HIP association.  For example, the 
	device's public keys as well as the signaling for negotiating 
	ciphers and payload handling are encapsulated in HIP parameters.  
	Additional information, meaningful for end hosts or middleboxes, 
	may also be included in HIP parameters.  The specification of the 
	HIP parameters and their mapping to HIP packets and packet types is 
	flexible to allow HIP extensions to define new parameters and new 
	protocol behavior.
</t>
<section anchor="Cert" numbered="true" toc="default"> <name>CERT Parameter</name>
<t>
	The CERT parameter, <xref target="RFC8002" format="default"> </xref>, is a container 
	for certain types of digital certificates.
</t>
<t>
	A new CERT Type, CSR, is defined here.  When CERT Type is CSR, CERT 
	ID is Zero.  There is only ONE CSR in a CERT Parameter.
</t>
<artwork align="left" name="" type="" alt="">
<![CDATA[
 CERT format      Type number       RFC
-------------     -----------      ----
PKCS#10 - CSR          9           2986
]]>
</artwork>
</section>
<section anchor="RegType" numbered="true" toc="default"> <name>Hierarchical HIT Registration Type</name>
<t>
	The Registration Type used in the REG_REQUEST is:
</t>
<artwork align="left" name="" type="" alt="">
<![CDATA[
Number   Registration Type
------   -----------------
2        HHIT Registration 
]]>
</artwork>
</section>
<section anchor="RegFail" numbered="true" toc="default"> <name>Hierarchical HIT Registration Failure Type</name>
<t>
	The Registration may fail.  In fact, with PSK, this may be the 
	response to expect an SMS message with the PSK to use in a second 
	registration request. Failure Types used in the REG_FAIL are:
</t>
<artwork align="left" name="" type="" alt="">
<![CDATA[
Failure Type      Reason
------------      -----------------------
[TBD-IANA]        Hierarchical HIT Already Registered
[TBD-IANA]        HI Already Registered
[TBD-IANA]        Previously Registered HI with different 
                      device information
[TBD-IANA]        No Authentication provided
[TBD-IANA]        Invalid Authentication
[TBD-IANA]        Invalid Authentication, new PSK sent via SMS
]]>
</artwork>
</section>
<section anchor="CLIENT_INFO" numbered="true" toc="default"> <name>CLIENT_INFO</name>
<artwork name="" type="" align="left" alt="">
<![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |             Type              |             Length            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  /                      Client Information                       /
  /                                                               /
  /                               +-------------------------------+
  /                               |            Padding            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Type           [TBD-IANA]
  Length         length in octets, excluding Type, Length, and
                 Padding
  Client         The information required by the HDA in the format
  Information    required by the HDA.
]]>
</artwork>
<t>
	This parameter contains client information to include in the HIT 
	registration.  The specific content and format is set by the HDA.
</t>
</section>
</section>
<section numbered="true" toc="default"> <name>Registration failure behavior</name>
<t>
	If the failure type is "Hierarchical HIT Already 
	Registered", the client's HI is hashing to an existing HIT and must 
	generate a new HI and hierarchical HIT and re-register.  If the 
	failure is "HI Already Registered", the client should assume it is 
	registered.  If the failure is "Previously Registered HI with 
	different device information", either the client managed to 
	generate a duplicate HI, possibly indicating a weak key generation 
	algorithm, or the client was previously registered on a different 
	device.  Resolving this conflict will be left to the HDA's policy.
</t>
<section numbered="true" toc="default"> <name>Example of a simple HDA policy</name>
<t>
	A simple HDA policy would be to require the device to generate a 
	new HI and thus HHIT and try registration again.  The HDA policy 
	may also provide a URL for "Previous Registration Resolution".  
	This contact is primarily to assist a device that was registered, 
	but had some local failure resulting in a new registration attempt.
</t>
</section>
</section>
<section numbered="true" toc="default"> <name>Example of a simple HDA policy</name>
<t>
	A simple HDA policy would be to require the device to generate a 
	new HI and thus HHIT and try registration again.  The HDA policy 
	may also provide a URL for "Previous Registration Resolution".  
	This contact is primarily to assist a device that was registered, 
	but had some local failure resulting in a new registration attempt.
</t>
</section>
<section anchor="HHITDNS" numbered="true" toc="default"> <name>HHIT DNS Retrieval Service</name>
<t>
	A Registry SHOULD provide DNS retrieval services for the HIP RR 
	<xref target="RFC8005" format="default"/> for HHITs as described in 
	<xref target="I-D.moskowitz-hip-hierarchical-hit" 
	format="default">Hierarchical HITs</xref>.
</t>
<t>
	This requires a Registry to act as a DNS zone Name Server to 
	provide minimally the HI for the HHIT in the DNS query.  Registry 
	policy will determine if the response can be cached within DNS.  If 
	the Registry also provides the HHIT and/or the RVS for the HHIT, 
	this may result in a different DNS caching policy by the Registry.
</t>
</section>
</section>
<section numbered="true" toc="default"> <name>Using hierarchical HITs</name>
<t>
	All HIP clients with hierarchical HITs maintain an RVS connection 
	with their HDA's RVS server(s).  How the HDA scales this service up 
	to a potential population in the millions is out of scope of this 
	document.  Lifetime management of these connections is also out of 
	scope.
</t>
<t>
	One approach an HDA can use to address the scaling challenge is to 
	add an internal level of hierarchy to assign a set number of 
	devices per RVS server.
</t>
<t>
	Peering agreements between HDAs would allow for geographically 
	close RVS to a device.  This may reduce the latency for use of a 
	device's current RVS.  This is a subject of another document.
</t>
<section numbered="true" toc="default"> <name>Contacting a HIP client</name>
<t>
	A service Initiator uses some service to discover the HIT of the 
	service Responder.  The Initiator uses the hierarchical information 
	in the HIT to find the Responder's RVS.  A trusted RVS discover 
	method could use the DNS PTR to RVS as shown in <xref 
	target="I-D.moskowitz-hip-hierarchical-hit" 
	format="default">Hierarchical HITs</xref>.  An I1 is sent to that 
	RVS which forwards it to the Responder.
</t>
<t>
	The potential Responder uses the HIT in the I1 to query the 
	Initiator's RVS about the Initiator.  The nature of information, 
	and method of communication are determined by the Initiator's HDA 
	and the Responder's (and or HDA"s) relationship with it.  Based on 
	the Responder's local policy, this information will be used to 
	determine if the contact is to be accepted.  If accepted, the 
	Responder may proceed sending an R1 to the Initiator.  It may 
	alternatively initiate some non-HIP process.
</t>
<t>
	It should be noted that this R1 may contain a REG_INFO list for the 
	Initiator to validate that the Responder does offer the desired 
	service.
</t>
</section>
<section numbered="true" toc="default"> <name>Defense against fraudulent HITs</name>
<t>
	Both the Initiator and Responder MAY validate a peer host as a 
	defense against a second pre-image attack on the HHIT.  This may 
	occur via a <xref target="RFC8002" format="default">CERT</xref> in 
	R1 or I2. It may be through a back end process associated with the 
	R1 or I2 validation to look up the HHIT and retrieve the registered 
	HI.
</t>
</section>
</section>
<section anchor="IANA" numbered="true" toc="default"> <name>IANA Considerations</name>
<t>
	IANA will need to make the following changes to the "Host Identity 
	Protocol (HIP) Parameters" registries:
</t>
<dl newline="false" spacing="normal">
	<dt>CERT Type:</dt>
	<dd>
		This document defines the new CERT Type for the CERT parameter 
		"PKCS#10 - CSR" (see <xref target="Cert" format="default"/>).
	</dd>
	<dt>Reg Type:</dt>
	<dd>
		This document defines the new Registration Type for the 
		REG_REQUEST parameter "HIT Registration" (see <xref 
		target="RegType" format="default"/>).
	</dd>
	<dt>Reg Fail:</dt>
	<dd>
		This document defines the new Failure Types for the REG_FAIL 
		parameter  (see <xref target="RegFail" format="default"/>).
	</dd>
	<dt>CLIENT_INFO:</dt>
	<dd>
		This document defines the new CLIENT_INFO parameter (see <xref 
		target="CLIENT_INFO" format="default"/>).  The parameter value 
		will be assigned by IANA.
	</dd>
</dl>
</section>
<section numbered="true" toc="default"> <name>RAA Management Organization Considerations</name>
<t>
	Introducing the RAA management organization may be the largest 
	hurdle for hierarchical HITs.  Thus it would be best if this were 
	adopted by an organization already in the business of allocating 
	numbers within either the Internet or the Mobile, cellular, 
	infrastructure.
</t>
<t>
	One consideration would be to reserve the first N RAA values to map 
	to the existing DNS TLDs.  For example, these TLDs can be organized 
	in an ascending order and numbered accordingly.  Thus the 2 
	character TLDs will be a lower number than the 3 character TLDs.  
	After that, it could be a first come, first numbered assignment 
	process.
</t>
</section>
<section numbered="true" toc="default"> <name>Security Considerations</name>
<t>
	There are potential risks with the hierarchical HIT, the Registry 
	service, and the discovery of potential peer hosts using its 
	hierarchical HIT.
</t>
<t>
	A 64 bit hash space presents a real risk of second pre-image 
	attacks.  The HHIT Registry services effectively block attempts to 
	"take over" a HHIT.  It does not stop a rogue attempting to 
	impersonate a known HHIT.  This attack can be mitigated by the 
	Responder using DNS to find the HI for the HHIT or the RVS for the 
	HHIT that then provides the registered HI.
</t>
<t>
	The two risks with hierarchical HITs are the use of an invalid HID 
	and forced HIT collisions.  The use of the "hhit.arpa." DNS zone is 
	a strong protection against invalid HIDs.  Querying an HDA's RVS 
	for a HIT under the HDA protects against talking to unregistered 
	clients.  The Registry service has direct protection against forced 
	or accidental HIT hash collisions.
</t>
<t>
	By using the HIP Registration Extension, the Registry service is 
	protected from direct attacks.  This service does rely on either 
	the integrity of a PKI service or an out-of-band PSK delivery 
	process.  Thus the risk to the Registry service is highly related 
	to the trust in these authentication setup services.  Further, the 
	duplicate HI resolution process may require human interaction with
	related social engineering risks.
</t>
<t>
	Finally the peer host discovery process relies on trusting the 
	finding the proper HDA for the host and its forwarding the I1 to 
	the proper Responder.  A rogue RVS, impersonating the RVS for the 
	HIT, could redirect the I1 to a client that has forced a collision 
	with the HIT and the Initiator would be none the wiser.  The only 
	defense against this is if the Initiator has some other source for 
	the Responder HI and validate the HI in the R1.
</t>
<section numbered="true" toc="default"> <name>Privacy Concerns</name>
<t>
	<xref target="I-D.moskowitz-mobile-privacy-attack" 
	format="default">Mobile-privacy-attack</xref> details how Eve can 
	follow a communication between two mobile peers using the session 
	Identifiers and deep knowledge about those Identifiers gained by 
	hacking servers that log PII related to the Identifiers.
</t>
<t>
	Hierarchical HITs not only does not mitigate this attack, it can 
	actually aggravate it by supplying the HDA where the HHIT is 
	registered.
</t>
<t>
	A HIP Privacy Enhanced Base Exchange, to be defined in a separate 
	draft, along with a Privacy Enhanced ESP tunnel, can be used to 
	hide all the HIP and ESP Identifiers from Eve.
</t>
</section>
</section>
<section numbered="true" toc="default"> <name>Acknowledgments</name>
<t>
	Sue Hares of Huawei contributed to the clarity in this document.
</t>
</section>
</middle>
<back>
<references> <name>References</name>
<references> <name>Normative References</name>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
</references>
<references> <name>Informative References</name>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6537.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8002.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8003.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8004.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8005.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-hip-dex.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.moskowitz-hip-hierarchical-hit.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.moskowitz-mobile-privacy-attack.xml"/>
</references>
</references>
<section anchor="Coll_Prob" numbered="true" toc="default"> <name>Calculating Collision Probabilities</name>
<t>
	The accepted formula for calculating the probability of a collision 
	is:
</t>
<artwork name="" type="" align="left" alt="">
<![CDATA[

    p = 1 - e^{-k^2/(2n)}


    P   Collision Probability
    n   Total possible population
    k   Actual population

]]>
</artwork>
</section>
</back>
</rfc>
