优选实施例的详细描述
应该理解,本方面可以以硬件、软件、固件、特殊用途的处理器或它们的组合的各种形式实现。本发明最好以包括程序指令的软件来实现,其中的程序指令明确地收录在一种或多种程序存储设备(例如软盘、RAM、CD-ROM、ROM、闪速存储器)上,并可在包括适当体系结构的任何设备、机器或平台上执行。还应该理解,因为某些系统元件或方法步骤最好以软件实现,因此,实际连接可能会根据本发明的编程方式而有所不同。
参考图1,框图说明了用于按照本发明的示范型实施例初始化SNMPv3所管理的设备的系统10。更具体地说,系统10包括DOCSIS电缆调制解调器系统,该DOCSIS电缆调制解调器系统在CMTS(电缆调制解调器终端系统,电缆调制解调器termination system)16和SNMPv3电缆调制解调器18之间,通过全同轴(all coaxial)或光纤/同轴混合(hybrid-fiber/coaxial,BFC)电缆网络17,提供(经过例如因特网这样的主干网络14接收和发送的)因特网协议(IP)包的透明双向传输。如现有技术一样CMTS 16实现诸如在IP通信(IP traffic)和IP包的射频调制/传输之间的接口,以及给电缆调制解调器18指定IP地址这样的功能。应该理解,虽然图中为了说明的目的只显示了一个电缆调制解调器,但系统10可以包括数百个电缆调制解调器。
系统10包括位于主干网络14上的NMS(network management station,网络管理站)11,用于管理CMTS16和DOCSIS电缆调制解调器18。NMS11包括用户接口12(例如,GUI(图形用户接口))和常规体系结构的SNMP管理器13,用于经由SNMP消息与电缆调制解调器18的SNMP代理19通信。系统10还包括一个远程服务器设备15,它可以由电缆调制解调器18访问,例如用于下载用来配置电缆调制解调器18的参数的配置文件。例如,按照下面的解释,该配置文件包括使用用于将初始鉴别和保密密钥输入电缆调制解调器18的专用Diffie-Hellman密钥交换协议用于初始化SNMPv3模式下的SNMP代理19的对象。总的来说,这个协议允许NMS(管理器)11的操作员安全地给电缆调制解调器18输入初始的SNMPv3鉴别和保密密钥,并使用Diffie-Hellman密钥交换让调制解调器18进入SNMPv3模式。管理器13经由配置文件(例如位于服务器15中)给调制解调器18提供其公用值。管理器13经由SNMPv3,使用标准的缺省usmUser读取调制解调器18的公用值,usmUser仅仅访问这些值(和标准的‘系统’组)。经由DH交换,管理器13和电缆调制解调器18可以商定一个公共共享秘密,用于为访问usmUserTable的其他标准usmUser添加密钥值,以创建和删除附加的用户。管理器13可以根据需要添加那种表。
根据本发明,电缆调制解调器18包括MIB,而MIB包括专用MIB模块和有关的MIB组件,用于实现Diffie-Hellman密钥交换。更具体地说,MIB20包括这以下称为TCE-DCM105-MIB的专用MIB模块,它定义了诸如tceDCM105KickstartMyPublic和tceDCM105KickstartMgrPublic对象这样的MIB组件,用来进行SNMPv3初始化处理。这些MIB组件提供一种机制,以便SNMPv3代理19(在电缆调制解调器18中)和SNMP管理器13执行Diffie-Hellman密钥交换,以将第一有效用户的保密密钥放到电缆调制解调器18中。在注册处理期间将tceDCM105KickstartMgrPublic对象设置成管理器13的Diffie-Heilman公用值。存在各种各样的机制将管理器13的该公用值传输给代理。最好这种传输经由配置文件(例如,在远程服务器15中)实现,该配置文件是在电缆调制解调器注册处理期间由电缆调制解调器18下载的。tceDCM105KickstartMyPublic MIB组件的值包括代理19的Diffie-Hellman公用值,代理19在注册处理之后公布该公用值以便由管理器13经由SNMP访问。最好管理器13使用具有不带任何鉴别的securityName,例如,“docsisInit”的初始用户,读取tceDCM105KickstartMyPublic的内容。下面将参考图2的流程图进一步详细描述一个优选的初始化处理。图2的流程图说明了一种根据本发明的一方面的、用于初始化SNMPv3代理的方法。在图2中,步骤100-108代表由SNMPv3代理所执行的步骤,而步骤200-208代表由管理器所执行的步骤。当电缆调制解调器初始化/加电时,装载到电缆调制解调器的专用软件让SNMP代理创建一个被称为安全级别noAuthnoPriv的“docsisInit”的SNMPv3用户并且产生适当的USM和VACM项(entries)(步骤100)。这个初始的合法用户(由管理器用来访问例如该调制解调器的tceDCM105KickstartMyPuhlic MIB组件所使用)只有对tceDCM105Kickstart组、系统组和一般陷阱(generic traps)的读取访问权。接下来,该代理产生一个随机数r1,其长度最好达到128字节(步骤101)。然后,该代理使用熟知的Diffie-Hellman协议,将其随机数r1转化成该代理的公用值p1(步骤102)。更具体地说,该代理的公用值
其中g是Diffie-Hellman参数集的底数(base),p是这些参数的原数(prime)是由该代理在区间2(1-l)≤r1≤p-1中选取的随机整数,其中1是该保密随机数r1的以位为单位的长度。公用值p1被表达成长度“k”的OCTET STRING(八位字节串)“PV”,它满足其中PV1,…,PVk是从第一个到最后一个的PV的八位字节,并且PV1!=0。此外,最好使用以下Diffie-Hellman参数(Oakley组42,RFC2409,6.1,6.2节):g=2;p=FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DCICDI29024EO8 8A67CC74 02OBBEA6 3B139B22 514AO879 8E3404DDEF9519B3 CD3A431B 302BOA6D F25FI437 4FE1356D 6D51C245E485B576 625E7EC6 F44C42E9 A637ED6B OBFF5CBB6 F406B7EDEE386BFB 5A899FA5 AE9F2411 7C4BIFE6 49286651 ECE65381FFFFFFFF FFFFFFFF;和1=64。代理在MIB组件tceDCM105KickstartMyPublic中公布其公用值p1(步骤103)。
在注册处理期间,SNMP管理器产生其随机数r2,它的长度最好达到128字节(步骤200)。然后管理器使用Diffie-Hellman密钥交换协议,象作为代理那样的方式并且利用以上所述的那样的参数,将其随机数变换成公用值P2(步骤201)。
在DOCSIS框架中,如现有技术已知的那样,电缆调制解调器在注册期间通过例如给CMTS发送DHCP(dynamic host configuration protocol,动态主机配置协议)请求尝试建立网络连接,以获得建立IP连接所需要的IP地址和其他参数。CMTS将发送包括例如电缆调制解调器可以访问的配置文件的名称和位置(例如TFTP(trivial file transfer protocol,普通文件传输协议)服务器(诸如图1中的远程服务器15)的IP地址)的DHCP应答。SNMPv3电缆调制解调器将使用DHCP应答中的信息,经由TFTP,下载适当的配置文件
按照本发明,管理器以几种方式之一将其公用值P2经由配置文件(通过调制解调器下载的)传输给代理(步骤202)。在图2所示的示范型实施例中,这由该配置文件(即DOCSIS标准配置文件组件类型11)中的SNMP“Set”MIB对象实现,以便将tceDCM105KickstartMgrPublic MIB组件(在电缆调制解调器)设置成该管理器的公用值P2(步骤10tceDCM105K4)。下面将介绍用于把该管理器的公用值P2传输到电缆调制解调器的其他实施例。
当代理确定已经将tceDCM105KickstartMgrPublic设置成该管理器的公用值时,该代理从随机数r
1和该管理器的公用值P
2通过Diffie-Hellman密钥交换协议计算一个共享的秘密SK(步骤105)。更具体地说,SNMPv3代理计算所共享的秘密
其中p以上所述的优选的公共参数中的DH原数。
接下来,在一个优选实施例中,SNMPv3代理将所共享的秘密SK按照下列方式转换成保密和鉴别密钥。首先,该代理将所共享的秘密SK变换成最好是16字符(或更少)的可读口令(步骤106)。最好,这是通过丢弃第16个八位字节以外的任何OCTET(八位字节)(在SK串中)来实现,然后对每个余下的八位字节进行以下处理:
a.if(octet(八位字节)>0x7F),then octet=octet B 0x80;//清
除头位;
b.if(octet:5 0x20)octet=octet+0x40;//重新映射控制代码;
c.if(octet=0x7F)octet=octet-1;//重新映射删除字符。这种产生可读口令的处理过程有利于允许NMS的操作员方便地输入口令(与输入所共享的秘密的八位字节串对照)。
第二,将该可读口令翻译成16字节密钥KC(步骤107)。这个步骤最好利用RFC 2574 “AUser-based Security Model(USM)for Version 3 of theSimple Network Management Protocol”附录A的第A.1节段落(2)所述的算法实现。更具体地说,通过每当需要时重复该口令的值、相应地截短和利用作为给MD5算法(现有技术熟知的)的输入以产生摘要(digest)(被称为“摘要1”)的合成串(resulting string)来产生长度为1,048,576八位字节的串。然后通过将SNMP引擎的snmpEngineID值和摘要1连接起来以形成第二个串。这个串用作给MD5算法的输入。该合成摘要是16字节密钥。
然后SNMPv3代理产生一个SNMPv3用户(被供给的用户(provisioneduser),这里称为“docsisProv”,并产生具有对SNMPv3表进行读/写访问权的安全级别AuthPriv的适当的USM和VACM表项(下面将详细介绍),然后最好将(被供给的用户的)保密密钥和鉴别密钥均设置成16字节密钥KC值(步骤108)。代理会将同样的16字节密钥KC用于在SNMPv3表中由该配置文件创建的其他用户。这样的就结束了调制解调器的注册处理过程。
在完成注册时,管理器可以通过从tceDCM105KickstartMyPublicMIB组件读取一非零长度的OCTET STRING(代理的公用值P1)来确认调制解调器已经进入SNMPv3模式(步骤203)。管理器将利用初始用户“docsisInit”(安全级别noAuthNoPriv)通过一个SNMP“Get”命令读取这个值。管理器将使用其随机数r2和该代理的公用值P1(即tceDCM105KickstartMyPublic值)来计算所共享的秘密SK(通过Diffie-Heilman密钥交换算法)(步骤204)。这是由代理计算的同一共享的秘密SK。接下来,管理器从共享的秘密SK计算用于“docsisProv”用户的同一可读口令(步骤205),然后使用象代理用的、与上述步骤106-107同样的处理过程,将该可读口令变换成KC值(步骤206)。然后管理器将关于被供给的用户的鉴别和保密密钥设置成KC的值(步骤207)。应该注意到,Diffie-Hellman密钥交换保证代理和管理器计算出同样16字符口令而不用提示它。还应该注意到,这个方法的安全性直接涉及到管理器的公用值P2的带外供应的授权安全性的强度。
然后该管理器通过利用“docsisProv”用户和关于AuthPriv安全级别的鉴别和保密口令改变SNMPv3表(即访问SNMP-USER-BASED-SM-MIB和SNMP-VIEW-BASED-ACM-MIB),来创建其他SNMPv3用户(步骤208)。
以下是在用于初始化SNMPv3模式的DOCSIS电缆调制解调器的SNMPv3USM和VACM表中产生的示范型项。更具体地说,下列示范型项(1-4a,b,c)最好在加电时,在DOCSIS SNMPv3兼容调制解调器中预装和初始化:
(1)usmUserTable中的这个项(usmUserEntry)允许访问系统和tceDCM105Kickstart组。在完成注册后,这个项允许SNMP管理器读取调制解调器的Diffie-Hellman公用值(它由代理公布在tceDCMKickstartMyPublic MIB组件中):
usmUserEnginelD localEngineED
usmUserName ″docsisInit″
usmUserSecurityName ″docsisInit″
usmUserCloneFrom ZeroDotZero
usmUserAuthProlocol 无
usmUserAuthKeyChange “”
usmUserOwnAuthKeyChange “”
usmUserPrivProtocol 无
usmUserPrivKeyChange “”
usmUserOwnPrivKiyChange “”
usmUserPublic “”
usmUserStorageType 永久
usmUserStatus 有效(2)在vacmSecurityToGroupTable中产生一个项(vacmSecurityToGroupEntry)以便将初始用户″ducsisInit″映射到可望访问的对象(即这个项产生关于初始用户″docsisInit”的groupName,它用于定义初始用户的访问控制策略):
vacmSecurityModel 3(USM)
vacmSecurityName ″docsisInit″
vacmGrompName ″docsisInit″
vacmSecurityToGroupStorageType 永久
vacmSecurityToGroupStatus 有效
(3)在vacmAccessTable中产生的项(vacmAccessEntry)将初始用户的groupName翻译成适当的观看的名称(即这个项定义了初始用户″docsisInit″的访问权):
vacmGroupName ″docsisInit″
vacmAccessContextPrefix “”
vacmAccessSecurityModel 3(USM)
vacmAccessSecurityLevel noAuthNoPriv
vacmAccessContextMatch exact
vacmAccessReadViewName ″docsisInitRestricted″
vacmAccessWriteViewName “”
vacmAccessNotifyViewName ″docsisInitRestricted″
vacmAccessStorageType 永久
vacmAccessSiatus 有效在vacmAccessTable中的上述项用于未经鉴别的访问,即对securityModelUSM读通告(read-notify)访问,代表securityName(即用户″docsisInit″)的securitylevel″noAuthNoPriv″,其中securityName属于组″docsisInit″至在具有contextName“”的缺省范围中的″docsisInitRestricted″MIB观看。
(4)在vacmViewTreeFamilyTable中产生下列三项(vacmViewTreeFamilyEntry)以便允许初始项访问系统、开始突然跳跃(kickstart)组和一般陷阱:
(a) vacmViewTreeFamilyViewName ″docsisInitRestricted″
vacmViewTreeFamilySubtree 1.3.6.1.2.1.1(系统)
vacmViewTreeFamilyMask “ ”
vacmViewTreeFamilyType 1(包括)
vacmViewTreeFamilyStorageType 永久
vacmViewTreeFamilyStatus 有效
(b) vacmViewTreeFamilyViewName ″docsisInitRestricted″
vacmViewTreeFamilySubtree (tceDCM105KickstartGroup)
vacmViewTreeFamilyMask “”
vacmViewTreeFamilyType 1(包括)
vacmViewTreeFamilyStorageType 永久
vacmViewTreeFamilystatus 有效
(c) vacmViewTreeFamilyViewName ″docsisInitRestricted″
vacmViewTreeFamilySubtree 1.3.6.1.6.3.1.1.5(snmpTraps)
vacmViewTreeFamilyMask “”
vacmViewTreeFamilyType 1
vacmViewTreeFamilyStorageType 永久
vacmViewTreeFamilyStatus 有效
当完成Diffie-Hellman密钥交换时,在SNMPv3兼容调制解调器中创建下列项(5-8a,b,c,d)。
(5)usmUserTable中的下列项与用由DH密钥交换设置的鉴别和保密密钥创建的被供给的用户关联。这些项最好在调制解调器通过调制解调器值的管理器公用值的项当时供应的情况下,经由以上所解释的配置文件进行创建(步骤202,图2的104)。应该注意,userName″docsisProv″至少对usmUserTable进行完全访问以便创建附加的合法用户,并且最好用由DH密钥交换设置的鉴别和保密密钥产生:
usmUserEngineID localEnginel]D
usmUserName ″docsisProv″
usmUserSecurityName ″docsisProv″
usmUserCloneFrom ZeroDotZero
usmUserAuthprotocol usmHMACMD5AuthProtocol
asmUserAuthKeyChange “”
usmUserOwnAuthKeyChange “”
usmUserPrivProtocol usmDESPrivProtocol
usmUserPrivKeyChange “”
usmUserOwnPrivKeyChange “”
usmUserPublic “”
usmUserStorageType 永久
usmUserStatus 有效
(6)下面的项将被供给的用户″docsisProv″映射到可访问对象:
vacmSecurityModel 3(USM)
vacmSecurityName ″docsisProv″
vacmGroupName ″docsisProv″
vacmSecurityToGroupStorageType 永 久
vacmSecurityToGroupStatus 有效
(7)下面的项将被供给的用户的groupName翻译给观看名称的用户:
vacmGroupName ″docsisProv″
vacma ccessContextPrefix “”
vacmAccessSecurityModel 3(USM)
vacmAccessSecurityLevel AuthPriv
vacmAccessContextMatch 精确
vacmAccessReadViewName ″docsisProv″
vacmAccessWriteViewName ″docsisProv″
vacmAccessNotifyViewName ″docsisProv″
vacma ccessStorageType 永久
vacmAccessStatus 有效
(8)下面四个项允许被供给的用户读写访问系统、tceDCM105Kickstart、usmMIBObjects和vacmMIBObjects组:
(a)vacmViewTreeFamilyViewName ″docsisProv″
vacmViewTreeFamilySubtree 1.3.6.1.2.1.1(系统)
vacmViewTreeFamilyMask “”
vacmViewTreeFamilyType 1
vacmViewTreeFamilyStorageType 永久
vacmViewTreeFamilyStatus 有效
(b)vacmViewTreeFamilyViewName ″docsisProv″
vacmViewTreeFamilySubtree 1.6.3.1.6.3.15.1(usmMIBObjects)
vacmViewTreeFamilyMask “”
vacmViewTreeFamilyType 1
vacmViewTreeFamilyStorageType 永久
vacmViewTreeFamilyStatus 有效
(c)vacmViewTreeFamilyViewName ″docsisProv″
vacmViewTreeFamilySubtree 1.6.3.1.6.3.16.1(vacmMIBObjects)
vacmViewTreeFamilymask “”
vacmViewTreeFamilyType 1
vacmViewTreeFamilystorageType 永久
vacmViewTreeFamilyStatus 有效
(4)vacmViewTreeFamilyViewName ″docsisProv″
vacmViewTreeFamilySubtree (tceDCM105KickstartGroup)
vacmViewTreeFamilyMask “”
vacmViewTreeFamilyType 1
vacmViewTreeFamilyStorageType 永久
vacmViewTreeFamilyStatus 有效
在本发明的可供选择的实施例中,可以使用其它方法将管理器的Diffie-Hellman公用值输入调制解调器并利用专用的配置文件组件(而不使用SNMP MIB对象(配置文件类型11)来象上面所讨论的那样设置tceDCM105KickstartMgrPublic MIB组件)将其放进SNMPv3模式。这些专用的组件专门用于初始化这样一种SNMP网络中的SNMPv3兼容的调制解调器,在所述SNMP网络中只有不能处理包含对tceDCM105KickstartMgrPublic组件的SNMP集的SNMPv1/v2c调制解调器,并且最终使得SNMPv1/v2c调制解调器拒绝该配置文件。例如,可以使用下列配置文件组件:
(1)iceKickStartMgrPublic(组件180)-这个组件包括具有管理器的公用值相当于128字节的八位字节串;和
(2)tceKickStartMgrPublic2(组件181)-这个配置文件也包括管理器公用值。但除了将调制解调器置于SNMPv3模式外,它还会让该调制解调器把docsDevNmAccessTable(用于控制在SNMPv1/v2c中的访问)的内容翻译给SNMPv3用户、组、访问和观看表的对应项。更具体地说,对docsDevNmAccessTable中的每一个项,以设置成共用串和需要noAuthNoPriv安全级别的访问表项的userName创建用户和观看。此外,在SNMPv3NOTIFICATION-MIB中制造项以便使得陷阱可以被发送到在thedocsDevNmAccessTable中设计的任何陷阱接收器。利用这个配置文件组件(181),调制解调器将被置于SNMPv3模式并且仍然可以由SNMPv2管理器进行访问。这种配置文件组件的细节和有关的翻译处理过程与此一并提交、律师备案(Attorney Docket)号为RCA89827的PCT专利申请″System andMethod For Simple Network Management Protocol(SNMP)v3 Modems toInteroperate with SNMPv1/v2c Modems″进行了描述。
在另一个实施例,代理和管理器的公用值P1和P2可以使用DHCP进行交换。例如,代理可以在初始化处理期间(如上所述)传输给CMTS的DHCP请求中包括其公用值,而管理器的公用值可以以有关的DHCP应答传输给电缆调制解调器。特别地,接着的DHCP专用组件tceDHCPKickstartMgrPublic(182)可以包括在DHCP应答中。