加密套件选择方法、装置和系统的制作方法

文档序号:7693718阅读:214来源:国知局

专利名称::加密套件选择方法、装置和系统的制作方法
技术领域
:本发明涉及网络
技术领域
,尤其是一种加密套件选择方法、装置和系统。
背景技术
:随着网络技术的发展,远程接入越来越多,同时也带来了安全问题的凸显。为了保证网络通信的安全,先后出现了安全套接层(SecureSocketLayer,SSL)协议、传输层安全(TransportLayerSecurity,TLS)协议等。在SSL或TLS会话建立的过程中,通信双方需要就通信时使用的各种加密算法达成一致。通信的客户端和服务端通过握手实现上述目的,具体为客户端发送一条第一握手消息(ClientHello消息),该CIientHello消息主要用于传输客户端所希望使用的各种参数的首选项,包括客户端支持的加密算法,这些加密算法组成不同的加密套件,在ClientHello消息包括由加密套件组成的列表cipher—suits,该列表中的各种加密套件是按照客户端的选择倾向性(优先级)从高到低排列;服务端接收到C1ientHe11o消息后从cipher—suits列表中选取一个加密套件,并将该选中的加密套件的数值通过第二握手消息(ServerHello消息)通知给客户端,客户端根据服务端的反馈获知服务端选择的加密套件,并根据该选中的加密套件进行加密处理。因特网工程任务组(InternetEngineeringTaskForce,IETF)^L定以0x00至OxBF开头的数值分配给标准加密套件,标准加密套件是通用的,对于客户端和服务端同一个数值指代的加密套件是相同的。以0xC0至OxFF开头的数值分配给专用加密套件。在实现本发明过程中,发明人发现现有技术中至少存在如下问题:虽然IETF分配了数值空间给专用加密套件,但是,由于专用套件的非通用性,通信双方可分别设置,很可能存在通信双方采用的数值相同,但是双方指代的加密套件却不同的情况,这样就会造成会话建立失败。
发明内容本发明实施例是提供一种加密套件选择方法、装置和系统,用以解决现有技术中可能存在的加密套件冲突的问题。为此,本发明实施例提供了一种加密套件选择方法,包括接收客户端发送的第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将所述加密套件添加到第二握手消息中,将所述第二握手消息发送至所述客户端。本发明实施例还提供了一种加密套件选择装置,包括接收模块,用于接收客户端发送的第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;发送模块,用于根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将所述加密套件添加到第二握手消息中,将所述第二握手消息发送至所述客户端。本发明实施例还提供了一种加密套件选择系统,包括客户端,用于发送第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;服务端,用于根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将选择的加密套件添加到第二握手消息中,向所述客户端发送所述第二握手消息。由上述技术方案可知,本发明实施例通过扩展握手消息,增加国家代码,使专用加密套件与国家对应,可以解决专用加密套件单纯由数值指定引起的冲突问题,实现通信双方的准确协商。图1为本发明加密套件选择方法一实施例的流程示意图;图2为本发明加密套件选择装置一实施例的结构示意图;图3为本发明加密套件选择系统一实施例的结构示意图。具体实施例方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。图1为本发明加密套件选择方法一实施例的流程示意图,该实施例包括步骤11:客户端向服务端发送第一握手消息(ClientHello消息),该第一握手消息包括第一国家代码及对应第一国家代码的记录有专用加密套件列表数值的专用加密套件列表。为了解决现有技术中只用数值指定专用加密套件可能造成的专用加密套件冲突的问题,可以对客户端和接收端之间交互的握手消息进行扩展,使专用密码套件由国家代码和该国家制定的数值指定。具体的,交互的握手消息可以包括扩展项(extension—data域),该extension—data域的结构如下Struct{MessageTypemessage—type;CoimtryTypecountry—type;Select(MessageType){case0:NSCipherSuitens_cipher_suites<2...2A16-l〉;case1:NSCipherSuitens—cipher—suite;}CipherSuite;cnum{client(0),server(1),(1)}MessageType;〃用于确定是对客户端发送的握手消息进行扩展,还是对服务端发送的握手消息进行扩展已num{PRC(O),US(l),JP(2),EURO(3),(255)}CountryType;〃用于确定国家代码uint8NSCipherSuite[2];其中,MessageType用于表明该扩展属于ClientHello消息还是ServerHello消息,即该字段决定了扩展中是传输专用加密套件列表还是专用力口密套件。如果MessageType字l殳为0,扩展中包含ns-cipher一suites字段,ns_cipher_suites字段为客户端选择的其支持的专用加密套件的列表。该列表所示加密算法及其数值由country—code扩展中所指示的国家或者地区定义。如果MessageType字段为1,扩展中包含ns_cipher_suite字段,ns_cipher_suite字,殳为一个专用加密套件。该专用加密套件中的加密算法对应数值由country-code扩展中所指示的国家或者地区定义。CountryType字,殳为国家和地区的代^码,也可以为相应国家或地区的数值,如中国的代码为CN,数值为86。在握手过程中,客户端发送一个包括扩展的ClientHello消息,其中记录客户端可以支持的专用加密套件。即在ClientHello消息的扩展中,将message-type字,殳置为0,country—code为客户端定义的专用加密套件的某个国家,ns—cipher—suites字段为客户端支持的与country—code记录的国家对应的专用加密套件列表。月良务端在收到包含ns-ciphersuites扩展的ClientHello后,如果同意使用专用加密套件,则用一个包含ns-ciphersuite扩展的ServerHello作为响应。在ServerHello的ns—ciphersuite扩展中,message—type字,殳置为1,country-code为客户端提供的国家代码,表明服务端对国家代码的确认,ns-cipher_suite字段为服务端从客户端提供的专用加密套件列表中选择的一个加密套件。另外,服务端需要将ServerHello消息的cipher—suite字段置为一个特殊值,如GxFFFF,表明服务端不使用标准加密套件。客户端在向服务端发送ClientHello消息时,对于标准加密套件按照现有技术中的形式携带,即携带在ClientHello消息的cipher—suites列表中;对于专用加密套件,对现有的ClientHello消息进行扩展,增加国家代码和专用加密套件列表,本实施例以专用加密套件由国家制定为例,若专用加密套件由地区或组织或其它;f几构制定,则此处国家代码为相应的地区或组织或机构代码,该专用加密套件列表中记录着由国家为各专用加密套件分配的数值,因此,由国家代码和相应的数值可以唯一确定一个专用加密套件。下面是一个加密套件的实例TLS—RSA—WITH—AES—256—CBC_SHA={0x00,0x35}其中,TLS表示协议类型,RSA表示密钥交换算法,AES—M6—CBC表示数据加密算法,SHA表示哈希(Hash)算法;该加密套件的数值为0x0035,即通信双方使用数值0x0035时指示的力。密套件为TLS—RSA_WITH_AES_256—CBC—SHA。该实例是以标准加密套件为例的(由于数值开头是0x00),专用加密套件的形式也如此,不同的是数值开头位于0xC0-0xFF之间。在通信双方会话建立的初始,客户端和服务端都预先配置有一些预设策略,如客户端和服务端各自支持哪些国家制定的哪些专用加密套件、专用加密套件和标准加密套件的优先级等。本实施例假设客户端发送的专用加密套件是由中国制定的,中国的国家代码为CN,对应的数值为86,制定的专用加密套件内容与数值的关系可以如表1所示。表l<table>tableseeoriginaldocumentpage10</column></row><table>该ClientHello消息中扩展部分包括国家代码和专用加密套件列表。国家代码部分为86,表明使用本次会话使用中国定义的加密套件。而专用加密套件列表部分为表1所示的中国定义的专用加密套件的一种或多种的组合,具体组成可以根据客户端配置的支持的加密套件确定,并且该列表中的各专用加密套件的排列方式与标准加密套件列表中各标准加密套件的排列方式相同,即均是按照优先级从高到低的顺序排列,服务端在加密套件列表中进行加密套件的选择时也是按照优先级从高到低的进行选择。服务端接收到ClientHello消息后,根据该ClientHello消息及服务端的预设策略,向客户端返回第二握手消息(ServerHello消息)。若服务端选择使用专用加密套件,则使用ServerHello消息扩展,使之包括服务端选择的专用加密套件的第二国家代码和对应的数值,在握手正常的情况下,第二国家代码应该与第一国家代码一致,服务端选择的专用加密套件是在客户端发送的专用加密套件列表中选择的。如服务端选择的专用加密套件为TLS-SM2—WITH—SM1-SM3,则服务端在返回的ServerHello消息的扩展项中包括数值为86的国家代码和数值0xFE01,并且为了指示使用的是专用加密套件,将ServerHello消息的cipher-suite字段设置为专用标识,其值为一个特殊的数值,如设置为OxFFFF;若服务端不选择使用专用加密套件,则返回标准加密套件,即在ServerHello消息的cipher_suite字段携带选择的标准加密套件的数值,如0x0035。具体的,包括步骤121:服务端接收到ClientHello消息后,判断ClientHello消息中携带的第一国家代码(如86)是否在其支持的国家代码组中,若是,则执行步骤122,否则,执行步骤124。步骤122:判断服务端选择的专用加密套件是否在服务端支持的专用加密套件组中,若是,执行步骤123,否则,执行步骤124。步骤123:判断选择的专用加密套件的优先级是否低于标准加密套件的优先级,由于专用加密套件和标准加密套件是在不同的列表中携带的,需要判断各自的优先级,如选择的专用加密套件在专用加密套件列表中按照优先级是最高的,但是该选择的专用加密套件的优先级可能比位于标准加密套件列表中的标准加密套件的优先级低。若是,执行步骤124,否则,执行步骤125。步骤124:服务端向客户端发送第二握手信息,所述第二握手信息为包括标准加密套件的ServerHello消息。如选择的标准加密套件的数值为0x0035,则在ServerHello消息的cipher—suite字^殳添加0x0035,并返回给客户端。步骤125:服务端向客户端发送第二握手消息(ServerHello消息),该ServerHello消息包括该服务端选择的专用加密套件的数值、第二国家代码和专用标识,其中专用标识可以添加在cipher—suite字段,专用标识,如0xFFFF,用于表征使用专用加密套件。该ServerHello消息相对于现有的ServerHello消息的扩展包括第二国家代码和服务端选取的专用加密套件。正常握手情况下,第二国家代码为ClientHello消息扩展中的第一国家代码,例如中国对应的数值86,表明服务端对客户端指定的国家的确定。专用密码套件部分为表l所示的并由服务端在ClientHello消息的ciphersuites项中选择的专用加密套件的数值,如OxFEOl。上述流程实现了客户端和^务端的加密套件的交互,后续流程还可以包括步骤13:客户端接收到ServerHello消息后,根据该ServerHello消息判断是否终止握手。如果返回的加密套件可以得到客户端的支持则继续握手,如服务端返回的标准加密套件是客户端可以支持的,那么,客户端和服务端将以该标准加密套件进行加密运算,如服务端返回的专用加密套件是客户端可以支持的,那么,客户端和服务端将以该专用加密套件进行加密运算。如果返回的加密套件可以不能得到客户端的支持则终止握手。针对协商自定义加密套件协商过程中可能出现的问题,客户端在收到服务端的ServerHello响应消息后,在以下情况下可以终止握手,并发送bad_nsciphersuite_negotiation错误警报(1)ServerHello消息的扩展中携带的第二国家代码与第一国家代码不一致;(2)ServerHello消息的扩展中携带的专用加密套件不在客户端支持的专用加密套件列表中;(3)ServerHello消息的cipher—suite字段添加了专用标识,但ServerHello消息不包括专用加密套件相关的扩展,如不包括第二国家代码及选择的专用加密套件;,(4)ServerHello消息进行了专用加密套件的扩展,如在扩展中包括第二国家代码及选择的专用加密套件,-f旦cipher—suite字^殳没有添加专用标识。只要满足以上条件之一,客户端和服务端的握手将被终止,流程结束,如果握手继续,则根据客户端和服务端协商好的专用加密套件或标准加密套件进行加密处理,如服务端返回专用加密套件,客户端又支持该专用加密套件,则双方用该专用加密套件进行加密处理,如月l务端返回标准加密套件,客户端又支持该标准加密套件,则双方用该标准加密套件进行加密处理。加密处理后,按照现有技术进行后续的握手及通信流程。本实施例通过对握手消息进行扩展,使专用加密套件由国家代码和数值共同指定,避免了只由数值指定造成的沖突问题,同时,通过扩展携带国家代码和专用加密套件,不影响标准加密套件的协商和使用,实现对现有技术的良好兼容。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。图2为本发明加密套件选择装置一实施例的结构示意图,该装置可以设置于服务端,该实施例包括接收模块21、发送模块22。接收模块21用于接收客户端第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;发送模块22用于根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将所述加密套件添加进第二握手消息中,发送第二握手消息给客户端。具体的,第一握手消息中还包括标准加密套件列表,发送模块22根据该第一握手消息和预设策略判断是否选择标准加密套件,若是,则发送包括标准加密套件的第二握手消息,否则,发送包括专用标识、第二国家代码和选择的专用加密套件的第二握手消息。更为具体的,所述预设策略包括国家代码组、与所述国家代码组中各国家代码对应的加密套件组及所述加密套件组中各加密套件的优先级;所述第一握手消息还包括标准加密套件。发送模块22判断所述第一国家代码是否在所述国家代码组中,若否,则发送包括标准加密套件的第二握手消息;若所述第一国家代码在所述国家代码组中,判断选择的专用加密套件是否在与所述第一国家代码对应的加密套件组中,若否,则发送包括标准加密套件的第二握手消息;若选择的专用加密套件在与所述第一国家代码对应的加密套件组中,判断选择的专用加密套件的优先级是否低于标准加密套件的优先级,若是,则发送包括标准加密套件的第二握手消息,否则,发送选择的专用加密套件给客户端。图3为本发明加密套件选择系统一实施例的结构示意图,该实施例包括客户端31和服务端32。客户端31用于发送第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;服务端32,用于根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将选择的加密套件添加到第二握手消息中,向所述客户端发送所述第二握手消息。具体的,客户端31发送的第一握手消息中还包括第一握手消息,服务端32判断是否选择标准加密套件,若是,则发送包括标准加密套件的第二握手消息,否则,发送包括专用标识、第二国家代码和选择的专用加密套件的第二握手消息。本实施例中的客户端31还用于根据所述第二握手消息判断是否终止握手,若否,则根据所述第二握手消息中携带的加密套件进行通信。具体的,客户端31接收所述第二握手消息,若该第二握手消息中携带的第二国家代码与所述第一国家代码不一致,或,若所述选择的专用加密套件不在所述专用加密套件列表中,或,若所述第二握手消息包括专用标识,且不包括第二国家代码和选择的专用加密套件,或,若所述第二握手消息包括第二国家代码和选择的专用加密套件,且不包括专用标识,则终止握手;否则,继续握手,即根据接收到的客户端和服务端均支持的专用加密套件或标准加密套件进行加密处理,进而根据现有技术进行后续握手及通信流程。本实施例对握手消息进行扩展,在扩展中携带专用加密套件及制定该专用加密套件的国家的代码,使专用加密套件由国家代码和数值共同指定,避免了只由数值指定造成的冲突问题;同时,通过扩展的方式携带国家代码和专用加密套件,并且服务端可以根据自身支持的加密套件情况返回标准加密套件或专用加密套件,不影响标准加密套件的协商和使用,实现对现有技术的良好兼容。最后应说明的是以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的4青神和范围。权利要求1、一种加密套件选择方法,其特征在于,包括接收客户端发送的第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将选择的加密套件添加到第二握手消息中,将所述第二握手消息发送至所述客户端。2、根据权利要求1所述的加密套件选择方法,其特征在于,所述第一握手消息中还包括标准加密套件列表,所述根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件包括判断是否选择标准加密套件,若是,则发送包括标准加密套件的第二握手消息,否则,发送包括专用标识、第二国家代码和选择的专用加密套件的第二握手消息。3、根据权利要求2所述的加密套件选择方法,其特征在于,所述预设策略包括国家代码组、与所述国家代码组中各国家代码对应的加密套件组及所述加密套件组中各加密套件的优先级,所述发送包括标准加密套件的第二握手消息包括判断所述第一国家代码是否在所述国家代码组中,若否,则在所述标准加密套件列表中选择标准加密套件,发送包括所述标准加密套件的第二握手消息;若所述第一国家代码在所述国家代码组中,在所述专用加密套件列表中选择专用加密套件,判断所述专用加密套件是否在与所述第一国家代码对应的加密套件组中,若否,则在所述标准加密套件列表中选择标准加密套件,发送包括所述标准加密套件的第二握手消息;若选择的专用加密套件在与所述第一国家代码对应的加密套件组中,判断选择的专用加密套件的优先级是否低于标准加密套件的优先级,若是,则在所述标准加密套件列表中选择标准加密套件,发送包括所述标准加密套件的第二握手消息。4、根据权利要求3所述的加密套件选择方法,其特征在于所述第一握手消息的加密套件列表中的加密套件按照优先级从高到低排列,服务端接收到所述第一握手消息后按照乂人高到4氐的顺序选择加密套件。5、根据权利要求2所述的加密套件选择方法,其特征在于,还包括客户端根据所述第二握手消息判断是否终止握手,若否,则根据所述第二握手消息中携带的加密套件进行通信。6、根据权利要求5所述的加密套件选择方法,其特征在于,所述客户端根据所述第二握手消息判断是否终止握手包括若所述第二国家代码与所述第一国家代码不一致,或若所述选择的专用加密套件不在所述专用加密套件列表中,或若所述第二握手消息包括专用标识,且不包括第二国家代码和选择的专用加密套件,或若所述第二握手消息包括第二国家代码和选择的专用加密套件,且不包括专用标识,则终止握手。7、一种加密套件选择装置,其特征在于,包括接收模块,用于接收客户端发送的第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;发送模块,用于根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将选择的加密套件添加到第二握手消息中,将所述第二握手消息发送至所述客户端。8、根据权利要求7所述的加密套件选择装置,其特征在于所述接收模块发送的第一握手消息中还包括标准加密套件列表,所述发送模块判断是否选择标准加密套件,若是,则发送包括标准加密套件的第二握手消息,否贝'J,发送包括专用标识、第二国家代码和选择的专用加密套件的第二握手消息。9、一种加密套件选择系统,其特征在于,包括客户端,用于发送第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;服务端,用于根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,将选择的加密套件添加到第二握手消息中,向所述客户端发送所述第二握手消息。10、根据权利要求9所述的加密套件选择系统,其特征在于所述客户端发送的第一握手消息中还包括标准加密套件列表,所述服务端判断是否选择标准加密套件,若是,则发送包括标准加密套件的第二握手消息,否则,发送包括专用标识、第二国家代码和选择的专用加密套件的第二握手消息。11、根据权利要求IO所述的加密套件选择系统,其特征在于所述客户端还用于根据所述第二握手消息判断是否终止握手,若否,则根据所述第二握手消息中携带的加密套件进行通信。全文摘要本发明实施例公开了一种加密套件选择方法、装置和系统。该加密套件选择方法包括接收客户端发送的第一握手消息,所述第一握手消息包括第一国家代码及对应的专用加密套件列表;根据所述第一国家代码、专用加密套件列表和预设策略选择加密套件,向所述客户端发送添加了所述加密套件的第二握手消息。该加密套件选择装置及系统与上述方法对应。通过本发明实施例可以避免现有技术存在的加密套件冲突的问题,并可以与现有技术进行良好的兼容。文档编号H04L29/06GK101567880SQ200810104508公开日2009年10月28日申请日期2008年4月21日优先权日2008年4月21日发明者适万,刘利锋,敏黄申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1