SNMP-USM-DH-OBJECTS-MIB.txt
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:21k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. SNMP-USM-DH-OBJECTS-MIB DEFINITIONS ::= BEGIN
  2. IMPORTS
  3.     MODULE-IDENTITY, OBJECT-TYPE,
  4.     -- OBJECT-IDENTITY,
  5.     experimental, Integer32
  6.         FROM SNMPv2-SMI
  7.     TEXTUAL-CONVENTION
  8.         FROM SNMPv2-TC
  9.     MODULE-COMPLIANCE, OBJECT-GROUP
  10.         FROM SNMPv2-CONF
  11.     usmUserEntry
  12.         FROM SNMP-USER-BASED-SM-MIB
  13.     SnmpAdminString
  14.         FROM SNMP-FRAMEWORK-MIB;
  15. snmpUsmDHObjectsMIB MODULE-IDENTITY
  16.     LAST-UPDATED "200003060000Z"  -- 6 March 2000, Midnight
  17.     ORGANIZATION "Excite@Home"
  18.     CONTACT-INFO "Author: Mike StJohns
  19.                   Postal: Excite@Home
  20.                           450 Broadway
  21.                           Redwood City, CA 94063
  22.                   Email:  stjohns@corp.home.net
  23.                   Phone:  +1-650-556-5368"
  24.     DESCRIPTION
  25.         "The management information definitions for providing forward
  26.     secrecy for key changes for the usmUserTable, and for providing a
  27.     method for 'kickstarting' access to the agent via a Diffie-Helman
  28.     key agreement."
  29.     REVISION     "200003060000Z"
  30.     DESCRIPTION
  31.        "Initial version published as RFC 2786."
  32.     ::= { experimental 101 }  -- IANA DHKEY-CHANGE 101
  33. -- Administrative assignments
  34. usmDHKeyObjects OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 1 }
  35. usmDHKeyConformance OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 2 }
  36. -- Textual conventions
  37. DHKeyChange ::=         TEXTUAL-CONVENTION
  38.     STATUS              current
  39.     DESCRIPTION
  40.         "Upon initialization, or upon creation of a row containing an
  41.     object of this type, and after any successful SET of this value, a
  42.     GET of this value returns 'y' where y = g^xa MOD p, and where g is
  43.     the base from usmDHParameters, p is the prime from
  44.     usmDHParameters, and xa is a new random integer selected by the
  45.     agent in the interval 2^(l-1) <= xa < 2^l < p-1.  'l' is the
  46.     optional privateValueLength from usmDHParameters in bits.  If 'l'
  47.     is omitted, then xa (and xr below) is selected in the interval 0
  48.     <= xa < p-1.  y is expressed as an OCTET STRING 'PV' of length 'k'
  49.     which satisfies
  50.               k
  51.         y =  SUM   2^(8(k-i)) PV'i
  52.              i=1
  53.         where PV1,...,PVk are the octets of PV from first to last, and
  54.         where PV1 <> 0.
  55.     A successful SET consists of the value 'y' expressed as an OCTET
  56.     STRING as above concatenated with the value 'z'(expressed as an
  57.     OCTET STRING in the same manner as y) where z = g^xr MOD p, where
  58.     g, p and l are as above, and where xr is a new random integer
  59.     selected by the manager in the interval 2^(l-1) <= xr < 2^l <
  60.     p-1. A SET to an object of this type will fail with the error
  61.     wrongValue if the current 'y' does not match the 'y' portion of
  62.     the value of the varbind for the object. (E.g. GET yout, SET
  63.     concat(yin, z), yout <> yin).
  64.     Note that the private values xa and xr are never transmitted from
  65.     manager to device or vice versa, only the values y and z.
  66.     Obviously, these values must be retained until a successful SET on
  67.     the associated object.
  68.     The shared secret 'sk' is calculated at the agent as sk = z^xa MOD
  69.     p, and at the manager as sk = y^xr MOD p.
  70.     Each object definition of this type MUST describe how to map from
  71.     the shared secret 'sk' to the operational key value used by the
  72.     protocols and operations related to the object.  In general, if n
  73.     bits of key are required, the author suggests using the n
  74.     right-most bits of the shared secret as the operational key value."
  75.     REFERENCE
  76.         "-- Diffie-Hellman Key-Agreement Standard, PKCS #3;
  77.             RSA Laboratories, November 1993"
  78.     SYNTAX              OCTET STRING
  79. -- Diffie Hellman public values
  80. usmDHPublicObjects      OBJECT IDENTIFIER ::= { usmDHKeyObjects 1 }
  81. usmDHParameters OBJECT-TYPE
  82.     SYNTAX  OCTET STRING
  83.     MAX-ACCESS read-write
  84.     STATUS  current
  85.     DESCRIPTION
  86.         "The public Diffie-Hellman parameters for doing a Diffie-Hellman
  87.     key agreement for this device.  This is encoded as an ASN.1
  88.     DHParameter per PKCS #3, section 9.  E.g.
  89.         DHParameter ::= SEQUENCE {
  90.            prime   INTEGER,   -- p
  91.            base    INTEGER,   -- g
  92.            privateValueLength  INTEGER OPTIONAL }
  93.     Implementors are encouraged to use either the values from
  94.     Oakley Group 1  or the values of from Oakley Group 2 as specified
  95.     in RFC-2409, The Internet Key Exchange, Section 6.1, 6.2 as the
  96.     default for this object.  Other values may be used, but the
  97.     security properties of those values MUST be well understood and
  98.     MUST meet the requirements of PKCS #3 for the selection of
  99.     Diffie-Hellman primes.
  100.         In addition, any time usmDHParameters changes, all values of
  101.     type DHKeyChange will change and new random numbers MUST be
  102.     generated by the agent for each DHKeyChange object."
  103.     REFERENCE
  104.         "-- Diffie-Hellman Key-Agreement Standard, PKCS #3,
  105.             RSA Laboratories, November 1993
  106.          -- The Internet Key Exchange, RFC 2409, November 1998,
  107.             Sec 6.1, 6.2"
  108.     ::= { usmDHPublicObjects 1 }
  109. usmDHUserKeyTable OBJECT-TYPE
  110.     SYNTAX  SEQUENCE OF UsmDHUserKeyEntry
  111.     MAX-ACCESS not-accessible
  112.     STATUS  current
  113.     DESCRIPTION
  114.         "This table augments and extends the usmUserTable and provides
  115.     4 objects which exactly mirror the objects in that table with the
  116.     textual convention of 'KeyChange'.  This extension allows key
  117.     changes to be done in a manner where the knowledge of the current
  118.     secret plus knowledge of the key change data exchanges (e.g. via
  119.     wiretapping)  will not reveal the new key."
  120.     ::= { usmDHPublicObjects 2 }
  121. usmDHUserKeyEntry OBJECT-TYPE
  122.     SYNTAX  UsmDHUserKeyEntry
  123.     MAX-ACCESS not-accessible
  124.     STATUS  current
  125.     DESCRIPTION
  126.         "A row of DHKeyChange objects which augment or replace the
  127.     functionality of the KeyChange objects in the base table row."
  128.     AUGMENTS { usmUserEntry }
  129.     ::= {usmDHUserKeyTable 1 }
  130. UsmDHUserKeyEntry ::= SEQUENCE {
  131.         usmDHUserAuthKeyChange          DHKeyChange,
  132.     usmDHUserOwnAuthKeyChange   DHKeyChange,
  133.         usmDHUserPrivKeyChange          DHKeyChange,
  134.         usmDHUserOwnPrivKeyChange       DHKeyChange
  135.         }
  136. usmDHUserAuthKeyChange OBJECT-TYPE
  137.     SYNTAX  DHKeyChange
  138.     MAX-ACCESS read-create
  139.     STATUS  current
  140.     DESCRIPTION
  141.         "The object used to change any given user's Authentication Key
  142.     using a Diffie-Hellman key exchange.
  143.     The right-most n bits of the shared secret 'sk', where 'n' is the
  144.     number of bits required for the protocol defined by
  145.     usmUserAuthProtocol, are installed as the operational
  146.     authentication key for this row after a successful SET."
  147.     ::= { usmDHUserKeyEntry 1 }
  148. usmDHUserOwnAuthKeyChange OBJECT-TYPE
  149.     SYNTAX  DHKeyChange
  150.     MAX-ACCESS read-create
  151.     STATUS  current
  152.     DESCRIPTION
  153.         "The object used to change the agents own Authentication Key
  154.     using a Diffie-Hellman key exchange.
  155.     The right-most n bits of the shared secret 'sk', where 'n' is the
  156.     number of bits required for the protocol defined by
  157.     usmUserAuthProtocol, are installed as the operational
  158.     authentication key for this row after a successful SET."
  159.     ::= { usmDHUserKeyEntry 2 }
  160. usmDHUserPrivKeyChange OBJECT-TYPE
  161.     SYNTAX  DHKeyChange
  162.     MAX-ACCESS read-create
  163.     STATUS  current
  164.     DESCRIPTION
  165.         "The object used to change any given user's Privacy Key using
  166.     a Diffie-Hellman key exchange.
  167.     The right-most n bits of the shared secret 'sk', where 'n' is the
  168.     number of bits required for the protocol defined by
  169.     usmUserPrivProtocol, are installed as the operational privacy key
  170.     for this row after a successful SET."
  171.     ::= { usmDHUserKeyEntry 3 }
  172. usmDHUserOwnPrivKeyChange OBJECT-TYPE
  173.     SYNTAX  DHKeyChange
  174.     MAX-ACCESS read-create
  175.     STATUS  current
  176.     DESCRIPTION
  177.         "The object used to change the agent's own Privacy Key using a
  178.     Diffie-Hellman key exchange.
  179.     The right-most n bits of the shared secret 'sk', where 'n' is the
  180.     number of bits required for the protocol defined by
  181.     usmUserPrivProtocol, are installed as the operational privacy key
  182.     for this row after a successful SET."
  183.     ::= { usmDHUserKeyEntry 4 }
  184. usmDHKickstartGroup OBJECT IDENTIFIER ::= { usmDHKeyObjects 2 }
  185. usmDHKickstartTable OBJECT-TYPE
  186.     SYNTAX      SEQUENCE OF UsmDHKickstartEntry
  187.     MAX-ACCESS  not-accessible
  188.     STATUS      current
  189.     DESCRIPTION
  190.         "A table of mappings between zero or more Diffie-Helman key
  191.     agreement values and entries in the usmUserTable.  Entries in this
  192.     table are created by providing the associated device with a
  193.     Diffie-Helman public value and a usmUserName/usmUserSecurityName
  194.     pair during initialization. How these values are provided is
  195.     outside the scope of this MIB, but could be provided manually, or
  196.     through a configuration file.  Valid public value/name pairs
  197.     result in the creation of a row in this table as well as the
  198.     creation of an associated row (with keys derived as indicated) in
  199.     the usmUserTable.  The actual access the related usmSecurityName
  200.     has is dependent on the entries in the VACM tables.  In general,
  201.     an implementor will specify one or more standard security names
  202.     and will provide entries in the VACM tables granting various
  203.     levels of access to those names.  The actual content of the VACM
  204.     table is beyond the scope of this MIB.
  205.     Note: This table is expected to be readable without authentication
  206.     using the usmUserSecurityName 'dhKickstart'.  See the conformance
  207.     statements for details."
  208.     ::= { usmDHKickstartGroup 1 }
  209. usmDHKickstartEntry OBJECT-TYPE
  210.     SYNTAX      UsmDHKickstartEntry
  211.     MAX-ACCESS  not-accessible
  212.     STATUS      current
  213.     DESCRIPTION
  214.         "An entry in the usmDHKickstartTable.  The agent SHOULD either
  215.     delete this entry or mark it as inactive upon a successful SET of
  216.     any of the KeyChange-typed objects in the usmUserEntry or upon a
  217.     successful SET of any of the DHKeyChange-typed objects in the
  218.     usmDhKeyChangeEntry where the related usmSecurityName (e.g. row of
  219.     usmUserTable or row of ushDhKeyChangeTable) equals this entry's
  220.     usmDhKickstartSecurityName.  In otherwords, once you've changed
  221.     one or more of the keys for a row in usmUserTable with a
  222.     particular security name, the row in this table with that same
  223.     security name is no longer useful or meaningful."
  224.     INDEX   { usmDHKickstartIndex }
  225.     ::= {usmDHKickstartTable 1 }
  226. UsmDHKickstartEntry ::= SEQUENCE  {
  227.         usmDHKickstartIndex     Integer32,
  228.         usmDHKickstartMyPublic  OCTET STRING,
  229.         usmDHKickstartMgrPublic OCTET STRING,
  230.         usmDHKickstartSecurityName      SnmpAdminString
  231.         }
  232. usmDHKickstartIndex OBJECT-TYPE
  233.     SYNTAX      Integer32  (1..2147483647)
  234.     MAX-ACCESS  not-accessible
  235.     STATUS      current
  236.     DESCRIPTION
  237.         "Index value for this row."
  238.     ::= { usmDHKickstartEntry 1 }
  239. usmDHKickstartMyPublic OBJECT-TYPE
  240.     SYNTAX      OCTET STRING
  241.     MAX-ACCESS  read-only
  242.     STATUS      current
  243.     DESCRIPTION
  244.         "The agent's Diffie-Hellman public value for this row.  At
  245.     initialization, the agent generates a random number and derives
  246.     its public value from that number.  This public value is published
  247.     here.  This public value 'y' equals g^r MOD p where g is the from
  248.     the set of Diffie-Hellman parameters, p is the prime from those
  249.     parameters, and r is a random integer selected by the agent in the
  250.     interval 2^(l-1) <= r < p-1 < 2^l.  If l is unspecified, then r is
  251.     a random integer selected in the interval 0 <= r < p-1
  252.     The public value is expressed as an OCTET STRING 'PV' of length
  253.     'k' which satisfies
  254.               k
  255.         y =  SUM   2^(8(k-i)) PV'i
  256.              i = 1
  257.         where PV1,...,PVk are the octets of PV from first to last, and
  258.         where PV1 != 0.
  259.     The following DH parameters (Oakley group #2, RFC 2409, sec 6.1,
  260.     6.2) are used for this object:
  261.     g = 2
  262.     p = FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
  263.         29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
  264.         EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
  265.         E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
  266.         EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
  267.         FFFFFFFF FFFFFFFF
  268.     l=1024
  269.     "
  270.     REFERENCE
  271.         "-- Diffie-Hellman Key-Agreement Standard, PKCS#3v1.4;
  272.             RSA Laboratories, November 1993
  273.          -- The Internet Key Exchange, RFC2409;
  274.             Harkins, D., Carrel, D.; November 1998"
  275.     ::= { usmDHKickstartEntry 2 }
  276. usmDHKickstartMgrPublic OBJECT-TYPE
  277.     SYNTAX      OCTET STRING
  278.     MAX-ACCESS  read-only
  279.     STATUS      current
  280.     DESCRIPTION
  281.         "The manager's Diffie-Hellman public value for this row.  Note
  282.     that this value is not set via the SNMP agent, but may be set via
  283.     some out of band method, such as the device's configuration file.
  284.     The manager calculates this value in the same manner and using the
  285.     same parameter set as the agent does.  E.g. it selects a random
  286.     number 'r', calculates y = g^r mod p and provides 'y' as the
  287.     public number expressed as an OCTET STRING.  See
  288.     usmDHKickstartMyPublic for details.
  289.     When this object is set with a valid value during initialization,
  290.     a row is created in the usmUserTable with the following values:
  291.     usmUserEngineID             localEngineID
  292.     usmUserName                 [value of usmDHKickstartSecurityName]
  293.     usmUserSecurityName         [value of usmDHKickstartSecurityName]
  294.     usmUserCloneFrom            ZeroDotZero
  295.     usmUserAuthProtocol         usmHMACMD5AuthProtocol
  296.     usmUserAuthKeyChange        -- derived from set value
  297.     usmUserOwnAuthKeyChange     -- derived from set value
  298.     usmUserPrivProtocol         usmDESPrivProtocol
  299.     usmUserPrivKeyChange        -- derived from set value
  300.     usmUserOwnPrivKeyChange     -- derived from set value
  301.     usmUserPublic               ''
  302.     usmUserStorageType          permanent
  303.     usmUserStatus               active
  304.     A shared secret 'sk' is calculated at the agent as sk =
  305.     mgrPublic^r mod p where r is the agents random number and p is the
  306.     DH prime from the common parameters.  The underlying privacy key
  307.     for this row is derived from sk by applying the key derivation
  308.     function PBKDF2 defined in PKCS#5v2.0 with a salt of 0xd1310ba6,
  309.     and iterationCount of 500, a keyLength of 16 (for
  310.     usmDESPrivProtocol), and a prf (pseudo random function) of
  311.     'id-hmacWithSHA1'.  The underlying authentication key for this row
  312.     is derived from sk by applying the key derivation function PBKDF2
  313.     with a salt of 0x98dfb5ac , an interation count of 500, a
  314.     keyLength of 16 (for usmHMAC5AuthProtocol), and a prf of
  315.     'id-hmacWithSHA1'.  Note: The salts are the first two words in the
  316.     ks0 [key schedule 0] of the BLOWFISH cipher from 'Applied
  317.     Cryptography' by Bruce Schnier - they could be any relatively
  318.     random string of bits.
  319.     The manager can use its knowledge of its own random number and the
  320.     agent's public value to kickstart its access to the agent in a
  321.     secure manner.  Note that the security of this approach is
  322.     directly related to the strength of the authorization security of
  323.     the out of band provisioning of the managers public value
  324.     (e.g. the configuration file), but is not dependent at all on the
  325.     strength of the confidentiality of the out of band provisioning
  326.     data."
  327.     REFERENCE
  328.         "-- Password-Based Cryptography Standard, PKCS#5v2.0;
  329.             RSA Laboratories, March 1999
  330.          -- Applied Cryptography, 2nd Ed.; B. Schneier,
  331.             Counterpane Systems; John Wiley & Sons, 1996"
  332.     ::= { usmDHKickstartEntry 3 }
  333. usmDHKickstartSecurityName OBJECT-TYPE
  334.     SYNTAX      SnmpAdminString
  335.     MAX-ACCESS  read-only
  336.     STATUS      current
  337.     DESCRIPTION
  338.         "The usmUserName and usmUserSecurityName in the usmUserTable
  339.     associated with this row.  This is provided in the same manner and
  340.     at the same time as the usmDHKickstartMgrPublic value -
  341.     e.g. possibly manually, or via the device's configuration file."
  342.     ::= { usmDHKickstartEntry 4 }
  343. -- Conformance Information
  344. usmDHKeyMIBCompliances  OBJECT IDENTIFIER ::= { usmDHKeyConformance 1 }
  345. usmDHKeyMIBGroups       OBJECT IDENTIFIER ::= { usmDHKeyConformance 2 }
  346. -- Compliance statements
  347. usmDHKeyMIBCompliance   MODULE-COMPLIANCE
  348.     STATUS      current
  349.     DESCRIPTION
  350.         "The compliance statement for this module."
  351.     MODULE
  352.         GROUP usmDHKeyMIBBasicGroup
  353.         DESCRIPTION
  354.         "This group MAY be implemented by any agent which
  355.         implements the usmUserTable and which wishes to provide the
  356.         ability to change user and agent authentication and privacy
  357.         keys via Diffie-Hellman key exchanges."
  358.         GROUP usmDHKeyParamGroup
  359.         DESCRIPTION
  360.             "This group MUST be implemented by any agent which
  361.         implements a MIB containing the DHKeyChange Textual
  362.         Convention defined in this module."
  363.         GROUP usmDHKeyKickstartGroup
  364.         DESCRIPTION
  365.             "This group MAY be implemented by any agent which
  366.         implements the usmUserTable and which wishes the ability to
  367.         populate the USM table based on out-of-band provided DH
  368.         ignition values.
  369.              Any agent implementing this group is expected to provide
  370.         preinstalled entries in the vacm tables as follows:
  371.              In the usmUserTable: This entry allows access to the
  372.         system and dhKickstart groups
  373.         usmUserEngineID         localEngineID
  374.         usmUserName             'dhKickstart'
  375.         usmUserSecurityName     'dhKickstart'
  376.         usmUserCloneFrom        ZeroDotZero
  377.         usmUserAuthProtocol     none
  378.         usmUserAuthKeyChange    ''
  379.         usmUserOwnAuthKeyChange ''
  380.         usmUserPrivProtocol     none
  381.         usmUserPrivKeyChange    ''
  382.         usmUserOwnPrivKeyChange ''
  383.         usmUserPublic           ''
  384.         usmUserStorageType      permanent
  385.         usmUserStatus           active
  386.             In the vacmSecurityToGroupTable: This maps the initial
  387.         user into the accessible objects.
  388.         vacmSecurityModel               3 (USM)
  389.         vacmSecurityName                'dhKickstart'
  390.         vacmGroupName                   'dhKickstart'
  391.         vacmSecurityToGroupStorageType  permanent
  392.         vacmSecurityToGroupStatus       active
  393.             In the vacmAccessTable: Group name to view name translation.
  394.         vacmGroupName                   'dhKickstart'
  395.     vacmAccessContextPrefix             ''
  396.         vacmAccessSecurityModel         3 (USM)
  397.         vacmAccessSecurityLevel         noAuthNoPriv
  398.         vacmAccessContextMatch          exact
  399.         vacmAccessReadViewName          'dhKickRestricted'
  400.         vacmAccessWriteViewName         ''
  401.         vacmAccessNotifyViewName        'dhKickRestricted'
  402.         vacmAccessStorageType           permanent
  403.         vacmAccessStatus                active
  404.             In the vacmViewTreeFamilyTable: Two entries to allow the
  405.         initial entry to access the system and kickstart groups.
  406.         vacmViewTreeFamilyViewName      'dhKickRestricted'
  407.         vacmViewTreeFamilySubtree       1.3.6.1.2.1.1  (system)
  408.         vacmViewTreeFamilyMask          ''
  409.         vacmViewTreeFamilyType          1
  410.         vacmViewTreeFamilyStorageType   permanent
  411.         vacmViewTreeFamilyStatus        active
  412.         vacmViewTreeFamilyViewName      'dhKickRestricted'
  413.         vacmViewTreeFamilySubtree         (usmDHKickstartTable OID)
  414.         vacmViewTreeFamilyMask          ''
  415.         vacmViewTreeFamilyType          1
  416.         vacmViewTreeFamilyStorageType   permanent
  417.         vacmViewTreeFamilyStatus        active
  418.         "
  419.         OBJECT usmDHParameters
  420.         MIN-ACCESS      read-only
  421.         DESCRIPTION
  422.             "It is compliant to implement this object as read-only for
  423.         any device."
  424.     ::= { usmDHKeyMIBCompliances 1 }
  425. -- Units of Compliance
  426. usmDHKeyMIBBasicGroup OBJECT-GROUP
  427.     OBJECTS     {
  428.                   usmDHUserAuthKeyChange,
  429.                   usmDHUserOwnAuthKeyChange,
  430.                   usmDHUserPrivKeyChange,
  431.                   usmDHUserOwnPrivKeyChange
  432.                 }
  433.     STATUS      current
  434.     DESCRIPTION
  435.         ""
  436.     ::= { usmDHKeyMIBGroups 1 }
  437. usmDHKeyParamGroup OBJECT-GROUP
  438.     OBJECTS     {
  439.                   usmDHParameters
  440.                 }
  441.     STATUS      current
  442.     DESCRIPTION
  443.         "The mandatory object for all MIBs which use the DHKeyChange
  444.     textual convention."
  445.     ::= { usmDHKeyMIBGroups 2 }
  446. usmDHKeyKickstartGroup OBJECT-GROUP
  447.     OBJECTS     {
  448.                   usmDHKickstartMyPublic,
  449.                   usmDHKickstartMgrPublic,
  450.                   usmDHKickstartSecurityName
  451.                 }
  452.     STATUS      current
  453.     DESCRIPTION
  454.         "The objects used for kickstarting one or more SNMPv3 USM
  455.     associations via a configuration file or other out of band,
  456.     non-confidential access."
  457.     ::= { usmDHKeyMIBGroups 3 }
  458. END