Network Working Group                                     K. McCloghrie
Request for Comments: 1353                     Hughes LAN Systems, Inc.
                                                              J. Davin
                                   MIT Laboratory for Computer Science
                                                             J. Galvin
                                     Trusted Information Systems, Inc.
                                                             July 1992


                    Definitions of Managed Objects
                  for Administration of SNMP Parties

Status of this Memo

  This document specifies an IAB standards track protocol for the
  Internet community, and requests discussion and suggestions for
  improvements. 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.

Abstract

  This memo defines a portion of the Management Information Base (MIB)
  for use with network management protocols in TCP/IP-based internets.
  In particular, it describes a representation of the SNMP parties
  defined in [8] as objects defined according to the Internet Standard
  SMI [1]. These definitions are consistent with the SNMP Security
  protocols set forth in [9].

Table of Contents

  1. The Network Management Framework ...........................    2
  2. Objects ....................................................    2
  2.1 Format of Definitions .....................................    3
  3. Overview ...................................................    3
  3.1 Structure .................................................    3
  3.2 Instance Identifiers ......................................    3
  3.3 Textual Conventions .......................................    4
  4. Definitions ................................................    4
  4.1 The SNMP Party Public Database Group ......................    9
  4.2 The SNMP Party Secrets Database Group .....................   15
  4.3 The SNMP Access Privileges Database Group .................   18
  4.4 The MIB View Database Group ...............................   21
  5. Acknowledgments ............................................   25
  6. References .................................................   25
  7. Security Considerations.....................................   26
  8. Authors' Addresses..........................................   26




McCloghrie, Davin, & Galvin                                     [Page 1]

RFC 1353                     SNMP Party MIB                    July 1992


1.  The Network Management Framework

  the Internet-standard Network Management Framework consists of three
  components.  They are:

     RFC 1155 which defines the SMI, the mechanisms used for describing
     and naming objects for the purpose of management.  RFC 1212
     defines a more concise description mechanism, which is wholly
     consistent with the SMI.

     RFC 1156 which defines MIB-I, the core set of managed objects for
     the Internet suite of protocols.  RFC 1213, defines MIB-II, an
     evolution of MIB-I based on implementation experience and new
     operational requirements.

     RFC 1157 which defines the SNMP, the protocol used for network
     access to managed objects.

  The Framework permits new objects to be defined for the purpose of
  experimentation and evaluation.

2.  Objects

  Managed objects are accessed via a virtual information store, termed
  the Management Information Base or MIB.  Objects in the MIB are
  defined using the subset of Abstract Syntax Notation One (ASN.1) [5]
  defined in the SMI.  In particular, each object has a name, a syntax,
  and an encoding.  The name is an object identifier, an
  administratively assigned name, which specifies an object type.  The
  object type together with an object instance serves to uniquely
  identify a specific instantiation of the object.  For human
  convenience, we often use a textual string, termed the OBJECT
  DESCRIPTOR, to also refer to the object type.

  The syntax of an object type defines the abstract data structure
  corresponding to that object type.  The ASN.1 language is used for
  this purpose.  However, the SMI [1] purposely restricts the ASN.1
  constructs which may be used.  These restrictions are explicitly made
  for simplicity.

  The encoding of an object type is simply how that object type is
  represented using the object type's syntax.  Implicitly tied to the
  notion of an object type's syntax and encoding is how the object type
  is represented when being transmitted on the network.

  The SMI specifies the use of the basic encoding rules of ASN.1 [6],
  subject to the additional requirements imposed by the SNMP.




McCloghrie, Davin, & Galvin                                     [Page 2]

RFC 1353                     SNMP Party MIB                    July 1992


2.1.  Format of Definitions

  Section 4 contains the specification of all object types contained in
  this MIB module.  The object types are defined using the conventions
  defined in the SMI, as amended by the extensions specified in [7].

3.  Overview

3.1.  Structure

  This MIB contains the definitions for four tables, a number of OBJECT
  IDENTIFIER assignments, and some conventions for initial use with
  some of the assignments.  The four tables are the SNMP Party Public
  database, the SNMP Party Secrets database, the SNMP Access Control
  database, and the SNMP Views database.

  The SNMP Party Public database and the SNMP Party Secrets database
  are defined as separate tables specifically for the purpose of
  positioning them in different parts of the MIB tree namespace.  In
  particular, the SNMP Party Secrets database contains secret
  information, for which security demands that access to it be limited
  to parties which use both authentication and privacy.  It is
  therefore positioned in a separate branch of the MIB tree so as to
  provide for the easiest means of accommodating the required
  limitation.

  In contrast, the SNMP Party Public database contains public
  information about SNMP parties.  In particular, it contains the
  parties' clocks which need to be read-able (but not write-able) by
  unauthenticated queries, since an unauthenticated query of a party's
  clock is the first step of the procedure to re-establish clock
  synchronization (see [9]).

  The objects in this MIB are organized into four groups.  All four of
  the groups are mandatory for those SNMP implementations that realize
  the security framework and mechanisms defined in [8] and [9].

3.2.  Instance Identifiers

  In all four of the tables in this MIB, the object instances are
  identified by values which have an underlying syntax of OBJECT
  IDENTIFIER.  For the Party Public database and the Party Secrets
  database, the index variable is the party identifier.  For the Access
  Control database and the Views database, two index variables are
  defined, both of which have a syntax of OBJECT IDENTIFIER.  (See the
  INDEX clauses in the MIB definitions below for the specific
  variables.)




McCloghrie, Davin, & Galvin                                     [Page 3]

RFC 1353                     SNMP Party MIB                    July 1992


  According to RFC 1212 [7], section 4.1.6, the syntax of the object(s)
  specified in an INDEX clause indicates how to form the instance-
  identifier.  In particular, for each index object which is object
  identifier-valued, its contribution to the instance identifier is:

     `n+1' sub-identifiers, where `n' is the number of sub-identifiers
     in the value (the first sub-identifier is `n' itself, following
     this, each sub-identifier in the value is copied).

3.3.  Textual Conventions

  The datatypes, Party, Clock, and TAddress, are used as textual
  conventions in this document.  These textual conventions have NO
  effect on either the syntax nor the semantics of any managed object.
  Objects defined using these conventions are always encoded by means
  of the rules that define their primitive type.  Hence, no changes to
  the SMI or the SNMP are necessary to accommodate these textual
  conventions which are adopted merely for the convenience of readers.

4.  Definitions

         RFC1353-MIB DEFINITIONS ::= BEGIN

         IMPORTS
                 system, mib, private, internet    FROM RFC1155-SMI
                 OBJECT-TYPE                       FROM RFC-1212;

         snmpParties     OBJECT IDENTIFIER ::= { mib-2 20 }
         partyAdmin      OBJECT IDENTIFIER ::= { snmpParties 1 }
         partyPublic     OBJECT IDENTIFIER ::= { snmpParties 2 }

         snmpSecrets     OBJECT IDENTIFIER ::= { mib-2 21 }
         partyPrivate    OBJECT IDENTIFIER ::= { snmpSecrets 1 }
         partyAccess     OBJECT IDENTIFIER ::= { snmpSecrets 2 }
         partyViews      OBJECT IDENTIFIER ::= { snmpSecrets 3 }


         --                  Textual Conventions

         --    A textual convention denoting a SNMP party identifier:

         Party ::= OBJECT IDENTIFIER


         --    A party's authentication clock - a non-negative integer
         -- which is incremented as specified/allowed by the party's
         -- Authentication Protocol.
         --    For noAuth, a party's authentication clock is unused and



McCloghrie, Davin, & Galvin                                     [Page 4]

RFC 1353                     SNMP Party MIB                    July 1992


         -- its value is undefined.
         --    For md5AuthProtocol, a party's authentication clock is a
         -- relative clock with 1-second granularity.

         Clock ::= INTEGER (0..2147483647)


         --    A textual convention denoting a transport service
         -- address.
         --    For rfc1351Domain, a TAddress is 6 octets long,
         -- the initial 4 octets containing the IP-address in
         -- network-byte order and the last 2 containing the
         -- UDP port in network-byte order.

         TAddress ::= OCTET STRING


         --- Definitions of Security Protocols

         partyProtocols
             OBJECT IDENTIFIER ::= { partyAdmin 1 }

         noAuth                  -- The protocol without authentication
             OBJECT IDENTIFIER ::= { partyProtocols 1 }

         noPriv                  -- The protocol without privacy
             OBJECT IDENTIFIER ::= { partyProtocols 3 }

         desPrivProtocol         -- The DES Privacy Protocol
             OBJECT IDENTIFIER ::= { partyProtocols 4 }

         md5AuthProtocol         -- The MD5 Authentication Protocol
             OBJECT IDENTIFIER ::= { partyProtocols 5 }


         --- definitions of Transport Domains

         transportDomains
             OBJECT IDENTIFIER ::= { partyAdmin 2 }

         rfc1351Domain --- RFC-1351 (SNMP over UDP, using SNMP Parties)
             OBJECT IDENTIFIER ::= { transportDomains 1 }









McCloghrie, Davin, & Galvin                                     [Page 5]

RFC 1353                     SNMP Party MIB                    July 1992


         --- definitions of Proxy Domains

         proxyDomains
             OBJECT IDENTIFIER ::= { partyAdmin 3 }

         noProxy                --- Local operation
             OBJECT IDENTIFIER ::= { proxyDomains 1 }


         ---    Definition of Initial Party Identifiers

         --  When devices are installed, they need to be configured
         --  with an initial set of SNMP parties.  The configuration
         --  of SNMP parties requires (among other things) the
         --  assignment of several OBJECT IDENTIFIERs.  Any local
         --  network administration can obtain the delegated
         --  authority necessary to assign its own OBJECT
         --  IDENTIFIERs.  However, to provide for those
         --  administrations who have not obtained the necessary
         --  authority, this document allocates a branch of the
         --  naming tree for use with the following conventions.

         initialPartyId
             OBJECT IDENTIFIER ::= { partyAdmin 4 }

         --  Note these are identified as "initial" party identifiers
         --  since these allow secure SNMP communication to proceed,
         --  thereby allowing further SNMP parties to be configured
         --  through use of the SNMP itself.

         --  The following definitions identify a party identifier,
         --  and specify the initial values of various object
         --  instances indexed by that identifier.  In addition,
         --  the initial MIB view and access control parameters
         --  assigned, by convention, to these parties are identified.

         --    Party Identifiers for use as initial SNMP parties
         --       at IP address  a.b.c.d

         -- partyIdentity            = { initialPartyId a b c d 1 }
         -- partyTDomain             = { rfc1351Domain }
         -- partyTAddress            = a.b.c.d, 161
         -- partyProxyFor            = { noProxy }
         -- partyAuthProtocol        = { noAuth }
         -- partyAuthClock           = 0
         -- partySecretsAuthPrivate  = ''h    (the empty string)
         -- partyAuthPublic          = ''h    (the empty string)
         -- partyAuthLifetime        = 0



McCloghrie, Davin, & Galvin                                     [Page 6]

RFC 1353                     SNMP Party MIB                    July 1992


         -- partyPrivProtocol        = { noPriv }
         -- partySecretsPrivPrivate  = ''h    (the empty string)
         -- partyPrivPublic          = ''h    (the empty string)

         -- partyIdentity            = { initialPartyId a b c d 2 }
         -- partyTDomain             = { rfc1351Domain }
         -- partyTAddress            = assigned by local administration
         -- partyProxyFor            = { noProxy }
         -- partyAuthProtocol        = { noAuth }
         -- partyAuthClock           = 0
         -- partySecretsAuthPrivate  = ''h    (the empty string)
         -- partyAuthPublic          = ''h    (the empty string)
         -- partyAuthLifetime        = 0
         -- partyPrivProtocol        = { noPriv }
         -- partySecretsPrivPrivate  = ''h    (the empty string)
         -- partyPrivPublic          = ''h    (the empty string)

         -- partyIdentity            = { initialPartyId a b c d 3 }
         -- partyTDomain             = { rfc1351Domain }
         -- partyTAddress            = a.b.c.d, 161
         -- partyProxyFor            = { noProxy }
         -- partyAuthProtocol        = { md5AuthProtocol }
         -- partyAuthClock           = 0
         -- partySecretsAuthPrivate  = assigned by local administration
         -- partyAuthPublic          = ''h    (the empty string)
         -- partyAuthLifetime        = 300
         -- partyPrivProtocol        = { noPriv }
         -- partySecretsPrivPrivate  = ''h    (the empty string)
         -- partyPrivPublic          = ''h    (the empty string)

         -- partyIdentity            = { initialPartyId a b c d 4 }
         -- partyTDomain             = { rfc1351Domain }
         -- partyTAddress            = assigned by local administration
         -- partyProxyFor            = { noProxy }
         -- partyAuthProtocol        = { md5AuthProtocol }
         -- partyAuthClock           = 0
         -- partySecretsAuthPrivate  = assigned by local administration
         -- partyAuthPublic          = ''h    (the empty string)
         -- partyAuthLifetime        = 300
         -- partyPrivProtocol        = { noPriv }
         -- partySecretsPrivPrivate  = ''h    (the empty string)
         -- partyPrivPublic          = ''h    (the empty string)

         -- partyIdentity            = { initialPartyId a b c d 5 }
         -- partyTDomain             = { rfc1351Domain }
         -- partyTAddress            = a.b.c.d, 161
         -- partyProxyFor            = { noProxy }
         -- partyAuthProtocol        = { md5AuthProtocol }



McCloghrie, Davin, & Galvin                                     [Page 7]

RFC 1353                     SNMP Party MIB                    July 1992


         -- partyAuthClock           = 0
         -- partySecretsAuthPrivate  = assigned by local administration
         -- partyAuthPublic          = ''h    (the empty string)
         -- partyAuthLifetime        = 300
         -- partyPrivProtocol        = { desPrivProtocol }
         -- partySecretsPrivPrivate  = assigned by local administration
         -- partyPrivPublic          = ''h    (the empty string)

         -- partyIdentity            = { initialPartyId a b c d 6 }
         -- partyTDomain             = { rfc1351Domain }
         -- partyTAddress            = assigned by local administration
         -- partyProxyFor            = { noProxy }
         -- partyAuthProtocol        = { md5AuthProtocol }
         -- partyAuthClock           = 0
         -- partySecretsAuthPrivate  = assigned by local administration
         -- partyAuthPublic          = ''h    (the empty string)
         -- partyAuthLifetime        = 300
         -- partyPrivProtocol        = { desPrivProtocol }
         -- partySecretsPrivPrivate  = assigned by local administration
         -- partyPrivPublic          = ''h   (the empty string)


         --  The initial access control parameters assigned, by
         --  convention, to these parties are:

         -- aclTarget     = { initialPartyId a b c d 1 }
         -- aclSubject    = { initialPartyId a b c d 2 }
         -- aclPrivileges = 3 (Get & Get-Next)

         -- aclTarget     = { initialPartyId a b c d 2 }
         -- aclSubject    = { initialPartyId a b c d 1 }
         -- aclPrivileges = 20 (GetResponse & Trap)

         -- aclTarget     = { initialPartyId a b c d 3 }
         -- aclSubject    = { initialPartyId a b c d 4 }
         -- aclPrivileges = 11 (Get, Get-Next & Set)

         -- aclTarget     = { initialPartyId a b c d 4 }
         -- aclSubject    = { initialPartyId a b c d 3 }
         -- aclPrivileges = 20 (GetResponse & Trap)

         -- aclTarget     = { initialPartyId a b c d 5 }
         -- aclSubject    = { initialPartyId a b c d 6 }
         -- aclPrivileges = 11 (Get, Get-Next & Set)

         -- aclTarget     = { initialPartyId a b c d 6 }
         -- aclSubject    = { initialPartyId a b c d 5 }
         -- aclPrivileges = 20 (GetResponse & Trap)



McCloghrie, Davin, & Galvin                                     [Page 8]

RFC 1353                     SNMP Party MIB                    July 1992


         --  The initial MIB views assigned, by convention, to
         --  these parties are:

         -- viewParty    = { initialPartyId a b c d 1 }
         -- viewSubtree  = { system }
         -- viewStatus   = { included }
         -- viewMask     = { ''h }

         -- viewParty    = { initialPartyId a b c d 1 }
         -- viewSubtree  = { snmpParties }
         -- viewStatus   = { included }
         -- viewMask     = { ''h }

         -- viewParty    = { initialPartyId a b c d 3 }
         -- viewSubtree  = { internet }
         -- viewStatus   = { included }
         -- viewMask     = { ''h }

         -- viewParty    = { initialPartyId a b c d 3 }
         -- viewSubtree  = { partyPrivate }
         -- viewStatus   = { excluded }
         -- viewMask     = { ''h }

         -- viewParty    = { initialPartyId a b c d 5 }
         -- viewSubtree  = { internet }
         -- viewStatus   = { included }
         -- viewMask     = { ''h }


         --   The SNMP Party Public Database Group
         --
         -- The non-secret party information.
         --
         -- Implementation of the objects in this group is mandatory.

         partyTable OBJECT-TYPE
             SYNTAX  SEQUENCE OF PartyEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "The SNMP Party Public database.

                     An agent must ensure that there is, at all times,
                     a one-to-one correspondence between entries in
                     this table and entries in the partySecretsTable.

                     The creation/deletion of instances in this table
                     via SNMP Set-Requests is not allowed.  Instead,



McCloghrie, Davin, & Galvin                                     [Page 9]

RFC 1353                     SNMP Party MIB                    July 1992


                     entries in this table are created/deleted as a
                     side-effect of the creation/deletion of
                     corresponding entries in the partySecretsTable.

                     Thus, a SNMP Set-Request whose varbinds contain a
                     reference to a non-existent instance of a
                     partyTable object, but no reference to the
                     corresponding instance of a partySecretsTable
                     object, will be rejected."
         ::= { partyPublic 1 }

         partyEntry OBJECT-TYPE
             SYNTAX  PartyEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "Locally held non-secret information about a
                     particular SNMP party, which is available for
                     access by network management.  Note that this does
                     not include all locally held information about a
                     party.  In particular, it does not include the
                     'last-timestamp' (i.e., the timestamp of the last
                     authentic message received) or the 'nonce'
                     values."
             INDEX  { partyIdentity }
             ::= { partyTable 1 }

         PartyEntry ::=
             SEQUENCE {
                 partyIdentity
                     Party,
                 partyTDomain
                     OBJECT IDENTIFIER,
                 partyTAddress
                     TAddress,
                 partyProxyFor
                     Party,
                 partyAuthProtocol
                     OBJECT IDENTIFIER,
                 partyAuthClock
                     Clock,
                 partyAuthPublic
                     OCTET STRING,
                 partyAuthLifetime
                     INTEGER,
                 partyPrivProtocol
                     OBJECT IDENTIFIER,
                 partyPrivPublic



McCloghrie, Davin, & Galvin                                    [Page 10]

RFC 1353                     SNMP Party MIB                    July 1992


                     OCTET STRING,
                 partyMaxMessageSize
                     INTEGER,
                 partyStatus
                     INTEGER
             }

         partyIdentity  OBJECT-TYPE
             SYNTAX  Party
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "A party identifier uniquely identifying a
                     particular SNMP party."
             ::= { partyEntry 1 }

         partyTDomain  OBJECT-TYPE
             SYNTAX  OBJECT IDENTIFIER
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "Indicates the kind of transport service by which
                     the party receives network management traffic. An
                     example of a transport domain is 'rfc1351Domain'
                     (SNMP over UDP)."
             DEFVAL  { rfc1351Domain }
             ::= { partyEntry 2 }

         partyTAddress  OBJECT-TYPE
             SYNTAX  TAddress
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The transport service address by which the party
                     receives network management traffic, formatted
                     according to the corresponding value of
                     partyTDomain.  For rfc1351Domain, partyTAddress is
                     formatted as a 4-octet IP Address concatenated
                     with a 2-octet UDP port number."
             DEFVAL  { '000000000000'h }
             ::= { partyEntry 3 }

         partyProxyFor OBJECT-TYPE
             SYNTAX  Party
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The identity of a second SNMP party or other



McCloghrie, Davin, & Galvin                                    [Page 11]

RFC 1353                     SNMP Party MIB                    July 1992


                     management entity with which interaction may be
                     necessary to satisfy received management requests.
                     In this context, the distinguished value { noProxy
                     } signifies that the party responds to received
                     management requests by entirely local mechanisms."
             DEFVAL  { noProxy }
             ::= { partyEntry 4 }

         partyAuthProtocol OBJECT-TYPE
             SYNTAX  OBJECT IDENTIFIER
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The authentication protocol by which all messages
                     generated by the party are authenticated as to
                     origin and integrity.  In this context, the value
                     { noAuth } signifies that messages generated by
                     the party are not authenticated."
             DEFVAL  { md5AuthProtocol }
             ::= { partyEntry 5 }

         partyAuthClock OBJECT-TYPE
             SYNTAX  Clock
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The authentication clock which represents the
                     local notion of the current time specific to the
                     party.  This value must not be decremented unless
                     the party's secret information is changed
                     simultaneously, at which time the party's nonce
                     and last-timestamp values must also be reset to
                     zero, and the new value of the clock,
                     respectively."
             DEFVAL  { 0 }
             ::= { partyEntry 6 }

         partyAuthPublic OBJECT-TYPE
             SYNTAX  OCTET STRING -- for md5AuthProtocol: (SIZE (0..16))
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "A publically-readable value for the party.

                     Depending on the party's authentication protocol,
                     this value may be needed to support the party's
                     authentication protocol.  Alternatively, it may be
                     used by a manager during the procedure for



McCloghrie, Davin, & Galvin                                    [Page 12]

RFC 1353                     SNMP Party MIB                    July 1992


                     altering secret information about a party.  (For
                     example, by altering the value of an instance of
                     this object in the same SNMP Set-Request used to
                     update an instance of partyAuthPrivate, a
                     subsequent Get-Request can determine if the Set-
                     Request was successful in the event that no
                     response to the Set-Request is received, see RFC
                     1352.)

                     The length of the value is dependent on the
                     party's authentication protocol.  If not used by
                     the authentication protocol, it is recommended
                     that agents support values of any length up to and
                     including the length of the corresponding
                     partyAuthPrivate object."
             DEFVAL  { ''h }      -- the empty string
             ::= { partyEntry 7 }

         partyAuthLifetime OBJECT-TYPE
             SYNTAX  INTEGER (0..2147483647)
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The lifetime (in units of seconds) which
                     represents an administrative upper bound on
                     acceptable delivery delay for protocol messages
                     generated by the party."
             DEFVAL  { 300 }
             ::= { partyEntry 8 }

         partyPrivProtocol OBJECT-TYPE
             SYNTAX  OBJECT IDENTIFIER
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The privacy protocol by which all protocol
                     messages received by the party are protected from
                     disclosure.  In this context, the value { noPriv }
                     signifies that messages received by the party are
                     not protected."
             DEFVAL  { noPriv }
             ::= { partyEntry 9 }

         partyPrivPublic OBJECT-TYPE
             SYNTAX  OCTET STRING -- for desPrivProtocol: (SIZE (0..16))
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION



McCloghrie, Davin, & Galvin                                    [Page 13]

RFC 1353                     SNMP Party MIB                    July 1992


                     "A publically-readable value for the party.

                     Depending on the party's privacy protocol, this
                     value may be needed to support the party's privacy
                     protocol.  Alternatively, it may be used by a
                     manager as a part of its procedure for altering
                     secret information about a party.  (For example,
                     by altering the value of an instance of this
                     object in the same SNMP Set-Request used to update
                     an instance of partyPrivPrivate, a subsequent
                     Get-Request can determine if the Set-Request was
                     successful in the event that no response to the
                     Set-Request is received, see RFC 1352.)

                     The length of the value is dependent on the
                     party's privacy protocol.  If not used by the
                     privacy protocol, it is recommended that agents
                     support values of any length up to and including
                     the length of the corresponding partyPrivPrivate
                     object."
             DEFVAL  { ''h }     -- the empty string
             ::= { partyEntry 10 }

         partyMaxMessageSize OBJECT-TYPE
             SYNTAX  INTEGER (484..65507)
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The maximum length in octets of a SNMP message
                     which this party will accept.  For parties which
                     execute at an agent, the agent initializes this
                     object to the maximum length supported by the
                     agent, and does not let the object be set to any
                     larger value.  For parties which do not execute at
                     the agent, the agent must allow the manager to set
                     this object to any legal value, even if it is
                     larger than the agent can generate."
             DEFVAL  { 484 }
             ::= { partyEntry 11 }

         partyStatus OBJECT-TYPE
             SYNTAX  INTEGER  { valid(1), invalid(2) }
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION
                     "The status of the locally-held information on a
                     particular SNMP party.




McCloghrie, Davin, & Galvin                                    [Page 14]

RFC 1353                     SNMP Party MIB                    July 1992


                     The instance of this object for a particular party
                     and the instance of partySecretsStatus for the
                     same party always have the same value.

                     This object will typically provide unrestricted
                     read-only access to the status of parties.  In
                     contrast, partySecretsStatus will typically
                     provide restricted read-write access to the status
                     of parties."
             ::= { partyEntry 12 }


         --   The SNMP Party Secrets Database Group

         -- The secret party information
         --
         -- Implementation of the objects in this group is mandatory.

         partySecretsTable OBJECT-TYPE
             SYNTAX  SEQUENCE OF PartySecretsEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "The SNMP Party Secrets database."
         ::= { partyPrivate 1 }

         partySecretsEntry OBJECT-TYPE
             SYNTAX  PartySecretsEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "Locally held secret information about a
                     particular SNMP party, which is available for
                     access by network management.

                     When a SNMP Set-Request is used to update the
                     values of instances of objects in this table, it
                     is recommended that the same SNMP Set-Request also
                     alter the value of a non-secret object instance
                     (e.g., an instance of partyAuthPublic or
                     partyPrivPublic).  This allows a Get-Request of
                     that non-secret object instance to determine if
                     the Set-Request was successful in the event that
                     no response which matches the Set-Request is
                     received, see RFC 1352."
             INDEX  { partySecretsIdentity }
             ::= { partySecretsTable 1 }




McCloghrie, Davin, & Galvin                                    [Page 15]

RFC 1353                     SNMP Party MIB                    July 1992


         PartySecretsEntry ::=
             SEQUENCE {
                 partySecretsIdentity
                     Party,
                 partySecretsAuthPrivate
                     OCTET STRING,
                 partySecretsPrivPrivate
                     OCTET STRING,
                 partySecretsStatus
                     INTEGER
             }

         partySecretsIdentity  OBJECT-TYPE
             SYNTAX  Party
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "A party identifier uniquely identifying a
                     particular SNMP party."
             ::= { partySecretsEntry 1 }

         partySecretsAuthPrivate OBJECT-TYPE
             SYNTAX  OCTET STRING   -- for md5AuthProtocol: (SIZE (16))
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "An encoding of the party's private authentication
                     key which may be needed to support the
                     authentication protocol.  Although the value of
                     this variable may be altered by a management
                     operation (e.g., a SNMP Set-Request), its value
                     can never be retrieved by a management operation:
                     when read, the value of this variable is the zero
                     length OCTET STRING.

                     The private authentication key is NOT directly
                     represented by the value of this variable, but
                     rather it is represented according to an encoding.
                     This encoding is the bitwise exclusive-OR of the
                     old key with the new key, i.e., of the old private
                     authentication key (prior to the alteration) with
                     the new private authentication key (after the
                     alteration).  Thus, when processing a received
                     protocol Set operation, the new private
                     authentication key is obtained from the value of
                     this variable as the result of a bitwise
                     exclusive-OR of the variable's value and the old
                     private authentication key.  In calculating the



McCloghrie, Davin, & Galvin                                    [Page 16]

RFC 1353                     SNMP Party MIB                    July 1992


                     exclusive-OR, if the old key is shorter than the
                     new key, zero-valued padding is appended to the
                     old key.  If no value for the old key exists, a
                     zero-length OCTET STRING is used in the
                     calculation."
             DEFVAL  { ''h }     -- the empty string
             ::= { partySecretsEntry 2 }

         partySecretsPrivPrivate OBJECT-TYPE
             SYNTAX  OCTET STRING   -- for desPrivProtocol: (SIZE (16))
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "An encoding of the party's private encryption key
                     which may be needed to support the privacy
                     protocol.  Although the value of this variable may
                     be altered by a management operation (e.g., a SNMP
                     Set-Request), its value can never be retrieved by
                     a management operation: when read, the value of
                     this variable is the zero length OCTET STRING.

                     The private encryption key is NOT directly
                     represented by the value of this variable, but
                     rather it is represented according to an encoding.
                     This encoding is the bitwise exclusive-OR of the
                     old key with the new key, i.e., of the old private
                     encryption key (prior to the alteration) with the
                     new private encryption key (after the alteration).
                     Thus, when processing a received protocol Set
                     operation, the new private encryption key is
                     obtained from the value of this variable as the
                     result of a bitwise exclusive-OR of the variable's
                     value and the old private encryption key.  In
                     calculating the exclusive-OR, if the old key is
                     shorter than the new key, zero-valued padding is
                     appended to the old key.  If no value for the old
                     key exists, a zero-length OCTET STRING is used in
                     the calculation."
             DEFVAL  { ''h }     -- the empty string
             ::= { partySecretsEntry 3 }

         partySecretsStatus OBJECT-TYPE
             SYNTAX  INTEGER  { valid(1), invalid(2) }
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The status of the locally-held information on a
                     particular SNMP party.



McCloghrie, Davin, & Galvin                                    [Page 17]

RFC 1353                     SNMP Party MIB                    July 1992


                     Setting an instance of this object to the value
                     'valid(1)' has the effect of ensuring that valid
                     local knowledge exists for the corresponding
                     party.  For valid local knowledge to exist, there
                     must be corresponding instances of each object in
                     this table and in the partyTable.  Thus, the
                     creation of instances in the partyTable (but not
                     in the aclTable or viewTable) occurs as a direct
                     result of the creation of instances in this table.

                     Setting an instance of this object to the value
                     'invalid(2)' has the effect of invalidating all
                     local knowledge of the corresponding party,
                     including the invalidating of any/all entries in
                     the partyTable, the partySecretsTable, the
                     aclTable, and the viewTable which reference said
                     party.

                     It is an implementation-specific matter as to
                     whether the agent removes an invalidated entry
                     from the table.  Accordingly, management stations
                     must be prepared to receive from agents tabular
                     information corresponding to entries not currently
                     in use.  Proper interpretation of such entries
                     requires examination of the relevant
                     partySecretsStatus object."
             DEFVAL  { valid }
             ::= { partySecretsEntry 4 }


         --  The SNMP Access Privileges Database Group

         --  This group of objects allows the SNMP itself to be used to
         --  configure new SNMP parties, or to manipulate the access
         --  privileges of existing parties.
         --
         --  Implementation of the objects in this group is mandatory.


         aclTable OBJECT-TYPE
             SYNTAX  SEQUENCE OF AclEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "The access privileges database."
         ::= { partyAccess 1 }





McCloghrie, Davin, & Galvin                                    [Page 18]

RFC 1353                     SNMP Party MIB                    July 1992


         aclEntry OBJECT-TYPE
             SYNTAX  AclEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "The access privileges for a particular requesting
                     SNMP party in accessing a particular target SNMP
                     party."
             INDEX  { aclTarget, aclSubject }
             ::= { aclTable 1 }

         AclEntry ::=
             SEQUENCE {
                 aclTarget
                     Party,
                 aclSubject
                     Party,
                 aclPrivileges
                     INTEGER,
                 aclStatus
                     INTEGER
             }

         aclTarget OBJECT-TYPE
             SYNTAX  Party
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The target SNMP party whose performance of
                     management operations is constrained by this set
                     of access privileges."
             ::= { aclEntry 1 }

         aclSubject OBJECT-TYPE
             SYNTAX  Party
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The subject SNMP party whose requests for
                     management operations to be performed is
                     constrained by this set of access privileges."
             ::= { aclEntry 2 }

         aclPrivileges OBJECT-TYPE
             SYNTAX  INTEGER (0..31)
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION



McCloghrie, Davin, & Galvin                                    [Page 19]

RFC 1353                     SNMP Party MIB                    July 1992


                     "The access privileges which govern what
                     management operations a particular target party
                     may perform when requested by a particular subject
                     party.  These privileges are specified as a sum of
                     values, where each value specifies a SNMP PDU type
                     by which the subject party may request a permitted
                     operation.  The value for a particular PDU type is
                     computed as 2 raised to the value of the ASN.1
                     context-specific tag for the appropriate SNMP PDU
                     type.  The values (for the tags defined in RFC
                     1157) are defined in RFC 1351 as:

                      Get         :   1
                      GetNext     :   2
                      GetResponse :   4
                      Set         :   8
                      Trap        :  16

                     The null set is represented by the value zero."
             DEFVAL  { 3 }      -- Get & Get-Next
             ::= { aclEntry 3 }

         aclStatus OBJECT-TYPE
             SYNTAX  INTEGER  { valid(1), invalid(2) }
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The status of the access privileges for a
                     particular requesting SNMP party in accessing a
                     particular target SNMP party.  Setting an instance
                     of this object to the value 'invalid(2)' has the
                     effect of invalidating the corresponding access
                     privileges.

                     It is an implementation-specific matter as to
                     whether the agent removes an invalidated entry
                     from the table.  Accordingly, management stations
                     must be prepared to receive from agents tabular
                     information corresponding to entries not currently
                     in use.  Proper interpretation of such entries
                     requires examination of the relevant aclStatus
                     object."
             DEFVAL  { valid }
             ::= { aclEntry 4 }







McCloghrie, Davin, & Galvin                                    [Page 20]

RFC 1353                     SNMP Party MIB                    July 1992


         --   The MIB View Database Group

         --  This group of objects allows the SNMP itself to be used to
         --  configure new SNMP parties, or to manipulate the MIB
         --  MIB views of existing parties.
         --
         --  Implementation of the objects in this group is mandatory.


         viewTable OBJECT-TYPE
             SYNTAX  SEQUENCE OF ViewEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "The table contained in the local database which
                     defines local MIB views.  Each SNMP party has a
                     single MIB view which is defined by two
                     collections of view subtrees: the included view
                     subtrees, and the excluded view subtrees.  Every
                     such subtree, both included and excluded, is
                     defined in this table.

                     To determine if a particular object instance is in
                     a particular SNMP party's MIB view, compare the
                     object instance's Object Identifier with each
                     entry (for this party) in this table.  If none
                     match, then the object instance is not in the MIB
                     view.  If one or more match, then the object
                     instance is included in, or excluded from, the MIB
                     view according to the value of viewStatus in the
                     entry whose value of viewSubtree has the most
                     sub-identifiers.  If multiple entries match and
                     have the same number of sub-identifiers, then the
                     lexicographically greatest instance of viewStatus
                     determines the inclusion or exclusion.

                     An object instance's Object Identifier X matches
                     an entry in this table when the number of sub-
                     identifiers in X is at least as many as in the
                     value of viewSubtree for the entry, and each sub-
                     identifier in the value of viewSubtree matches its
                     corresponding sub-identifier in X.  Two sub-
                     identifiers match either if the corresponding bit
                     of viewMask is zero (the 'wild card' value), or if
                     they are equal.

                     Due to this 'wild card' capability, we introduce
                     the term, a 'family' of view subtrees, to refer to



McCloghrie, Davin, & Galvin                                    [Page 21]

RFC 1353                     SNMP Party MIB                    July 1992


                     the set of subtrees defined by a particular
                     combination of values of viewSubtree and viewMask.
                     In the case where no 'wild card' is defined in
                     viewMask, the family of view subtrees reduces to a
                     single view subtree."
         ::= { partyViews 1 }

         viewEntry OBJECT-TYPE
             SYNTAX  ViewEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "Information on a particular family of view
                     subtrees included in or excluded from a particular
                     SNMP party's MIB view."
             INDEX  { viewParty, viewSubtree }
             ::= { viewTable 1 }

         ViewEntry ::=
             SEQUENCE {
                 viewParty
                     Party,
                 viewSubtree
                     OBJECT IDENTIFIER,
                 viewStatus
                     INTEGER,
                 viewMask
                     OCTET STRING
             }

         viewParty  OBJECT-TYPE
             SYNTAX  Party
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The SNMP party whose single MIB view includes or
                     excludes a particular family of view subtrees."
             ::= { viewEntry 1 }

         viewSubtree OBJECT-TYPE
             SYNTAX  OBJECT IDENTIFIER
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The view subtree which, in combination with the
                     corresponding instance of viewMask, defines a
                     family of view subtrees.  This family is included
                     in, or excluded from the particular SNMP party's



McCloghrie, Davin, & Galvin                                    [Page 22]

RFC 1353                     SNMP Party MIB                    July 1992


                     MIB view, according to the value of the
                     corresponding instance of viewStatus."
             ::= { viewEntry 2 }

         viewStatus OBJECT-TYPE
             SYNTAX  INTEGER  {
                         included(1),
                         excluded(2),
                         invalid(3)
                     }
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The status of a particular family of view
                     subtrees within the particular SNMP party's MIB
                     view.  The value 'included(1)' indicates that the
                     corresponding instances of viewSubtree and
                     viewMask define a family of view subtrees included
                     in the MIB view.  The  value 'excluded(2)'
                     indicates that the corresponding instances of
                     viewSubtree and viewMask define a family of view
                     subtrees excluded from the MIB view.

                     Setting an instance of this object to the value
                     'invalid(3)' has the effect of invalidating the
                     presence or absence of the corresponding family of
                     view subtrees in the corresponding SNMP party's
                     MIB view.

                     It is an implementation-specific matter as to
                     whether the agent removes an invalidated entry
                     from the table.  Accordingly, management stations
                     must be prepared to receive from agents tabular
                     information corresponding to entries not currently
                     in use.  Proper interpretation of such entries
                     requires examination of the relevant viewStatus
                     object."
             DEFVAL  { included }
             ::= { viewEntry 3 }

         viewMask  OBJECT-TYPE
             SYNTAX  OCTET STRING (SIZE (0..16))
             ACCESS  read-write
             STATUS  mandatory
             DESCRIPTION
                     "The bit mask which, in combination with the
                     corresponding instance of viewSubtree, defines a
                     family of view subtrees.



McCloghrie, Davin, & Galvin                                    [Page 23]

RFC 1353                     SNMP Party MIB                    July 1992


                     Each bit of this bit mask corresponds to a sub-
                     identifier of viewSubtree, with the most
                     significant bit of the i-th octet of this octet
                     string value (extended if necessary, see below)
                     corresponding to the (8*i - 7)-th sub-identifier,
                     and the least significant bit of the i-th octet of
                     this octet string corresponding to the (8*i)-th
                     sub-identifier, where i is in the range 1 through
                     16.

                     Each bit of this bit mask specifies whether or not
                     the corresponding sub-identifiers must match when
                     determining if an Object Identifier is in this
                     family of view subtrees; a '1' indicates that an
                     exact match must occur; a '0' indicates 'wild
                     card', i.e., any sub-identifier value matches.

                     Thus, the Object Identifier X of an object
                     instance is contained in a family of view subtrees
                     if the following criteria are met:

                          for each sub-identifier of the value of
                          viewSubtree, either:

                               the i-th bit of viewMask is 0, or

                               the i-th sub-identifier of X is equal to
                               the i-th sub-identifier of the value of
                               viewSubtree.

                     If the value of this bit mask is M bits long and
                     there are more than M sub-identifiers in the
                     corresponding instance of viewSubtree, then the
                     bit mask is extended with 1's to be the required
                     length.

                     Note that when the value of this object is the
                     zero-length string, this extension rule results in
                     a mask of all-1's being used (i.e., no 'wild
                     card'), and the family of view subtrees is the one
                     view subtree uniquely identified by the
                     corresponding instance of viewSubtree."
             DEFVAL  { ''h }
             ::= { viewEntry 4 }


         END




McCloghrie, Davin, & Galvin                                    [Page 24]

RFC 1353                     SNMP Party MIB                    July 1992


5.  Acknowledgments

  This document was produced on behalf of the SNMP Security Working
  Group of the Internet Engineering Task Force.  The authors wish to
  thank the members of the working group, and others who contributed to
  this effort.

6.  References

  [1] Rose, M., and K. McCloghrie, "Structure and Identification of
      Management Information for TCP/IP based internets", RFC 1155,
      Performance Systems International, Hughes LAN Systems, May 1990.

  [2] McCloghrie, K., and M. Rose, "Management Information Base for
      Network Management of TCP/IP-based Internets", RFC 1156, Hughes
      LAN Systems and Performance Systems International, May 1990.

  [3] Case, J., M. Fedor, M. Schoffstall, and J. Davin, The Simple
      Network Management Protocol", RFC 1157, University of Tennessee
      at Knoxville, Performance Systems International, Performance
      Systems International, and the MIT Laboratory for Computer
      Science, May 1990.

  [4] McCloghrie K., and M. Rose, Editors, "Management Information Base
      for Network Management of TCP/IP-based internets", RFC 1213,
      Performance Systems International, March 1991.

  [5] Information processing systems - Open Systems Interconnection -
      Specification of Abstract Syntax Notation One (ASN.1),
      International Organization for Standardization, International
      Standard 8824, December 1987.

  [6] Information processing systems - Open Systems Interconnection -
      Specification of Basic Encoding Rules for Abstract Notation One
      (ASN.1), International Organization for Standardization,
      International Standard 8825, December 1987.

  [7] Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions",
      RFC 1212, Performance Systems International, Hughes LAN Systems,
      March 1991.

  [8] Davin, J., Galvin, J., and K. McCloghrie, "SNMP Administrative
      Model", RFC 1351, MIT Laboratory for Computer Science, Trusted
      Information Systems, Inc., Hughes LAN Systems, Inc., July 1992.

  [9] Galvin, J., McCloghrie, K., and J. Davin, "SNMP Security
      Protocols", RFC 1352, Trusted Information Systems, Inc., Hughes
      LAN Systems, Inc., MIT Laboratory for Computer Science, July



McCloghrie, Davin, & Galvin                                    [Page 25]

RFC 1353                     SNMP Party MIB                    July 1992


      1992.

Security Considerstions

  Security issues are discussed in section 3.1. and in RFCs 1351 and
  1352.

Authors' Addresses

  Keith McCloghrie
  Hughes LAN Systems, Inc.
  Mountain View, CA 94043

  Phone:  (415) 966-7934
  EMail:  [email protected]


  James R. Davin
  MIT Laboratory for Computer Science
  545 Technology Square
  Cambridge, MA 02139

  Phone:  (617) 253-6020
  EMail:  [email protected]


  James M. Galvin
  Trusted Information Systems, Inc.
  3060 Washington Road, Route 97
  Glenwood, MD 21738

  Phone:  (301) 854-6889
  EMail:  [email protected]


















McCloghrie, Davin, & Galvin                                    [Page 26]