SSL通信涉及两方的参与者,通常采用的模型是Client/Server。如果我们开发Client端产品(比如浏览器),可能会和多方的Server产品对接。那么问题来了,双方是如何知道对方使用了国密算法呢?这个问题非常重要,只有双方采用同样的加密标准,才能正常通信。难道采用“天王盖地虎,宝塔镇河妖”的接头暗号?
在揭开这个谜底之前,我们先了解一下OID(Object Identifier,对象标志符),然后再聊一聊密码套件(Cipher Suite),就可以慢慢理解SSL通信双方是如何接上头的。当然,整个SSL通信涉及到很多标准和协议,不是一篇文章能讲完的,所以本文只是抛砖引玉,探讨一些基本的概念。可能对于资深人士而言,不值得一提,但我初入门时,也是摸索了好久,才慢慢能深入到细节。
OID
OID是由ISO/IEC、ITU-T国际标准化组织上世纪80年代联合提出的标识机制,其野心很大,为任何类型的对象(包括实体对象、虚拟对象和组合对象)进行全球唯一命名。通过唯一的编码,我们就可以识别出对象。但要为所有对象进行唯一命名,其难度和工作量都很大,所以它采用了分层树形结构。
OID对应于“OID树”或层