home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1312.txt < prev    next >
Text File  |  1996-05-07  |  18KB  |  208 lines

  1.   
  2.  
  3.   
  4.  
  5.   
  6.  
  7. Network Working Group                                          R. Nelson Request for Comments: 1312                               Crynwr Software Obsoletes: RFC 1159                                            G. Arnold                                                   Sun Microsystems, Inc.                                                               April 1992  
  8.  
  9.                          Message Send Protocol 2  
  10.  
  11. Status of this Memo  
  12.  
  13.    This memo defines an Experimental Protocol for the Internet    community.  Discussion and suggestions for improvement are requested.    Please refer to the current edition of the "IAB Official Protocol    Standards" for the standardization state and status of this protocol.    Distribution of this memo is unlimited.  
  14.  
  15. Discussion  
  16.  
  17.    The Message Send Protocol is used to send a short message to a given    user on a given terminal on a given host.  Unix's write command    offers a limited form of this service through its host-local write    command.  This service is also known on some hosts as "SEND".  
  18.  
  19.    As the Internet grows, more and more people are using hosts that do    not run Internet protocols at all times.  These hosts may be able to    use a simple protocol that can be implemented using UDP and IP.  The    Message Send Protocol is one such protocol.  
  20.  
  21.    Note that a message sending protocol is already defined using TCP.    The SMTP protocol includes a "SEND" command that will direct mail to    a user's terminal.  SMTP's SEND is not useful in this instance    because SMTP's SEND is not implemented by the majority of vendors at    this time, and is difficult to use by unskilled users.  For the    purposes of standardization, we will include a TCP based Message Send    Service.  
  22.  
  23. Message Syntax  
  24.  
  25.    The message consists of several parts, all of which must be present    The first part is a single octet indicating the protocol revision,    currently decimal 66, 'B'. The remaining parts are null-terminated    sequences of eight-bit characters in the ISO 8859/1 alphabet. Some    parts may be empty. All comparisons of parts (e.g., recipient,  
  26.  
  27.   
  28.  
  29.   
  30.  
  31.   
  32.  
  33. Nelson & Arnold                                                 [Page 1]   RFC 1312                Message Send Protocol 2               April 1992  
  34.  
  35.     cookie, etc.) are case-insensitive. The parts are as follows:  
  36.  
  37.    RECIPIENT      The name of the user that the message is directed to.                   If this part is empty, the message may be delivered to                   any user of the destination system.  
  38.  
  39.    RECIP-TERM     The name of the terminal to which the message is to be                   delivered. The syntax and semantics of terminal names                   are outside the scope of this specification. If this                   part is empty, the "right" terminal is chosen. This is                   a system-dependent function.  If this part consists of                   the string "*", all terminals on the destination                   system are implied.  If the RECIPIENT part is empty                   but the RECIP-TERM is not, the message is written on                   the specified terminal.  If both the RECIPIENT and                   RECIP-TERM parts are empty, the message should be                   written on the "console", which is defined as some                   place where the message is most likely to be seen by a                   human operator or administrator.  
  40.  
  41.    MESSAGE        The actual message. The server need not preserve the                   formatting and white-space content of the message if                   this is necessary to display it.  New lines should be                   represented using the usual Netascii CR + LF.                   (Following the Internet tradition, a server should                   probably be prepared to accept a message in which some                   other end-of-line convention is followed, but a                   conforming client must use CR + LF.)  
  42.  
  43.                   The message text may only contain printable characters                   from the ISO 8859/1 set, which is upward compatible                   from USASCII, plus CR, LF and TAB. No other control                   codes or escape sequences may be included: the client                   should strip them from the message before it is                   transmitted, and the server must check each incoming                   message for illegal codes. (A server may choose to                   display the message after stripping out such codes, or                   may reject the entire message.) If the MESSAGE part is                   empty, the message may be discarded by the server.  
  44.  
  45.    SENDER         The username of the sender. (This and subsequent parts                   were not present in version 1 of the Message Send                   Protocol.) This part should not be empty. A server may                   choose to accept, reject or ignore messages in which                   the SENDER part is empty.  
  46.  
  47.    SENDER-TERM    The name of the sending user's terminal. This part may                   be empty. The intention is that a recipient may reply  
  48.  
  49.   
  50.  
  51. Nelson & Arnold                                                 [Page 2]   RFC 1312                Message Send Protocol 2               April 1992  
  52.  
  53.                    to a message by sending the reply to the user SENDER                   at terminal SENDER-TERM on the originating system.                   (The sender's hostname should be retrieved from the                   transport software.)  
  54.  
  55.    COOKIE         A magic cookie. This part must be present in all                   messages, but is only of significance for the UDP                   service. The combination of the sender's UDP port                   number and this cookie should be unique. A client may                   elect to transmit a particular message several times                   to increase the chances of its reception; a server may                   use the cookie and port to identify duplicate messages                   and discard them. A reasonable cookie is the time of                   day represented in a readable format. The maximum                   length of a cookie is 32 octets, excluding the                   terminating null.  
  56.  
  57.    SIGNATURE      A token which, if present, may be used by the server                   to verify the identity of the sender. The use of the                   SIGNATURE part is discussed further in the section on                   Security, below.  
  58.  
  59.     The total length of the message shall be less than 512 octets.  This    includes all eight parts, and any terminating nulls.  UDP packets are    limited to 512 octets.  
  60.  
  61.    If this protocol is changed, the revision number will be changed.  
  62.  
  63.    TCP Based Message Send Service  
  64.  
  65.    One Message Send Service is defined as a connection based application    on TCP.  A server listens for TCP connections on TCP port 18.  Once a    connection is established a message is sent by the client over the    connection.  
  66.  
  67.    The server replies with a single character indicating positive ("+")    or negative ("-") acknowledgment, immediately followed by an optional    message of explanation, terminated with a null.  The positive    acknowledgement means that the message was successfully delivered to    some user/terminal, and that the negative acknowledgement means that    the message was NOT delivered to any terminal.  
  68.  
  69.    The positive acknowledgement message can contain information about    what user and terminal the message was delivered to in the case of    incomplete user/terminal fields in the message.  The negative    acknowledgement can contain information about WHY the message was not    delivered (no such user/terminal, system failure, user doesn't accept  
  70.  
  71.   
  72.  
  73. Nelson & Arnold                                                 [Page 3]   RFC 1312                Message Send Protocol 2               April 1992  
  74.  
  75.     messages, etc).  
  76.  
  77.    Multiple messages can be sent over the same channel.  The client    should close first (the server may/should not close directly after    the acknowledgement is sent) and the server may close after some    timeout on the order of minutes. If the sever is unable to decode a    message, or no message is received within a suitable timeout, it may    close the channel (on the assumption that the sender may have    formatted the data incorrectly).  
  78.  
  79.    UDP Based Message Send Service  
  80.  
  81.    Another Message Send Service is defined as a datagram based    application on UDP.  A server listens for UDP datagrams on UDP port    18.  When a datagram is received by the server, an answering datagram    may be sent back to the client.  If the message was addressed to a    particular user (i.e., the RECIPIENT part was non-empty) and was    successfully delivered to that user, a positive acknowledgement    should be sent (as described above). If the message was directed at    any user (i.e., the RECIPIENT part is empty), or if the message could    not be delivered for some reason, no reply is sent.  
  82.  
  83.    The reason for this policy is that the UDP service may be used to    broadcast messages addressed to a particular user on an unknown    system or all users on all systems. In either case, it is    inappropriate for all servers to send replies. An alternative    approach might have been to require that a server only send a reply    if a message was addressed explicitly to that system and was not    broadcast. Unfortunately, the most popular network programming API    does not provide an easy way for an application to determine this;    furthermore such a policy would provide no feedback to the sender of    a broadcast message to a particular recipient. The approach adopted    here provides a reasonable compromise.  
  84.  
  85.    Example of Message Encoding  
  86.  
  87.    Consider a situation in which the user "sandy" is logged into the    console of system "alpha", and wishes to send a message to the user    "chris". "chris" is known to be logged in on the system "beta" but    the exact terminal is unknown. The message consists of two lines of    text, "Hi" followed by "How about lunch?".  
  88.  
  89.    The message would be encoded as follows:  
  90.  
  91.   
  92.  
  93.   
  94.  
  95.   
  96.  
  97.  Nelson & Arnold                                                 [Page 4]   RFC 1312                Message Send Protocol 2               April 1992  
  98.  
  99.   
  100.  
  101.               +--------+---------+---------+---------+            0 |    B   |    c    |    h    |    r    |              +--------+---------+---------+---------+            4 |    i   |    s    |  <NULL> |  <NULL> |              +--------+---------+---------+---------+            8 |    H   |    i    |   <CR>  |   <LF>  |              +--------+---------+---------+---------+           12 |    H   |    o    |    w    |         |              +--------+---------+---------+---------+           16 |    a   |    b    |    o    |    u    |              +--------+---------+---------+---------+           20 |    t   |         |    l    |    u    |              +--------+---------+---------+---------+           24 |    n   |    c    |    h    |    ?    |              +--------+---------+---------+---------+           28 |  <NULL>|    s    |    a    |    n    |              +--------+---------+---------+---------+           32 |    d   |    y    |  <NULL> |    c    |              +--------+---------+---------+---------+           36 |    o   |    n    |    s    |    o    |              +--------+---------+---------+---------+           40 |    l   |    e    |  <NULL> |    9    |              +--------+---------+---------+---------+           44 |    1   |    0    |    8    |    0    |              +--------+---------+---------+---------+           48 |    6   |    1    |    2    |    1    |              +--------+---------+---------+---------+           52 |    3   |    2    |    5    |  <NULL> |              +--------+---------+---------+---------+           56 | <NULL> |              +--------+  
  102.  
  103.     Note that the RECIP-TERM  and SIGNATURE parts are empty. The COOKIE    is the string "910806121325", which in this implementation indicates    that the message was sent at 12:13:25 on the 6th of August, 1991.    The identity if the sending and receiving systems is not included in    the message; the server must obtain this information from the    transport service.  
  104.  
  105.    Advisories  
  106.  
  107.    Client and server implementations must follow the character set    restrictions noted in the MESSAGE part description. Failure to do so    may have undesirable effects on the operation of the receiver's    terminal; more seriously, it may open up a significant security  
  108.  
  109.   
  110.  
  111. Nelson & Arnold                                                 [Page 5]   RFC 1312                Message Send Protocol 2               April 1992  
  112.  
  113.     "hole". The checks must be made on any part of the message which may    be displayed, including the sender's name and terminal.  This is one    case where the admonition to "be liberal in what you accept" is not    applicable. A server may chose to apply additional checks to an    incoming message, and to reject any message which may pose a security    risk. For example, a system using a PostScript-based display may    reject a message which might be interpreted as an executable    PostScript program.  
  114.  
  115.    The underlying transport, whether TCP or UDP, is expected to provide    checksums for the message and any response.  
  116.  
  117.    The semantics of the various RECIPIENT and RECIP-TERM combinations    may be confusing. The introduction of the "*" wildcard designation in    the RECIP-TERM part makes it possible to send a message to all    terminals on the designated system (if RECIPIENT is empty), or to all    terminals at which a particular recipient has logged in.  
  118.  
  119.    A positive acknowledgement may indicate only that the Message Send    server was able to successfully invoke a local message delivery    service. It may not be possible for true end-to-end semantics to be    inferred.  
  120.  
  121.    For example, a Message Send server may employ a local delivery    mechanism which calls upon the services of a window system to display    the message in a pop-up window. This process may take some    significant time to complete, and it is unclear whether it is useful    for the server to wait for an indeterminate period before returning    an acknowledgement.  Therefore, this specification does not prescribe    whether the acknowledgement is associated with delivery of the    message to the local service, the display of the message, or    confirmation by the user that the message has been read by, e.g.,    dismissing the pop-up window.  
  122.  
  123. Security Considerations  
  124.  
  125.    Those who plan to implement this service must ensure that the    following issues are reflected in the documentation of their    products, and that their implementations include sufficient    configuration controls to allow systems and network administrators to    achieve the appropriate levels of usability and security.  
  126.  
  127.    First, this service may allow someone to write on a user's terminal    without the user giving his or her permission.  Where possible, users    should be provided with a mechanism for disabling this.  
  128.  
  129.    Second, it is extremely important for implementors to observe the    rules for filtering message text as discussed under Message Syntax  
  130.  
  131.   
  132.  
  133. Nelson & Arnold                                                 [Page 6]   RFC 1312                Message Send Protocol 2               April 1992  
  134.  
  135.     above. Failure to do this may introduce major security holes.  
  136.  
  137.    The third issue concerns the verification of the sender's identity.    If the recipient is fooled into believing that a message is from a    particular user, various security issues may arise. For example, the    recipient may send a reply containing confidential material.  
  138.  
  139.    This service is primarily intended for "open" environments:    controlled local area networks used by reasonably trusted    participants, in which security considerations may be relaxed in the    interests of ease of use and administration. In such an environment    it is appropriate to trust the user name and source IP address as    identifying the actual sender of the message.  
  140.  
  141.    Within more security-conscious environments, this assumption is    probably unacceptable. As has been widely noted, there is no way    within the current Internet architecture to ensure that the source    address of an IP datagram is correct. Hence it is entirely possible    for someone to spoof the IP address.  
  142.  
  143.    The obvious, and simplest, answer is to disallow the use of this    protocol in such situations.  However a more constructive approach is    to incorporate within the protocol some mechanism by which a server    can reliably identify the sender.  
  144.  
  145.    In this version of the protocol specification, we define a SIGNATURE    part within a message. If this part is empty, the identity of the    sender cannot be verified, and the server implementation may elect to    reject all such requests.  If the part is not empty, it is treated as    a case-insensitive text encoding of some security token. This RFC    does not define the encoding or interpretation of this token. We    expect that such matters will form part of future RFCs on security    and privacy issues; at an appropriate time, this RFC will be re-    issued to include references to these RFCs.  
  146.  
  147. Acknowledgements  
  148.  
  149.    PostScript is a trademark of Adobe Systems, Inc.  
  150.  
  151.   
  152.  
  153.   
  154.  
  155.   
  156.  
  157.   
  158.  
  159.   
  160.  
  161.   
  162.  
  163. Nelson & Arnold                                                 [Page 7]   RFC 1312                Message Send Protocol 2               April 1992  
  164.  
  165.  Authors' Addresses  
  166.  
  167.    Russell Nelson    Crynwr Software    11 Grant St.    Potsdam, NY 13676  
  168.  
  169.    Phone:  (315) 268-1925    EMail:  nelson@crynwr.com  
  170.  
  171.     Geoff Arnold    Sun Microsystems, Inc.    2 Federal Street    Billerica, MA 01821  
  172.  
  173.    Phone:  (508) 671-0317    EMail:  geoff@east.sun.com  
  174.  
  175.   
  176.  
  177.   
  178.  
  179.   
  180.  
  181.   
  182.  
  183.   
  184.  
  185.   
  186.  
  187.   
  188.  
  189.   
  190.  
  191.   
  192.  
  193.   
  194.  
  195.   
  196.  
  197.   
  198.  
  199.   
  200.  
  201.   
  202.  
  203.   
  204.  
  205.   
  206.  
  207. Nelson & Arnold                                                 [Page 8]    
  208.