<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc linkmailto="no" ?>
<?rfc rfcedstyle="yes"?>
<?rfc-ext allow-markup-in-artwork="yes" ?>
<?rfc-ext include-references-in-index="yes" ?>

<!DOCTYPE rfc []>

<!-- Notes for Paul and Tony

Have a section that is just examples of what is new in v3 (such as new table features)
	Want to add examples of <blockquote>
		Example of a cite for a reference that is already in the spec.
	In the v3-only examples, use "ascii" attributes liberally

-->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="std"
  docName="draft-wang-lamps-root-ca-cert-rekeying-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">
<!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
       * obsoletes can be an RFC number as NNNN 
-->

<front>
<title abbrev="Root CA Cert Rekeying"> Root CA Certificate Rekeying in the Scenario of Post Quantum Migration </title>
<!--  [REPLACE/DELETE] abbrev. The abbreviated title is required if the full title is longer than 39 characters -->

<seriesInfo name="Internet-Draft" value="draft-wang-lamps-root-ca-cert-rekeying-00"/>
   
    <author fullname="Guilin Wang" initials="G." role="editor" surname="Wang"  >
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
    <!-- Can have more than one author -->
      
    <!-- all of the following elements are optional -->
      <organization>Huawei Int. Pte Ltd</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
		  <street>9 North Buona Vista Drive, #13-01</street>
		  <street> The Metropolis Tower 1</street>
          <city>Singapore</city>
          <code>138588</code>
          <country>Singapore</country>
          <!-- Uses two letter country code -->
        </postal>        
        <email>wang.guilin@huawei.com</email>  
      </address>
    </author>

	<author fullname="Yanjiang Yang" initials="Y."
           surname="Yang">
		   
     <organization> Huawei Int. Pte Ltd </organization>

     <address>
    
       <email>yang.yanjiang@huawei.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>
	
	<author fullname="Jie Zhang" initials="J."
           surname="Zhang">
		   
     <organization>Huawei Tech. Ltd</organization>

     <address>

       <email> zhangjie184@huawei.com </email>

       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>
   
<date/>
<!-- On draft subbmission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->
	
<area>General</area>
    <workgroup> Limited Additional Mechanisms for PKIX and SMIME </workgroup>
	<!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->

    <keyword> Root CA, Certificates, Rekeying, Link Certificated</keyword>
    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

<abstract>
      <t> In the public key infrastructures (PKIs), root certifcation authority (CA) certificate rekeying is crucial to guarantee business continuity. Two approaches are given in <xref target="RFC4210"></xref> for entities which are belonging to different generations to verify each other's certificate chain. However, these two approaches rely on the assumption that the old entities can be updated. In this draft, we propose a one-way link certificate based solution such that old entities are transparent to root CA certificate rekeying. Namely, during the overlapping lifetime of two root CA certificates, without any update in old entities, old and new entities can verify each other's certificate chain smoothly. Furthermore, the proposed solution works in both traditional PKIs, and post-quantum (PQ) PKIs, where the cerficate can be pure PQ ones or hybrid ones. 
	  </t>

    </abstract>

<note title="Editorial Note (To be removed by RFC Editor)">
<t>
Discussion of this draft takes place on the rfc-interest
mailing list (rfc-interest@rfc-editor.org), which has its home page at
<eref target="https://www.rfc-editor.org/mailman/listinfo/rfc-interest"/>.
</t>
</note>

</front>

<middle>

<section title="Introduction">

<t> In the public key infrastructures (PKIs), root certification authority (CA) certificate management is crucial to guarantee business continuity, as the CA certificate is the trust anchor for certificate chains, which establish the trust paths in PKIs from end users to the trusted authority, i.e., the root CA. </t> 

<t> However, just like the certificates for end users, the root CA certificate has a limited time of liftime as well, which normally varies from a few years to several decades to satsify various applications. Further more, while new end user certificates can be issued when old ones are nealy expiring, but a new root CA certificate should be issued normally when the old root CA certificate has been just used for half of its lifetime. Here are the main reasonos behind this pratice. </t>

<t> A root CA ceritifate is generally used to issue one or more suborniate CA (sub-CA) certificates (for different departments in a given organization, for exmpale), and then each of scuh sub-CA certificate is used to issue lower level sub-CA certificates or end user certificates. The lifetime of ened user ceritificates are expected to be around a given period, say 5 years (for some specific products, for example). Accoridg to <xref target="RFC4210"></xref>, to issue end user certificates with validity of 5 years, the remaining lifetime of the sub-CA certificate must be 5 years or more, such that the lifetime of each end user certificate MUST be covered by that of the sub-CA certificate. However, to avoid frequenly apply and mannage multiple or even many sub_CA certificates, the liftetime of each sub-CA certicate could be set as 10 years, which means for each 5 years sub-CA sub_CA certificates should be updated so that end ceritificates for new users or products can still be continously issued to guarratte business continuity. Similarly, for continously issuing sub_CA certificates with validity of 10 years without frequently changing the root CA certificate, it can be expected that each root CA certificate may has lifetime of 20 years, which also implies that each root CA certificate should be updated for each 10 years, not nearly the expiry date of the root CA certificate. Each such new root CA certificate can be called a new generation of root CA certificate, though all of them still belong to the same legal entity, a particular CA. </t>

<t> However, this also implies that different sub-CA certificates and end user certificates issued under different generations of root CA certificate co-exit during the overlapping period of those root CA certificastes. So, it may be not easy to verify each other's certificate chain between entities that hold different generations of certificates issued by the same CA in the aspect of legal meaning but under different generations of root CA certificates. </t>

<t> Say, for the above example, the sub-CA certifiates and end user certifiates issued under the first genarteation of root CA certificate may still be valid in the year of 12 when a given CA has been established, but the newly issued sub-CA certifiates and end user certifiates are actually under the second genarteation of root CA certificate. For simpliciy, we call the owner of a sub-CA certifiate or such an end user as an entity or a device. Moreover, a device or entity hold certificate chain issued by an old generation of root CA certificate are called as old device or old entity, while a device or entity hold certificate chain issued by a new generation of root CA certificate are called as new device or new entity. These terms are in a relative way. </t>

<t> Actually, to address the above issue, there are two solutions given in <xref target="RFC4210"></xref>: </t>

<ul spacing="normal">
        <li> Old and new entities upload both old and new root CA certificates,  </li>
        <li>Or upload two-way link certificates which introduce old CA to new CA and vice versa.</li>
        </ul>
        
        <t> However, these two solutions do not work if old entities cannot upload the new root certificates or the necessary link certificate, or old devices are even out of maintenance. In fact, such worse cases are possible, due to either limited prediction fo product design such that old devices may do not support adding multiple root CA or link certificates (automatically), or still running old devices are not maintained well and automatically update is not supported. </t>
		
		<t> Back a little bit, basically, there are actullay two approaches to update root CA certifiate, i.e., renewing and rekeying. The former means to extend the validity of an existing root CA certificate but the root CA key pair and the associated cryptographical algorithm is still the same. In this case, the validity of the same (old) key pair of the root CA will be extended for a longer period. So, attackers shall have longer time to cryptanalyze the same key pairs. Also, as time goes, the secuirty strenth of the associated cryptographical algorithm for the root CA certificate may become weaker and weaker. So, soon or later, it still needs to issue a brand new CA certificate. </t>
		
		<t> For the latter, namely rekeying approach, a brand new root CA certificate will be issued to replace the old key pair. In this case,no just a new pair of keys, even different key length or new algorithm can be used for generating the new root CA certificate by considering the progress of cryptoanlysis and potentil security threads in the near future, like quantum computing. However, in this situation, a big challenge is to manage two or even multiple root CA certificates during the overlapping periods, which could be 20 years or more, as mentioned in the above. In particular, some old devices may be not able to install the new root CA or link certificates, such that the two solutions given in <xref target="RFC4210"></xref> do not work. Therefore, old devices may not be able to verify the new certificate chain of a new device, though a new device can be intalled all necessary certifiates and verify the old certificate chains of old devices. </t>
		
		<t> </t>
		
		<t>  Motivated by the above observation, this draft proposes a one-way link certificate based solution such that root CA certificate rekeying is transparent to old entities: </t>
		
		<ul spacing="normal">
        <li> During the overlapping period of two or multiple root CA certificates, without any update in old entities, old and new entities can verify each other's certificate chain smoothly.  </li>
		
        <li> The proposed solution works in the scenario of traditional PKIs, pure post-quantum PKIs, and also hybrid PKIs <xref target="I-D.D24"></xref>, as the rationale of the solution does not rely on the type of undelying cryptographic algorithms. </li>
		
		<li> Esentially, the solution can be viewed as an extension of the approach for root CA certificate issuing and managnement specififed in <xref target="RFC4210"></xref> and <xref target="RFC5280"></xref>. </li>
        </ul>
	  
		
</section>

<section>
        <name>Requirements Language</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>
      <!-- [CHECK] The 'Requirements Language' section is optional -->
	  

 <section title="Design Goals of a New Solution for Root CA Rekeying" anchor="Design.Goals">
    
	<t> Basically speaking, to design the root CA rekeying solution based on one-way link certificate, the following principles are followed to maximize the potential employment of the solution in practice:
    </t>
	

	<ul spacing="normal">
        <li> Requirements on old devices are minimized such that the solution is applicable to as many as possible scenarios.</li>
        <li> New devices are supposed to do more as they are normally more powerful and designed with better prediction. </li>
        <li> When possbile, the usage of the new root CA keys will be maximized as normally they associated with cryptographically sronger algorithms .</li>
		<li> The existing standards <xref target="RFC4210"></xref> and <xref target="RFC5280"></xref> will be followed as much as possible, so that the deployment of the new solution for root CA rekeying can be implemented as easy as possile. </li>
      </ul>
	  
	  <t> In Section 6.1 of <xref target="RFC5280"></xref> : the following is sepecified: </t>
	 
	  <t> "A prospective certification path (a sequence of n  certificates) satisfies the following conditions: </t>
	  
	  <ul spacing="normal">
<li> (a) for all x in {1, ..., n-1}, the subject of certificate x is the issuer of certificate x+1;  </li>
<li> (b) certificate 1 is issued by the trust anchor; </li>
<li> (c) certificate n is the certificate to be validated (i.e., the target certificate); and </li>
<li> (d) for all x in {1, ..., n}, the certificate was valid at the time in question. " </li>
      </ul>
	  
	  <t> While Link certificates was introduced in Section 4.4.1 for specifying CA operator actions to rekeying root CA certificate
<xref target="RFC4210"></xref> as follows. </t>

<t> " To change the key of the CA, the CA operator does the following: </t>

 <ul spacing="normal">
<li> 1. Generate a new key pair;  </li>
<li> 2. Create a certificate containing the old CA public key signed with the new private key (the "old with new" certificate); </li>
<li> 3. Create a certificate containing the new CA public key signed with the old private key (the "new with old" certificate); </li>
<li> 4. Create a certificate containing the new CA public key signed with the new private key (the "new with new" certificate); </li>
<li> 5. Publish these new certificates via the repository and/or other means (perhaps using a CAKeyUpdAnn message); </li>
<li> 6. Export the new CA public key so that end entities may acquire it using the "out-of-band" mechanism (if required). </li>
      </ul>
	  
	  <t> The old CA private key is then no longer required. " </t>
	  
	  <t> However, as we mentioned in Section 1, the above solution specified in 
<xref target="RFC4210"></xref> assumes that (new and old) end entities may acquire the new CA public key (using the "out-of-band" mechanism, if needed), as the above item 6 despicts. </t>
	  
</section>
	
<section title="The Proposed Solution Based on One-way Link Certificate
 " anchor="Solution">

<t> Here are the basic idea of the proposed root CA key rekeying based on One-way Link Certificate:  </t>

<ul spacing="normal">
<li> Use the one-way link certificate, called newWithOld, which is the link certificate of the new public signed by the old private key of the root CA.  </li>
<li> The newWithOld certifies the new root CA key by the old one. </li>
<li> So, during the overlapping period, old devices can verify a link certificate chain from a new device by using the old root CA certificate as the trust anchor.  </li>
<li> Other cases are simple … </li>
      </ul>


<artwork><![CDATA[
      Old Device A                     New Device C
   *******************            ***************************
   *    oldCACet     *            * oldCACert     newCACert *  
   *       ^         *            *      ^           ^      *
   *  oldSubCACert   *            *  newWithOld      ^      *
   *       ^         *            *          ^       ^      *
   *    oldCertA     *            *         newSubCAcert    * 
   *******************            *              ^          *  
               ^                  *           newCertC      *
               | B sends its      ***************************   
               | link certificate     ^ B sends either of its two 
               | chain to A           | certificate chains to C
               |                      | 
             *****************************
             *  oldCACert     newCACert  *
   	     *         ^        ^        *
             *  newWithOld      ^        *
	     *         ^        ^        *
	     *        newSubCACert       *
	     *              ^            *
             *           newCertB        *
             *****************************
                  New Device B
     
                      
Figure 1. Illustraion to the Solution Based on One-way Link Certificate. 
]]></artwork> 

<t> Figure 1 shows how a new device B can send out its link certificate chain, (oldCACert, newWithOld, nweSubCACert, newCertB), to an old device A such that A can verify B's certificate chain by using the old root CA cerficate, which is A's trust anchor. To repsond B, A just sends its old certificate chain, (oldCACert, oldSubCACert, oldCertA), to new device B, which can verify A's certificate chain by using the old root CA cerificate, which is one of B's two trust anchors, namely, the old or new root CA certificate. </t>

<t> To communicate with another new device C, new device B can send out either its link certificate chain, (oldCACert, newWithOld, nweSubCACert, newCertB), or the new certificate chain, (newCAcert, newSubCACert, newCertB), to new device C, which can verify either of them by using one of its two trust anchors, namely, the old or new root CA certificate. In this case, as both B and C are new devices, C can do as B does such that B can verify either of C's two certificate chains similarly. </t>

<t> The case of one old device communicates with another old device is simple, as they just behaver as normaly by sending their own old certificate chain to the other. </t>

<t> More detailed description will be provided later. </t>
	</section>
	
	<section title="Testing Results" anchor="Testing">
	
	<t> The proposed solution has been tested using OpenSSL library.  </t>
	
	<ul spacing="normal">
<li> 3 generations of root CA cert.: G1 (2016-2025), G2 (2018-2027), and G3 (2020-2029).  </li>
<li> ross verifying tests among OpenSSL 1.0.1c, OpenSSL 1.0.2u、OpenSSL 1.1.1g and JDK 8u251. </li>
      </ul>
	  
	  <t> The testing results are given in the following table, which show positve answers for all the cases considered.  </t>
	
	 <artwork><![CDATA[
   +========+===============+=============+===============+
   |         | 2015         |    2016     |    2018      | 
   +------------------------------------------------------+
   | G1Sever | (TBD)        |   (TBD)     |    (TBD)      | 
   +------------------------------------------------------+
   | G2Sever | (TBD)        |   (TBD)     |    (TBD)      |
   +------------------------------------------------------+
   | G2Sever | (TBD)        |   (TBD)     |    (TBD)      | 
   +---------+--------------+-------------+---------------+
   
   Table 1: Testing Results (to be given)
   ]]></artwork> 
   
   </section>

<section title="Security Considerations" anchor="Security">

<t> Security analysis will be given later. </t>

 </section>


<section title="Acknowledgments" anchor="acknowledgements">

<t>
To be added later.
</t>
</section>

</middle>

<back>
  
<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"/>
		
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4210.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/>
		
        <!-- The recommended and simplest way to include a well known reference -->
 
</references>


<references>
        <name>Informative References</name>
		
		<reference anchor="I-D.D24"  target="https://datatracker.ietf.org/doc/draft-ietf-pquip-pqt-hybrid-terminology/">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="F. Driscoll" initials="F." surname="F. Driscoll"/>
            <date month="February" year="2024"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Work in Progress, " value="Internet-Draft, "/>
        </reference>
		
	   
      </references>
    
	

</back>

</rfc>
