[Note that this file is a concatenation of more than one RFC.]





Network Working Group                                        E. Rescorla
Request for Comments: 3552                                    RTFM, Inc.
BCP: 72                                                        B. Korver
Category: Best Current Practice                          Xythos Software
                                            Internet Architecture Board
                                                                    IAB
                                                              July 2003


      Guidelines for Writing RFC Text on Security Considerations

Status of this Memo

  This document specifies an Internet Best Current Practices for the
  Internet Community, and requests discussion and suggestions for
  improvements.  Distribution of this memo is unlimited.

Copyright Notice

  Copyright (C) The Internet Society (2003).  All Rights Reserved.

Abstract

  All RFCs are required to have a Security Considerations section.
  Historically, such sections have been relatively weak.  This document
  provides guidelines to RFC authors on how to write a good Security
  Considerations section.

Table of Contents

  1. Introduction . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1. Requirements. . . . . . . . . . . . . . . . . . . . .   3
  2. The Goals of Security. . . . . . . . . . . . . . . . . . .   3
     2.1. Communication Security. . . . . . . . . . . . . . . .   3
          2.1.1. Confidentiality. . . . . . . . . . . . . . . .   4
          2.1.2. Data Integrity . . . . . . . . . . . . . . . .   4
          2.1.3. Peer Entity authentication . . . . . . . . . .   4
     2.2. Non-Repudiation . . . . . . . . . . . . . . . . . . .   5
     2.3. Systems Security. . . . . . . . . . . . . . . . . . .   5
          2.3.1. Unauthorized Usage . . . . . . . . . . . . . .   6
          2.3.2. Inappropriate Usage. . . . . . . . . . . . . .   6
          2.3.3. Denial of Service. . . . . . . . . . . . . . .   6
  3. The Internet Threat Model. . . . . . . . . . . . . . . . .   6
     3.1. Limited Threat Models . . . . . . . . . . . . . . . .   7
     3.2. Passive Attacks . . . . . . . . . . . . . . . . . . .   7
          3.2.1. Confidentiality Violations . . . . . . . . . .   8
          3.2.2. Password Sniffing. . . . . . . . . . . . . . .   8
          3.2.3. Offline Cryptographic Attacks. . . . . . . . .   9



Rescorla & Korver        Best Current Practice                  [Page 1]

RFC 3552           Security Considerations Guidelines          July 2003


     3.3. Active Attacks. . . . . . . . . . . . . . . . . . . .   9
          3.3.1. Replay Attacks . . . . . . . . . . . . . . . .  10
          3.3.2. Message Insertion. . . . . . . . . . . . . . .  10
          3.3.3. Message Deletion . . . . . . . . . . . . . . .  11
          3.3.4. Message Modification . . . . . . . . . . . . .  11
          3.3.5. Man-In-The-Middle. . . . . . . . . . . . . . .  12
     3.4. Topological Issues. . . . . . . . . . . . . . . . . .  12
     3.5. On-path versus off-path . . . . . . . . . . . . . . .  13
     3.6. Link-local. . . . . . . . . . . . . . . . . . . . . .  13
  4. Common Issues. . . . . . . . . . . . . . . . . . . . . . .  13
     4.1. User Authentication . . . . . . . . . . . . . . . . .  14
          4.1.1. Username/Password. . . . . . . . . . . . . . .  14
          4.1.2. Challenge Response and One Time Passwords. . .  14
          4.1.3. Shared Keys. . . . . . . . . . . . . . . . . .  15
          4.1.4. Key Distribution Centers . . . . . . . . . . .  15
          4.1.5. Certificates . . . . . . . . . . . . . . . . .  15
          4.1.6. Some Uncommon Systems. . . . . . . . . . . . .  15
          4.1.7. Host Authentication. . . . . . . . . . . . . .  16
     4.2. Generic Security Frameworks . . . . . . . . . . . . .  16
     4.3. Non-repudiation . . . . . . . . . . . . . . . . . . .  17
     4.4. Authorization vs. Authentication. . . . . . . . . . .  18
          4.4.1. Access Control Lists . . . . . . . . . . . . .  18
          4.4.2. Certificate Based Systems. . . . . . . . . . .  18
     4.5. Providing Traffic Security. . . . . . . . . . . . . .  19
          4.5.1. IPsec. . . . . . . . . . . . . . . . . . . . .  19
          4.5.2. SSL/TLS. . . . . . . . . . . . . . . . . . . .  20
          4.5.3. Remote Login . . . . . . . . . . . . . . . . .  22
     4.6. Denial of Service Attacks and Countermeasures . . . .  22
          4.6.1. Blind Denial of Service. . . . . . . . . . . .  23
          4.6.2. Distributed Denial of Service. . . . . . . . .  23
          4.6.3. Avoiding Denial of Service . . . . . . . . . .  24
          4.6.4. Example: TCP SYN Floods. . . . . . . . . . . .  24
          4.6.5. Example: Photuris. . . . . . . . . . . . . . .  25
     4.7. Object vs. Channel Security . . . . . . . . . . . . .  25
     4.8. Firewalls and Network Topology. . . . . . . . . . . .  26
  5. Writing Security Considerations Sections . . . . . . . . .  26
  6. Examples . . . . . . . . . . . . . . . . . . . . . . . . .  28
     6.1. SMTP. . . . . . . . . . . . . . . . . . . . . . . . .  29
          6.1.1. Security Considerations. . . . . . . . . . . .  29
          6.1.2. Communications security issues . . . . . . . .  34
          6.1.3. Denial of Service. . . . . . . . . . . . . . .  36
     6.2. VRRP. . . . . . . . . . . . . . . . . . . . . . . . . .36
          6.2.1. Security Considerations. . . . . . . . . . . .  36
  7. Acknowledgments. . . . . . . . . . . . . . . . . . . . . .  38
  8. Normative References . . . . . . . . . . . . . . . . . . .  39
  9. Informative References . . . . . . . . . . . . . . . . . .  41
  10.Security Considerations. . . . . . . . . . . . . . . . . .  42
  Appendix A. . . . . . . . . . . . . . . . . . . . . . . . . .  43



Rescorla & Korver        Best Current Practice                  [Page 2]

RFC 3552           Security Considerations Guidelines          July 2003


  Authors' Addresses. . . . . . . . . . . . . . . . . . . . . .  43
  Full Copyright Statement. . . . . . . . . . . . . . . . . . .  44

1. Introduction

  All RFCs are required by RFC 2223 to contain a Security
  Considerations section.  The purpose of this is both to encourage
  document authors to consider security in their designs and to inform
  the reader of relevant security issues.  This memo is intended to
  provide guidance to RFC authors in service of both ends.

  This document is structured in three parts.  The first is a
  combination security tutorial and definition of common terms; the
  second is a series of guidelines for writing Security Considerations;
  the third is a series of examples.

1.1. Requirements

  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 BCP 14, RFC 2119
  [KEYWORDS].

2. The Goals of Security

  Most people speak of security as if it were a single monolithic
  property of a protocol or system, however, upon reflection, one
  realizes that it is clearly not true.  Rather, security is a series
  of related but somewhat independent properties.  Not all of these
  properties are required for every application.

  We can loosely divide security goals into those related to protecting
  communications (COMMUNICATION SECURITY, also known as COMSEC) and
  those relating to protecting systems (ADMINISTRATIVE SECURITY or
  SYSTEM SECURITY).  Since communications are carried out by systems
  and access to systems is through communications channels, these goals
  obviously interlock, but they can also be independently provided.

2.1. Communication Security

  Different authors partition the goals of communication security
  differently.  The partitioning we've found most useful is to divide
  them into three major categories: CONFIDENTIALITY, DATA INTEGRITY and
  PEER ENTITY AUTHENTICATION.







Rescorla & Korver        Best Current Practice                  [Page 3]

RFC 3552           Security Considerations Guidelines          July 2003


2.1.1. Confidentiality

  When most people think of security, they think of CONFIDENTIALITY.
  Confidentiality means that your data is kept secret from unintended
  listeners.  Usually, these listeners are simply eavesdroppers.  When
  an adversary taps your phone, it poses a risk to your
  confidentiality.

  Obviously, if you have secrets, then you are probably concerned about
  others discovering them.  Thus, at the very least, you want to
  maintain confidentiality.  When you see spies in the movies go into
  the bathroom and turn on all the water to foil bugging, the property
  they're looking for is confidentiality.

2.1.2. Data Integrity

  The second primary goal is DATA INTEGRITY.  The basic idea here is
  that we want to make sure that the data we receive is the same data
  that the sender has sent.  In paper-based systems, some data
  integrity comes automatically.  When you receive a letter written in
  pen you can be fairly certain that no words have been removed by an
  attacker because pen marks are difficult to remove from paper.
  However, an attacker could have easily added some marks to the paper
  and completely changed the meaning of the message.  Similarly, it's
  easy to shorten the page to truncate the message.

  On the other hand, in the electronic world, since all bits look
  alike, it's trivial to tamper with messages in transit.  You simply
  remove the message from the wire, copy out the parts you like, add
  whatever data you want, and generate a new message of your choosing,
  and the recipient is no wiser.  This is the moral equivalent of the
  attacker taking a letter you wrote, buying some new paper and
  recopying the message, changing it as he does it.  It's just a lot
  easier to do electronically since all bits look alike.

2.1.3. Peer Entity authentication

  The third property we're concerned with is PEER ENTITY
  AUTHENTICATION.  What we mean by this is that we know that one of the
  endpoints in the communication is the one we intended.  Without peer
  entity authentication, it's very difficult to provide either
  confidentiality or data integrity.  For instance, if we receive a
  message from Alice, the property of data integrity doesn't do us much
  good unless we know that it was in fact sent by Alice and not the
  attacker.  Similarly, if we want to send a confidential message to
  Bob, it's not of much value to us if we're actually sending a
  confidential message to the attacker.




Rescorla & Korver        Best Current Practice                  [Page 4]

RFC 3552           Security Considerations Guidelines          July 2003


  Note that peer entity authentication can be provided asymmetrically.
  When you call someone on the phone, you can be fairly certain that
  you have the right person -- or at least that you got a person who's
  actually at the phone number you called.  On the other hand, if they
  don't have caller ID, then the receiver of a phone call has no idea
  who's calling them.  Calling someone on the phone is an example of
  recipient authentication, since you know who the recipient of the
  call is, but they don't know anything about the sender.

  In messaging situations, you often wish to use peer entity
  authentication to establish the identity of the sender of a certain
  message.  In such contexts, this property is called DATA ORIGIN
  AUTHENTICATION.

2.2. Non-Repudiation

  A system that provides endpoint authentication allows one party to be
  certain of the identity of someone with whom he is communicating.
  When the system provides data integrity a receiver can be sure of
  both the sender's identity and that he is receiving the data that
  that sender meant to send.  However, he cannot necessarily
  demonstrate this fact to a third party.  The ability to make this
  demonstration is called NON-REPUDIATION.

  There are many situations in which non-repudiation is desirable.
  Consider the situation in which two parties have signed a contract
  which one party wishes to unilaterally abrogate.  He might simply
  claim that he had never signed it in the first place.  Non-
  repudiation prevents him from doing so, thus protecting the
  counterparty.

  Unfortunately, non-repudiation can be very difficult to achieve in
  practice and naive approaches are generally inadequate.  Section 4.3
  describes some of the difficulties, which generally stem from the
  fact that the interests of the two parties are not aligned -- one
  party wishes to prove something that the other party wishes to deny.

2.3. Systems Security

  In general, systems security is concerned with protecting one's
  machines and data.  The intent is that machines should be used only
  by authorized users and for the purposes that the owners intend.
  Furthermore, they should be available for those purposes.  Attackers
  should not be able to deprive legitimate users of resources.







Rescorla & Korver        Best Current Practice                  [Page 5]

RFC 3552           Security Considerations Guidelines          July 2003


2.3.1. Unauthorized Usage

  Most systems are not intended to be completely accessible to the
  public.  Rather, they are intended to be used only by certain
  authorized individuals.  Although many Internet services are
  available to all Internet users, even those servers generally offer a
  larger subset of services to specific users.  For instance, Web
  Servers often will serve data to any user, but restrict the ability
  to modify pages to specific users.  Such modifications by the general
  public would be UNAUTHORIZED USAGE.

2.3.2. Inappropriate Usage

  Being an authorized user does not mean that you have free run of the
  system.  As we said above, some activities are restricted to
  authorized users, some to specific users, and some activities are
  generally forbidden to all but administrators.  Moreover, even
  activities which are in general permitted might be forbidden in some
  cases.  For instance, users may be permitted to send email but
  forbidden from sending files above a certain size, or files which
  contain viruses.  These are examples of INAPPROPRIATE USAGE.

2.3.3. Denial of Service

  Recall that our third goal was that the system should be available to
  legitimate users.  A broad variety of attacks are possible which
  threaten such usage.  Such attacks are collectively referred to as
  DENIAL OF SERVICE attacks.  Denial of service attacks are often very
  easy to mount and difficult to stop.  Many such attacks are designed
  to consume machine resources, making it difficult or impossible to
  serve legitimate users.  Other attacks cause the target machine to
  crash, completely denying service to users.

3. The Internet Threat Model

  A THREAT MODEL describes the capabilities that an attacker is assumed
  to be able to deploy against a resource.  It should contain such
  information as the resources available to an attacker in terms of
  information, computing capability, and control of the system.  The
  purpose of a threat model is twofold.  First, we wish to identify the
  threats we are concerned with.  Second, we wish to rule some threats
  explicitly out of scope.  Nearly every security system is vulnerable
  to a sufficiently dedicated and resourceful attacker.

  The Internet environment has a fairly well understood threat model.
  In general, we assume that the end-systems engaging in a protocol
  exchange have not themselves been compromised.  Protecting against an
  attack when one of the end-systems has been compromised is



Rescorla & Korver        Best Current Practice                  [Page 6]

RFC 3552           Security Considerations Guidelines          July 2003


  extraordinarily difficult.  It is, however, possible to design
  protocols which minimize the extent of the damage done under these
  circumstances.

  By contrast, we assume that the attacker has nearly complete control
  of the communications channel over which the end-systems communicate.
  This means that the attacker can read any PDU (Protocol Data Unit) on
  the network and undetectably remove, change, or inject forged packets
  onto the wire.  This includes being able to generate packets that
  appear to be from a trusted machine.  Thus, even if the end-system
  with which you wish to communicate is itself secure, the Internet
  environment provides no assurance that packets which claim to be from
  that system in fact are.

  It's important to realize that the meaning of a PDU is different at
  different levels.  At the IP level, a PDU means an IP packet.  At the
  TCP level, it means a TCP segment.  At the application layer, it
  means some kind of application PDU.  For instance, at the level of
  email, it might either mean an RFC-822 message or a single SMTP
  command.  At the HTTP level, it might mean a request or response.

3.1. Limited Threat Models

  As we've said, a resourceful and dedicated attacker can control the
  entire communications channel.  However, a large number of attacks
  can be mounted by an attacker with fewer resources.  A number of
  currently known attacks can be mounted by an attacker with limited
  control of the network.  For instance, password sniffing attacks can
  be mounted by an attacker who can only read arbitrary packets.  This
  is generally referred to as a PASSIVE ATTACK [INTAUTH].

  By contrast, Morris' sequence number guessing attack [SEQNUM] can be
  mounted by an attacker who can write but not read arbitrary packets.
  Any attack which requires the attacker to write to the network is
  known as an ACTIVE ATTACK.

  Thus, a useful way of organizing attacks is to divide them based on
  the capabilities required to mount the attack.  The rest of this
  section describes these categories and provides some examples of each
  category.

3.2. Passive Attacks

  In a passive attack, the attacker reads packets off the network but
  does not write them.  The simplest way to mount such an attack is to
  simply be on the same LAN as the victim.  On most common LAN
  configurations, including Ethernet, 802.3, and FDDI, any machine on
  the wire can read all traffic destined for any other machine on the



Rescorla & Korver        Best Current Practice                  [Page 7]

RFC 3552           Security Considerations Guidelines          July 2003


  same LAN.  Note that switching hubs make this sort of sniffing
  substantially more difficult, since traffic destined for a machine
  only goes to the network segment which that machine is on.

  Similarly, an attacker who has control of a host in the
  communications path between two victim machines is able to mount a
  passive attack on their communications.  It is also possible to
  compromise the routing infrastructure to specifically arrange that
  traffic passes through a compromised machine.  This might involve an
  active attack on the routing infrastructure to facilitate a passive
  attack on a victim machine.

  Wireless communications channels deserve special consideration,
  especially with the recent and growing popularity of wireless-based
  LANs, such as those using 802.11.  Since the data is simply broadcast
  on well known radio frequencies, an attacker simply needs to be able
  to receive those transmissions.  Such channels are especially
  vulnerable to passive attacks.  Although many such channels include
  cryptographic protection, it is often of such poor quality as to be
  nearly useless [WEP].

  In general, the goal of a passive attack is to obtain information
  which the sender and receiver would prefer to remain private.  This
  private information may include credentials useful in the electronic
  world and/or passwords or credentials useful in the outside world,
  such as confidential business information.

3.2.1. Confidentiality Violations

  The classic example of passive attack is sniffing some inherently
  private data off of the wire.  For instance, despite the wide
  availability of SSL, many credit card transactions still traverse the
  Internet in the clear.  An attacker could sniff such a message and
  recover the credit card number, which can then be used to make
  fraudulent transactions.  Moreover, confidential business information
  is routinely transmitted over the network in the clear in email.

3.2.2. Password Sniffing

  Another example of a passive attack is PASSWORD SNIFFING.  Password
  sniffing is directed towards obtaining unauthorized use of resources.
  Many protocols, including [TELNET], [POP], and [NNTP] use a shared
  password to authenticate the client to the server.  Frequently, this
  password is transmitted from the client to the server in the clear
  over the communications channel.  An attacker who can read this
  traffic can therefore capture the password and REPLAY it.  In other
  words, the attacker can initiate a connection to the server and pose
  as the client and login using the captured password.



Rescorla & Korver        Best Current Practice                  [Page 8]

RFC 3552           Security Considerations Guidelines          July 2003


  Note that although the login phase of the attack is active, the
  actual password capture phase is passive.  Moreover, unless the
  server checks the originating address of connections, the login phase
  does not require any special control of the network.

3.2.3. Offline Cryptographic Attacks

  Many cryptographic protocols are subject to OFFLINE ATTACKS.  In such
  a protocol, the attacker recovers data which has been processed using
  the victim's secret key and then mounts a cryptanalytic attack on
  that key.  Passwords make a particularly vulnerable target because
  they are typically low entropy.  A number of popular password-based
  challenge response protocols are vulnerable to DICTIONARY ATTACK.
  The attacker captures a challenge-response pair and then proceeds to
  try entries from a list of common words (such as a dictionary file)
  until he finds a password that produces the right response.

  A similar such attack can be mounted on a local network when NIS is
  used.  The Unix password is crypted using a one-way function, but
  tools exist to break such crypted passwords [KLEIN].  When NIS is
  used, the crypted password is transmitted over the local network and
  an attacker can thus sniff the password and attack it.

  Historically, it has also been possible to exploit small operating
  system security holes to recover the password file using an active
  attack.  These holes can then be bootstrapped into an actual account
  by using the aforementioned offline password recovery techniques.
  Thus we combine a low-level active attack with an offline passive
  attack.

3.3. Active Attacks

  When an attack involves writing data to the network, we refer to this
  as an ACTIVE ATTACK.  When IP is used without IPsec, there is no
  authentication for the sender address.  As a consequence, it's
  straightforward for an attacker to create a packet with a source
  address of his choosing.  We'll refer to this as a SPOOFING ATTACK.

  Under certain circumstances, such a packet may be screened out by the
  network.  For instance, many packet filtering firewalls screen out
  all packets with source addresses on the INTERNAL network that arrive
  on the EXTERNAL interface.  Note, however, that this provides no
  protection against an attacker who is inside the firewall.  In
  general, designers should assume that attackers can forge packets.







Rescorla & Korver        Best Current Practice                  [Page 9]

RFC 3552           Security Considerations Guidelines          July 2003


  However, the ability to forge packets does not go hand in hand with
  the ability to receive arbitrary packets.  In fact, there are active
  attacks that involve being able to send forged packets but not
  receive the responses.  We'll refer to these as BLIND ATTACKS.

  Note that not all active attacks require forging addresses.  For
  instance, the TCP SYN denial of service attack [TCPSYN] can be
  mounted successfully without disguising the sender's address.
  However, it is common practice to disguise one's address in order to
  conceal one's identity if an attack is discovered.

  Each protocol is susceptible to specific active attacks, but
  experience shows that a number of common patterns of attack can be
  adapted to any given protocol.  The next sections describe a number
  of these patterns and give specific examples of them as applied to
  known protocols.

3.3.1. Replay Attacks

  In a REPLAY ATTACK, the attacker records a sequence of messages off
  of the wire and plays them back to the party which originally
  received them.  Note that the attacker does not need to be able to
  understand the messages.  He merely needs to capture and retransmit
  them.

  For example, consider the case where an S/MIME message is being used
  to request some service, such as a credit card purchase or a stock
  trade.  An attacker might wish to have the service executed twice, if
  only to inconvenience the victim.  He could capture the message and
  replay it, even though he can't read it, causing the transaction to
  be executed twice.

3.3.2. Message Insertion

  In a MESSAGE INSERTION attack, the attacker forges a message with
  some chosen set of properties and injects it into the network.  Often
  this message will have a forged source address in order to disguise
  the identity of the attacker.

  For example, a denial-of-service attack can be mounted by inserting a
  series of spurious TCP SYN packets directed towards the target host.
  The target host responds with its own SYN and allocates kernel data
  structures for the new connection.  The attacker never completes the
  3-way handshake, so the allocated connection endpoints just sit there
  taking up kernel memory.  Typical TCP stack implementations only






Rescorla & Korver        Best Current Practice                 [Page 10]

RFC 3552           Security Considerations Guidelines          July 2003


  allow some limited number of connections in this "half-open" state
  and when this limit is reached, no more connections can be initiated,
  even from legitimate hosts.  Note that this attack is a blind attack,
  since the attacker does not need to process the victim's SYNs.

3.3.3. Message Deletion

  In a MESSAGE DELETION attack, the attacker removes a message from the
  wire.  Morris' sequence number guessing attack [SEQNUM] often
  requires a message deletion attack to be performed successfully.  In
  this blind attack, the host whose address is being forged will
  receive a spurious TCP SYN packet from the host being attacked.
  Receipt of this SYN packet generates a RST, which would tear the
  illegitimate connection down.  In order to prevent this host from
  sending a RST so that the attack can be carried out successfully,
  Morris describes flooding this host to create queue overflows such
  that the SYN packet is lost and thus never responded to.

3.3.4. Message Modification

  In a MESSAGE MODIFICATION attack, the attacker removes a message from
  the wire, modifies it, and reinjects it into the network.  This sort
  of attack is particularly useful if the attacker wants to send some
  of the data in the message but also wants to change some of it.

  Consider the case where the attacker wants to attack an order for
  goods placed over the Internet.  He doesn't have the victim's credit
  card number so he waits for the victim to place the order and then
  replaces the delivery address (and possibly the goods description)
  with his own.  Note that this particular attack is known as a CUT-
  AND-PASTE attack since the attacker cuts the credit card number out
  of the original message and pastes it into the new message.

  Another interesting example of a cut-and-paste attack is provided by
  [IPSPPROB].  If IPsec ESP is used without any MAC then it is possible
  for the attacker to read traffic encrypted for a victim on the same
  machine.  The attacker attaches an IP header corresponding to a port
  he controls onto the encrypted IP packet.  When the packet is
  received by the host it will automatically be decrypted and forwarded
  to the attacker's port.  Similar techniques can be used to mount a
  session hijacking attack.  Both of these attacks can be avoided by
  always using message authentication when you use encryption.  Note
  that this attack only works if (1) no MAC check is being used, since
  this attack generates damaged packets (2) a host-to-host SA is being
  used, since a user-to-user SA will result in an inconsistency between
  the port associated with the SA and the target port.  If the
  receiving machine is single-user than this attack is infeasible.




Rescorla & Korver        Best Current Practice                 [Page 11]

RFC 3552           Security Considerations Guidelines          July 2003


3.3.5. Man-In-The-Middle

  A MAN-IN-THE-MIDDLE attack combines the above techniques in a special
  form: The attacker subverts the communication stream in order to pose
  as the sender to receiver and the receiver to the sender:

     What Alice and Bob think:
     Alice  <---------------------------------------------->  Bob

     What's happening:
     Alice  <---------------->  Attacker  <---------------->  Bob

  This differs fundamentally from the above forms of attack because it
  attacks the identity of the communicating parties, rather than the
  data stream itself.  Consequently, many techniques which provide
  integrity of the communications stream are insufficient to protect
  against man-in-the-middle attacks.

  Man-in-the-middle attacks are possible whenever a protocol lacks PEER
  ENTITY AUTHENTICATION.  For instance, if an attacker can hijack the
  client TCP connection during the TCP handshake (perhaps by responding
  to the client's SYN before the server does), then the attacker can
  open another connection to the server and begin a man-in-the-middle
  attack.  It is also trivial to mount man-in-the-middle attacks on
  local networks via ARP spoofing -- the attacker forges an ARP with
  the victim's IP address and his own MAC address.  Tools to mount this
  sort of attack are readily available.

  Note that it is only necessary to authenticate one side of the
  transaction in order to prevent man-in-the-middle attacks.  In such a
  situation the the peers can establish an association in which only
  one peer is authenticated.  In such a system, an attacker can
  initiate an association posing as the unauthenticated peer but cannot
  transmit or access data being sent on a legitimate connection.  This
  is an acceptable situation in contexts such as Web e-commerce where
  only the server needs to be authenticated (or the client is
  independently authenticated via some non-cryptographic mechanism such
  as a credit card number).

3.4. Topological Issues

  In practice, the assumption that it's equally easy for an attacker to
  read and generate all packets is false, since the Internet is not
  fully connected.  This has two primary implications.







Rescorla & Korver        Best Current Practice                 [Page 12]

RFC 3552           Security Considerations Guidelines          July 2003


3.5. On-path versus off-path

  In order for a datagram to be transmitted from one host to another,
  it generally must traverse some set of intermediate links and
  gateways.  Such gateways are naturally able to read, modify, or
  remove any datagram transmitted along that path.  This makes it much
  easier to mount a wide variety of attacks if you are on-path.

  Off-path hosts can, of course, transmit arbitrary datagrams that
  appear to come from any hosts but cannot necessarily receive
  datagrams intended for other hosts.  Thus, if an attack depends on
  being able to receive data, off-path hosts must first subvert the
  topology in order to place themselves on-path.  This is by no means
  impossible but is not necessarily trivial.

  Applications protocol designers MUST NOT assume that all attackers
  will be off-path.  Where possible, protocols SHOULD be designed to
  resist attacks from attackers who have complete control of the
  network.  However, designers are expected to give more weight to
  attacks which can be mounted by off-path attackers as well as on-path
  ones.

3.6. Link-local

  One specialized case of on-path is being on the same link.  In some
  situations, it's desirable to distinguish between hosts who are on
  the local network and those who are not.  The standard technique for
  this is verifying the IP TTL value [IP].  Since the TTL must be
  decremented by each forwarder, a protocol can demand that TTL be set
  to 255 and that all receivers verify the TTL.  A receiver then has
  some reason to believe that conforming packets are from the same
  link.  Note that this technique must be used with care in the
  presence of tunneling systems, since such systems may pass packets
  without decrementing TTL.

4. Common Issues

  Although each system's security requirements are unique, certain
  common requirements appear in a number of protocols.  Often, when
  naive protocol designers are faced with these requirements, they
  choose an obvious but insecure solution even though better solutions
  are available.  This section describes a number of issues seen in
  many protocols and the common pieces of security technology that may
  be useful in addressing them.







Rescorla & Korver        Best Current Practice                 [Page 13]

RFC 3552           Security Considerations Guidelines          July 2003


4.1. User Authentication

  Essentially every system which wants to control access to its
  resources needs some way to authenticate users.  A nearly uncountable
  number of such mechanisms have been designed for this purpose.  The
  next several sections describe some of these techniques.

4.1.1. Username/Password

  The most common access control mechanism is simple USERNAME/PASSWORD
  The user provides a username and a reusable password to the host
  which he wishes to use.  This system is vulnerable to a simple
  passive attack where the attacker sniffs the password off the wire
  and then initiates a new session, presenting the password.  This
  threat can be mitigated by hosting the protocol over an encrypted
  connection such as TLS or IPSEC.  Unprotected (plaintext)
  username/password systems are not acceptable in IETF standards.

4.1.2. Challenge Response and One Time Passwords

  Systems which desire greater security than USERNAME/PASSWORD often
  employ either a ONE TIME PASSWORD [OTP] scheme or a CHALLENGE-
  RESPONSE.  In a one time password scheme, the user is provided with a
  list of passwords, which must be used in sequence, one time each.
  (Often these passwords are generated from some secret key so the user
  can simply compute the next password in the sequence.)  SecureID and
  DES Gold are variants of this scheme.  In a challenge-response
  scheme, the host and the user share some secret (which often is
  represented as a password).  In order to authenticate the user, the
  host presents the user with a (randomly generated) challenge.  The
  user computes some function based on the challenge and the secret and
  provides that to the host, which verifies it.  Often this computation
  is performed in a handheld device, such as a DES Gold card.

  Both types of scheme provide protection against replay attack, but
  often still vulnerable to an OFFLINE KEYSEARCH ATTACK (a form of
  passive attack): As previously mentioned, often the one-time password
  or response is computed from a shared secret.  If the attacker knows
  the function being used, he can simply try all possible shared
  secrets until he finds one that produces the right output.  This is
  made easier if the shared secret is a password, in which case he can
  mount a DICTIONARY ATTACK -- meaning that he tries a list of common
  words (or strings) rather than just random strings.

  These systems are also often vulnerable to an active attack.  Unless
  communication security is provided for the entire session, the
  attacker can simply wait until authentication has been performed and
  hijack the connection.



Rescorla & Korver        Best Current Practice                 [Page 14]

RFC 3552           Security Considerations Guidelines          July 2003


4.1.3. Shared Keys

  CHALLENGE-RESPONSE type systems can be made secure against dictionary
  attack by using randomly generated shared keys instead of user-
  generated passwords.  If the keys are sufficiently large then
  keysearch attacks become impractical.  This approach works best when
  the keys are configured into the end nodes rather than memorized and
  typed in by users, since users have trouble remembering sufficiently
  long keys.

  Like password-based systems, shared key systems suffer from
  management problems.  Each pair of communicating parties must have
  their own agreed-upon key, which leads to there being a lot of keys.

4.1.4. Key Distribution Centers

  One approach to solving the large number of keys problem is to use an
  online "trusted third party" that mediates between the authenticating
  parties.  The trusted third party (generally called a a KEY
  DISTRIBUTION CENTER (KDC)) shares a symmetric key or password with
  each party in the system.  It first contacts the KDC which gives it a
  TICKET containing a randomly generated symmetric key encrypted under
  both peer's keys.  Since only the proper peers can decrypt the
  symmetric key the ticket can be used to establish a trusted
  association.  By far the most popular KDC system is Kerberos
  [KERBEROS].

4.1.5. Certificates

  A simple approach is to have all users have CERTIFICATES [PKIX] which
  they then use to authenticate in some protocol-specific way, as in
  [TLS] or [S/MIME].  A certificate is a signed credential binding an
  entity's identity to its public key.  The signer of a certificate is
  a CERTIFICATE AUTHORITY (CA), whose certificate may itself be signed
  by some superior CA.  In order for this system to work, trust in one
  or more CAs must be established in an out-of-band fashion.  Such CAs
  are referred to as TRUSTED ROOTS or ROOT CAS.  The primary obstacle
  to this approach in client-server type systems is that it requires
  clients to have certificates, which can be a deployment problem.

4.1.6. Some Uncommon Systems

  There are ways to do a better job than the schemes mentioned above,
  but they typically don't add much security unless communications
  security (at least message integrity) will be employed to secure the
  connection, because otherwise the attacker can merely hijack the
  connection after authentication has been performed.  A number of
  protocols ([EKE], [SPEKE], [SRP]) allow one to securely bootstrap a



Rescorla & Korver        Best Current Practice                 [Page 15]

RFC 3552           Security Considerations Guidelines          July 2003


  user's password into a shared key which can be used as input to a
  cryptographic protocol.  One major obstacle to the deployment of
  these protocols has been that their Intellectual Property status is
  extremely unclear.  Similarly, the user can authenticate using public
  key certificates (e.g., S-HTTP client authentication).  Typically
  these methods are used as part of a more complete security protocol.

4.1.7. Host Authentication

  Host authentication presents a special problem.  Quite commonly, the
  addresses of services are presented using a DNS hostname, for
  instance as a URL [URL].  When requesting such a service, one has to
  ensure that the entity that one is talking to not only has a
  certificate but that that certificate corresponds to the expected
  identity of the server.  The important thing to have is a secure
  binding between the certificate and the expected hostname.

  For instance, it is usually not acceptable for the certificate to
  contain an identity in the form of an IP address if the request was
  for a given hostname.  This does not provide end-to-end security
  because the hostname-IP mapping is not secure unless secure name
  resolution [DNSSEC] is being used.  This is a particular problem when
  the hostname is presented at the application layer but the
  authentication is performed at some lower layer.

4.2. Generic Security Frameworks

  Providing security functionality in a protocol can be difficult.  In
  addition to the problem of choosing authentication and key
  establishment mechanisms, one needs to integrate it into a protocol.
  One response to this problem (embodied in IPsec and TLS) is to create
  a lower-level security protocol and then insist that new protocols be
  run over that protocol.  Another approach that has recently become
  popular is to design generic application layer security frameworks.
  The idea is that you design a protocol that allows you to negotiate
  various security mechanisms in a pluggable fashion.  Application
  protocol designers then arrange to carry the security protocol PDUs
  in their application protocol.  Examples of such frameworks include
  GSS-API [GSS] and SASL [SASL].

  The generic framework approach has a number of problems.  First, it
  is highly susceptible to DOWNGRADE ATTACKS.  In a downgrade attack,
  an active attacker tampers with the negotiation in order to force the
  parties to negotiate weaker protection than they otherwise would.
  It's possible to include an integrity check after the negotiation and
  key establishment have both completed, but the strength of this
  integrity check is necessarily limited to the weakest common
  algorithm.  This problem exists with any negotiation approach, but



Rescorla & Korver        Best Current Practice                 [Page 16]

RFC 3552           Security Considerations Guidelines          July 2003


  generic frameworks exacerbate it by encouraging the application
  protocol author to just specify the framework rather than think hard
  about the appropriate underlying mechanisms, particularly since the
  mechanisms can very widely in the degree of security offered.

  Another problem is that it's not always obvious how the various
  security features in the framework interact with the application
  layer protocol.  For instance, SASL can be used merely as an
  authentication framework -- in which case the SASL exchange occurs
  but the rest of the connection is unprotected, but can also negotiate
  traffic protection, such as via GSS, as a mechanism.  Knowing under
  what circumstances traffic protection is optional and which it is
  required requires thinking about the threat model.

  In general, authentication frameworks are most useful in situations
  where new protocols are being added to systems with pre-existing
  legacy authentication systems.  A framework allows new installations
  to provide better authentication while not forcing existing sites
  completely redo their legacy authentication systems.  When the
  security requirements of a system can be clearly identified and only
  a few forms of authentication are used, choosing a single security
  mechanism leads to greater simplicity and predictability.  In
  situations where a framework is to be used, designers SHOULD
  carefully examine the framework's options and specify only the
  mechanisms that are appropriate for their particular threat model.
  If a framework is necessary, designers SHOULD choose one of the
  established ones instead of designing their own.

4.3. Non-repudiation

  The naive approach to non-repudiation is simply to use public-key
  digital signatures over the content.  The party who wishes to be
  bound (the SIGNING PARTY) digitally signs the message in question.
  The counterparty (the RELYING PARTY) can later point to the digital
  signature as proof that the signing party at one point agreed to the
  disputed message.  Unfortunately, this approach is insufficient.

  The easiest way for the signing party to repudiate the message is by
  claiming that his private key has been compromised and that some
  attacker (though not necessarily the relying party) signed the
  disputed message.  In order to defend against this attack the relying
  party needs to demonstrate that the signing party's key had not been
  compromised at the time of the signature.  This requires substantial
  infrastructure, including archival storage of certificate revocation
  information and timestamp servers to establish the time that the
  message was signed.





Rescorla & Korver        Best Current Practice                 [Page 17]

RFC 3552           Security Considerations Guidelines          July 2003


  Additionally, the relying party might attempt to trick the signing
  party into signing one message while thinking he's signing another.
  This problem is particularly severe when the relying party controls
  the infrastructure that the signing party uses for signing, such as
  in kiosk situations.  In many such situations the signing party's key
  is kept on a smartcard but the message to be signed is displayed by
  the relying party.

  All of these complications make non-repudiation a difficult service
  to deploy in practice.

4.4. Authorization vs. Authentication

  AUTHORIZATION is the process by which one determines whether an
  authenticated party has permission to access a particular resource or
  service.  Although tightly bound, it is important to realize that
  authentication and authorization are two separate mechanisms.
  Perhaps because of this tight coupling, authentication is sometimes
  mistakenly thought to imply authorization.  Authentication simply
  identifies a party, authorization defines whether they can perform a
  certain action.

  Authorization necessarily relies on authentication, but
  authentication alone does not imply authorization.  Rather, before
  granting permission to perform an action, the authorization mechanism
  must be consulted to determine whether that action is permitted.

4.4.1. Access Control Lists

  One common form of authorization mechanism is an access control list
  (ACL), which lists users that are permitted access to a resource.
  Since assigning individual authorization permissions to each resource
  is tedious, resources are often hierarchically arranged so that the
  parent resource's ACL is inherited by child resources.  This allows
  administrators to set top level policies and override them when
  necessary.

4.4.2. Certificate Based Systems

  While the distinction between authentication and authorization is
  intuitive when using simple authentication mechanisms such as
  username and password (i.e., everyone understands the difference
  between the administrator account and a user account), with more
  complex authentication mechanisms the distinction is sometimes lost.

  With certificates, for instance, presenting a valid signature does
  not imply authorization.  The signature must be backed by a
  certificate chain that contains a trusted root, and that root must be



Rescorla & Korver        Best Current Practice                 [Page 18]

RFC 3552           Security Considerations Guidelines          July 2003


  trusted in the given context.  For instance, users who possess
  certificates issued by the Acme MIS CA may have different web access
  privileges than users who possess certificates issued by the Acme
  Accounting CA, even though both of these CAs are "trusted" by the
  Acme web server.

  Mechanisms for enforcing these more complicated properties have not
  yet been completely explored.  One approach is simply to attach
  policies to ACLs describing what sorts of certificates are trusted.
  Another approach is to carry that information with the certificate,
  either as a certificate extension/attribute [PKIX, SPKI] or as a
  separate "Attribute Certificate".

4.5. Providing Traffic Security

  Securely designed protocols should provide some mechanism for
  securing (meaning integrity protecting, authenticating, and possibly
  encrypting) all sensitive traffic.  One approach is to secure the
  protocol itself, as in [DNSSEC], [S/MIME] or [S-HTTP].  Although this
  provides security which is most fitted to the protocol, it also
  requires considerable effort to get right.

  Many protocols can be adequately secured using one of the available
  channel security systems.  We'll discuss the two most common, IPsec
  [AH, ESP] and [TLS].

4.5.1. IPsec

  The IPsec protocols (specifically, AH and ESP) can provide
  transmission security for all traffic between two hosts.  The IPsec
  protocols support varying granularities of user identification,
  including for example "IP Subnet", "IP Address", "Fully Qualified
  Domain Name", and individual user ("Mailbox name").  These varying
  levels of identification are employed as inputs to access control
  facilities that are an intrinsic part of IPsec.  However, a given
  IPsec implementation might not support all identity types.  In
  particular, security gateways may not provide user-to-user
  authentication or have mechanisms to provide that authentication
  information to applications.

  When AH or ESP is used, the application programmer might not need to
  do anything (if AH or ESP has been enabled system-wide) or might need
  to make specific software changes (e.g., adding specific setsockopt()
  calls) -- depending on the AH or ESP implementation being used.
  Unfortunately, APIs for controlling IPsec implementations are not yet
  standardized.





Rescorla & Korver        Best Current Practice                 [Page 19]

RFC 3552           Security Considerations Guidelines          July 2003


  The primary obstacle to using IPsec to secure other protocols is
  deployment.  The major use of IPsec at present is for VPN
  applications, especially for remote network access.  Without
  extremely tight coordination between security administrators and
  application developers, VPN usage is not well suited to providing
  security services for individual applications since it is difficult
  for such applications to determine what security services have in
  fact been provided.

  IPsec deployment in host-to-host environments has been slow.  Unlike
  application security systems such as TLS, adding IPsec to a non-IPsec
  system generally involves changing the operating system, either by
  modifying with the kernel or installing new drivers.  This is a
  substantially greater undertaking than simply installing a new
  application.  However, recent versions of a number of commodity
  operating systems include IPsec stacks, so deployment is becoming
  easier.

  In environments where IPsec is sure to be available, it represents a
  viable option for protecting application communications traffic.  If
  the traffic to be protected is UDP, IPsec and application-specific
  object security are the only options.  However, designers MUST NOT
  assume that IPsec will be available.  A security policy for a generic
  application layer protocol SHOULD NOT simply state that IPsec must be
  used, unless there is some reason to believe that IPsec will be
  available in the intended deployment environment.  In environments
  where IPsec may not be available and the traffic is solely TCP, TLS
  is the method of choice, since the application developer can easily
  ensure its presence by including a TLS implementation in his package.

  In the special-case of IPv6, both AH and ESP are mandatory to
  implement.  Hence, it is reasonable to assume that AH/ESP are already
  available for IPv6-only protocols or IPv6-only deployments.  However,
  automatic key management (IKE) is not required to implement so
  protocol designers SHOULD not assume it will be present.  [USEIPSEC]
  provides quite a bit of guidance on when IPsec is a good choice.

4.5.2. SSL/TLS

  Currently, the most common approach is to use SSL or its successor
  TLS.  They provide channel security for a TCP connection at the
  application level.  That is, they run over TCP.  SSL implementations
  typically provide a Berkeley Sockets-like interface for easy
  programming.  The primary issue when designing a protocol solution
  around TLS is to differentiate between connections protected using
  TLS and those which are not.





Rescorla & Korver        Best Current Practice                 [Page 20]

RFC 3552           Security Considerations Guidelines          July 2003


  The two primary approaches used have a separate well-known port for
  TLS connections (e.g., the HTTP over TLS port is 443) [HTTPTLS] or to
  have a mechanism for negotiating upward from the base protocol to TLS
  as in [UPGRADE] or [STARTTLS].  When an upward negotiation strategy
  is used, care must be taken to ensure that an attacker can not force
  a clear connection when both parties wish to use TLS.

  Note that TLS depends upon a reliable protocol such as TCP or SCTP.
  This produces two notable difficulties.  First, it cannot be used to
  secure datagram protocols that use UDP.  Second, TLS is susceptible
  to IP layer attacks that IPsec is not.  Typically, these attacks take
  some form of denial of service or connection assassination.  For
  instance, an attacker might forge a TCP RST to shut down SSL
  connections.  TLS has mechanisms to detect truncation attacks but
  these merely allow the victim to know he is being attacked and do not
  provide connection survivability in the face of such attacks.  By
  contrast, if IPsec were being used, such a forged RST could be
  rejected without affecting the TCP connection.  If forged RSTs or
  other such attacks on the TCP connection are a concern, then AH/ESP
  or the TCP MD5 option [TCPMD5] are the preferred choices.

4.5.2.1. Virtual Hosts

  If the "separate ports" approach to TLS is used, then TLS will be
  negotiated before any application-layer traffic is sent.  This can
  cause a problem with protocols that use virtual hosts, such as
  [HTTP], since the server does not know which certificate to offer the
  client during the TLS handshake.  The TLS hostname extension [TLSEXT]
  can be used to solve this problem, although it is too new to have
  seen wide deployment.

4.5.2.2. Remote Authentication and TLS

  One difficulty with using TLS is that the server is authenticated via
  a certificate.  This can be inconvenient in environments where
  previously the only form of authentication was a password shared
  between client and server.  It's tempting to use TLS without an
  authenticated server (i.e., with anonymous DH or a self-signed RSA
  certificate) and then authenticate via some challenge-response
  mechanism such as SASL with CRAM-MD5.

  Unfortunately, this composition of SASL and TLS is less strong than
  one would expect.  It's easy for an active attacker to hijack this
  connection.  The client man-in-the-middles the SSL connection
  (remember we're not authenticating the server, which is what
  ordinarily prevents this attack) and then simply proxies the SASL
  handshake.  From then on, it's as if the connection were in the




Rescorla & Korver        Best Current Practice                 [Page 21]

RFC 3552           Security Considerations Guidelines          July 2003


  clear, at least as far as that attacker is concerned.  In order to
  prevent this attack, the client needs to verify the server's
  certificate.

  However, if the server is authenticated, challenge-response becomes
  less desirable.  If you already have a hardened channel then simple
  passwords are fine.  In fact, they're arguably superior to
  challenge-response since they do not require that the password be
  stored in the clear on the server.  Thus, compromise of the key file
  with challenge-response systems is more serious than if simple
  passwords were used.

  Note that if the client has a certificate than SSL-based client
  authentication can be used.  To make this easier, SASL provides the
  EXTERNAL mechanism, whereby the SASL client can tell the server
  "examine the outer channel for my identity".  Obviously, this is not
  subject to the layering attacks described above.

4.5.3. Remote Login

  In some special cases it may be worth providing channel-level
  security directly in the application rather than using IPSEC or
  SSL/TLS.  One such case is remote terminal security.  Characters are
  typically delivered from client to server one character at a time.
  Since SSL/TLS and AH/ESP authenticate and encrypt every packet, this
  can mean a data expansion of 20-fold.  The telnet encryption option
  [ENCOPT] prevents this expansion by foregoing message integrity.

  When using remote terminal service, it's often desirable to securely
  perform other sorts of communications services.  In addition to
  providing remote login, SSH [SSH] also provides secure port
  forwarding for arbitrary TCP ports, thus allowing users run arbitrary
  TCP-based applications over the SSH channel.  Note that SSH Port
  Forwarding can be security issue if it is used improperly to
  circumvent firewall and improperly expose insecure internal
  applications to the outside world.

4.6. Denial of Service Attacks and Countermeasures

  Denial of service attacks are all too frequently viewed as an fact of
  life.  One problem is that an attacker can often choose from one of
  many denial of service attacks to inflict upon a victim, and because
  most of these attacks cannot be thwarted, common wisdom frequently
  assumes that there is no point protecting against one kind of denial
  of service attack when there are many other denial of service attacks
  that are possible but that cannot be prevented.





Rescorla & Korver        Best Current Practice                 [Page 22]

RFC 3552           Security Considerations Guidelines          July 2003


  However, not all denial of service attacks are equal and more
  importantly, it is possible to design protocols so that denial of
  service attacks are made more difficult, if not impractical.  Recent
  SYN flood attacks [TCPSYN] demonstrate both of these properties: SYN
  flood attacks are so easy, anonymous, and effective that they are
  more attractive to attackers than other attacks; and because the
  design of TCP enables this attack.

  Because complete DoS protection is so difficult, security against DoS
  must be dealt with pragmatically.  In particular, some attacks which
  would be desirable to defend against cannot be defended against
  economically.  The goal should be to manage risk by defending against
  attacks with sufficiently high ratios of severity to cost of defense.
  Both severity of attack and cost of defense change as technology
  changes and therefore so does the set of attacks which should be
  defended against.

  Authors of internet standards MUST describe which denial of service
  attacks their protocol is susceptible to.  This description MUST
  include the reasons it was either unreasonable or out of scope to
  attempt to avoid these denial of service attacks.

4.6.1. Blind Denial of Service

  BLIND denial of service attacks are particularly pernicious.  With a
  blind attack the attacker has a significant advantage.  If the
  attacker must be able to receive traffic from the victim, then he
  must either subvert the routing fabric or use his own IP address.
  Either provides an opportunity for the victim to track the attacker
  and/or filter out his traffic.  With a blind attack the attacker can
  use forged IP addresses, making it extremely difficult for the victim
  to filter out his packets.  The TCP SYN flood attack is an example of
  a blind attack.  Designers should make every attempt possible to
  prevent blind denial of service attacks.

4.6.2. Distributed Denial of Service

  Even more dangerous are DISTRIBUTED denial of service attacks (DDoS)
  [DDOS].  In a DDoS the attacker arranges for a number of machines to
  attack the target machine simultaneously.  Usually this is
  accomplished by infecting a large number of machines with a program
  that allows remote initiation of attacks.  The machines actually
  performing the attack are called ZOMBIEs and are likely owned by
  unsuspecting third parties in an entirely different location from the
  true attacker.  DDoS attacks can be very hard to counter because the
  zombies often appear to be making legitimate protocol requests and





Rescorla & Korver        Best Current Practice                 [Page 23]

RFC 3552           Security Considerations Guidelines          July 2003


  simply crowd out the real users.  DDoS attacks can be difficult to
  thwart, but protocol designers are expected to be cognizant of these
  forms of attack while designing protocols.

4.6.3. Avoiding Denial of Service

  There are two common approaches to making denial of service attacks
  more difficult:

4.6.3.1. Make your attacker do more work than you do

  If an attacker consumes more of his resources than yours when
  launching an attack, attackers with fewer resources than you will be
  unable to launch effective attacks.  One common technique is to
  require the attacker perform a time-intensive operation, such as a
  cryptographic operation.  Note that an attacker can still mount a
  denial of service attack if he can muster substantially sufficient
  CPU power.  For instance, this technique would not stop the
  distributed attacks described in [TCPSYN].

4.6.3.2. Make your attacker prove they can receive data from you

  A blind attack can be subverted by forcing the attacker to prove that
  they can can receive data from the victim.  A common technique is to
  require that the attacker reply using information that was gained
  earlier in the message exchange.  If this countermeasure is used, the
  attacker must either use his own address (making him easy to track)
  or to forge an address which will be routed back along a path that
  traverses the host from which the attack is being launched.

  Hosts on small subnets are thus useless to the attacker (at least in
  the context of a spoofing attack) because the attack can be traced
  back to a subnet (which should be sufficient for locating the
  attacker) so that anti-attack measures can be put into place (for
  instance, a boundary router can be configured to drop all traffic
  from that subnet).  A common technique is to require that the
  attacker reply using information that was gained earlier in the
  message exchange.

4.6.4. Example: TCP SYN Floods

  TCP/IP is vulnerable to SYN flood attacks (which are described in
  section 3.3.2) because of the design of the 3-way handshake.  First,
  an attacker can force a victim to consume significant resources (in
  this case, memory) by sending a single packet.  Second, because the
  attacker can perform this action without ever having received data
  from the victim, the attack can be performed anonymously (and
  therefore using a large number of forged source addresses).



Rescorla & Korver        Best Current Practice                 [Page 24]

RFC 3552           Security Considerations Guidelines          July 2003


4.6.5. Example: Photuris

  [PHOTURIS] specifies an anti-clogging mechanism that prevents attacks
  on Photuris that resemble the SYN flood attack.  Photuris employs a
  time-variant secret to generate a "cookie" which is returned to the
  attacker.  This cookie must be returned in subsequent messages for
  the exchange to progress.  The interesting feature is that this
  cookie can be regenerated by the victim later in the exchange, and
  thus no state need be retained by the victim until after the attacker
  has proven that he can receive packets from the victim.

4.7. Object vs. Channel Security

  It's useful to make the conceptual distinction between object
  security and channel security.  Object security refers to security
  measures which apply to entire data objects.  Channel security
  measures provide a secure channel over which objects may be carried
  transparently but the channel has no special knowledge about object
  boundaries.

  Consider the case of an email message.  When it's carried over an
  IPSEC or TLS secured connection, the message is protected during
  transmission.  However, it is unprotected in the receiver's mailbox,
  and in intermediate spool files along the way.  Moreover, since mail
  servers generally run as a daemon, not a user, authentication of
  messages generally merely means authentication of the daemon not the
  user.  Finally, since mail transport is hop-by-hop, even if the user
  authenticates to the first hop relay the authentication can't be
  safely verified by the receiver.

  By contrast, when an email message is protected with S/MIME or
  OpenPGP, the entire message is encrypted and integrity protected
  until it is examined and decrypted by the recipient.  It also
  provides strong authentication of the actual sender, as opposed to
  the machine the message came from.  This is object security.
  Moreover, the receiver can prove the signed message's authenticity to
  a third party.

  Note that the difference between object and channel security is a
  matter of perspective.  Object security at one layer of the protocol
  stack often looks like channel security at the next layer up.  So,
  from the perspective of the IP layer, each packet looks like an
  individually secured object.  But from the perspective of a web
  client, IPSEC just provides a secure channel.

  The distinction isn't always clear-cut.  For example, S-HTTP provides
  object level security for a single HTTP transaction, but a web page
  typically consists of multiple HTTP transactions (the base page and



Rescorla & Korver        Best Current Practice                 [Page 25]

RFC 3552           Security Considerations Guidelines          July 2003


  numerous inline images).  Thus, from the perspective of the total web
  page, this looks rather more like channel security.  Object security
  for a web page would consist of security for the transitive closure
  of the page and all its embedded content as a single unit.

4.8. Firewalls and Network Topology

  It's common security practice in modern networks to partition the
  network into external and internal networks using a firewall.  The
  internal network is then assumed to be secure and only limited
  security measures are used there.  The internal portion of such a
  network is often called a WALLED GARDEN.

  Internet protocol designers cannot safely assume that their protocols
  will be deployed in such an environment, for three reasons.  First,
  protocols which were originally designed to be deployed in closed
  environments often are later deployed on the Internet, thus creating
  serious vulnerabilities.

  Second, networks which appear to be topologically disconnected may
  not be.  One reason may be that the network has been reconfigured to
  allow access by the outside world.  Moreover, firewalls are
  increasingly passing generic application layer protocols such as
  [SOAP] or [HTTP].  Network protocols which are based on these generic
  protocols cannot in general assume that a firewall will protect them.
  Finally, one of the most serious security threats to systems is from
  insiders, not outsiders.  Since insiders by definition have access to
  the internal network, topological protections such as firewalls will
  not protect them.

5. Writing Security Considerations Sections

  While it is not a requirement that any given protocol or system be
  immune to all forms of attack, it is still necessary for authors to
  consider as many forms as possible.  Part of the purpose of the
  Security Considerations section is to explain what attacks are out of
  scope and what countermeasures can be applied to defend against them.
  In

  There should be a clear description of the kinds of threats on the
  described protocol or technology.  This should be approached as an
  effort to perform "due diligence" in describing all known or
  foreseeable risks and threats to potential implementers and users.








Rescorla & Korver        Best Current Practice                 [Page 26]

RFC 3552           Security Considerations Guidelines          July 2003


  Authors MUST describe

     1.   which attacks are out of scope (and why!)
     2.   which attacks are in-scope
     2.1  and the protocol is susceptible to
     2.2  and the protocol protects against

  At least the following forms of attack MUST be considered:
  eavesdropping, replay, message insertion, deletion, modification, and
  man-in-the-middle.  Potential denial of service attacks MUST be
  identified as well.  If the protocol incorporates cryptographic
  protection mechanisms, it should be clearly indicated which portions
  of the data are protected and what the protections are (i.e.,
  integrity only, confidentiality, and/or endpoint authentication,
  etc.).  Some indication should also be given to what sorts of attacks
  the cryptographic protection is susceptible.  Data which should be
  held secret (keying material, random seeds, etc.) should be clearly
  labeled.

  If the technology involves authentication, particularly user-host
  authentication, the security of the authentication method MUST be
  clearly specified.  That is, authors MUST document the assumptions
  that the security of this authentication method is predicated upon.
  For instance, in the case of the UNIX username/password login method,
  a statement to the effect of:

     Authentication in the system is secure only to the extent that it
     is difficult to guess or obtain a ASCII password that is a maximum
     of 8 characters long.  These passwords can be obtained by sniffing
     telnet sessions or by running the 'crack' program using the
     contents of the /etc/passwd file.  Attempts to protect against
     on-line password guessing by (1) disconnecting after several
     unsuccessful login attempts and (2) waiting between successive
     password prompts is effective only to the extent that attackers
     are impatient.

     Because the /etc/passwd file maps usernames to user ids, groups,
     etc. it must be world readable.  In order to permit this usage but
     make running crack more difficult, the file is often split into
     /etc/passwd and a 'shadow' password file.  The shadow file is not
     world readable and contains the encrypted password.  The regular
     /etc/passwd file contains a dummy password in its place.

  It is insufficient to simply state that one's protocol should be run
  over some lower layer security protocol.  If a system relies upon
  lower layer security services for security, the protections those





Rescorla & Korver        Best Current Practice                 [Page 27]

RFC 3552           Security Considerations Guidelines          July 2003


  services are expected to provide MUST be clearly specified.  In
  addition, the resultant properties of the combined system need to be
  specified.

  Note: In general, the IESG will not approve standards track protocols
  which do not provide for strong authentication, either internal to
  the protocol or through tight binding to a lower layer security
  protocol.

  The threat environment addressed by the Security Considerations
  section MUST at a minimum include deployment across the global
  Internet across multiple administrative boundaries without assuming
  that firewalls are in place, even if only to provide justification
  for why such consideration is out of scope for the protocol.  It is
  not acceptable to only discuss threats applicable to LANs and ignore
  the broader threat environment.  All IETF standards-track protocols
  are considered likely to have deployment in the global Internet.  In
  some cases, there might be an Applicability Statement discouraging
  use of a technology or protocol in a particular environment.
  Nonetheless, the security issues of broader deployment should be
  discussed in the document.

  There should be a clear description of the residual risk to the user
  or operator of that protocol after threat mitigation has been
  deployed.  Such risks might arise from compromise in a related
  protocol (e.g., IPsec is useless if key management has been
  compromised), from incorrect implementation, compromise of the
  security technology used for risk reduction (e.g., a cipher with a
  40-bit key), or there might be risks that are not addressed by the
  protocol specification (e.g., denial of service attacks on an
  underlying link protocol).  Particular care should be taken in
  situations where the compromise of a single system would compromise
  an entire protocol.  For instance, in general protocol designers
  assume that end-systems are inviolate and don't worry about physical
  attack.  However, in cases (such as a certificate authority) where
  compromise of a single system could lead to widespread compromises,
  it is appropriate to consider systems and physical security as well.

  There should also be some discussion of potential security risks
  arising from potential misapplications of the protocol or technology
  described in the RFC.  This might be coupled with an Applicability
  Statement for that RFC.

6. Examples

  This section consists of some example security considerations
  sections, intended to give the reader a flavor of what's intended by
  this document.



Rescorla & Korver        Best Current Practice                 [Page 28]

RFC 3552           Security Considerations Guidelines          July 2003


  The first example is a 'retrospective' example, applying the criteria
  of this document to an existing widely deployed protocol, SMTP.  The
  second example is a good security considerations section clipped from
  a current protocol.

6.1. SMTP

  When RFC 821 was written, Security Considerations sections were not
  required in RFCs, and none is contained in that document.  [RFC 2821]
  updated RFC 821 and added a detailed security considerations section.
  We reproduce here the Security Considerations section from that
  document (with new section numbers).  Our comments are indented and
  prefaced with 'NOTE:'.  We also add a number of new sections to cover
  topics we consider important.  Those sections are marked with [NEW]
  in the section header.

6.1.1. Security Considerations

6.1.1.1. Mail Security and Spoofing

  SMTP mail is inherently insecure in that it is feasible for even
  fairly casual users to negotiate directly with receiving and relaying
  SMTP servers and create messages that will trick a naive recipient
  into believing that they came from somewhere else.  Constructing such
  a message so that the "spoofed" behavior cannot be detected by an
  expert is somewhat more difficult, but not sufficiently so as to be a
  deterrent to someone who is determined and knowledgeable.
  Consequently, as knowledge of Internet mail increases, so does the
  knowledge that SMTP mail inherently cannot be authenticated, or
  integrity checks provided, at the transport level.  Real mail
  security lies only in end-to-end methods involving the message
  bodies, such as those which use digital signatures (see [14] and,
  e.g., PGP [4] or S/MIME [31]).

     NOTE: One bad approach to sender authentication is [IDENT] in
     which the receiving mail server contacts the alleged sender and
     asks for the username of the sender.  This is a bad idea for a
     number of reasons, including but not limited to relaying, TCP
     connection hijacking, and simple lying by the origin server.
     Aside from the fact that IDENT is of low security value, use of
     IDENT by receiving sites can lead to operational problems.  Many
     sending sites blackhole IDENT requests, thus causing mail to be
     held until the receiving server's IDENT request times out.

  Various protocol extensions and configuration options that provide
  authentication at the transport level (e.g., from an SMTP client to
  an SMTP server) improve somewhat on the traditional situation
  described above.  However, unless they are accompanied by careful



Rescorla & Korver        Best Current Practice                 [Page 29]

RFC 3552           Security Considerations Guidelines          July 2003


  handoffs of responsibility in a carefully-designed trust environment,
  they remain inherently weaker than end-to-end mechanisms which use
  digitally signed messages rather than depending on the integrity of
  the transport system.

  Efforts to make it more difficult for users to set envelope return
  path and header "From" fields to point to valid addresses other than
  their own are largely misguided: they frustrate legitimate
  applications in which mail is sent by one user on behalf of another
  or in which error (or normal) replies should be directed to a special
  address.  (Systems that provide convenient ways for users to alter
  these fields on a per-message basis should attempt to establish a
  primary and permanent mailbox address for the user so that Sender
  fields within the message data can be generated sensibly.)

  This specification does not further address the authentication issues
  associated with SMTP other than to advocate that useful functionality
  not be disabled in the hope of providing some small margin of
  protection against an ignorant user who is trying to fake mail.

     NOTE: We have added additional material on communications security
     and SMTP in Section 6.1.2 In a final specification, the above text
     would be edited somewhat to reflect that fact.

6.1.1.2. Blind Copies

  Addresses that do not appear in the message headers may appear in the
  RCPT commands to an SMTP server for a number of reasons.  The two
  most common involve the use of a mailing address as a "list exploder"
  (a single address that resolves into multiple addresses) and the
  appearance of "blind copies".  Especially when more than one RCPT
  command is present, and in order to avoid defeating some of the
  purpose of these mechanisms, SMTP clients and servers SHOULD NOT copy
  the full set of RCPT command arguments into the headers, either as
  part of trace headers or as informational or private-extension
  headers.  Since this rule is often violated in practice, and cannot
  be enforced, sending SMTP systems that are aware of "bcc" use MAY
  find it helpful to send each blind copy as a separate message
  transaction containing only a single RCPT command.

  There is no inherent relationship between either "reverse" (from
  MAIL, SAML, etc., commands) or "forward" (RCPT) addresses in the SMTP
  transaction ("envelope") and the addresses in the headers.  Receiving
  systems SHOULD NOT attempt to deduce such relationships and use them







Rescorla & Korver        Best Current Practice                 [Page 30]

RFC 3552           Security Considerations Guidelines          July 2003


  to alter the headers of the message for delivery.  The popular
  "Apparently-to" header is a violation of this principle as well as a
  common source of unintended information disclosure and SHOULD NOT be
  used.

6.1.1.3. VRFY, EXPN, and Security

  As discussed in section 3.5, individual sites may want to disable
  either or both of VRFY or EXPN for security reasons.  As a corollary
  to the above, implementations that permit this MUST NOT appear to
  have verified addresses that are not, in fact, verified.  If a site
  disables these commands for security reasons, the SMTP server MUST
  return a 252 response, rather than a code that could be confused with
  successful or unsuccessful verification.

  Returning a 250 reply code with the address listed in the VRFY
  command after having checked it only for syntax violates this rule.
  Of course, an implementation that "supports" VRFY by always returning
  550 whether or not the address is valid is equally not in
  conformance.

  Within the last few years, the contents of mailing lists have become
  popular as an address information source for so-called "spammers."
  The use of EXPN to "harvest" addresses has increased as list
  administrators have installed protections against inappropriate uses
  of the lists themselves.  Implementations SHOULD still provide
  support for EXPN, but sites SHOULD carefully evaluate the tradeoffs.
  As authentication mechanisms are introduced into SMTP, some sites may
  choose to make EXPN available only to authenticated requesters.

     NOTE: It's not clear that disabling VRFY adds much protection,
     since it's often possible to discover whether an address is valid
     using RCPT TO.

6.1.1.4. Information Disclosure in Announcements

  There has been an ongoing debate about the tradeoffs between the
  debugging advantages of announcing server type and version (and,
  sometimes, even server domain name) in the greeting response or in
  response to the HELP command and the disadvantages of exposing
  information that might be useful in a potential hostile attack.  The
  utility of the debugging information is beyond doubt.  Those who
  argue for making it available point out that it is far better to
  actually secure an SMTP server rather than hope that trying to
  conceal known vulnerabilities by hiding the server's precise identity
  will provide more protection.  Sites are encouraged to evaluate the





Rescorla & Korver        Best Current Practice                 [Page 31]

RFC 3552           Security Considerations Guidelines          July 2003


  tradeoff with that issue in mind; implementations are strongly
  encouraged to minimally provide for making type and version
  information available in some way to other network hosts.

6.1.1.5. Information Disclosure in Trace Fields

  In some circumstances, such as when mail originates from within a LAN
  whose hosts are not directly on the public Internet, trace
  ("Received") fields produced in conformance with this specification
  may disclose host names and similar information that would not
  normally be available.  This ordinarily does not pose a problem, but
  sites with special concerns about name disclosure should be aware of
  it.  Also, the optional FOR clause should be supplied with caution or
  not at all when multiple recipients are involved lest it
  inadvertently disclose the identities of "blind copy" recipients to
  others.

6.1.1.6. Information Disclosure in Message Forwarding

  As discussed in section 3.4, use of the 251 or 551 reply codes to
  identify the replacement address associated with a mailbox may
  inadvertently disclose sensitive information.  Sites that are
  concerned about those issues should ensure that they select and
  configure servers appropriately.

6.1.1.7. Scope of Operation of SMTP Servers

  It is a well-established principle that an SMTP server may refuse to
  accept mail for any operational or technical reason that makes sense
  to the site providing the server.  However, cooperation among sites
  and installations makes the Internet possible.  If sites take
  excessive advantage of the right to reject traffic, the ubiquity of
  email availability (one of the strengths of the Internet) will be
  threatened; considerable care should be taken and balance maintained
  if a site decides to be selective about the traffic it will accept
  and process.

  In recent years, use of the relay function through arbitrary sites
  has been used as part of hostile efforts to hide the actual origins
  of mail.  Some sites have decided to limit the use of the relay
  function to known or identifiable sources, and implementations SHOULD
  provide the capability to perform this type of filtering.  When mail
  is rejected for these or other policy reasons, a 550 code SHOULD be
  used in response to EHLO, MAIL, or RCPT as appropriate.







Rescorla & Korver        Best Current Practice                 [Page 32]

RFC 3552           Security Considerations Guidelines          July 2003


6.1.1.8. Inappropriate Usage [NEW]

  SMTP itself provides no protection is provided against unsolicited
  commercial mass e-mail (aka spam).  It is extremely difficult to tell
  a priori whether a given message is spam or not.  From a protocol
  perspective, spam is indistinguishable from other e-mail -- the
  distinction is almost entirely social and often quite subtle.  (For
  instance, is a message from a merchant from whom you've purchased
  items before advertising similar items spam?) SMTP spam-suppression
  mechanisms are generally limited to identifying known spam senders
  and either refusing to service them or target them for
  punishment/disconnection.  [RFC-2505] provides extensive guidance on
  making SMTP servers spam-resistant.  We provide a brief discussion of
  the topic here.

  The primary tool for refusal to service spammers is the blacklist.
  Some authority such as [MAPS] collects and publishes a list of known
  spammers.  Individual SMTP servers then block the blacklisted
  offenders (generally by IP address).

  In order to avoid being blacklisted or otherwise identified, spammers
  often attempt to obscure their identity, either simply by sending a
  false SMTP identity or by forwarding their mail through an Open Relay
  -- an SMTP server which will perform mail relaying for any sender.
  As a consequence, there are now blacklists [ORBS] of open relays as
  well.

6.1.1.8.1. Closed Relaying [NEW]

  To avoid being used for spam forwarding, many SMTP servers operate as
  closed relays, providing relaying service only for clients who they
  can identify.  Such relays should generally insist that senders
  advertise a sending address consistent with their known identity.  If
  the relay is providing service for an identifiable network (such as a
  corporate network or an ISP's network) then it is sufficient to block
  all other IP addresses).  In other cases, explicit authentication
  must be used.  The two standard choices for this are TLS [STARTTLS]
  and SASL [SASLSMTP].

6.1.1.8.2. Endpoints [NEW]

  Realistically, SMTP endpoints cannot refuse to deny service to
  unauthenticated senders.  Since the vast majority of senders are
  unauthenticated, this would break Internet mail interoperability.
  The exception to this is when the endpoint server should only be






Rescorla & Korver        Best Current Practice                 [Page 33]

RFC 3552           Security Considerations Guidelines          July 2003


  receiving mail from some other server which can itself receive
  unauthenticated messages.  For instance, a company might operate a
  public gateway but configure its internal servers to only talk to the
  gateway.

6.1.2. Communications security issues [NEW]

  SMTP itself provides no communications security, and therefore a
  large number of attacks are possible.  A passive attack is sufficient
  to recover the text of messages transmitted with SMTP.  No endpoint
  authentication is provided by the protocol.  Sender spoofing is
  trivial, and therefore forging email messages is trivial.  Some
  implementations do add header lines with hostnames derived through
  reverse name resolution (which is only secure to the extent that it
  is difficult to spoof DNS -- not very), although these header lines
  are normally not displayed to users.  Receiver spoofing is also
  fairly straight-forward, either using TCP connection hijacking or DNS
  spoofing.  Moreover, since email messages often pass through SMTP
  gateways, all intermediate gateways must be trusted, a condition
  nearly impossible on the global Internet.

  Several approaches are available for alleviating these threats.  In
  order of increasingly high level in the protocol stack, we have:

     SMTP over IPSEC
     SMTP/TLS
     S/MIME and PGP/MIME

6.1.2.1. SMTP over IPSEC [NEW]

  An SMTP connection run over IPSEC can provide confidentiality for the
  message between the sender and the first hop SMTP gateway, or between
  any pair of connected SMTP gateways.  That is to say, it provides
  channel security for the SMTP connections.  In a situation where the
  message goes directly from the client to the receiver's gateway, this
  may provide substantial security (though the receiver must still
  trust the gateway).  Protection is provided against replay attacks,
  since the data itself is protected and the packets cannot be
  replayed.

  Endpoint identification is a problem, however, unless the receiver's
  address can be directly cryptographically authenticated.  Sender
  identification is not generally available, since generally only the
  sender's machine is authenticated, not the sender himself.
  Furthermore, the identity of the sender simply appears in the From
  header of the message, so it is easily spoofable by the sender.
  Finally, unless the security policy is set extremely strictly, there
  is also an active downgrade to cleartext attack.



Rescorla & Korver        Best Current Practice                 [Page 34]

RFC 3552           Security Considerations Guidelines          July 2003


  Another problem with IPsec as a security solution for SMTP is the
  lack of a standard IPsec API.  In order to take advantage of IPsec,
  applications in general need to be able to instruct the IPsec
  implementation about their security policies and discover what
  protection has been applied to their connections.  Without a standard
  API this is very difficult to do portably.

  Implementors of SMTP servers or SMTP administrators MUST NOT assume
  that IPsec will be available unless they have reason to believe that
  it will be (such as the existence of preexisting association between
  two machines).  However, it may be a reasonable procedure to attempt
  to create an IPsec association opportunistically to a peer server
  when mail is delivered.  Note that in cases where IPsec is used to
  provide a VPN tunnel between two sites, this is of substantial
  security value, particularly to the extent that confidentiality is
  provided, subject to the caveats mentioned above.  Also see
  [USEIPSEC] for general guidance on the applicability of IPsec.

6.1.2.2. SMTP/TLS [NEW]

  SMTP can be combined with TLS as described in [STARTTLS].  This
  provides similar protection to that provided when using IPSEC.  Since
  TLS certificates typically contain the server's host name, recipient
  authentication may be slightly more obvious, but is still susceptible
  to DNS spoofing attacks.  Notably, common implementations of TLS
  contain a US exportable (and hence low security) mode.  Applications
  desiring high security should ensure that this mode is disabled.
  Protection is provided against replay attacks, since the data itself
  is protected and the packets cannot be replayed.  [Note:  The
  Security Considerations section of the SMTP over TLS document is
  quite good and bears reading as an example of how to do things.]

6.1.2.3. S/MIME and PGP/MIME [NEW]

  S/MIME and PGP/MIME are both message oriented security protocols.
  They provide object security for individual messages.  With various
  settings, sender and recipient authentication and confidentiality may
  be provided.  More importantly, the identification is not of the
  sending and receiving machines, but rather of the sender and
  recipient themselves.  (Or, at least, of cryptographic keys
  corresponding to the sender and recipient.)  Consequently, end-to-end
  security may be obtained.  Note, however, that no protection is
  provided against replay attacks.  Note also that S/MIME and PGP/MIME
  generally provide identifying marks for both sender and receiver.
  Thus even when confidentiality is provided, traffic analysis is still
  possible.





Rescorla & Korver        Best Current Practice                 [Page 35]

RFC 3552           Security Considerations Guidelines          July 2003


6.1.3. Denial of Service [NEW]

  None of these security measures provides any real protection against
  denial of service.  SMTP connections can easily be used to tie up
  system resources in a number of ways, including excessive port
  consumption, excessive disk usage (email is typically delivered to
  disk files), and excessive memory consumption (sendmail, for
  instance, is fairly large, and typically forks a new process to deal
  with each message.)

  If transport- or application-layer security is used for SMTP
  connections, it is possible to mount a variety of attacks on
  individual connections using forged RSTs or other kinds of packet
  injection.

6.2. VRRP

  The second example is from VRRP, the Virtual Router Redundance
  Protocol ([VRRP]).  We reproduce here the Security Considerations
  section from that document (with new section numbers).  Our comments
  are indented and prefaced with 'NOTE:'.

6.2.1. Security Considerations

  VRRP is designed for a range of internetworking environments that may
  employ different security policies.  The protocol includes several
  authentication methods ranging from no authentication, simple clear
  text passwords, and strong authentication using IP Authentication
  with MD5 HMAC.  The details on each approach including possible
  attacks and recommended environments follows.

  Independent of any authentication type VRRP includes a mechanism
  (setting TTL=255, checking on receipt) that protects against VRRP
  packets being injected from another remote network.  This limits most
  vulnerabilities to local attacks.

     NOTE: The security measures discussed in the following sections
     only provide various kinds of authentication.  No confidentiality
     is provided at all.  This should be explicitly described as
     outside the scope.

6.2.1.1. No Authentication

  The use of this authentication type means that VRRP protocol
  exchanges are not authenticated.  This type of authentication SHOULD
  only be used in environments were there is minimal security risk and
  little chance for configuration errors (e.g., two VRRP routers on a
  LAN).



Rescorla & Korver        Best Current Practice                 [Page 36]

RFC 3552           Security Considerations Guidelines          July 2003


6.2.1.2. Simple Text Password

  The use of this authentication type means that VRRP protocol
  exchanges are authenticated by a simple clear text password.

  This type of authentication is useful to protect against accidental
  misconfiguration of routers on a LAN.  It protects against routers
  inadvertently backing up another router.  A new router must first be
  configured with the correct password before it can run VRRP with
  another router.  This type of authentication does not protect against
  hostile attacks where the password can be learned by a node snooping
  VRRP packets on the LAN.  The Simple Text Authentication combined
  with the TTL check makes it difficult for a VRRP packet to be sent
  from another LAN to disrupt VRRP operation.

  This type of authentication is RECOMMENDED when there is minimal risk
  of nodes on a LAN actively disrupting VRRP operation.  If this type
  of authentication is used the user should be aware that this clear
  text password is sent frequently, and therefore should not be the
  same as any security significant password.

     NOTE: This section should be clearer.  The basic point is that no
     authentication and Simple Text are only useful for a very limited
     threat model, namely that none of the nodes on the local LAN are
     hostile.  The TTL check prevents hostile nodes off-LAN from posing
     as valid nodes, but nothing stops hostile nodes on-LAN from
     impersonating authorized nodes.  This is not a particularly
     realistic threat model in many situations.  In particular, it's
     extremely brittle: the compromise of any node the LAN allows
     reconfiguration of the VRRP nodes.

6.2.1.3. IP Authentication Header

  The use of this authentication type means the VRRP protocol exchanges
  are authenticated using the mechanisms defined by the IP
  Authentication Header [AH] using [HMAC].  This provides strong
  protection against configuration errors, replay attacks, and packet
  corruption/modification.

  This type of authentication is RECOMMENDED when there is limited
  control over the administration of nodes on a LAN.  While this type
  of authentication does protect the operation of VRRP, there are other
  types of attacks that may be employed on shared media links (e.g.,
  generation of bogus ARP replies) which are independent from VRRP and
  are not protected.






Rescorla & Korver        Best Current Practice                 [Page 37]

RFC 3552           Security Considerations Guidelines          July 2003


     NOTE: It's a mistake to have AH be a RECOMMENDED in this context.
     Since AH is the only mechanism that protects VRRP against attack
     from other nodes on the same LAN, it should be a MUST for cases
     where there are untrusted nodes on the same network.  In any case,
     AH should be a MUST implement.

     NOTE: There's an important piece of security analysis that's only
     hinted at in this document, namely the cost/benefit tradeoff of
     VRRP authentication.

  [The rest of this section is NEW material]
  The threat that VRRP authentication is intended to prevent is an
  attacker arranging to be the VRRP master.  This would be done by
  joining the group (probably multiple times), gagging the master and
  then electing oneself master.  Such a node could then direct traffic
  in arbitrary undesirable ways.

  However, it is not necessary for an attacker to be the VRRP master to
  do this.  An attacker can do similar kinds of damage to the network
  by forging ARP packets or (on switched networks) fooling the switch
  VRRP authentication offers no real protection against these attacks.

  Unfortunately, authentication makes VRRP networks very brittle in the
  face of misconfiguration.  Consider what happens if two nodes are
  configured with different passwords.  Each will reject messages from
  the other and therefore both will attempt to be master.  This creates
  substantial network instability.

  This set of cost/benefit tradeoffs suggests that VRRP authentication
  is a bad idea, since the incremental security benefit is marginal but
  the incremental risk is high.  This judgment should be revisited if
  the current set of non-VRRP threats are removed.

7. Acknowledgments

  This document is heavily based on a note written by Ran Atkinson in
  1997.  That note was written after the IAB Security Workshop held in
  early 1997, based on input from everyone at that workshop.  Some of
  the specific text above was taken from Ran's original document, and
  some of that text was taken from an email message written by Fred
  Baker.  The other primary source for this document is specific
  comments received from Steve Bellovin.  Early review of this document
  was done by Lisa Dusseault and Mark Schertler.  Other useful comments
  were received from Bill Fenner, Ned Freed, Lawrence Greenfield, Steve
  Kent, Allison Mankin and Kurt Zeilenga.






Rescorla & Korver        Best Current Practice                 [Page 38]

RFC 3552           Security Considerations Guidelines          July 2003


8. Normative References

  [AH]       Kent, S. and R. Atkinson, "IP Authentication Header", RFC
             2402, November 1998.

  [DNSSEC]   Eastlake, D., "Domain Name System Security Extensions",
             RFC 2535, March 1999.

  [ENCOPT]   Tso, T., "Telnet Data Encryption Option", RFC 2946,
             September, 2000.

  [ESP]      Kent, S. and R. Atkinson, "IP Encapsulating Security
             Payload (ESP)", RFC 2406, November 1998.

  [GSS]      Linn, J., "Generic Security Services Application Program
             Interface Version 2, Update 1", RFC 2743, January 2000.

  [HTTP]     Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
             Masinter, L., Leach, P. and T. Berners-Lee, "HyperText
             Transfer Protocol", RFC 2616, June 1999.

  [HTTPTLS]  Rescorla, E., "HTTP over TLS", RFC 2818, May 2000.

  [HMAC]     Madson, C. and R. Glenn, "The Use of HMAC-MD5-96 within
             ESP and AH", RFC 2403, November 1998.

  KERBEROS]  Kohl, J. and C. Neuman, "The Kerberos Network
             Authentication Service (V5)", RFC 1510, September 1993.

  [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, March 1997.

  [OTP]      Haller, N., Metz, C., Nesser, P. and M. Straw, "A One-Time
             Password System", STD 61, RFC 2289, February 1998.

  [PHOTURIS] Karn, P. and W. Simpson, "Photuris: Session-Key Management
             Protocol", RFC 2522, March 1999.

  [PKIX]     Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
             X.509 "Public Key Infrastructure Certificate and
             Certificate Restoration List (CRL) Profile", RFC 3280,
             April 2002.

  [RFC-2223] Postel J. and J. Reynolds, "Instructions to RFC Authors",
             RFC 2223, October 1997.

  [RFC-2505] Lindberg, G., "Anti-Spam Recommendations for SMTP MTAs",
             BCP 30, RFC 2505, February 1999.



Rescorla & Korver        Best Current Practice                 [Page 39]

RFC 3552           Security Considerations Guidelines          July 2003


  [RFC-2821] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
             April 2001.

  [SASL]     Myers, J., "Simple Authentication and Security Layer
             (SASL)", RFC 2222, October 1997.

  [SPKI]     Ellison, C., Frantz, B., Lampson, B., Rivest, R., Thomas,
             B. and T. Ylonen, "SPKI Certificate Theory",  RFC 2693,
             September 1999.

  [SSH]      Ylonen, T., "SSH - Secure Login Connections Over the
             Internet", 6th USENIX Security Symposium, p. 37-42, July
             1996.

  [SASLSMTP] Myers, J., "SMTP Service Extension for Authentication",
             RFC 2554, March 1999.

  [STARTTLS] Hoffman, P., "SMTP Service Extension for Secure SMTP over
             Transport Layer Security", RFC 3207, February 2002.

  [S-HTTP]   Rescorla, E. and A. Schiffman, "The Secure HyperText
             Transfer Protocol", RFC 2660, August 1999.

  [S/MIME]   Ramsdell, B., Editor, "S/MIME Version 3 Message
             Specification", RFC 2633, June 1999.

  [TELNET]   Postel, J. and J. Reynolds, "Telnet Protocol
             Specification", STD 8, RFC 854, May 1983.

  [TLS]      Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
             RFC 2246, January 1999.

  [TLSEXT]   Blake-Wilson, S., Nystrom, M., Hopwood, D. and J.
             Mikkelsen, "Transport Layer Security (TLS) Extensions",
             RFC 3546, May 2003.

  [TCPSYN]   "TCP SYN Flooding and IP Spoofing Attacks", CERT Advisory
             CA-1996-21, 19 September 1996, CERT.
             http://www.cert.org/advisories/CA-1996-21.html

  [UPGRADE]  Khare, R. and S. Lawrence, "Upgrading to TLS Within
             HTTP/1.1", RFC 2817, May 2000.

  [URL]      Berners-Lee, T., Masinter, M. and M. McCahill, "Uniform
             Resource Locators (URL)", RFC 1738, December 1994.






Rescorla & Korver        Best Current Practice                 [Page 40]

RFC 3552           Security Considerations Guidelines          July 2003


  [VRRP]     Knight, S., Weaver, D., Whipple, D., Hinden, R., Mitzel,
             D., Hunt, P., Higginson, P., Shand, M. and A. Lindemn,
             "Virtual Router Redundancy Protocol", RFC 2338, April
             1998.

9. Informative References

  [DDOS]     "Denial-Of-Service Tools" CERT Advisory CA-1999-17, 28
             December 1999, CERT http://www.cert.org/advisories/CA-
             1999-17.html

  [EKE]      Bellovin, S., Merritt, M., "Encrypted Key Exchange:
             Password-based protocols secure against dictionary
             attacks", Proceedings of the IEEE Symposium on Research in
             Security and Privacy, May 1992.

  [IDENT]    St. Johns, M. and M. Rose, "Identification Protocol", RFC
             1414, February 1993.

  [INTAUTH]  Haller, N. and R. Atkinson, "On Internet Authentication",
             RFC 1704, October 1994.

  [IPSPPROB] Bellovin, S. M., "Problem Areas for the IP Security
             Protocols", Proceedings of the Sixth Usenix UNIX Security
             Symposium, July 1996.

  [KLEIN]    Klein, D.V., "Foiling the Cracker: A Survey of and
             Improvements to Password Security",  1990.

  [NNTP]     Kantor, B. and P. Lapsley, "Network News Transfer
             Protocol", RFC 977, February 1986.

  [POP]      Myers, J. and M. Rose, "Post Office Protocol - Version 3",
             STD 53, RFC 1939, May 1996.

  [SEQNUM]   Morris, R.T., "A Weakness in the 4.2 BSD UNIX TCP/IP
             Software", AT&T Bell Laboratories, CSTR 117, 1985.

  [SOAP]     Box, D., Ehnebuske, D., Kakivaya, G., Layman, A.,
             Mendelsoh, N., Nielsen, H., Thatte, S., Winer, D., "Simple
             Object Access Protocol (SOAP) 1.1", May 2000.

  [SPEKE]    Jablon, D., "Strong Password-Only Authenticated Key
             Exchange", Computer Communication Review, ACM SIGCOMM,
             vol. 26, no. 5, pp. 5-26, October 1996.

  [SRP]      Wu T., "The Secure Remote Password Protocol", ISOC NDSS
             Symposium, 1998.



Rescorla & Korver        Best Current Practice                 [Page 41]

RFC 3552           Security Considerations Guidelines          July 2003


  [USEIPSEC] Bellovin, S., "Guidelines for Mandating the Use of IPsec",
             Work in Progress.

  [WEP]      Borisov, N., Goldberg, I., Wagner, D., "Intercepting
             Mobile Communications: The Insecurity of 802.11",
             http://www.isaac.cs.berkeley.edu/isaac/wep-draft.pdf

10. Security Considerations

  This entire document is about security considerations.









































Rescorla & Korver        Best Current Practice                 [Page 42]

RFC 3552           Security Considerations Guidelines          July 2003


Appendix A.

  IAB Members at the time of this writing

  Harald Alvestrand
  Ran Atkinson
  Rob Austein
  Fred Baker
  Leslie Daigle
  Steve Deering
  Sally Floyd
  Ted Hardie
  Geoff Huston
  Charlie Kaufman
  James Kempf
  Eric Rescorla
  Mike St. Johns

Authors' Addresses

  Eric Rescorla
  RTFM, Inc.
  2439 Alvin Drive
  Mountain View, CA 94043

  Phone: (650)-320-8549
  EMail: [email protected]


  Brian Korver
  Xythos Software, Inc.
  77 Maiden Lane, 6th Floor
  San Francisco, CA, 94108

  Phone: (415)-248-3800
  EMail: [email protected]


  Internet Architecture Board
  IAB
  EMail: [email protected]










Rescorla & Korver        Best Current Practice                 [Page 43]

RFC 3552           Security Considerations Guidelines          July 2003


Full Copyright Statement

  Copyright (C) The Internet Society (2003).  All Rights Reserved.

  This document and translations of it may be copied and furnished to
  others, and derivative works that comment on or otherwise explain it
  or assist in its implementation may be prepared, copied, published
  and distributed, in whole or in part, without restriction of any
  kind, provided that the above copyright notice and this paragraph are
  included on all such copies and derivative works.  However, this
  document itself may not be modified in any way, such as by removing
  the copyright notice or references to the Internet Society or other
  Internet organizations, except as needed for the purpose of
  developing Internet standards in which case the procedures for
  copyrights defined in the Internet Standards process must be
  followed, or as required to translate it into languages other than
  English.

  The limited permissions granted above are perpetual and will not be
  revoked by the Internet Society or its successors or assigns.

  This document and the information contained herein is provided on an
  "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement

  Funding for the RFC Editor function is currently provided by the
  Internet Society.



















Rescorla & Korver        Best Current Practice                 [Page 44]

=========================================================================



Internet Engineering Task Force (IETF)                           F. Gont
Request for Comments: 9416                                  SI6 Networks
BCP: 72                                                          I. Arce
Updates: 3552                                                  Quarkslab
Category: Best Current Practice                                July 2023
ISSN: 2070-1721


Security Considerations for Transient Numeric Identifiers Employed in
                          Network Protocols

Abstract

  Poor selection of transient numerical identifiers in protocols such
  as the TCP/IP suite has historically led to a number of attacks on
  implementations, ranging from Denial of Service (DoS) or data
  injection to information leakages that can be exploited by pervasive
  monitoring.  Due diligence in the specification of transient numeric
  identifiers is required even when cryptographic techniques are
  employed, since these techniques might not mitigate all the
  associated issues.  This document formally updates RFC 3552,
  incorporating requirements for transient numeric identifiers, to
  prevent flaws in future protocols and implementations.

Status of This Memo

  This memo documents an Internet Best Current Practice.

  This document is a product of the Internet Engineering Task Force
  (IETF).  It represents the consensus of the IETF community.  It has
  received public review and has been approved for publication by the
  Internet Engineering Steering Group (IESG).  Further information on
  BCPs is available in Section 2 of RFC 7841.

  Information about the current status of this document, any errata,
  and how to provide feedback on it may be obtained at
  https://www.rfc-editor.org/info/rfc9416.

Copyright Notice

  Copyright (c) 2023 IETF Trust and the persons identified as the
  document authors.  All rights reserved.

  This document is subject to BCP 78 and the IETF Trust's Legal
  Provisions Relating to IETF Documents
  (https://trustee.ietf.org/license-info) in effect on the date of
  publication of this document.  Please review these documents
  carefully, as they describe your rights and restrictions with respect
  to this document.  Code Components extracted from this document must
  include Revised BSD License text as described in Section 4.e of the
  Trust Legal Provisions and are provided without warranty as described
  in the Revised BSD License.

Table of Contents

  1.  Introduction
  2.  Terminology
  3.  Issues with the Specification of Transient Numeric Identifiers
  4.  Common Flaws in the Generation of Transient Numeric Identifiers
  5.  Requirements for Transient Numeric Identifiers
  6.  IANA Considerations
  7.  Security Considerations
  8.  References
    8.1.  Normative References
    8.2.  Informative References
  Acknowledgements
  Authors' Addresses

1.  Introduction

  Networking protocols employ a variety of transient numeric
  identifiers for different protocol objects, such as IPv4 and IPv6
  Identification values [RFC0791] [RFC8200], IPv6 Interface Identifiers
  (IIDs) [RFC4291], transport-protocol ephemeral port numbers
  [RFC6056], TCP Initial Sequence Numbers (ISNs) [RFC9293], NTP
  Reference IDs (REFIDs) [RFC5905], and DNS IDs [RFC1035].  These
  identifiers typically have specific requirements (e.g., uniqueness
  during a specified period of time) that must be satisfied such that
  they do not result in negative interoperability implications, and an
  associated failure severity when such requirements are not met
  [RFC9415].

     |  NOTE: Some documents refer to the DNS ID as the DNS "Query ID"
     |  or "TxID".

  For more than 30 years, a large number of implementations of IETF
  protocols have been subject to a variety of attacks, with effects
  ranging from Denial of Service (DoS) or data injection to information
  leakages that could be exploited for pervasive monitoring [RFC7258].
  The root cause of these issues has been, in many cases, the poor
  selection of transient numeric identifiers in such protocols, usually
  as a result of insufficient or misleading specifications.  While it
  is generally trivial to identify an algorithm that can satisfy the
  interoperability requirements of a given transient numeric
  identifier, empirical evidence exists that doing so without
  negatively affecting the security and/or privacy properties of the
  aforementioned protocols is prone to error [RFC9414].

  For example, implementations have been subject to security and/or
  privacy issues resulting from:

  *  predictable IPv4 or IPv6 Identification values (e.g., see
     [Sanfilippo1998a], [RFC6274], and [RFC7739]),

  *  predictable IPv6 IIDs (e.g., see [RFC7217], [RFC7707], and
     [RFC7721]),

  *  predictable transport-protocol ephemeral port numbers (e.g., see
     [RFC6056] and [Silbersack2005]),

  *  predictable TCP Initial Sequence Numbers (ISNs) (e.g., see
     [Morris1985], [Bellovin1989], and [RFC6528]),

  *  predictable initial timestamps in TCP timestamps options (e.g.,
     see [TCPT-uptime] and [RFC7323]), and

  *  predictable DNS IDs (see, e.g., [Schuba1993] and [Klein2007]).

  Recent history indicates that, when new protocols are standardized or
  new protocol implementations are produced, the security and privacy
  properties of the associated transient numeric identifiers tend to be
  overlooked, and inappropriate algorithms to generate such identifiers
  are either suggested in the specifications or selected by
  implementers.  As a result, advice in this area is warranted.

  We note that the use of cryptographic techniques for confidentiality
  and authentication might not eliminate all the issues associated with
  predictable transient numeric identifiers.  Therefore, due diligence
  in the specification of transient numeric identifiers is required
  even when cryptographic techniques are employed.

     |  NOTE: For example, cryptographic authentication can readily
     |  mitigate data injection attacks even in the presence of
     |  predictable transient numeric identifiers (such as "sequence
     |  numbers").  However, use of flawed algorithms (such as global
     |  counters) for generating transient numeric identifiers could
     |  still result in information leakages even when cryptographic
     |  techniques are employed.  These information leakages could in
     |  turn be leveraged to perform other devastating attacks (please
     |  see [RFC9415] for further details).

  Section 3 provides an overview of common flaws in the specification
  of transient numeric identifiers.  Section 4 provides an overview of
  common flaws in the generation of transient numeric identifiers and
  their associated security and privacy implications.  Finally,
  Section 5 provides key guidelines for protocol designers.

2.  Terminology

  Transient Numeric Identifier:
     A data object in a protocol specification that can be used to
     definitely distinguish a protocol object (a datagram, network
     interface, transport-protocol endpoint, session, etc.) from all
     other objects of the same type, in a given context.  Transient
     numeric identifiers are usually defined as a series of bits and
     represented using integer values.  These identifiers are typically
     dynamically selected, as opposed to statically assigned numeric
     identifiers (e.g., see [IANA-PROT]).  We note that different
     transient numeric identifiers may have additional requirements or
     properties depending on their specific use in a protocol.  We use
     the term "transient numeric identifier" (or simply "numeric
     identifier" or "identifier" as short forms) as a generic term to
     refer to any data object in a protocol specification that
     satisfies the identification property stated above.

  Failure Severity:
     The interoperability consequences of a failure to comply with the
     interoperability requirements of a given identifier.  Severity
     considers the worst potential consequence of a failure, determined
     by the system damage and/or time lost to repair the failure.  In
     this document, we define two types of failure severity: "soft" and
     "hard".

  Soft Failure:
     A recoverable condition in which a protocol does not operate in
     the prescribed manner but normal operation can be resumed
     automatically in a short period of time.  For example, a simple
     packet-loss event that is subsequently recovered with a
     retransmission can be considered a soft failure.

  Hard Failure:
     A non-recoverable condition in which a protocol does not operate
     in the prescribed manner or it operates with excessive degradation
     of service.  For example, an established TCP connection that is
     aborted due to an error condition constitutes, from the point of
     view of the transport protocol, a hard failure, since it enters a
     state from which normal operation cannot be recovered.

  The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
  "OPTIONAL" in this document are to be interpreted as described in BCP
  14 [RFC2119] [RFC8174] when, and only when, they appear in all
  capitals, as shown here.

3.  Issues with the Specification of Transient Numeric Identifiers

  Recent work on transient numeric identifier usage in protocol
  specifications and implementations [RFC9414] [RFC9415] revealed that
  most of the issues discussed in this document arise as a result of
  one of the following conditions:

  *  protocol specifications that under specify their transient numeric
     identifiers

  *  protocol specifications that over specify their transient numeric
     identifiers

  *  protocol implementations that simply fail to comply with the
     specified requirements

  Both under specifying and over specifying transient numeric
  identifiers is hazardous.  TCP local ports [RFC0793], as well as DNS
  IDs [RFC1035], were originally under specified, leading to
  implementations that resulted in predictable values and thus were
  vulnerable to numerous off-path attacks.  Over specification, as for
  IPv6 Interface Identifiers (IIDs) [RFC4291] and IPv6 Identification
  values [RFC2460], left implementations unable to respond to security
  and privacy issues stemming from the mandated or recommended
  algorithms -- IPv6 IIDs need not expose privacy-sensitive link-layer
  addresses, and predictable IPv6 Fragment Header Identification values
  invite the same off-path attacks that plague TCP.

  Finally, there are protocol implementations that simply fail to
  comply with existing protocol specifications.  That is, appropriate
  guidance is provided by the protocol specification (whether it be the
  core specification or an update to it), but an implementation simply
  fails to follow such guidance.  For example, some popular operating
  systems still fail to implement transport-protocol port
  randomization, as specified in [RFC6056].

  Clear specification of the interoperability requirements for the
  transient numeric identifiers will help identify possible algorithms
  that could be employed to generate them and also make evident if such
  identifiers are being over specified.  A protocol specification will
  usually also benefit from a vulnerability assessment of the transient
  numeric identifiers they specify to prevent the corresponding
  considerations from being overlooked.

4.  Common Flaws in the Generation of Transient Numeric Identifiers

  This section briefly notes common flaws associated with the
  generation of transient numeric identifiers.  Such common flaws
  include, but are not limited to:

  *  employing trivial algorithms (e.g., global counters) that result
     in predictable identifiers,

  *  employing the same identifier across contexts in which constancy
     is not required,

  *  reusing identifiers across different protocols or layers of the
     protocol stack,

  *  initializing counters or timers to constant values when such
     initialization is not required,

  *  employing the same increment space across different contexts, and

  *  use of flawed Pseudorandom Number Generators (PRNGs).

  Employing trivial algorithms for generating the identifiers means
  that any node that is able to sample such identifiers can easily
  predict future identifiers employed by the victim node.

  When one identifier is employed across contexts where such constancy
  is not needed, activity correlation is made possible.  For example,
  employing an identifier that is constant across networks allows for
  node tracking across networks.

  Reusing identifiers across different layers or protocols ties the
  security and privacy properties of the protocol reusing the
  identifier to the security and privacy properties of the original
  identifier (over which the protocol reusing the identifier may have
  no control regarding its generation).  Besides, when reusing an
  identifier across protocols from different layers, the goal of
  isolating the properties of a layer from those of another layer is
  broken, and the vulnerability assessment may be harder to perform
  since the combined system, rather than each protocol in isolation,
  will have to be assessed.

  At times, a protocol needs to convey order information (whether it be
  sequence, timing, etc.).  In many cases, there is no reason for the
  corresponding counter or timer to be initialized to any specific
  value, e.g., at system bootstrap.  Similarly, there may not be a need
  for the difference between successive counter values to be
  predictable.

  A node that implements a per-context linear function may share the
  increment space among different contexts (please see the "Simple PRF-
  Based Algorithm" section in [RFC9415]).  Sharing the same increment
  space allows an attacker that can sample identifiers in other context
  to, e.g., learn how many identifiers have been generated between two
  sampled values.

  Finally, some implementations have been found to employ flawed PRNGs
  (e.g., see [Klein2007]).

5.  Requirements for Transient Numeric Identifiers

  Protocol specifications that employ transient numeric identifiers
  MUST explicitly specify the interoperability requirements for the
  aforementioned transient numeric identifiers (e.g., required
  properties such as uniqueness, along with the failure severity if
  such requirements are not met).

  A vulnerability assessment of the aforementioned transient numeric
  identifiers MUST be performed as part of the specification process.
  Such vulnerability assessment should cover, at least, spoofing,
  tampering, repudiation, information disclosure, DoS, and elevation of
  privilege.

     |  NOTE: Sections 8 and 9 of [RFC9415] provide a general
     |  vulnerability assessment of transient numeric identifiers,
     |  along with a vulnerability assessment of common algorithms for
     |  generating transient numeric identifiers.  Please see
     |  [Shostack2014] for further guidance on threat modeling.

  Protocol specifications SHOULD NOT employ predictable transient
  numeric identifiers, except when such predictability is the result of
  their interoperability requirements.

  Protocol specifications that employ transient numeric identifiers
  SHOULD recommend an algorithm for generating the aforementioned
  transient numeric identifiers that mitigates the vulnerabilities
  identified in the previous step, such as those discussed in
  [RFC9415].

  As discussed in Section 1, use of cryptographic techniques for
  confidentiality and authentication might not eliminate all the issues
  associated with predictable transient numeric identifiers.
  Therefore, the advice from this section MUST still be applied for
  cases where cryptographic techniques for confidentiality or
  authentication are employed.

6.  IANA Considerations

  This document has no IANA actions.

7.  Security Considerations

  This entire document is about the security and privacy implications
  of transient numeric identifiers and formally updates [RFC3552] such
  that the security and privacy implications of transient numeric
  identifiers are addressed when writing the "Security Considerations"
  section of future RFCs.

8.  References

8.1.  Normative References

  [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119,
             DOI 10.17487/RFC2119, March 1997,
             <https://www.rfc-editor.org/info/rfc2119>.

  [RFC3552]  Rescorla, E. and B. Korver, "Guidelines for Writing RFC
             Text on Security Considerations", BCP 72, RFC 3552,
             DOI 10.17487/RFC3552, July 2003,
             <https://www.rfc-editor.org/info/rfc3552>.

  [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
             2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
             May 2017, <https://www.rfc-editor.org/info/rfc8174>.

8.2.  Informative References

  [Bellovin1989]
             Bellovin, S., "Security Problems in the TCP/IP Protocol
             Suite", Computer Communications Review, vol. 19, no. 2,
             pp. 32-48, April 1989,
             <https://www.cs.columbia.edu/~smb/papers/ipext.pdf>.

  [IANA-PROT]
             IANA, "Protocol Registries",
             <https://www.iana.org/protocols>.

  [Klein2007]
             Klein, A., "OpenBSD DNS Cache Poisoning and Multiple O/S
             Predictable IP ID Vulnerability", October 2007,
             <https://dl.packetstormsecurity.net/papers/attack/OpenBSD_
             DNS_Cache_Poisoning_and_Multiple_OS_Predictable_IP_ID_Vuln
             erability.pdf>.

  [Morris1985]
             Morris, R., "A Weakness in the 4.2BSD UNIX TCP/IP
             Software", CSTR 117, AT&T Bell Laboratories, Murray Hill,
             NJ, February 1985,
             <https://pdos.csail.mit.edu/~rtm/papers/117.pdf>.

  [PREDICTABLE-NUMERIC-IDS]
             Gont, F. and I. Arce, "Security and Privacy Implications
             of Numeric Identifiers Employed in Network Protocols",
             Work in Progress, Internet-Draft, draft-gont-predictable-
             numeric-ids-03, 11 March 2019,
             <https://datatracker.ietf.org/doc/html/draft-gont-
             predictable-numeric-ids-03>.

  [RFC0791]  Postel, J., "Internet Protocol", STD 5, RFC 791,
             DOI 10.17487/RFC0791, September 1981,
             <https://www.rfc-editor.org/info/rfc791>.

  [RFC0793]  Postel, J., "Transmission Control Protocol", RFC 793,
             DOI 10.17487/RFC0793, September 1981,
             <https://www.rfc-editor.org/info/rfc793>.

  [RFC1035]  Mockapetris, P., "Domain names - implementation and
             specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
             November 1987, <https://www.rfc-editor.org/info/rfc1035>.

  [RFC2460]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
             (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460,
             December 1998, <https://www.rfc-editor.org/info/rfc2460>.

  [RFC4291]  Hinden, R. and S. Deering, "IP Version 6 Addressing
             Architecture", RFC 4291, DOI 10.17487/RFC4291, February
             2006, <https://www.rfc-editor.org/info/rfc4291>.

  [RFC5905]  Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch,
             "Network Time Protocol Version 4: Protocol and Algorithms
             Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010,
             <https://www.rfc-editor.org/info/rfc5905>.

  [RFC6056]  Larsen, M. and F. Gont, "Recommendations for Transport-
             Protocol Port Randomization", BCP 156, RFC 6056,
             DOI 10.17487/RFC6056, January 2011,
             <https://www.rfc-editor.org/info/rfc6056>.

  [RFC6274]  Gont, F., "Security Assessment of the Internet Protocol
             Version 4", RFC 6274, DOI 10.17487/RFC6274, July 2011,
             <https://www.rfc-editor.org/info/rfc6274>.

  [RFC6528]  Gont, F. and S. Bellovin, "Defending against Sequence
             Number Attacks", RFC 6528, DOI 10.17487/RFC6528, February
             2012, <https://www.rfc-editor.org/info/rfc6528>.

  [RFC7217]  Gont, F., "A Method for Generating Semantically Opaque
             Interface Identifiers with IPv6 Stateless Address
             Autoconfiguration (SLAAC)", RFC 7217,
             DOI 10.17487/RFC7217, April 2014,
             <https://www.rfc-editor.org/info/rfc7217>.

  [RFC7258]  Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an
             Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May
             2014, <https://www.rfc-editor.org/info/rfc7258>.

  [RFC7323]  Borman, D., Braden, B., Jacobson, V., and R.
             Scheffenegger, Ed., "TCP Extensions for High Performance",
             RFC 7323, DOI 10.17487/RFC7323, September 2014,
             <https://www.rfc-editor.org/info/rfc7323>.

  [RFC7707]  Gont, F. and T. Chown, "Network Reconnaissance in IPv6
             Networks", RFC 7707, DOI 10.17487/RFC7707, March 2016,
             <https://www.rfc-editor.org/info/rfc7707>.

  [RFC7721]  Cooper, A., Gont, F., and D. Thaler, "Security and Privacy
             Considerations for IPv6 Address Generation Mechanisms",
             RFC 7721, DOI 10.17487/RFC7721, March 2016,
             <https://www.rfc-editor.org/info/rfc7721>.

  [RFC7739]  Gont, F., "Security Implications of Predictable Fragment
             Identification Values", RFC 7739, DOI 10.17487/RFC7739,
             February 2016, <https://www.rfc-editor.org/info/rfc7739>.

  [RFC8200]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
             (IPv6) Specification", STD 86, RFC 8200,
             DOI 10.17487/RFC8200, July 2017,
             <https://www.rfc-editor.org/info/rfc8200>.

  [RFC9293]  Eddy, W., Ed., "Transmission Control Protocol (TCP)",
             STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022,
             <https://www.rfc-editor.org/info/rfc9293>.

  [RFC9414]  Gont, F. and I. Arce, "Unfortunate History of Transient
             Numeric Identifiers", RFC 9414, DOI 10.17487/RFC9414, July
             2023, <https://www.rfc-editor.org/info/rfc9414>.

  [RFC9415]  Gont, F. and I. Arce, "On the Generation of Transient
             Numeric Identifiers", RFC 9415, DOI 10.17487/RFC9415, July
             2023, <https://www.rfc-editor.org/info/rfc9415>.

  [Sanfilippo1998a]
             Sanfilippo, S., "about the ip header id", message to the
             Bugtraq mailing list, December 1998,
             <https://seclists.org/bugtraq/1998/Dec/48>.

  [Schuba1993]
             Schuba, C., "Addressing Weakness in the Domain Name System
             Protocol", August 1993,
             <http://ftp.cerias.purdue.edu/pub/papers/christoph-schuba/
             schuba-DNS-msthesis.pdf>.

  [Shostack2014]
             Shostack, A., "Threat Modeling: Designing for Security",
             Wiley, 1st edition, February 2014.

  [Silbersack2005]
             Silbersack, M., "Improving TCP/IP security through
             randomization without sacrificing interoperability",
             EuroBSDCon 2005 Conference, January 2005,
             <http://www.silby.com/eurobsdcon05/
             eurobsdcon_silbersack.pdf>.

  [TCPT-uptime]
             McDanel, B., "TCP Timestamping - Obtaining System Uptime
             Remotely", message to the Bugtraq mailing list, March
             2001, <https://seclists.org/bugtraq/2001/Mar/182>.

Acknowledgements

  The authors would like to thank (in alphabetical order) Bernard
  Aboba, Brian Carpenter, Roman Danyliw, Theo de Raadt, Lars Eggert,
  Russ Housley, Benjamin Kaduk, Charlie Kaufman, Erik Kline, Alvaro
  Retana, Joe Touch, Michael Tüxen, Robert Wilton, and Paul Wouters for
  providing valuable comments on draft versions of this document.

  The authors would like to thank (in alphabetical order) Steven
  Bellovin, Joseph Lorenzo Hall, and Gre Norcie for providing valuable
  comments on [PREDICTABLE-NUMERIC-IDS], on which the present document
  is based.

  The authors would like to thank Diego Armando Maradona for his magic
  and inspiration.

Authors' Addresses

  Fernando Gont
  SI6 Networks
  Segurola y Habana 4310 7mo piso
  Ciudad Autonoma de Buenos Aires
  Argentina
  Email: [email protected]
  URI:   https://www.si6networks.com


  Ivan Arce
  Quarkslab
  Segurola y Habana 4310 7mo piso
  Ciudad Autonoma de Buenos Aires
  Argentina
  Email: [email protected]
  URI:   https://www.quarkslab.com