<?xml version="1.0" encoding="us-ascii"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
  <!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->

  <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY RFC2560 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2560.xml">
  <!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="info" docName="draft-hallambaker-ocspagility-01" ipr="full3978">

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="OCSP Algorithm Agility">OCSP Algorithm Agility</title>
    <author fullname="Phillip Hallam-Baker" initials="P. M."
            surname="Hallam-Baker">
      <organization>VeriSign Inc</organization>
      <address>
        <email>pbaker@verisign.com</email>
      </address>
    </author>

    <date day="2" month="July" year="2008" />

    <area>General</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <keyword>OCSP</keyword>
    <keyword>Algorithm Agility</keyword>

    <abstract>
      <t>
        The behavior of an OCSP server is specified for cases in which the
        OCSP server is capable of supporting more than one signature algorithm.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <section title="Requirements Language">
        <t>
          The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
          "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
          document are to be interpreted as described in <xref
        target="RFC2119">RFC 2119</xref>.
        </t>
      </section>
    </section>
    <section title="OCSP Algorithm Agility Requirements">

      <t>
        OCSP <xref target="RFC2560">RFC 2560</xref> defines a protocol for obtaining certificate status information
        from an online service. A particular OCSP protocol may or may not be
        provided by the CA that issued the certificate whose status is being
        queried and may or may provide a realtime indication of the
        certificate status or a time delayed status indication.
      </t>

      <t>
        <xref target="RFC2560">RFC 2560</xref> requires the implementation but
        not the use of a set of mandatory cryptographic algorithms.
        The OCSP protocol provides a means for an OCSP responder to indicate
        the signature and digest algorithms used in a response but not how that algorithm is
        to be chosen or how the client might influence the choice of signature
        algorithm.
      </t>

      <t>
        In practice this approach has proved insufficient to ensure
        interoperability of implementations, in particular when a transition
        from the use of one cryptographic algorithm to another is in progress.
        The mandatory cryptographic algorithms are the only ones that a responder
        can expect a client to implement according to the specification but
        this is a clearly unacceptable choice if a different signing
        algorithm has been chosen for the certificate whose status is being
        querried precisely because the mandatory algorithm is not
        acceptably secure.
      </t>
      <t>
        Although security concerns may lead to the use of a different signing
        algorithm in a certificate there is little security advantage to be
        used from using a stronger signing algorithm in an OCSP response than
        in the certificate whose status is being reported. A possible exception
        being in the case where a certificate issuer determines that a
        certificate signing algorithm has become regarded as unacceptably
        secure during the period of validity for a certificate and thus requires
        a means of revoking the certificates that does not depend on the compromised
        algorithm.
      </t>
      <t>
        While use of a non-mandated signing algorithm is often motivated by
        security concerns, this is not always the case: performance, key and
        signature value sizes are also possible motivations.
      </t>
      <t>
        In most cases an OCSP reponder may assume that the client is capable
        of verifying any signature algorithm that is used in either the
        certificate whose status is being verified or the certificate of
        the OCSP responder.
      </t>

      <t>
        There are however circumstances in which it may be desirable to use a
        different form of signature or demonstration of authenticity for the
        OCSP response. In a wireless application, the use of a signature
        algorithm that provides a compact signature value such as DSA or
        ECC might be desirable.
      </t>

      <t>
        The introduction of delegated certificate path discovery and validation
        (e.g. XKMS, SCVP) gives rise to further exceptions. A
        certificate path discovery service may be required to establish a certificate
        path for a public key algorithm that the discovery service itself does not
        support. In many embedded applications a relying party application may use
        an OCSP service to verify the current status of a certificate that has
        previously (but not necessarily contemporaneously) been subject to
        path validation by another component in the system.
      </t>



    </section>

    <section title="Client Indication of Preferred Signature Algorithms">

      <t>
        A client MAY declare a preferred set of algorithms algorithms in
        a request using the preferred signature algorithm extension.
      </t>
      <t>
        <![CDATA[
     
id-pkix-ocsp-preferred-signature-algorithms OBJECT IDENTIFIER ::= { id-pkix-ocsp x }

PreferredSignatureAlgorithms   ::=     SEQUENCE {
      Algorithms      SEQUENCE OF AlgorithmIdentifier
      }
]]>
      </t>
      <t>
        If a set of preferred signature algorithms is declared the client
        MUST support each of the specified algorithms.
      </t>

      <t>
        If a set of preferred algorithms is declared the OCSP responder
        SHOULD use one of the specified signing algorithms.
      </t>

    </section>


    <section title="Responder Signature Algorithm Selection">

      <t>
        <xref target="RFC2560">RFC 2560</xref> does not specify a mechanism
        for deciding the signature algorithm to be used in an OCSP response.
        As previously noted this does not provide a sufficient degree of
        certainty as to the algorithm selected to guarantee interoperation.
      </t>
      <t>
        A responder MAY maximize the potential for ensuring interoperability
        by selecting the OCSP signature algorithm using the following order
        of precedence where the first method has the highest precedence:
      </t>
      <t>
        <list style='numbers'>
          <t>
            Using an algorithm specified as a preferred signing algorithm in
            the client request.
          </t>
          <t>
            Using the signing algorithm used to sign the CertID specified
            in the query.
          </t>
          <t>
            Using the signing algorithm used to sign a CRL issued by the
            certificate issuer providing status information for the
            certificate specified by CertID.
          </t>
          <t>
            Using a signature algorithm that has been advertised as being
            the default signature algorithm for the signing service using
            an out of band mechanism
          </t>
          <t>
            Using a mandatory signing algorithm specified for the version
            of the OCSP protocol in use.
          </t>
        </list>
      </t>
      <t>
        A responder SHOULD always apply the lowest numbered selection
        mechanism that is known, supported and meets the responder's criteria
        for cryptographic algorithm strength.
      </t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
        The author acknowleges the helpful comments made on earlier 
        drafts of this work by Santosh Chokhani and Stefan Santesson
      </t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>
        The mechanism used to choose the response signing algorithm MUST
        be considered to be sufficiently secure against cryptanalytic attack
        for the intended application.
      </t>
      <t>
        In most applications it is sufficient for the signing algorithm to
        be at least as secure as the signing algorithm used to sign the
        original certificate whose status is being queried. This criteria
        may not hold in long term archival applications however in which the
        status of a certificate is being queried for a date in the distant
        past, long after the signing algorithm has ceased being considered
        trustworthy.
      </t>
      <section title="Use of insecure algorithms">
        <t>
          The security of the signing algorithm used by the responder MUST
          take precedence over all other considerations. A responder MUST
          NOT  generate a signature for a signing mechanism that is considered
          unacceptably insecure regardless of the other circumstances.
        </t>
        <t>
          In archival applications it is quite possible that an OCSP responder
          might be asked to report the validity of a certificate on a date
          in the distant past. Such a certificate might employ a signing
          method that is no longer considered acceptably secure. In such
          circumstances the responder MUST NOT generate a signature for
          a signing mechanism that is considered unacceptably insecure.
        </t>
        <t>
          A client MUST accept any signing algorithm in a response that
          it specified as a preferred signing algorithm in the request.
          It follows therefore that a client MUST NOT specify as a preferred
          signing algorithm any signing algorithm that is either not
          supported or not considered acceptably secure.
        </t>
      </section>
      <section title="Man in the Middle Downgrade Attack">
        <t>
          The mechanism to support client indication of preferred signature
          algorithms is not protected against a man in the middle downgrade
          attack. This constraint is not considered to be a significant security
          concern as the client MUST NOT accept any signing algorithm that
          does not meet
          its own criteria for acceptable cryptographic security no matter
          what mechanism is used to determine the signing algorithm of
          the response.
        </t>
      </section>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <references title="Normative References">
      &RFC2119;
      &RFC2560;
    </references>
  </back>
</rfc>

