TAXII 服务指用以支持一个或多个TAXII 功能的一整套机制。一个TAXII 实现可支持多个或所有定义的TAXII 服务,也可以不支持任何此类服务。(后一种情况下,用户无需运行TAXII 后台用以支持TAXII 服务,而仍可使用TAXII 的某些功能。)
TAXII 服务
服务定义和实例
TAXII定义了如下服务:
- 发现服务– 提供现有TAXII 服务的相关信息;
- 集合管理服务(Collection Management Service)– 支持对于TAXII 数据集合订阅的管理;
- 收件服务(Inbox Service)– 支持生产者发起的网络威胁信息推送(也就是推送消息服务);
- 轮询服务(Poll Service)– 支持消费者发起的网络威胁信息获取(也就是获取消息服务)
一个服务实例指单个网络地址获取的由某个协议绑定承载的某一类TAXII 服务。注意,这是对服务实例的书面定义,而并不是对于TAXII 架构实现的要求。例如,某TAXII 架构允许单个网络地址接收多种TAXII 服务的消息,然而,TAXII 规范将此视为多个服务实例(每个实例指所支持的一种TAXII 服务),尽管只有一个网络后台监听连接。重要的是记住TAXII 消息使用类型- 绑定- 地址三元组记录服务,而实际的TAXII 服务实现要灵活得多。
TAXII 消息交换
TAXII 服务的TAXII 消息交换仅考虑TAXII消息,不关注用以传输消息的网络协议,因为这些网络协议在传输TAXII 消息之前可能会要求额外的网络交换(如SSL/TLS 握手),或者将一个TAXII 消息分割成多个部分单独传输。下文中的示意图表示的是TAXII 消息传输与响应的概念性顺序。交换中的方框与支持特定TAXII 服务的TAXII 后台(见“服务”一节中的描述)或TAXII 客户端对应。注意,一个TAXII 后台可能会实现多个TAXII 服务。就此点而言,为了简化表达,我们将支持ABC 服务的某TAXII 后台称为“ABC 后台”,如,支持收件服务的TAXII 后台就称为“收件后台”。
消息概述
- TAXII 服务规范规范定义的TAXII 消息归纳如下:
- TAXII 状态消息– 用于指示错误状况,在某些交换中,是对收到消息的确认。
- TAXII 发现请求– 请求获取所支持的TAXII 服务的信息。
- TAXII 发现响应– 对TAXII 发现请求所回复的响应,其中包含所支持的TAXII 服务信息。
- TAXII 集合信息请求– 请求获取所支持的TAXII 数据集合的信息。
- TAXII 集合信息响应– 对TAXII 集合信息请求所回复的响应,其中包含所支持的TAXII 数据集合信息。
- TAXII 集合订阅管理请求– 请求新建订阅或管理现有订阅。
- TAXII 集合订阅管理响应– 对TAXII 集合订阅管理请求所回复的响应,其中包含指定TAXII 数据集合的新的订阅状态。
- TAXII 轮询请求– 请求获取与TAXII 数据集合相关的内容。
- TAXII 轮询响应– 对TAXII 轮询请求所回复的响应,其中包含TAXII 数据集合相关内容。
- TAXII 收件箱消息– 用以将内容推送至接收方。
- TAXII 轮询实现请求– 请求获取延后提供的结果(如标为“待处理”状态的消息)或拆分结果的其他部分。
收件交换
在收件交换中,收件箱消息由TAXII 客户端传输到处于监听状态的收件后台。收件箱消息可以是请求(如订阅服务在注册后发送消息给接收方)或非请求(如主动为接收方提供内容)的消息。收件后台可能有能力基于发送方身份认证结果过滤消息。
图1 收件交换
在收件交换中,TAXII 客户端向收件后台发送收件箱消息。若检测到有错误使消息无法处理(如格式不正确的消息),收件后台必须回复相应的状态消息,说明交换失败。否则,收件后台会将收件箱消息及其相关信息传递给它的TAXII 后端。
TAXII 后台必须发送一条状态消息,作为对收件箱消息的回复,说明消息交换是否成功。注意,“成功”状态消息仅表示收件后台成功收到并解析了消息,且消息符合TAXII 级要求(例如,包含内容绑定ID、关联了正确权限等等)。接收方的TAXII 后端可能仍会因各种原因丢弃内容,这种情况不会通知发送方。非“成功”状态消息提供接收消息和/ 或内容的错误信息。若返回了此类消息,收件箱消息接收方必须丢弃接收到的收件箱消息中的内容(也就是说,若TAXII 客户端接收到非“成功”消息,会知道收件箱消息未成功接收)。有关状态消息支持的状态类型及其表示的条件。
发现交换
在发现交换中,TAXII 客户端请求获取特定方所提供TAXII 服务的信息。发现后台收到请求后,回复TAXII 服务清单。注意,发现后台不必将其检测到的所有TAXII 服务提供给所有TAXII 客户端。
图2 发现交换
在发现交换中,TAXII 客户端向发现后台发送发现请求。若检测到有错误使消息无法处理,发现后台必须回复相应的状态消息,说明交换失败。否则,发现后台会将相关信息传递给自己的TAXII 后端。TAXII 后端基于这个信息以及自己的访问控制策略新建一个TAXII 服务清单并返回,也可以决定不实现这个请求(例如,请求可能因为缺乏对请求方
的验证而被拒绝)。
若决定实现请求,则将TAXII 服务清单打包至发现响应中,回复给TAXII 客户端。(注意,若请求方没有查看服务的权限,则该清单可能为0 字节。)TAXII客户端收到消息,将信息传递给自己的TAXII 后端处理。若因为某种原因没有回复发现响应,发现后台必须回复状态消息,说明原因。TAXII 状态消息的内容必须且只能是说明有错误发生或明示拒绝请求。
内容嵌套与加密
将TAXII 内容从生产者传递给消费者时,内容块中的“Content Binding”字段表示内容块中内容的类型。例如,如果内容使用假设的威胁信息结构,一旦从内容块中提取出来,威胁信息内容可直接由威胁信息兼容工具处理。然而,在其他情况下,某类内容在使用前需要从另一类内容中提取。例如,如果威胁信息内容在“Content”字段中已被加密、压
缩或编码,“Content”字段中的内容需要加以处理,以提取威胁信息内容。
TAXII 支持通过多种方法利用内容的“Content Binding”字段嵌入一种内容。在下面的讨论中,假设有一个“加密结构”,并为其分配内容绑定IDEncstr。对于威胁信息内容,假设内容绑定ID 为“ThreatInfo”。(真正的内容绑定ID 可能包括版本和格式信息,但出于通用性考虑,下例中使用简化ID。)加密结构中包含一个字段,可设置为一个二进制大对象(BLOB),表示某些内容的加密形式。下面几节分别介绍使用加密结构传输加密内容的三种方法。请注意,下文为加密示例,但其他内容嵌套形式,例如用于支持压缩,也可使用这些方法。
盲式嵌套
在内容嵌套中,“Content Binding”字段只规定了内容荣的最外层格式。对于这一假设的加密架构,该字段如下:
内容绑定 = EncStr
收到包含该“Content Binding”字段的内容块后,接收方知道其为加密结构。然而,“Content Binding”字段中并不提供加密架构中内容的相关信息。收件人需要通过其他方法确定所含信息的性质。
Explicit Nesting 显式嵌套
在显式嵌套中,“Content Binding”字段可表示每级嵌套的内容类型。“ContentBinding”字段按照从最外层到最内层的顺序列出每个内容绑定ID,并用竖线(|)隔开。例如,对于包含威胁信息内容的加密架构,“Content Binding”字段如下所示:
内容绑定 = EncStr|ThreatInfo
有了显式嵌套,接收方最终收到的内容类型清晰明了,尽管接收方在使用内容前需要从一个或多个嵌套中提取内容。通过“Content Binding”字段值的内容,我们可确定结构中内容的特性,无需再猜测。另一方面,外部观察者即使无法理解加密结构中的内容含义,也能了解内容特性。可见,一般认为,显式嵌套优于盲式嵌套,建议尽可能地使用显示嵌套。“Content Bindings Subtype”不可以用于显式嵌套表达中。
内容块嵌套
外层内容类型不直接包含另一个内容类型,而是可以包含另一个TAXII 内容块。每个TAXII 消息绑定规范均定义了自己的内容绑定ID,表示嵌套内容具有内容模块结构。例如,对于使用“ContentBlock”字符串的TAXII 消息绑定,内容块嵌套形式如下:内容绑定 = EncStr|ContentBlock
下面实例中展示使用内容块嵌套的加密。
A = Payload Block {
Payload Binding = ThreatInfo
Payload = ThreatInfo payload
Signature = Digital signature scoped to A
Padding = ASDFGHJKL...
}
A’ = A, encrypted and represented in the fictional "Encryption Struct" format
B = Payload Block {
Payload Binding = EncStr|PayloadBlock
Payload = A’
Signature = Digital signature scoped to B
}
在上例中,A 代表包含威胁信息内容的内容块。“Signature”为可选字段,表示该内容块中的数字签名。“Padding”字段表示扩展内容块大小的任意数据。B 代表另外一个内容块。在该内容块内,内容使用加密结构表达。在此例中,加密对象是内容块A 的加密版本。B 的“Content Binding”字段表明“Content”字段为加密结构格式,并且加密结构格式包括另一个内容块。在B 中,数字签名属于内容块B。请注意,因为现在A 已被加密,其“Padding”字段模糊化了A的“Content”字段的大小。
内容块嵌套可以把盲式嵌套和显式嵌套各自的优点结合起来:一旦接收方从内容块B中提取和解密“Content”字段,内部内容的类型就会提供给接收方,因为内容块A 的“Content Binding”字段中明确给出了这些信息。然而,同时外部观察者无从了解传输的内容类型。另外,您可以了解如何在内部内容块中使用“Padding”字段模糊化传输内容的实际大小。
基于以上原因,相对于盲式嵌套和显式嵌套,内容块嵌套是内容加密处理的最佳方法。
免责声明
本文原文来自于互联网的公共方式,由“安全加”社区出于学习交流的目的进行翻译,而无任何商业利益的考虑和利用,“安全加”社区已经尽可能地对作者和来源进行了通告,但不保证能够穷尽,如您主张相关权利,请及时与“安全加”社区联系。
“安全加”社区不对翻译版本的准确性、可靠性作任何保证,也不为由翻译不准确所导致的直接或间接损失承担责任。在使用翻译版本中所包含的技术信息时,用户同意“安全加”社区对可能出现的翻译不完整、或不准确导致的全部或部分损失不承担任何责任。用户亦保证不用做商业用途,也不以任何方式修改本译文,基于上述问题产生侵权行为的,法律责任由用户自负。
更多内容,请下载附件:【公益译文】TAXII 服务规范
如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880