<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wendt-stir-certificate-transparency-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="STI CT">STI Certificate Transparency</title>
    <seriesInfo name="Internet-Draft" value="draft-wendt-stir-certificate-transparency-04"/>
    <author fullname="Chris Wendt">
      <organization>Somos, Inc.</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>chris@appliedbits.com</email>
      </address>
    </author>
    <author fullname="Rob Sliwa">
      <organization>Somos, Inc.</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>robjsliwa@gmail.com</email>
      </address>
    </author>
    <author fullname="Alec Fenichel">
      <organization>TransNexus</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>alec.fenichel@transnexus.com</email>
      </address>
    </author>
    <author fullname="Vinit Anil Gaikwad">
      <organization>Twilio</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>vanilgaikwad@twilio.com</email>
      </address>
    </author>
    <date year="2024" month="September" day="11"/>
    <area>Applications and Real-Time</area>
    <workgroup>Secure Telephone Identity Revisited</workgroup>
    <keyword>stir</keyword>
    <keyword>certificates</keyword>
    <keyword>delegate certificates</keyword>
    <abstract>
      <?line 59?>

<t>This document describes a framework for the use of the Certificate Transparency (CT) protocol for publicly logging the existence of Secure Telephone Identity (STI) certificates as they are issued or observed. This allows any interested party that is part of the STI eco-system to audit STI certification authority (CA) activity and audit both the issuance of suspect certificates and the certificate logs themselves. The intent is for the establishment of a level of trust in the STI eco-system that depends on the verification of telephone numbers requiring and refusing to honor STI certificates that do not appear in a established log. This effectively establishes the precedent that STI CAs must add all issued certificates to the logs and thus establishes unique association of STI certificates to an authorized provider or assignee of a telephone number resource. The primary role of CT in the STI ecosystem is for verifiable trust in the avoidance of issuance of unauthorized duplicate telephone number level delegate certificates or provider level certificates.  This provides a robust auditable mechanism for the detection of unauthorized creation of certificate credentials for illegitimate spoofing of telephone numbers or service provider codes (SPC).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://appliedbits.github.io/draft-wendt-stir-certificate-transparency/draft-wendt-stir-certificate-transparency.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wendt-stir-certificate-transparency/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Secure Telephone Identity Revisited Working Group mailing list (<eref target="mailto:stir@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/stir/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/stir/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/appliedbits/draft-wendt-stir-certificate-transparency"/>.</t>
    </note>
  </front>
  <middle>
    <?line 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Certificate Transparency (CT) aims to mitigate the problem of mis-issued certificates by providing append-only logs of issued certificates. The logs do not themselves prevent mis-issuance, but ensure that interested parties (particularly those named in legitimate certificates or certificate chains) can detect such mis-issuance. <xref target="RFC6962"/> describes the core protocols and mechanisms for use of CT for the purposes of public TLS server certificates associated with a domain name as part of the public domain name system (DNS). This document describes a conceptually similar framework that directly borrows concepts like transparency receipts in the form of SCTs and how they are used in certificates and its specific use as part of the larger STIR framework for call authentication.  This framework is defined for the specific use with both Secure Telephone Identity (STI) certificates <xref target="RFC8226"/> and delegate certificates <xref target="RFC9060"/>.</t>
      <t>Telephone numbers (TNs) and their management and assignment by telephone service providers and Responsible Organizations (RespOrgs) for toll-free numbers share many similarities to the Domain Name System (DNS) where there is a global uniqueness and established association of telephone numbers to regulatory jurisdictions that manage the allocation and assignment of telephone numbers under country codes and a set of numeric digits for routing telephone calls and messages over telephone networks. STI Certificates use a TNAuthList extension defined in <xref target="RFC8226"/> to specifically associate either telephone service providers or telephone numbers to the issuance of STI certificates and certificate change that are intended to represent the authorized right to use a telephone number. This trusted association can be establish via mechanisms such as Authority tokens for TNAuthList defined in <xref target="RFC9448"/>. Certificate transparency and the concept of transparency is generally meant to provide a publicly verifiable and auditable representation of the creation of certificates in order to establish transparency and trust to interested parties as part of a stir related eco-system.</t>
      <t>There is three primary actors in the certificate transparency framework. There is the STI Certification Authorities (CAs) that submit all certificates to be issued to one or more transparency append-only log services. The log services are network services that implement the protocol operations for submissions of STI certificates and subsequent queries. They are hosted by interested parties in the STI ecosystem and can accept certificate log submissions from any other CA participant. The second role is the monitors that play the role of monitoring the CT logs to check for potential mis-issuance as well as auditing of the log services. This role can be played by any STI ecosystem participant interested in the trust of the ecosystem or the integrity of the telephone number or provider level certificates produced in the eco-system. CT provides a mechanism of a receipt or Signed Certificate Timestamp (SCT) that is provided as a result of submitting a certificate to the append-only log. The third actor role in the certificate transparency framework is the eco-system participants that can send and receive receipt(s) or SCT(s) to prove and validate that a certificate was submitted to a log(s) and optionally query the log directly for further validation.</t>
      <t>The details that follow in this document will detail the specific protocols and framework for Certificate Transparency associated with STI certificates. Most of the details borrow many of the concepts of certificate transparency defined in <xref target="RFC6962"/>}} used in web browser and web PKI environments, but provides a specific framework designed for STI certificates and their specific issuance and usage in a telecommunications and telephone number dependent eco-system.</t>
      <t>This general mechanism could also be used for transparently logging other important stir related metadata associations perhaps via JWTClaimConstraints defined in <xref target="RFC8226"/> and <xref target="RFC9118"/> or other ways defined in potential future extensions of this document.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

</section>
    <section anchor="the-use-of-certificate-transparency-for-sti-certificates">
      <name>The Use of Certificate Transparency for STI Certificates</name>
      <t>CT log(s) contains certificate chains, which can be submitted by any CA authorized in a STIR eco-system. It is expected that these CAs will contribute all their newly issued certificates to one or more logs.  Note, in <xref target="RFC6962"/> it is possible for certificate holders to directly contribute their own certificate chains or interested third parties, however because in stir eco-systems that generally consist of entities that are authorized to be assigned telephone number resources, this does not seem to be a likely scenario. Generally, many stir eco-systems have a controlled set of CAs that are authorized to participate as valid trust anchors. It is required that each chain ends with a trust anchor that is accepted by the log which would include those authorized trust anchors or a subset of them. When a chain is accepted by a log, a signed timestamp is returned, which is later used to provide evidence to STIR verification services (VS), defined in <xref target="RFC8224"/>, that the chain has been submitted. A VS can thus require that all certificates they accept as valid are accompanied by signed timestamps.</t>
      <t>Those concerned about mis-issuance of STIR certificates can monitor the logs, asking them regularly for all new entries, and can thus check whether the service provider codes or telephone numbers for which they are responsible have had certificates issued that they did not expect. What they do with this information, particularly when they find that a mis-issuance has happened, is beyond the scope of this document. However, broadly speaking, because many existing STI ecosystems have a connection to regulated and industry environments that govern the issuance of STI certificates, they can invoke existing mechanisms for dealing with issues such as mis-issued certificates, such as working with the CA to get the certificate revoked or with maintainers of trust anchor lists to get the CA removed.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This section defines key terms used throughout the STI-CT framework to ensure clarity and consistency.</t>
      <section anchor="authentication-service-as">
        <name>Authentication Service (AS)</name>
        <t>A service that signs the identity of a telephone call using Secure Telephone Identity (STI) certificates, ensuring the authenticity of the caller information. It ensures that STI Certificates contain SCTs.</t>
      </section>
      <section anchor="certificate-transparency-ct">
        <name>Certificate Transparency (CT)</name>
        <t>A framework designed to provide an open and verifiable log of issued certificates. It aims to detect and prevent the misuse or mis-issuance of certificates by maintaining append-only logs that can be audited by any interested party.</t>
      </section>
      <section anchor="delegate-certificate">
        <name>Delegate Certificate</name>
        <t>A type of STI certificate that associates a specific telephone number or a range of telephone numbers with a particular entity used to delegate the right to use these numbers.</t>
      </section>
      <section anchor="log">
        <name>Log</name>
        <t>An append-only, cryptographically verifiable structure used in Certificate Transparency to record pre-certificate entries. Logs accept submissions, generate Signed Certificate Timestamps (SCTs), and maintain the integrity of the entries through a Merkle Tree structure.</t>
      </section>
      <section anchor="merkle-tree">
        <name>Merkle Tree</name>
        <t>A cryptographic data structure used in logs to ensure the integrity and consistency of the entries. It is built by hashing individual log entries and combining them into a single root hash that represents the state of the entire log.</t>
      </section>
      <section anchor="precertificate">
        <name>Precertificate</name>
        <t>A certificate issued by an CA that is intended to be submitted to a Certificate Transparency log before the final certificate is issued. The pre-certificate includes a special extension (the poison extension) that prevents it from being used as a valid certificate on its own.</t>
      </section>
      <section anchor="signed-certificate-timestamp-sct">
        <name>Signed Certificate Timestamp (SCT)</name>
        <t>A data structure provided by a Certificate Transparency log in response to a pre-certificate submission. The SCT serves as a promise from the log to include the submitted pre-certificate in the log within a specified time frame (Maximum Merge Delay). It is included in the final certificate to prove that it has been logged.</t>
      </section>
      <section anchor="sti-certification-authority-sti-ca">
        <name>STI Certification Authority (STI-CA)</name>
        <t>An entity responsible for issuing STI certificates in the Secure Telephone Identity ecosystem. The CA can also issue pre-certificates, which are submitted to CT logs before the final certificate is issued.</t>
      </section>
      <section anchor="sti-subordinate-certification-authority-sti-sca">
        <name>STI Subordinate Certification Authority (STI-SCA)</name>
        <t>An entity authorized by an CA to issue STI certificates under the authority of the STI-CA. The STI-SCA can also issue pre-certificates for submission to CT logs.</t>
      </section>
      <section anchor="signed-tree-head-sth">
        <name>Signed Tree Head (STH)</name>
        <t>A cryptographically signed data structure that represents the current state of a Certificate Transparency log. It includes the root hash of the Merkle Tree and the number of entries in the log, allowing auditors to verify the integrity and consistency of the log.</t>
      </section>
      <section anchor="tbscertificate-to-be-signed-certificate">
        <name>TBSCertificate (To Be Signed Certificate)</name>
        <t>A component of an X.509 certificate that contains all the information about the certificate except the actual digital signature. The TBSCertificate includes fields such as the version, serial number, issuer, validity period, subject, and the subject's public key information. This component is signed by the certificate authority (CA) to create the final certificate. In the context of Certificate Transparency, the TBSCertificate of a pre-certificate is submitted to the log for inclusion.</t>
      </section>
      <section anchor="verification-service-vs">
        <name>Verification Service (VS)</name>
        <t>A service that verifies the authenticity of a telephone call by checking the validity of the PASSporT token, including verification that certificate contains valid SCTs.</t>
      </section>
    </section>
    <section anchor="sti-certificate-transparency-framework">
      <name>STI Certificate Transparency Framework</name>
      <t>This section describes the format and operational procedures for logs in the STI Certificate Transparency (CT) framework.</t>
      <section anchor="log-entries">
        <name>Log Entries</name>
        <t>Logs in the STI CT framework are append-only structures that store entries in a Merkle Tree and use SHA-256 for data hashing. The entries consist of pre-certificates submitted by STI Certification Authorities (STI-CAs) or Subordinate Certification Authorities (STI-SCAs). The log entries help ensure that all issued STI certificates can be audited for legitimacy.</t>
      </section>
      <section anchor="precertificate-submission">
        <name>Precertificate Submission</name>
        <t>An STI-CA/STI-SCA submits a pre-certificate to a log before the actual STI certificate is issued. The pre-certificate submission must include all necessary intermediate certificates to validate the chain up to an accepted root certificate. The root certificate may be omitted from the submission.</t>
        <t>When a pre-certificate is submitted:</t>
        <ul spacing="normal">
          <li>
            <t>The log verifies the chain of the pre-certificate up to a trusted root.</t>
          </li>
          <li>
            <t>If valid, the log generates and returns a Signed Certificate Timestamp (SCT) to the submitter.</t>
          </li>
          <li>
            <t>The SCT serves as a promise from the log that the pre-certificate will be included in the Merkle Tree within a defined Maximum Merge Delay (MMD).</t>
          </li>
        </ul>
        <t>Logs must publish a list of accepted root certificates, which aligns with those trusted in the STIR ecosystem. The inclusion of SCTs in the actual STI certificates is critical, as Verification Services (STI-VS) will only accept certificates that include valid SCTs.</t>
      </section>
      <section anchor="log-entry-structure">
        <name>Log Entry Structure</name>
        <t>Each log entry consists of the following components:</t>
        <artwork><![CDATA[
struct {
    PrecertChainEntry entry;
} LogEntry;

opaque ASN.1Cert<1..2^24-1>;

struct {
    ASN.1Cert pre_certificate;
    ASN.1Cert precertificate_chain<0..2^24-1>;
} PrecertChainEntry;
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>pre_certificate: The pre-certificate submitted for auditing.</t>
          </li>
          <li>
            <t>precertificate_chain: A chain of certificates required to verify the pre-certificate, including intermediate certificates but excluding the root certificate.</t>
          </li>
        </ul>
        <t>Logs may impose a limit on the length of the certificate chain they will accept. The log verifies the validity of the pre-certificate chain up to an accepted root and, upon acceptance, stores the entire chain for future auditing.</t>
      </section>
      <section anchor="structure-of-the-signed-certificate-timestamp-sct">
        <name>Structure of the Signed Certificate Timestamp (SCT)</name>
        <t>The SCT is a data structure returned by the log when a pre-certificate is accepted. It is structured as follows:</t>
        <artwork><![CDATA[
struct {
  Version sct_version;
  LogID id;
  uint64 timestamp;
  digitally-signed struct {
    Version sct_version;
    SignatureType signature_type = certificate_timestamp;
    uint64 timestamp;
    PreCert signed_entry;
    CtExtensions extensions;
  };
} SignedCertificateTimestamp;
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>sct_version: The version of the SCT protocol, set to v1.</t>
          </li>
          <li>
            <t>id: The SHA-256 hash of the log's public key.</t>
          </li>
          <li>
            <t>timestamp: The timestamp of the SCT issuance.</t>
          </li>
          <li>
            <t>signed_entry: Contains the PreCert structure, which includes the issuer's key hash and the TBSCertificate component of the pre-certificate.</t>
          </li>
          <li>
            <t>extensions: Placeholder for future extensions.</t>
          </li>
        </ul>
        <t>The SCT is included in the final STI certificate, and VS services will check the presence and validity of SCTs to verify the legitimacy of the certificate.</t>
      </section>
      <section anchor="merkle-tree-structure">
        <name>Merkle Tree Structure</name>
        <t>Logs use a Merkle Tree structure, with each leaf corresponding to a MerkleTreeLeaf entry. The leaves are hashed to form the tree, which is continuously updated as new entries are added.</t>
        <artwork><![CDATA[
struct {
  Version version;
  MerkleLeafType leaf_type;
  TimestampedEntry timestamped_entry;
} MerkleTreeLeaf;

struct {
  uint64 timestamp;
  PreCert signed_entry;
  CtExtensions extensions;
} TimestampedEntry;
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>version: The protocol version, set to v1.</t>
          </li>
          <li>
            <t>leaf_type: The type of the leaf, set to timestamped_entry.</t>
          </li>
          <li>
            <t>timestamped_entry: Contains the timestamp and the pre-certificate data.</t>
          </li>
        </ul>
        <t>The root hash of the Merkle Tree represents the state of the log at a given time and can be used to verify the inclusion of specific entries.</t>
      </section>
      <section anchor="signed-tree-head-sth-1">
        <name>Signed Tree Head (STH)</name>
        <t>The log periodically signs the root of the Merkle Tree, producing a Signed Tree Head (STH), which ensures the integrity of the log over time.</t>
        <artwork><![CDATA[
digitally-signed struct {
  Version version;
  SignatureType signature_type = tree_hash;
  uint64 timestamp;
  uint64 tree_size;
  opaque sha256_root_hash[32];
} TreeHeadSignature;
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>timestamp: The current time, ensuring it is more recent than the most recent SCT.</t>
          </li>
          <li>
            <t>tree_size: The number of entries in the Merkle Tree.</t>
          </li>
          <li>
            <t>sha256_root_hash: The root hash of the Merkle Tree.</t>
          </li>
        </ul>
        <t>Logs must produce an STH within the Maximum Merge Delay (MMD) to confirm that all SCTs issued have been incorporated into the Merkle Tree. Auditors and monitors can use the STH to verify that the log is operating correctly and that no entries have been tampered with.</t>
      </section>
    </section>
    <section anchor="sti-ct-apis">
      <name>STI-CT APIs</name>
      <t>This section outlines the API operations that clients of the STI-CT will use to interact with the logs. The APIs are designed to support the submission and verification of pre-certificates (precerts) within the STIR ecosystem. All operations are conducted over HTTPS and utilize JSON for data exchange.</t>
      <t>These APIs are based on RFC 6962, which defines the Certificate Transparency protocol. The APIs are designed to be specific for STIR ecosystem certificates.</t>
      <section anchor="add-pre-certificate-chain-to-log">
        <name>Add Pre-certificate Chain to Log</name>
        <t>Endpoint:</t>
        <ul spacing="normal">
          <li>
            <t>POST https://&lt;log server&gt;/stict/v1/add-pre-chain</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>chain: An array of base64-encoded certificates representing the pre-certificate chain. The first element is the end-entity pre-certificate (TBSCertificate), and subsequent elements are certificates that chain up to a known root certificate.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>sct_version: The version of the Signed Certificate Timestamp (SCT) structure, in decimal. For this version, it should always be <tt>1</tt>.</t>
          </li>
          <li>
            <t>id: The log ID, base64 encoded. This is the identifier for the log server that processed the submission.</t>
          </li>
          <li>
            <t>timestamp: The SCT timestamp, in decimal, representing the time when the SCT was issued.</t>
          </li>
          <li>
            <t>extensions: An opaque field reserved for future use. Currently, logs should set this to an empty string.</t>
          </li>
          <li>
            <t>signature: The SCT signature, base64 encoded, which is used to verify the SCT.</t>
          </li>
        </ul>
        <t>This endpoint allows an STI-CA or STI-SCA to submit a pre-certificate chain to the log for transparency. Upon submission, the log returns an SCT, which should be included in the final STI certificate before it is issued.</t>
      </section>
      <section anchor="retrieve-latest-signed-tree-head">
        <name>Retrieve Latest Signed Tree Head</name>
        <t>Endpoint:</t>
        <ul spacing="normal">
          <li>
            <t>GET https://&lt;log server&gt;/stict/v1/get-sth</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>No inputs required.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>tree_size: The number of entries in the log, in decimal.</t>
          </li>
          <li>
            <t>timestamp: The timestamp of the latest Signed Tree Head (STH), in decimal.</t>
          </li>
          <li>
            <t>sha256_root_hash: The SHA-256 hash of the root of the Merkle Tree, base64 encoded.</t>
          </li>
          <li>
            <t>tree_head_signature: A signature of the STH data, ensuring its integrity.</t>
          </li>
        </ul>
        <t>This endpoint retrieves the latest state of the log, represented by the Signed Tree Head, which can be used by clients to verify that entries have been properly incorporated into the log.</t>
      </section>
      <section anchor="retrieve-merkle-consistency-proof-between-two-signed-tree-heads">
        <name>Retrieve Merkle Consistency Proof between Two Signed Tree Heads</name>
        <t>Endpoint:</t>
        <ul spacing="normal">
          <li>
            <t>GET https://&lt;log server&gt;/ct/v1/get-sth-consistency</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>first: The tree size of the first STH, in decimal.</t>
          </li>
          <li>
            <t>second: The tree size of the second STH, in decimal.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>consistency: An array of base64-encoded Merkle Tree nodes that provide a consistency proof between the two STHs.</t>
          </li>
        </ul>
        <t>This endpoint allows clients to verify that the log has been consistently maintained over time, by checking the consistency proof between two STHs.</t>
      </section>
      <section anchor="retrieve-merkle-audit-proof-from-log-by-leaf-hash">
        <name>Retrieve Merkle Audit Proof from Log by Leaf Hash</name>
        <t>Endpoint:</t>
        <ul spacing="normal">
          <li>
            <t>GET https://&lt;log server&gt;/stict/v1/get-proof-by-hash</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>hash: A base64-encoded SHA-256 hash of the leaf.</t>
          </li>
          <li>
            <t>tree_size: The size of the tree for which the proof is desired, in decimal.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>leaf_index: The 0-based index of the corresponding log entry.</t>
          </li>
          <li>
            <t>audit_path: An array of base64-encoded Merkle Tree nodes providing the audit proof.</t>
          </li>
        </ul>
        <t>This endpoint retrieves a Merkle audit proof, which can be used to verify that a particular entry is included in the log, ensuring that the log is append-only and that the SCT is valid.</t>
      </section>
      <section anchor="retrieve-entries-from-log">
        <name>Retrieve Entries from Log</name>
        <t>Endpoint:</t>
        <ul spacing="normal">
          <li>
            <t>GET https://&lt;log server&gt;/stict/v1/get-entries</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>start: The 0-based index of the first entry to retrieve, in decimal.</t>
          </li>
          <li>
            <t>end: The 0-based index of the last entry to retrieve, in decimal.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>entries: An array of objects, each containing:</t>
          </li>
          <li>
            <t>leaf_input: The base64-encoded MerkleTreeLeaf structure.</t>
          </li>
          <li>
            <t>extra_data: The base64-encoded unsigned data related to the log entry. For a pre-certificate entry, this will include the entire PrecertChainEntry.</t>
          </li>
        </ul>
        <t>This endpoint allows clients to retrieve a range of entries from the log, which can be used to verify the integrity of the log and audit the inclusion of specific entries.</t>
      </section>
      <section anchor="retrieve-accepted-root-certificates">
        <name>Retrieve Accepted Root Certificates</name>
        <t>Endpoint:</t>
        <ul spacing="normal">
          <li>
            <t>GET https://&lt;log server&gt;/stict/v1/get-roots</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>No inputs required.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>certificates: An array of base64-encoded root certificates that are accepted by the log.</t>
          </li>
        </ul>
        <t>This endpoint provides a list of root certificates that the log accepts for verifying certificate chains.</t>
      </section>
      <section anchor="retrieve-entry-and-merkle-audit-proof">
        <name>Retrieve Entry and Merkle Audit Proof</name>
        <t>Endpoint:</t>
        <ul spacing="normal">
          <li>
            <t>GET https://&lt;log server&gt;/stict/v1/get-entry-and-proof</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>leaf_index: The index of the desired entry, in decimal.</t>
          </li>
          <li>
            <t>tree_size: The size of the tree for which the proof is desired, in decimal.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>leaf_input: The base64-encoded MerkleTreeLeaf structure.</t>
          </li>
          <li>
            <t>extra_data: The base64-encoded unsigned data related to the log entry, similar to the output in get-entries.</t>
          </li>
          <li>
            <t>audit_path: An array of base64-encoded Merkle Tree nodes providing the audit proof.</t>
          </li>
        </ul>
        <t>This endpoint is typically used for debugging or for in-depth verification of specific entries in the log.</t>
      </section>
    </section>
    <section anchor="clients">
      <name>Clients</name>
      <t>This section describes various roles clients of STI-CT perform. Any inconsistency detected by clients could serve as evidence that a log has not behaved correctly, and the signatures on the data structures prevent the log from denying any misbehavior.</t>
      <section anchor="submitters-sti-casti-sca">
        <name>Submitters (STI-CA/STI-SCA)</name>
        <t>Submitters in the STI-CT framework are typically STI Certification Authorities (STI-CAs) or Subordinate Certification Authorities (STI-SCAs). These entities submit pre-certificates to the log as described in the APIs section. The returned Signed Certificate Timestamp (SCT) can then be used to construct the final STI certificate, which includes one or more SCTs.</t>
      </section>
      <section anchor="asvs-clients">
        <name>AS/VS Clients</name>
        <t>AS and VS services interact with SCTs and the underlying logs to ensure the authenticity and validity of telephone calls.</t>
        <ul spacing="normal">
          <li>
            <t>AS: The Authentication Service should use valid certificates that contain SCT(s). The SCT(s) can be validated by computing the signature input from the SCT data as well as the certificate and verifying the signature using the corresponding log's public key. AS <bcp14>MUST</bcp14> reject SCTs whose timestamps are in the future.</t>
          </li>
          <li>
            <t>VS: The Verification Service receives the signed PASSporT token and verifies that the included SCTs in the certificate used to sign the PASSporT. VS <bcp14>MUST</bcp14> reject Certificates that do not have valid SCT(s) and fail PASSporT validation.</t>
          </li>
        </ul>
      </section>
      <section anchor="monitor">
        <name>Monitor</name>
        <t>Monitors in the STI-CT framework play a crucial role in maintaining the integrity and trust of the ecosystem. They ensure that no certificates are mis-issued, particularly concerning the TNAuthList field, which lists the telephone numbers an entity is authorized to use.</t>
        <section anchor="monitor-workflow">
          <name>Monitor Workflow</name>
          <ol spacing="normal" type="1"><li>
              <t>Initialize Monitor:
  * Set up the Monitor to periodically query the transparency logs for new entries. The Monitor must be configured with the base URL of each log it intends to monitor.
  * Configure the Monitor with a list of telephone numbers (TNs) and associated entities to track.</t>
            </li>
            <li>
              <t>Retrieve Latest STH:
  * The Monitor retrieves the latest Signed Tree Head (STH) from each log to determine the current state of the log.
  * API Call: GET https://&lt;log server&gt;/stict/v1/get-sth</t>
            </li>
            <li>
              <t>Retrieve New Entries from Log:
  - Using the STH, the Monitor retrieves new entries from the log that have been added since the last known state.
  - API Call: GET https://&lt;log server&gt;/stict/v1/get-entries?start=last_known_index&amp;end=current_sth_index</t>
            </li>
            <li>
              <t>Decode and Verify Certificates:
  - Decode each retrieved certificate and verify its validity using the provided certificate chain. Extract the entity name and TNAuthList from the certificate.</t>
            </li>
            <li>
              <t>Check for Mis-issuance:
  - Compare the TNAuthList and entity name from the newly issued certificate with the Monitor's configured list. Alarm if a certificate is issued in the name of a different entity for the same TNs.</t>
            </li>
            <li>
              <t>Alarm and Reporting:
  - If a mis-issuance is detected, raise an alarm and log the details for further investigation. Notify relevant stakeholders to rectify any confirmed mis-issuance.</t>
            </li>
            <li>
              <t>Maintain State and Continuity:
  - Update the Monitor's last known state with the current STH index to ensure continuity in monitoring.</t>
            </li>
            <li>
              <t>STH Verification and Consistency Check:
  - After retrieving a new STH, verify the STH signature.
  - If not keeping all log entries, fetch a consistency proof for the new STH with the previous STH (GET https://&lt;log server&gt;/stict/v1/get-sth-consistency) and verify it.
  - Go to Step 5 and repeat the process.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="auditor">
        <name>Auditor</name>
        <t>Auditors are responsible for verifying the consistency and correctness of the log, ensuring that the log behaves according to the expected protocol. Auditors can operate as standalone services or as part of another client role, such as a monitor or an VS.</t>
        <section anchor="auditor-functions">
          <name>Auditor Functions</name>
          <ol spacing="normal" type="1"><li>
              <t>STH Verification:
  - Auditors can fetch STHs periodically and verify their signatures to ensure the log is maintaining its integrity.
  - API Call: GET https://&lt;log server&gt;/stict/v1/get-sth</t>
            </li>
            <li>
              <t>Consistency Proof Verification:
  - Auditors verify the consistency of a log over time by requesting a consistency proof between two STHs.
  - API Call: GET https://&lt;log server&gt;/stict/v1/get-sth-consistency</t>
            </li>
            <li>
              <t>Audit Proof Verification:
  - A certificate accompanied by an SCT can be verified against any STH dated after the SCT timestamp + the Maximum Merge Delay by requesting a Merkle audit proof.
  - API Call: GET https://&lt;log server&gt;/stict/v1/get-proof-by-hash</t>
            </li>
            <li>
              <t>Cross-Checking Logs:
  - Auditors can cross-check entries across different logs by comparing SCTs and verifying that entries are consistently logged across the ecosystem.</t>
            </li>
            <li>
              <t>Error and Inconsistency Detection:
  - Any discrepancies or failures in verification processes can be logged as evidence of potential log misbehavior, and appropriate actions can be taken based on the findings.</t>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>None at this time.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC6962">
        <front>
          <title>Certificate Transparency</title>
          <author fullname="B. Laurie" initials="B." surname="Laurie"/>
          <author fullname="A. Langley" initials="A." surname="Langley"/>
          <author fullname="E. Kasper" initials="E." surname="Kasper"/>
          <date month="June" year="2013"/>
          <abstract>
            <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
            <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6962"/>
        <seriesInfo name="DOI" value="10.17487/RFC6962"/>
      </reference>
      <reference anchor="RFC8224">
        <front>
          <title>Authenticated Identity Management in the Session Initiation Protocol (SIP)</title>
          <author fullname="J. Peterson" initials="J." surname="Peterson"/>
          <author fullname="C. Jennings" initials="C." surname="Jennings"/>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <author fullname="C. Wendt" initials="C." surname="Wendt"/>
          <date month="February" year="2018"/>
          <abstract>
            <t>The baseline security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context. This document defines a mechanism for securely identifying originators of SIP requests. It does so by defining a SIP header field for conveying a signature used for validating the identity and for conveying a reference to the credentials of the signer.</t>
            <t>This document obsoletes RFC 4474.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8224"/>
        <seriesInfo name="DOI" value="10.17487/RFC8224"/>
      </reference>
      <reference anchor="RFC8226">
        <front>
          <title>Secure Telephone Identity Credentials: Certificates</title>
          <author fullname="J. Peterson" initials="J." surname="Peterson"/>
          <author fullname="S. Turner" initials="S." surname="Turner"/>
          <date month="February" year="2018"/>
          <abstract>
            <t>In order to prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically asserts authority over telephone numbers. This document describes the use of certificates in establishing authority over telephone numbers, as a component of a broader architecture for managing telephone numbers as identities in protocols like SIP.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8226"/>
        <seriesInfo name="DOI" value="10.17487/RFC8226"/>
      </reference>
      <reference anchor="RFC9060">
        <front>
          <title>Secure Telephone Identity Revisited (STIR) Certificate Delegation</title>
          <author fullname="J. Peterson" initials="J." surname="Peterson"/>
          <date month="September" year="2021"/>
          <abstract>
            <t>The Secure Telephone Identity Revisited (STIR) certificate profile provides a way to attest authority over telephone numbers and related identifiers for the purpose of preventing telephone number spoofing. This specification details how that authority can be delegated from a parent certificate to a subordinate certificate. This supports a number of use cases, including those where service providers grant credentials to enterprises or other customers capable of signing calls with STIR.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9060"/>
        <seriesInfo name="DOI" value="10.17487/RFC9060"/>
      </reference>
      <reference anchor="RFC9118">
        <front>
          <title>Enhanced JSON Web Token (JWT) Claim Constraints for Secure Telephone Identity Revisited (STIR) Certificates</title>
          <author fullname="R. Housley" initials="R." surname="Housley"/>
          <date month="August" year="2021"/>
          <abstract>
            <t>RFC 8226 specifies the use of certificates for Secure Telephone Identity Credentials; these certificates are often called "Secure Telephone Identity Revisited (STIR) Certificates". RFC 8226 provides a certificate extension to constrain the JSON Web Token (JWT) claims that can be included in the Personal Assertion Token (PASSporT), as defined in RFC 8225. If the PASSporT signer includes a JWT claim outside the constraint boundaries, then the PASSporT recipient will reject the entire PASSporT. This document updates RFC 8226; it provides all of the capabilities available in the original certificate extension as well as an additional way to constrain the allowable JWT claims. The enhanced extension can also provide a list of claims that are not allowed to be included in the PASSporT.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9118"/>
        <seriesInfo name="DOI" value="10.17487/RFC9118"/>
      </reference>
      <reference anchor="RFC9448">
        <front>
          <title>TNAuthList Profile of Automated Certificate Management Environment (ACME) Authority Token</title>
          <author fullname="C. Wendt" initials="C." surname="Wendt"/>
          <author fullname="D. Hancock" initials="D." surname="Hancock"/>
          <author fullname="M. Barnes" initials="M." surname="Barnes"/>
          <author fullname="J. Peterson" initials="J." surname="Peterson"/>
          <date month="September" year="2023"/>
          <abstract>
            <t>This document defines a profile of the Automated Certificate Management Environment (ACME) Authority Token for the automated and authorized creation of certificates for Voice over IP (VoIP) telephone providers to support Secure Telephone Identity (STI) using the TNAuthList defined by STI certificates.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9448"/>
        <seriesInfo name="DOI" value="10.17487/RFC9448"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 487?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the authors and contributors to the protocols and ideas around Certificate Transparency <xref target="RFC6962"/> which sets the basis for the STI eco-system to adopt in a very straight forward way, providing trust and transparency in the telephone number world.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
