应用安全协议李改成lgc@ss.pku.edu.cn网络应用系统•一个典型的网络交易通常包括–从客户端到服务器端的过程,其间可能包括多种应用数据的收集、打包、解包和处理过程。•客户机功能:–与最终用户接口,确定所要进行的操作;准备服务请求的内容;发起服务请求;处理应答;向最终用户报告结果。•通信类型–终端与应用服务器可以通过专线或拨号电话进行连接,通信协议可采用TCP/IP、异步通信或同步通信等通信类型。通信类型•会话:客户在建立了与服务的连接后,可以多次发送或接收数据,同时存储信息的上下文。–会话是半双工的。只有会话的控制方可以发送消息。–在会话过程中,双方记忆会话点或状态,这样长操作,如报告和文件传递可以支持。•在一个典型的会话中,客户连接服务器,要求一大批账户的数据。由于应答数据大,服务器发送一部分数据,同时指示数据传递没有完成。客户接收并处理接收到的数据,同时指示准备接收更多的数据。这样一直持续到客户接收到所有的数据。–会话服务器在需要时可自动复制,因而可随时接收请求。通信类型•广播:由服务进程向客户进程发出的未经客户请求的广播或通知消息。–用户进程可事先向系统订阅一些它所感兴趣的系统事件或用户自定义的应用程序事件,当系统或应用程序发生这些事件时,通知用户进程这些事件的发生,用户方可采取相应的动作。–例如,当取款超过一定限度时发送一个事件通知,说明何时何种事件发生,客户端使用事件通知中的内容组成系统命令并执行。服务器处理•服务函数首先分析解码后的缓冲区的内容。为此,所有的服务例程都具有相同的一个参数:–structtpsvcinfo{•charname[32];/*servicenameinvoked*/•longflags;/*describesserviceattributes*/•char*data;/*pointertodata*/•longlen;/*requestdatalength*/•intcd;/*connectiondescriptor*/•longappkey;/*applicationauthenticationkey*/•CLIENTIDcltid;/*clientidentifier*/–};•服务器处理进程–服务器是资源接触点。例如,数据库服务器需要“打开”,即在其启动时所使用的数据库管理系统中进行注册。–服务器公布服务集合给整个系统,因而客户进程可知道将服务请求送到哪里。–服务器进入循环:接收请求需要从服务请求中取走一个请求消息。处理请求要求检查缓冲区内容,基于请求信息执行动作,返回一个包含关于服务执行结果所有必要信息的应答缓冲区。–当系统管理员关闭服务时,服务器接到需要关闭的“元消息”,取消发布的服务,关闭相关的资源,并且终止。处理过程服务器处理模式•队列模型–TUXEDO提供一种可靠性的队列机制/Q,将客户发出的请求用tpenqueue()存储在可靠的队列中,由TUXEDO/Q从队列中将请求取出进行处理,完成各个队列中的服务请求。–请求的入队和出队是异步的,并且具有事务特性。–请求的出队次序可由用户设置为FIFO(先入先出),LIFO(后入先出),优先级,或定时执行。•转发–在需要的情况下,服务进程把处理过的结果进一步转发给后续的其他服务进程,由其他服务进程接着处理,自己继续完成另外的服务请求,被转发的服务请求的结果由后续服务进程直接返回给客户进程。OSI应用协议模型•OSI(开放系统互联)模型–OSI参考模型分为七层,由低到高依次为:物理层、数据链路层、网络层、会话层、表示层和应用层。–应用层协议标准描述了应用于某一特定应用或一类应用的通信功能。例如,域名服务、文件传输、电子邮件、远程终端等–表示层为上层用户提供数据或信息语法的表示转换。从应用层的角度看,表示连接相当于一个应用关联。•在OSI体系结构中,应用层协议的模块化设计采用了许多内部结构。ISO/IEC9545定义了应用层的结构概念和术语。•考虑两个OSI终端系统通过一条表示连接进行通信的模型。–应用层协议的描述里包括各个具体模块(X,Y,Z)和控制部件(CF)的描述,它说明各个模块怎样协同工作,怎样向上层用户提供连贯一致的服务,怎样使用表示层的服务接口。OSI应用协议模型–这些模块称为应用服务元素(ASE)或应用服务对象(ASO),二者的区别在于ASE包含一个模块描述,而ASO本身是一个结构,它把控制部件CF和一组底层模块(ASE,ASO等)组合到一起。•ASE用于定义应用层PDU和它们的使用规则。•控制部件规定了进一步的规则,限定了来自不同的ASE的PDU之间,及它们与表示层服务之间相互关联的方式。–每个系统中至少有一个用于关联控制的ASE,称为ACSE,以便在建立(终止)表示连接的同时,建立(终止)应用关联•具体包括地址信息的传送、终端认证等。•ACSE的标准是ISO/IEC8649、8650,它定义了一组应用PDU,在建立/终止表示连接的同时建立终止应用关联。应用协议结构•应用关联表示连接控制部件F模块X模块Y模块Z系统A应用层实体控制部件F模块X模块Y模块Z系统B应用层实体表示层操作•OSI模型中,应用层和表示层之间的交互可以用两个概念来描述:–抽象语法:–表示数据值:•一个抽象语法并不只有一个对应的传输语法。–例如,一个传输金融交易的抽象语法可能把借/贷请求定义为:帐号(整数),账户名(字符串),借/贷标志(布尔值),金额(实数),对每个字段可能采用不同的传输语法,例如不同的字符集,不同的整数编码。表示层操作–之所以需要解决消息格式是因为金融数据可以看成二进制数据或字符数据。如果看成二进制数据,那么很容易确定源比特串,但如果看成是字符数据,应该提供下列选项:•允许对整个消息或消息的某些字段进行完整性保护,这就要求能够识别出标准的消息格式;•在计算MAC值之前,应允许按制定的规则对消息进行编辑。这一步用来消除消息的各种变体(由大小写、格式化字符、控制字符引起)。由于网络或终端设备可能会删去或修改某些字符,所以这种编辑是必要的。这样,就把字符编码为8位组,把最高位置成0,低7位按ASCII编码。传输语法•传输语法也可以有ASN.1标识符,标识符指明怎样从给定的抽象语法派生出特定的传输语法。–表示上下文•通过表示协议,可以建立表示上下文并为它分配有一个整数标识符。附带在表示数据值之后,以向目标系统指明所用的抽象语法和传输语法。•这样,一个表示层协议数据PDU可以传递多个具有相同或不同抽象语法的表示数据值,每个表示数据值的表示上下文预先确认好,表示上下文标识符随每个编码比特流出现。这就允许将多个表示数据值连接到一起以实现传输目的。–另外,也可以不使用表示上下文,而是把抽象语法和传输语法的标识符附在编码后的比特流之后。这种方法的缺点是增加了传输负载,但适合于在多端点系统中转发,适合分布式应用的要求。表示数据值的嵌入和连接•连接头部上下文标识符上下文标识符表示数据值(抽象语法A)表示数据值(抽象语法B)表示数据值(抽象语法C)表示协议数据PDU嵌入高层安全模型•OSI高层安全模型(ISO/IEC10745)是高层安全协议的通用构建工具和协议组件的模型。该模型的主要贡献是引入了下列概念:–系统安全组件和安全通信组件,这有利于标准的结构化和实现的结构化;–安全交换和安全变换,它们有助于设计安全通信的通用构建工具和协议组件;–安全关联,指系统之间对安全状态和属性信息的共享。•通用高层安全标准(GULS)标准广泛地使用这些概念来定义通用安全协议构建工具(ISO/IEC11586)。安全组件•实现网络安全的组件可以分成以下两类:–系统安全组件:与安全有关的处理,如加密/解密,数据签名的生成/验证,或认证令牌的生成/验证;–安全通信组件:负责与安全相关的信息在系统间的传输。•区别着两类很有意义。–首先,它区分了两类不同的标准。•系统安全组件属安全机制或安全技术标准,它是通用的,不限于哪一个通信协议或哪一层,在通信以外的领域也有用。•而安全通信组件则相反,它是特定通信协议的一部分,但不限于采用哪种安全机制或技术。–其次,它区分了安全功能和通信功能,这有利于协议的实现。一组系统安全组件可以实现成一个安全模块,例如可信软件子系统、防窜扰硬件模块,它们可以应用于各种通信和其他环境。因此,可以从系统安全组件和安全通信组件之间的区分着手实现标准的安全应用程序接口(API)。安全交换和安全变换•安全交换和安全变换为安全协议构建工具和协议组件的设计铺平了道路。这两个概念反映了安全协议所需的两类不同的行为。–安全交换是在安全机制的直接支持下,系统间交换的协议数据项的生成和处理,也即协议构造方法。–安全变换的概念是指用户数据在通信之前,要先进行一些变换,如加解密,填充/验证签名等。这类行为更多的是对应用的数据进行生成或处理而不是发送信息。•两类安全组件都用到安全交换和安全变换。–在安全交换的情况下,系统安全组件是协议信息的源方和收方;在安全变换的情况下,系统安全组件不是信息的源方和接方,而是对数据进行处理,如加密/解密。安全交换和安全变换安全机制协议数据项安全机制协议数据项通信组件系统组件通信组件系统组件安全机制协议数据项安全机制协议数据项通信组件系统组件通信组件系统组件待保护的用户数据协议项待保护的用户数据协议项安全关联•安全关联–如果两个(或多个)系统之间共同维护着一些规则、状态信息(实体ID,选用的算法、密钥、其他参数)等属性,就称它们之间有安全关联。–安全关联使得能对一系列的数据传输提供连贯一致的保护。•安全关联可用于–通过一个应用关联直接互联的情况–不直接互联的情况,例如通过应用层转发系统互联的情况。建立关联时的认证•关联控制服务元素(ACSE)的标准是ISO/IEC8649和ISO/IEC8650–在建立/终止表示连接的同时建立终止应用关联•关联建立规程(A-ASSOCIATE请求和响应)–可以交换一次或两次认证信息,为应用关联两端的应用实体提供相互认证。•关联控制服务元素的抽象语法是安全交换服务元素SESE的一种特殊形式。•关联建立PDU包括以下字段:–认证机制名称:认证机制的标识符,应由某个组织登记和指定;–认证值:属于某个ASN.1类型;认证机制名称字段决定了认证机制,而认证机制决定了认证值的类型。安全交换•安全交换是两个系统间传输的一系列与安全相关的信息。–假设把这两个系统称为A和B,A先向B发出初始信息,后面可能跟着一系列信息项,直到一个交换结束标志出现。通常,一次安全交换包括两个方向上的信息传输,但这没有严格的限制。•安全交换的例子包括:–三次认证交换,如X.509的三向交换或认证Diffie-Hellman交换–简单的一次传输,用于传输访问证书,其后跟随一个访问控制请求,例如,管理命令或数据库访问。–访问请求嵌入到访问证书中•应用上下文限制安全交换重叠现象的出现,在一个安全交换过程中禁止传输其他信息。安全交换实例•A安全交换头部访问控制证书A安全交换头部第一项安全交换头部第二项安全交换头部第三项访问控制请求A安全交换头部访问控制证书访问控制请求(a)(b)(c)BBB安全交换•一个安全交换规范由安全机制设计者来形成。最理想的情况是,规范应适用于不同应用和各种网络环境。•一个安全交换规范应包括:–1、说明要交换的信息项的数据类型;–2、说明进行到交换的哪个阶段,在哪个方向,应该传输什么信息;–3、说明在什么情况下可认定发生了错误,发生错误是向对方发出的错误指示是什么类型。–4、该类型的安全交换的全局唯一标识符,以标明协议中使用了该类型的安全交换–5、安全交换的目的和结果的含义。•对1、3、4,可以用描述工具来实现支持安全交换的通信协议的自动生成。要完成整个规范,还必须描述2和5,但这无法由标准化的工具来完成。安全交换•安全交换服务元素–安全交换服务元素(SESE)是ISO/IEC11568的一部分,它定义了安全交换中传输的协议数据项的抽象语法的一般形式,包括用于传递SE数据项和错误指示的PDU。•为了在关联建立时进