﻿<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ 
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4107 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4107.xml">
<!ENTITY RFC4949 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4949.xml">
<!ENTITY RFC4960 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4960.xml">
<!ENTITY RFC7920 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7920.xml">
<!ENTITY RFC7921 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7921.xml">
<!ENTITY RFC7922 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7922.xml">
<!ENTITY RFC7923 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7923.xml">
<!ENTITY I-D.ietf-i2rs-ephemeral-state SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-i2rs-ephemeral-state.xml">
<!ENTITY I-D.ietf-i2rs-security-environment-reqs SYSTEM 
   "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-i2rs-security-environment-reqs.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
 <?rfc toc="yes" ?>
 <?rfc symrefs="yes" ?>
 <?rfc sortrefs="yes"?> 
 <?rfc compact="yes" ?>
 <?rfc subcompact="no" ?>  
 <?rfc iprnotified="no" ?>
  <?rfc strict="no" ?>

<rfc category="info" docName="draft-ietf-i2rs-protocol-security-requirements-09"  ipr="trust200902">
<front>   
<title abbrev="I2RS Security Requirements">I2RS Security Related Requirements</title>
     <author fullname="Susan Hares" initials="S" surname="Hares">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>7453 Hickory Hill</street>
          <city>Saline</city>
          <region>MI</region>
          <code>48176</code>
          <country>USA</country>
        </postal>
        <email>shares@ndzh.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
	<author fullname="Daniel Migault" initials="D" surname="Migault">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>8400 boulevard Decarie</street>
          <city>Montreal</city>
          <region>QC</region>
          <code>HAP 2N2</code>
          <country>Canada</country>
        </postal>
        <email>daniel.migault@ericsson.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
	<author fullname="Joel Halpern" initials="J" surname="Halpern">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country>US</country>
        </postal>
        <email>joel.halpern@ericsson.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    <date year="2016" />
   <area>Routing Area</area>
   <workgroup>I2RS working group</workgroup>
    <keyword>RFC</keyword>
     <keyword>Request for Comments</keyword>
     <keyword>I-D</keyword>
     <keyword>Internet-Draft</keyword>
     <keyword>I2RS</keyword>

<abstract>
   <t> This presents security-related requirements for the I2RS
   protocol for mutual authentication, transport protocols, 
   data transfer and transactions. 
   </t>
</abstract>
</front>
<middle>
<section anchor="intro" title="Introduction">
   <t>The Interface to the Routing System (I2RS)  
   provides read and write access to information and state within the
    routing process. An I2RS client interacts with one or more I2RS agents to collect information
    from network routing systems. </t>
	<t> This document describes the requirements for the
	I2RS protocol in the security-related areas of mutual authentication of the 
	I2RS client and agent, the transport protocol carrying the I2RS 
	protocol messages, and the atomicity of the transactions. 
    These requirements align with the description of the I2RS architecture found in
	<xref target="RFC7921"></xref> document which solves the problem
	described in <xref target="RFC7920"></xref>.</t>
	<t>
	  <xref target="I-D.ietf-i2rs-ephemeral-state"></xref> discusses I2RS role-based access control 
	  that provides write conflict resolution in the ephemeral data store using the I2RS Client Identity, 
	  I2RS Secondary Identity and priority. The draft <xref target="RFC7922"></xref> 
	  describes the traceability framework and its requirements for I2RS.  
	  The draft <xref target="RFC7923"></xref>
	  describes the requirements for I2RS to be able to publish information or 
	  have a remote client subscribe to an information data stream.  
	  </t> 
      <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="Definitions" >
<section title="Security Definitions">
   <t>This document utilizes the definitions found in the
   following documents:  <xref target="RFC4949"></xref> and <xref target="RFC7921"></xref>
   </t> 
  <t> Specifically, this document utilizes the following definitions from 
      <xref target="RFC4949" />:  
	<list style="symbols">
    <t>access control,</t> 
    <t>Authentication,</t>
    <t>Data Confidentiality, </t>
    <t>Data Integrity, </t>
    <t>Data Privacy, </t>
	<t>Identity,</t>
    <t>Identifier,</t>
    <t>Mutual Authentication,</t>
    <t>role,</t>
    <t>role-based access control,</t>
	<t>security audit trail, and </t>
	<t>trust.</t>
    </list>
	</t>
     <t><xref target="RFC7922"></xref> describes traceability for I2RS interface and 
	   the I2RS protocol. Traceability is not equivalent to a security audit trail. </t>
</section>
<section title="I2RS Specific Definitions">
	<t>
	<list style="hanging">
	<t hangText="I2RS component protocols"><vspace blankLines="1" /> Protocols 
	which are combined to create the I2RS protocol.
	</t>
	<t hangText="I2RS Higher-level protocol"><vspace blankLines="1" /> The I2RS protocol 
	exists as a higher-level protocol which may combine other protocols (NETCONF, RESTCONF, IPFIX and others) within a 
	specific I2RS client-agent relationship with a specific trust for ephemeral configurations, 
	event, tracing, actions, and data flow interactions.  The protocols included in the I2RS protocol
    protocol are defined as I2RS component protocols.  (Note: Version 1 of the I2RS protocol
	will combine only NETCONF and RESTCONF.  Experiments with other protocols such as IPFIX 
	have shown these are useful to combine with NETCONF and RESTCONF features.)
	</t>
	<t hangText="I2RS message"><vspace blankLines="1" />is a complete data message of
    one of the I2RS component protocols.  The I2RS component protocols may require
	multiple IP-packets to send one protocol message. 
	</t>
	<t hangText="I2RS multi-message atomicity"><vspace blankLines="1" /> 
	An I2RS operation (read, write, event, action) must be contained within one I2RS message.
	Each I2RS operation must be atomic. While it is possible to have an I2RS 
	operation which is contained in multiple I2RS (E.g. write in multiple messages), 
	this is not supported in order to simplify the first version of I2RS. 
	Multiple-message atomicity of I2RS operations would be used in 
	a roll-back of a grouping of commands (e.g. multiple writes).
	</t>
	<t hangText="I2RS transaction"><vspace blankLines="1" /> is a unit of 
	I2RS functionality.  Some examples of I2RS transactions are: 
	<list style="symbols">
	<t>The I2RS client issues a read request to a I2RS agent, and the 
	I2RS Agent responding to the read request </t>
	<t>The I2RS client issues a write of ephemeral configuration values into an I2RS agent's
	data model, followed by the I2RS agent response to the write. 	
	</t>
	<t>An I2RS client may issue an action request, the I2RS agent responds to the 
	action-request, and then responds when action is complete. 
    Actions can be single step processes or multiple step process. 	
	</t>
	<t>An I2RS client requests to receive an event notification, and 
	the I2RS Agent sets up to send the events.</t>
	<t>An I2RS agent sends events to an I2RS Client on an existing 
	connection.</t>
	</list>
	An I2RS action may require multiple I2RS messages in order to complete 
	a transation. 
	</t>
	<t hangText="I2RS secondary identifier"><vspace blankLines="1" />
	The I2RS architecture document <xref target="RFC7921"></xref>
	defines a secondary identity as the entity of some non-I2RS entity (e.g. application)
	which has requested a particular I2RS client perform an operation.  The I2RS secondary
	identifier represents this identity so it may be distinguished from all others. 
	</t>
    <t hangText="I2RS routing system"><vspace blankLines="1" />
    Layer three (L3) routing systems which include physical routers, 
    virtual routers (in hypervisors or load splitters), and other devices 
    supporting L3 routing in order to forward packets based on L3 headers.  
</t>
	</list>  
	</t>
</section>
</section>
<section title="Security-Related Requirements" >
<t> The security for the I2RS protocol requires mutually authenticated I2RS clients
and I2RS agents communicating over a secure transport. The I2RS protocol MUST be 
able to provide atomicity of an I2RS transaction, but it is 
not required to have multi-message atomicity and roll-back mechanism transactions.  
Multiple messages transactions may be impacted by the interdependency of data. This section discusses the 
details of these security requirements. 
</t> 
<t>There are dependencies in some of the requirements below.  For 
confidentiality (section 3.3) and integrity (section 3.4) to be achieved, the
client-agent must have mutual authentication (section 3.1) and secure transport (section 3.2).   
Since I2RS does not itself provide confidentiality and integrity, 
it depends on running over a secure Transport that provides these features. 
</t> 
<section title="Mutual authentication of an I2RS client and an I2RS Agent ">  
<t>The I2RS architecture <xref target="RFC7921"></xref>
sets the following requirements:  
<list style="symbols">
<t>SEC-REQ-01: All I2RS clients and I2RS agents MUST have an identity, and at least one unique 
identifier that uniquely identifies each party in the I2RS protocol context. </t>
<t>SEC-REQ-02: The I2RS protocol MUST utilize these identifiers for mutual identification of
the I2RS client and I2RS agent. </t>
<!-- XXX JMH - "message" below is ambiguous within the context of our document set.  Suggest clarifying -->
<t>SEC-REQ-03: An I2RS agent, upon receiving an I2RS message from a
I2RS client, MUST confirm that the I2RS client has a valid identifier.</t>
<t>SEC-REQ-04: The I2RS client, upon receiving an I2RS message from an
I2RS agent, MUST confirm the I2RS agent has a valid identifier.</t>
 <t>SEC-REQ-05: Identifier distribution and the loading of these identifiers into I2RS agent
 and I2RS Client SHOULD occur outside the I2RS protocol prior to the 
 I2RS protocol establishing a connection between I2RS client and I2RS agent. 
 (One mechanism such mechanism is AAA protocols.) </t>
<t> SEC-REQ-06: Each Identifier MUST have just one priority.</t>
<!-- XXX JMH - the conditional but clause below could use restating. -->
<t> SEC-REQ-07: Each Identifier is associated with one secondary identifier during a 
particular I2RS transaction (e.g. read/write sequence), but the secondary 
identifier may vary during the time a connection between the I2RS client and 
I2RS agent is active. Since a single I2RS client may be use by multiple
applications, the secondary identifier may vary as the I2RS client is
utilize by different application each of whom have a unique secondary identity 
and identifier. </t>
</list>
</t>
</section> 
<section title="Transport Requirements Based on Mutual Authentication" >
<t>SEC-REQ-08: The I2RS protocol MUST be able to transfer data over a
   secure transport and optionally MAY be able to transfer data over a
   non-secure transport.  A secure transport MUST provide data
   confidentiality, data integrity, and replay prevention.
</t> 
<t>
The default I2RS transport is a secure transport. 
</t>
<t>
A non-secure transport can be used for publishing telemetry data 
or other operational state that was specifically indicated to
non-confidential in the data model in the Yang syntax.  
Since the non-secure transport is optional, the operator 
may transmit this data over a secure transport. The following 
are further restrictions on the non-secure transport:
<list style="symbols">
<t>The configuration of ephemeral data in the I2RS Agent by the 
I2RS client SHOULD be done over a secure transport.
</t>
<t>It is anticipated that the passing of most I2RS  ephemeral state operational 
status SHOULD be done over a secure transport. 
</t> 
<t>As <xref target="I-D.ietf-i2rs-ephemeral-state"></xref> notes, each  
data model SHOULD indicate whether the transport
exchanging the data between I2RS client and I2RS agent is 
secure or insecure. 
</t>
</list>
</t>
<t>
SEC-REQ-09: A secure transport MUST be associated with a key management 
solution that can guarantee that only the entities having sufficient privileges 
can get the keys to encrypt/decrypt the sensitive data.  
Per <xref target="RFC4107">BCP107</xref> this key management system SHOULD be automatic, 
but MAY be manual in the following scenarios:
<list>
<t>a) The environment has limited bandwidth or high round-trip times.</t>  
<t>b) The information being protected has low value.</t>
<t>c) The total volume of traffic over the entire lifetime of the long-term session key will be very low.</t>
<t>d) The scale of the deployment is limited.</t>
</list>
</t>
<t>
Most I2RS environments (Clients and Agents) will not have the environment
described by <xref target="RFC4107">BCP107</xref> but a few I2RS use cases 
required limited non-secure light-weight telemetry messages
that have these requirements.  An I2RS data model must indicate which portions can be
served by manual key management. 
</t>
<t> SEC-REQ-10: The I2RS protocol MUST be able to support multiple secure transport
sessions providing protocol and data communication between an I2RS Agent
and an I2RS client.  However, a single I2RS Agent to I2RS client connection MAY
elect to use a single secure transport session or a single 
non-secure transport session. </t>
<t>SEC-REQ-11: The I2RS Client and I2RS Agent protocol SHOULD implement
mechanisms that mitigate DoS attacks.</t>  
</section>
<section title="Data Confidentiality Requirements"> 
<t>SEC-REQ-12: In a critical infrastructure, certain data within routing elements is
sensitive and read/write operations on such data SHOULD be controlled in order to protect 
its confidentiality.  For example, most carriers do not want a router's 
configuration and data flow statistics known by hackers or their competitors.  
While carriers may share peering information, most carriers do not share 
configuration and traffic statistics. To achieve this, access control to sensitive
data needs to be provided, and the confidentiality protection on
 such data during transportation needs to be enforced. 
</t>
</section>
<section title="Data Integrity Requirements">
<t> SEC-REQ-13: An integrity protection mechanism for I2RS MUST be provided
that will be able to ensure the following: 
<list>
<t>1) the data being protected is not modified without detection during 
its transportation,  
</t>
<t>2) the data is actually from where it is expected to come from, and 
</t>
<t>3) the data is not repeated from some earlier interaction of the protocol.
(That is, when both confidentiality and integrity of data is properly protected, it 
is possible to ensure that encrypted data is not modified
or replayed without detection.) 
</t>
</list>
</t>
<t>SEC-REQ-14: The I2RS client to I2RS agent transport protocol MUST 
protect against replay attack. </t>
<t>Requirements SEC-REQ-13 and SEC-REQ-14 are requirements for the secure 
channel which must be supported as the default by every I2RS Agent, and 
by every I2RS client communicating over a secure transport.    
In order to provide some traceability or notification for the non-secure protocol,
SEC-REQ-15 suggests traceability and notification are important to include for
any non-secure protocol.</t>
<t>SEC-REQ-15: The I2RS protocol MUST provide a mechanism for 
message traceability and notification requirements 
requirements found in <xref target="RFC7922"></xref> and
<xref target="RFC7923"></xref> that can be supported 
in communication channel that is non-secure to trace or notify about potential
security issues.</t>
</section>
 <section title="Role-Based Data Model Security">
 <t>The <xref target="RFC7921">I2RS Architecture</xref> defines a 
role or security role as specifying read, write, or notification access by a I2RS client to
data within an agent's data model.  
</t>
<t> SEC-REQ-16: The rules around what role is permitted to access and manipulate what 
information plus a secure transport (which protects the data in transit)  
SHOULD ensure that data of any level of sensitivity is 
reasonably protected from being observed by those without permission 
to view it, so that privacy requirements are met.
</t>
 <t> SEC-REQ-17: Role security MUST work when multiple transport connections are being used
 between the I2RS client and I2RS agent as the <xref target="RFC7921">I2RS architecture</xref> states. 
 These transport message streams may start/stop without affecting the existence of the client/agent
 data exchange.  TCP supports a single stream of data. SCTP <xref target="RFC4960" /> provides
 security for multiple streams plus end-to-end transport of data. 
 </t> 
<t> SEC-REQ-18: I2RS clients MAY be used by multiple applications to configure routing 
 via I2RS agents, receive status reports, turn on the I2RS audit stream, or turn 
 on I2RS traceability.  Application software using I2RS client functions
 may host multiple secure identities, but each connection will use
 only one identifier with one priority.  Therefore, the security of each 
 I2RS Client to I2RS Agent connection is unique. 
 </t>
 <t> Please note the security of the application to 
 I2RS client connection is outside of the I2RS protocol or I2RS interface. 
  </t>  
<t>Sec-REQ-19: If an I2RS agents or an I2RS client is tightly 
correlated with a person, then the I2RS protocol and data models 
SHOULD provide additional security that protects the person's privacy. 
An example of an I2RS agent correlated with a person is a I2RS agent 
running on someone's phone to control tethering, and an example of 
a I2RS client might be the client tracking such tethering. 
This protection MAY require a variety of forms including: 
"operator-applied knobs", roles that restrict personal access, 
data-models with specific "privacy roles", and access filters.  
</t>
</section> 
<section title="Security of the environment">
<t>The security for the implementation of a protocol also considers the 
protocol environment.  The environmental security requirements are found in: 
<xref target="I-D.ietf-i2rs-security-environment-reqs"></xref>. 
</t>
</section>
</section>
 
<section anchor="Acks" title="Acknowledgement">
<t>The authors would like to thank Wes George, Ahmed Abro, Qin Wu, Eric Yu, 
Joel Halpern, Scott Brim, Nancy Cam-Winget, DaCheng Zhang, Alia Atlas, and Jeff Haas for their
contributions to the I2RS security requirements discussion and this document.
The authors would like to thank Bob Moskowitz for his review of the requirements. 
</t>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>This draft includes no request to IANA.</t>
</section>

 <section title="Security Considerations">
<t>This is a document about security requirements for the I2RS protocol and
data modules.  The whole document is security considerations. </t>
</section>
  
</middle>  
<back>
<references title="Normative References">
   &RFC2119;
   &RFC4107;
   &RFC4949;
   &RFC7920; 
   &RFC7921;
</references>
<references title="Informative References">
   &RFC4960;
   &I-D.ietf-i2rs-ephemeral-state;
   &RFC7922;
   &RFC7923;
   &I-D.ietf-i2rs-security-environment-reqs;
   </references>
  
</back>
</rfc>
