<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc strict="yes" ?>
<?rfc comments="yes" ?>
<?rfc inline="yes" ?>
<?rfc editing="no" ?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc rfcedstyle="yes"?>

<rfc
    category="std" ipr="trust200902" number="7569" submissionType="IETF" consensus="yes" >

<front>
    <title abbrev="Labeled NFS Registry">
      Registry Specification for Mandatory Access Control (MAC)
Security&nbsp;Label&nbsp;Formats
    </title>


    <author fullname="David P. Quigley"
            initials="D. P."
            surname="Quigley">
      <address>
        <email>dpquigl@davequigley.com</email>
      </address>
    </author>

    <author fullname="Jarrett Lu"
            initials="J"
            surname="Lu">
      <organization abbrev="Oracle">Oracle</organization>
      <address>
        <email>jarrett.lu@oracle.com</email>
      </address>
    </author>

    <author fullname="Thomas Haynes"
            initials="T."
            surname="Haynes">
      <organization abbrev="Primary Data">Primary Data, Inc.</organization>
      <address>
        <postal>
          <street>4300 El Camino Real Ste 100</street>
          <city> Los Altos</city>
          <region>CA</region>
          <code>94022</code>
          <country>United States</country>
        </postal>
        <phone>+1 408 215 1519</phone>
        <email>thomas.haynes@primarydata.com</email>
      </address>
    </author>

    <date year="2015" month="June"/>

    <keyword>NFSv4</keyword>

    <abstract>
      <t>
        In the past, Mandatory Access Control (MAC) systems have
        used very rigid policies that were implemented in particular
        protocols and platforms.  As MAC systems become more widely
        deployed, additional flexibility in mechanism and policy
        will be required.  While traditional trusted systems
        implemented Multi-Level Security (MLS) and integrity models,
        modern systems have expanded to include such technologies
        as type enforcement.  Due to the wide range of policies and
        mechanisms that need to be accommodated, it is unlikely
        that the use of a single security label format and model will
        be viable.
      </t>

      <t>
        To allow multiple MAC mechanisms and label formats to
        co-exist in a network, this document creates a registry
        of label format specifications.  This registry contains
        label format identifiers and provides for the association
        of each such identifier with a corresponding extensive
        document outlining the exact syntax and use of the
        particular label format.
      </t>
    </abstract>
</front>

<middle>

<section anchor="sec:intro" title="Introduction">
  <t>
    With the acceptance of security labels in several mainstream
    operating systems, the need to communicate labels between these
    systems becomes more important. In a typical client-and-server
    scenario, the client request to the server acts as a subject
    trying to access an object on the server <xref target='RFC7204' />.
    Unfortunately, these systems are diverse enough that attempts
    at establishing one common label format have been unsuccessful.
    This is because systems implement different Mandatory Access Control
    (MAC) models, which typically do not share any common ground.
  </t>

  <t>
    One solution might be to define a single label format that
    consists of the union of the requirements of all MAC
    models/implementations, known at a given time. This approach is
    not desirable, because it introduces an environment where either
    (1) many MAC models would have blank fields for many of the
    label's components or (2) many implementations would ignore
    altogether many of the values that are present. The resulting
    complexity would be likely to result in a confusing situation
    in which the interaction of fields that are derived from different
    MAC models is never clearly specified and the addition of new
    models or extensions of existing models is unduly difficult.
  </t>

  <t>
    An additional consideration is that if a policy authority or
    identifier field is specified in the label format, it would
    require a robust description that would encompass multiple MAC
    models where an implementation would lock policy administration
    into the described model.
  </t>

  <t>
    Ideally, a mechanism to address this problem should allow the
    most flexibility possible in terms of policy administration
    while providing a specification that is sufficient to allow for
    implementation of the label format and understanding of the
    semantics of the label.  This means that the label format
    specification  would ideally contain a syntactic description
    of the label format and a description of the semantics for each
    component in the label.  This allows protocols to specify the
    type of label and label semantics that it requires while leaving
    policy and policy administration to the individual organizations
    using the protocol in their environment.
  </t>

  <t>
    Policy administration within an organization is a difficult
    problem.  This should not be made even more difficult by having
    to request permission from external entities when crafting new
    policy or just making department specific modifications to
    existing policies.  The policy authority field would allow
    a label format specification to specify a scheme for policy
    administration without forcing it on all users of security
    labels.  However, by agreeing to implement a particular label
    format specification, the protocol agrees to that policy
    administration mechanism when processing labels of that type.
  </t>

  <t>
    This document creates a registry of label format specifications
    to allow multiple MAC mechanisms and label formats to co-exist
    in a network. While the initial use of this registry is for the
    Network File System (NFS) protocol, it might also be referenced
    and used by other IETF protocols in the future.
  </t>
</section>

<section anchor='sec:defs' title='Definitions'>
  <t>
    <list style='hanging'>
      <t hangText='Label Format Specifier:'>
        an identifier used by the client to establish
        the syntactic format of the security label and the semantic meaning
        of its components.
      </t>

      <t hangText='Label Format Specification:'>
        a reference to a stable, public document that specifies
        the label format.
      </t>

      <t hangText='Multi-Level Security (MLS):'>
        a traditional model where subjects are given a security level
        (Unclassified, Secret, Top Secret, etc.) and objects are given
        security labels that mandate the access of the subject to the
        object (see <xref target='BL73' /> and <xref target='RFC2401' />).
      <vspace blankLines="1"/>
        (Although RFC 2401 has been obsoleted by RFC 4301, RFC 2401 is still
        the definitive reference for MLS as discussed in this document.)
      </t>

      <t hangText='object:'>
        a passive resource within the system that we wish to protect.
        Objects can be entities such as files, directories, pipes,
        sockets, and many other system resources relevant to the
        protection of the system state.
      </t>

      <t hangText='subject:'>
        an active entity, usually a process, user, or client, that
        is requesting access to an object.
      </t>
    </list>
  </t>
</section>

<section anchor="sec:existing" title="Existing Label Format Specifications">
  <section anchor='sec:IPSO' title="IP Security Option (IPSO), Basic Security Option (BSO)">
    <t>
      The "IP Security Option (IPSO)" label format is
      defined in <xref target='RFC1108' />.  IANA has assigned
      IPv4 Option 130 to the IPSO Basic Security Option (BSO).
      IPSO is the only IPv4 sensitivity label option implemented
      in commercial IP routers.  IPSO BSO continues to have
      widespread implementation in hosts, and widespread
      deployment.  For the purposes of this document, only the
      BSO labels in Table 1 on Page 3 of <xref target='RFC1108' />
      are used.
    </t>

    <t>
      In some locales, the BSO value "(Reserved 2)" is used for
      marking information that is considered "Restricted" by local
      policy, where "Restricted" is less sensitive than "Confidential"
      but more sensitive than "Unclassified".
    </t>
  </section>

  <section anchor='sec:CIPSO' title="Commercial IP Security Option (CIPSO)">
    <t>
      The "Commercial IP Security Option (CIPSO)" label format is
      documented in <xref target='CIPSO' /> and in <xref target='FIPS-188' />.
      While <xref target='CIPSO' /> is
      long expired, it is widely supported in deployed MLS systems that
      support IPv4.  IANA has assigned IPv4 option number 134 to CIPSO.
      CIPSO is defined ONLY as an IPv4 option.  IANA has never assigned
      any IPv6 option value to CIPSO.
    </t>
  </section>

  <section anchor='sec:CALIPSO' title="Common Architecture Label IPv6 Security Option (CALIPSO)">
    <t>
      The "Common Architecture Label IPv6 Security Option (CALIPSO)"
      label format is specified in <xref target='RFC5570' /> and
      is defined for IPv6.  As noted in Section 10 of
      <xref target='RFC5570' />, CALIPSO is a direct derivative of
      the IPv4 "Son of IPSO" (SIPSO); therefore, CALIPSO is NOT
      derived from CIPSO in any way.
    </t>
  </section>

  <section anchor='sec:FLASK' title="Flux Advanced Security Kernel (FLASK)">
    <t>

      The Flux Advanced Security Kernel (FLASK) <xref target='FLASK99' />
      is an implementation of an architecture to provide flexible
      support for security policies. Section 2.1 of <xref target='FLASK99b' />
      summarizes the architecture of FLASK and describes:

      <list style="numbers">
        <t>
          the interactions between a subsystem that enforces security
          policy decisions and a subsystem that makes those decisions.
        </t>

        <t>
          the requirements on the components within each subsystem.
        </t>
      </list>
    </t>
  </section>
</section>

<section anchor="sec:security" title="Security Considerations">
  <t>
    This document defines a mechanism to associate the Label Format Specifier
    identifier with a document outlining the syntax and format of
    a label.  There are no security considerations for such an
    association.  The label specification documents referenced by
    each registration entry should state security considerations
    for the label mechanism it specifies.
  </t>
</section>

<section anchor="sec:iana" title="IANA Considerations">
  <t>
    This section provides guidance to the Internet Assigned Numbers
    Authority (IANA) regarding the creation of a new registry in
    accordance with <xref target='RFC5226' />.
  </t>

  <t>
    Per this document, IANA has created a new registry called 
    "Security Label Format Selection Registry".  The new registry
    has the following fields:

    <list style='hanging'>
      <t hangText='Label Format Specifier:'>
        An integer that maps to a particular label format,
        e.g., the CALIPSO label format defined by
        <xref target='RFC5570' />.  The namespace of this
        identifier has the range of 0..65535.
      </t>

      <t hangText='Label Description:'>
        A human-readable ASCII <xref target='RFC20' /> text string
        that describes the label format, e.g.,
        "Common Architecture Label IPv6 Security Option (CALIPSO)".
        The length of this field is limited to 128 bytes.
      </t>

      <t hangText='Status:'>
        A short ASCII text string indicating the status of an entry
        in the registry.  The status field for most entries should
        have the value "active".  In the case where a label format
        selection entry is obsolete, the status field of the obsoleted
        entry should be "obsoleted by entry NNN".
      </t>

      <t hangText='Label Format Specification:'>
        A reference to a stable, public document that specifies the
        label format, e.g., a URL to <xref target='RFC5570' />.
      </t>
    </list>
  </t>

  <section anchor="sec:iana:init" title="Initial Registry">
    <t>
      The initial assignments of the registry are as follows:
    </t>

    <texttable anchor="tbl:lfs_ranges">
      <ttcol align='left'>Label Format Specifier</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c> 0             </c> <c> Reserved                             </c> <c> -      </c> <c> -                               </c>
      <c> 1 - 127       </c> <c> Private Use                          </c> <c> -      </c> <c> -                               </c>
      <c> 128 - 255     </c> <c> Experimental Use                     </c> <c> -      </c> <c> -                               </c>
      <c> 256           </c> <c> CIPSO (tag type #1)                  </c> <c> active </c> <c> <xref target='FIPS-188' /></c>
      <c> 257           </c> <c> CALIPSO <xref target='RFC5570' />  </c> <c> active </c> <c> <xref target='RFC5570' /></c>
      <c> 258           </c> <c> FLASK Security Context               </c> <c> active </c> <c> <xref target='FLASK99' /></c>
      <c> 259           </c> <c> IPSO                                 </c> <c> active </c> <c> <xref target='RFC1108' /></c>
      <c> 260 - 65535   </c> <c> Available for IANA Assignment         </c> <c> -      </c> <c> -                               </c>
      <postamble>Label Format Specifier Ranges</postamble>
    </texttable>
  </section>

  <section anchor="sec:iana:new" title="Adding a New Entry to the Registry">
    <t>
      A label format specification document is required to add a new
      entry to the "Security Label Format Selection Registry".
      If the label format document is inside the RFC path, then the
      IANA Considerations section of the label format document should
      clearly reference the "Security Label Format Selection Registry"
      and request allocation of a new entry.  The well-known IANA policy
      Specification Required, as defined in
      Section 4.1 of <xref target='RFC5226' />, will be used to handle
      such requests.  Note that the "Specification Required" policy implies
      that this process requires a Designated Expert, i.e., adding
      a new entry to this registry requires both a published label
      format specification and a Designated Expert review.
    </t>

    <t>
      In reviewing the published label format specification, the
      Designated Expert should consider whether or not the specification
      provides sufficient semantics for the object and subject labels to
      enforce the MAC model and policy administration when deployed within
      an organization. Another consideration is if the label format allows
      a correct and complete implementation of the protocol to process
      and enforce labels as a policy administration mechanism. Finally,
      to reduce interoperability issues, the reviewer must determine if
      the new label format specification has clearly defined syntax and
      semantics for the proposed new labels.
    </t>
  </section>

  <section anchor="sec:iana:obs" title="Obsoleting a Label Format Specifier">
    <t>
      In the case where a label format selector number is assigned to
      a label format and the label format specification is changed
      later, a new selector assignment should be requested.  The same
      Specification Required IANA policy applies to such requests.
      The IANA Considerations section of the updated label format
      specification should be explicit regarding which old label selector
      assignment it obsoletes.  Below is an example of an obsoleted entry
      in the registry:
    </t>

    <texttable anchor="tbl:ex_lfs_update">
      <ttcol align='left'>Label Format Specifier</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c> 0             </c> <c> Reserved                             </c> <c> -                </c> <c> -                               </c>
      <c> 1 - 127       </c> <c> Private Use                          </c> <c> -                </c> <c> -                               </c>
      <c> 128 - 255     </c> <c> Experimental Use                     </c> <c> -                </c> <c> -                               </c>
      <c> 256           </c> <c> CIPSO (tag type #1)                  </c> <c> active </c> <c> <xref target='FIPS-188' /> </c>
      <c> 257           </c> <c> CALIPSO <xref target='RFC5570' />  </c> <c> active </c> <c> <xref target='RFC5570' /></c>
      <c> 258           </c> <c> FLASK Security Context               </c> <c> obsoleted by 263 </c> <c> <xref target='FLASK99' />   </c>
      <c> ...           </c> <c>                                      </c> <c>                  </c> <c>                                 </c>
      <c> 263           </c> <c> FLASK Security Context (v2)          </c> <c> active           </c> <c> [new spec URL]                  </c>
      <c> 264 - 65535   </c> <c> Available for IANA Assignment         </c> <c> -                </c> <c> -                               </c>
      <postamble>Example Label Format Specifier Updated Ranges</postamble>
    </texttable>
  </section>

  <section anchor="sec:iana:mod" title="Modifying an Existing Entry in the Registry">
    <t>
      A request to modify  either the Description or the published
      label format specification will also require the Specification
      Required IANA policy to be applied.  The Designated Expert
      reviewer will need to determine if the published label format
      specification either obsoletes the Label Format Specifier or
      updates the label syntax and/or model. If the Label Format
      Specifier is obsoleted, then the reviewer will follow the process
      defined in <xref target='sec:iana:obs' />.  Otherwise, for the
      update of the label syntax and/or the model, the reviewer will
      approve the change.
    </t>
  </section>
</section>

</middle>

<back>

  <references title="Normative References">

    <reference  anchor='RFC20' target='http://www.rfc-editor.org/info/rfc20'>
    <front>
    <title>ASCII format for network interchange</title>
    <author initials='V.G.' surname='Cerf' fullname='V.G. Cerf'><organization /></author>
    <date year='1969' month='October' />
    </front>
    <seriesInfo name='STD' value='80'/>
    <seriesInfo name='RFC' value='20'/>
    <seriesInfo name='DOI' value='10.17487/RFC0020'/>
    <format type='ASCII, PDF' octets='18504, 197096'/>
    </reference>

<?rfc include='reference.RFC.5226'?>

  </references>

<references title="Informative References">

  <reference anchor='BL73'>
    <front>
      <title>Secure Computer Systems: Mathematical Foundations and Model</title>
      <author initials='D.E.' surname='Bell' fullname='D.E. Bell'> <organization /></author>
      <author initials='L.J.' surname='LaPadula' fullname='L.J. LaPadula'> <organization /></author>
      <date month='May' year='1973' />
    </front>
    <seriesInfo name='Technical Report M74-244,' value='The MITRE Corporation, Bedford, MA' />
  </reference>

<!-- draft-ietf-cipso-ipsecurity (Expired) (Datatracker says
  "August 1992" but doc. header says "July 1992") -->
  <reference anchor='CIPSO'>
    <front>
      <title>Commercial IP Security Option (CIPSO 2.2)</title>
      <author> <organization>IETF CIPSO Working Group</organization> </author>
      <date month='July' year='1992' />
    </front>
    <seriesInfo name="Work in Progress," value="draft-ietf-cipso-ipsecurity-01" />
  </reference>

  <reference anchor='FIPS-188' target="http://csrc.nist.gov/publications/fips/fips188/fips188.pdf">
    <front>
      <title>Standard Security Labels for Information Transfer</title>
      <author> <organization>US National Institute of Standards and Technology</organization> </author>
      <date month='September' year='1994' />
    </front>
    <seriesInfo name="Federal Information Processing Standards (FIPS)" value="188" />
  </reference>

  <reference anchor='FLASK99' target="https://www.cs.cmu.edu/~dga/papers/flask-usenixsec99.pdf">
    <front>
      <title>The Flask Security Architecture: System Support for Diverse Security Policies</title>
      <author initials='R' surname='Spencer' fullname='R. Spencer'> <organization /></author>
      <author initials='S' surname='Smalley' fullname='S. Smalley'> <organization /></author>
      <author initials='P' surname='Loscocco' fullname='P. Loscocco'> <organization /></author>
      <author initials='M' surname='Hibler' fullname='M. Hibler'> <organization /></author>
      <author initials='D' surname='Andersen' fullname='D. Andersen'> <organization /></author>
      <author initials='J' surname='Lepreau' fullname='J. Lepreau'> <organization /></author>
      <date month='August' year='1999' />
    </front>
    <seriesInfo name="In Proceedings of the Eighth USENIX Security Symposium," value="pages 123-139" />
   </reference>

  <reference anchor='FLASK99b' target="http://www.cs.utah.edu/flux/fluke/html/fspm.ps.gz">
    <front>
      <title>Assurance in the Fluke Microkernel Formal Security Policy Model</title>
      <author> <organization>Secure Computing Corporation</organization> </author>
      <date month='February' year='1999' />
    </front>
    <seriesInfo name="Document 00-0930896A001 Rev B, 17 Feb 1999," value="Secure Computing Corporation, Roseville, MN, USA" />
  </reference>

<?rfc include='reference.RFC.1108'?>

<?rfc include='reference.RFC.2401'?>

<?rfc include='reference.RFC.5570'?>

<?rfc include='reference.RFC.7204'?>

</references>

<section title="Acknowledgments" numbered="no">
  <t>
    Ran Atkinson contributed the text for IPSO.
  </t>

  <t>
    Dave Noveck helped detangle the terminology.
  </t>

  <t>
    Alexey Melnikov caught that a process was needed for
    modifying entries in the registry.
  </t>
</section>

</back>

</rfc>
