<?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.6.22 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tigress-gssapi-impl-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="tigress-gssapi-impl">Tigress-GSS API-Sample Implementation</title>
    <seriesInfo name="Internet-Draft" value="draft-tigress-gssapi-impl-00"/>
    <author initials="C." surname="Astiz" fullname="Casey Astiz">
      <organization>Apple Inc</organization>
      <address>
        <email>castiz@apple.com</email>
      </address>
    </author>
    <author initials="A." surname="Pelletier" fullname="Alex Pelletier">
      <organization>Apple Inc</organization>
      <address>
        <email>a_pelletier@apple.com</email>
      </address>
    </author>
    <date year="2023" month="February" day="18"/>
    <area>ART</area>
    <workgroup>TIGRESS</workgroup>
    <keyword>tigress</keyword>
    <keyword>GSS API</keyword>
    <keyword>sample implementation</keyword>
    <abstract>
      <t>This document describes a sample implementation of transferring digital credentials securily (Tigress) using GSS API.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://datatracker.ietf.org/doc/draft-tigress-gssapi-impl/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-tigress-gssapi-impl/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dimmyvi/tigress-requirements"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Prevously Tigress reviewed an implementation of digital credentials transfer using Tigress protocol (https://datatracker.ietf.org/doc/draft-art-tigress/). In previous IETF meetings community asked to review other possible solutions using alternative standards to illustrate how Tigress problem can be solved differently.
In this document we are trying to describe how an alternative potential implementation of a solution to Tigress <xref target="Tigress-req-02"/> problem of transferring digital credentials securily can be done using GSS API <xref target="RFC2743"/>.</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>
    </section>
    <section anchor="gss-api-proposal">
      <name>GSS-Api Proposal</name>
      <t>General security service application program interface, or GSS-API, from <xref target="RFC2743"/> defines a generic protocol for the security of messages being transferred and can provide authentication, integrity, and confidentiality. GSS-API does not define how the messages are sent between parties.</t>
      <t>Leveraging GSS-API provides flexibility to easily change the security of how a credential is transferred, but a lot of work to define the communication channel between two devices is still required. GSS-API also requires that each party have auth credentials before the communication occurs, which isn’t a requirement for our use case.</t>
      <t>## Secure Credential Transfer with GSS-API</t>
      <t>Because GSS-API does not define the communication channel we will assume the devices are able to communicate via an arbitrary intermediary server. An example transfer using GSS-API + Tigress could like like:</t>
      <ol spacing="normal" type="1"><li>
          <t>Sender creates a single use auth credential and encrypts it with a symmetric key that will be a shared secret.
          </t>
          <ol spacing="normal" type="1"><li>
              <em>Tigress</em>: The creation, structure, and validation of this single use auth credential would need to be defined by Tigress.</li>
          </ol>
        </li>
        <li>Sender creates a GSS-API security context token with the encrypted credential.</li>
        <li>
          <t>Sender sends security context token + shared secret to receiver.
          </t>
          <ol spacing="normal" type="1"><li>If a mailbox style intermediate server is used this can be done via a url where the shared secret is include in the url fragment.</li>
            <li>
              <em>Tigress</em>: How this information is sent to the intermediary server would need to be defined by tigress.</li>
          </ol>
        </li>
        <li>
          <t>Receiver gets information for communicating with the sender and the shared secret.
          </t>
          <ol spacing="normal" type="1"><li>This information could be transferred via a url, a file, a QR code, etc.</li>
            <li>
              <em>Tigress</em>: The high level format of this information would need to be defined by tigress so that devices could parse the data and extract the GSS-API specific parts.</li>
            <li>
              <em>Tigress:</em> We could recommend that this information have a nice preview, but that wouldn't be required.</li>
          </ol>
        </li>
        <li>Receiver accepts the security context token, and uses the shared secret to validate the credential.</li>
        <li>
          <t>Receiver sends back security context token to sender. This process is repeated until the security context is full established.
          </t>
          <ol spacing="normal" type="1"><li>
              <em>Tigress</em>: How the receiver sends the opaque blob to the sender via the intermediary server would need to be defined by tigress.</li>
          </ol>
        </li>
        <li>Sender creates credential to share, use GSS-API to create a message token, send message token to receiver.</li>
        <li>
          <t>Receiver gets message token and uses GSS-API to extract the underlying credential.
          </t>
          <ol spacing="normal" type="1"><li>
              <t>If the receiver is done they can terminate the transfer and send a GSS-API termination back to the sender.
              </t>
              <ol spacing="normal" type="1"><li>
                  <em>Tigress</em>: How the session with the intermediary server between the sender and receiver is terminated would need to be defined by tigress.</li>
              </ol>
            </li>
            <li>Or, the receiver can perform additional calls with the sender to complete transferring the credential.</li>
          </ol>
        </li>
      </ol>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2743">
          <front>
            <title>Generic Security Service Application Program Interface Version 2, Update 1</title>
            <author fullname="J. Linn" initials="J." surname="Linn">
              <organization/>
            </author>
            <date month="January" year="2000"/>
            <abstract>
              <t>This memo obsoletes [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2743"/>
          <seriesInfo name="DOI" value="10.17487/RFC2743"/>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
      <references>
        <name>Informative References</name>
        <reference anchor="Tigress-req-02" target="https://github.com/dimmyvi/tigress-requirements/">
          <front>
            <title>Tigress requirements</title>
            <author initials="D." surname="Vinokurov" fullname="Dmitry Vinokurov">
              <organization/>
            </author>
            <author initials="A." surname="Pelletier" fullname="Alex Pelletier">
              <organization/>
            </author>
            <author initials="C." surname="Astiz" fullname="Casey Astiz">
              <organization/>
            </author>
            <author initials="B." surname="Lassey" fullname="Brad Lassey">
              <organization/>
            </author>
            <date year="2023" month="February"/>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
difGtf8ChEDBhXsVAAA=

-->

</rfc>
