第5章 自适应信任协商系统设计基于
第4章提出的自适应自动信任协商模型,本章主要讨论如何设计和实现一个自适应信任协商系统。
5.1 系统总体设计
自适应信任协商系统的主要内容包括证书管理器、策略管理器、协商决策模块、信任度评估模块和一致性校验器等,是对自动信任协商系统的改进。证书管理器主要负责管理加载证书和声明;策略管理器主要负责管理访问控制策略;信任度评估模块主要对用户的可信度做出评价,并提供可验证的功能;一致性校验器接收决策模块的请求,判断凭证集合是否满足访问控制策略;证书链处理模块验证凭证集合是否构成信任凭证链;协商决策模块调用其他各个模块以获得协商过程中需要的中间结果,负责整个信任协商过程的协调。该系统的模块图如图5.1所示。
图5.1 信任协商系统模块图
5.2 系统模块设计
5.2.1 主策略模块
当一个远程消息被可视化模块处理后,它将被传递到主策略模块。这个模块可以被称作一个协调者。对于一个信任协商会话,它将收到的消息交给合适的策略模块进行处理。当主策略模块收到一个远程消息,并且可以获取协商状态,主策略模块生成向远程协商方反馈消息的内容。主协商模块可以无限次地调用一致性校验模块、证书链处理模块以及策略管理器、证书图5.2 主策略模块
管理器。
主策略模块(见图5.2)主要提供如下方法。
Nextstep(): 该方法的参数为协商消息,返回类型也为协商消息类型。该方法的功能是处理接收到的消息,并返回反馈给对方的消息,同时需要获取会话ID以及状态信息。
processPolicy(): 该方法的功能是查看访问控制策略是否能够被满足,如果存在这样的信任凭证集合,那么查看这些凭证是否可以被披露。如果有凭证受保护,那么查找对应的访问控制策略。
processCredential(): 该方法的功能是查看凭证集合中的凭证是否被保护。如果不受保护,将其添加到反馈消息中;如果被保护,则查看访问控制策略是否已经被满足。如果满足凭证可以被披露,将其添加到反馈消息中。
5.2.2 检索引擎
检索引擎主要负责检索证书和策略。此模块接受其他模块的请求,处理这些请求,反馈检索的结果。
由于检索引擎主要提供两种类型的检索: 证书检索和策略检索,所以在模块中设计了父类Query以及它的两个子类ProfileManager和PolicyManager,实现了父类的processQuery方法,如图5.3所示。这两个子类还实现了管理凭证和策略的功能,在后面的模块对此作介绍。
图5.3 检索引擎
QueryResult将检索到的证书集合或者策略集合以数组的方式返回。
检索引擎提供的方法如下。
processQuery(): 该方法的主要功能是获取检索类型,根据检索类型调用相应的类处理检索请求。
getQueryType(): 该方法的主要功能是返回检索的类型。
5.2.3 策略管理器
策略管理器负责加载用户硬盘上的策略文件,并且保证主策略模块可以通过检索引擎访问这些策略(见图5.4) 。此组件可以通过用户设置的策略文件目录来加载策略。
策略管理器提供如下方法。
getPolicyCount(): 该方法返回加载策略的数目。
processQuery(): 该方法的参数是检索请求,返回检索结果。根据请求类型,该方法可以实现检索所有的策略,也可以根据策略的ID检索策略。
5.2.4 证书管理器
证书管理器负责加载证书和声明,配置文件中同样需要指定证书存放的目录(见图5.5) .
图5.4 策略管理器
图5.5 证书管理器
该管理器提供如下方法。
getCredentialCount(): 该方法返回当前加载凭证的数目。
processQuery(): 该方法的参数是检索请求,返回检索结果。根据请求类型,该方法可以实现检索所有的证书,也可以检索声明。
5.2.5 一致性校验器模块
一致性校验器是自动信任协商系统的一个重要组成部分,它的主要功能是判断给定的信任凭证集合是否能够满足针对特定图5.6 一致性校验器模块
资源定义的访问控制策略(见图5.6) 。一致性校验器首先验证信任凭证的有效性,进行匹配时过滤掉无效的证书。
一致性校验器提供了makeDecision()方法,该方法的参数是信任凭证集合、访问控制策略和对资源的访问请求,它的返回结果是判定结果和引导信息。一致性校验器将判定的结果反馈到协商策略模块。
5.2.6 可视化模块
可视化模块的主要功能是将收到的远程消息以及发送的消息以固定的格式显示到窗口(见图5.7) 。它的输入是一条消息以及消息的方向。它分析消息的内容,并将具体内容以固定的格式显示到窗口。可以设置窗口为显示或者隐藏。
图5.7 可视化模块
可视化模块提供了如下方法。
buildGui(): 该方法设置输出窗口的样式以及窗口中显示的消息内容,包括消息方向、协商状态、加载消息中包括的凭证或者策略信息。
setPolicy(): 该方法将消息中的策略添加到窗口。
setCredential(): 该方法将消息中的证书添加到窗口。
Message对象以固定的格式封装了消息的内容。双方之间传递的消息均被封装到Message中。主策略模块返回以及接收的消息都是message类型的。可视化模块的输入为message类型,通过解析Message中包含的信息进行显示。
5.2.7 信任度评估模块
信任度评估模块的主要功能是评估用户的信任度,并根据用户的信任度调整协商策略和访问控制策略(见图5.8) 。信任图5.8 信任度评估模块
度评估的算法已经在前面作了介绍,这里主要介绍信任度评估模块如何获取用户的信任度,即信任度模块提供的调用接口。
信任度评估模块通过用户的IP获取用户的信任度trustValue.
该模块提供了getTrustValue()方法: 该方法的输入是一个IP地址,函数查找信任度数据库,返回此IP地址对应的信任度等级。
5.2.8 外部接口设计
信任协商系统为外部程序提供了一个外部调用接口(见图5.9) 。外部程序只需要调用AATN类,并使用AATN类提供的一些方图5.9 外部接口法来完成信任协商的功能。外部调用程序还必须为本类提供一些配置信息,来引导信任协商会话过程。信任协商过程中双方传递的消息被封装在Message内,AATN处理信任协商中对方发送过来的消息,将消息进行处理后,生成反馈的消息,封装为Message对象发出。
外部接口提供了以下方法。
Negotiate(): 该方法为本接口提供的主要信任协商方法。该方法接收远程方的消息,处理消息中包含的各种元素并产生一个响应。
prepareIncomingMessage(): 该方法为Negotiate方法提供支持,Negotiate通过调用该方法处理收到的协商远程方消息。在本方法的实现中需要调用信任协商系统的其他模块。
prepareOutgoingMessage(): 该方法为Negotiate方法提供支持,Negotiate通过调用该方法处理发送到协商远程方的消息。
generateFailureMessage(): 当协商过程中出现错误时,该方法生成消息,告知协商远程方终止会话。
5.3 AATN-Jess策略语言5.3.1 策略语言设计需求 策略语言用来描述策略,因此策略语言的语义是否清晰,描述是否详尽,决定了策略对于信任协商系统的可读性。信任协商系统对策略语言的要求主要体现在以下诸方面\.
(1) 定义良好的语义。一个定义良好的策略语言应该具有简单、紧凑和定义规范的语义,即使用该策略语言编写的策略,其含义与该语言的特殊应用无关。
(2) 单调性。信任协商对策略语言的单调性需求表现在: 证书与策略的披露应对用户的授权产生影响;额外证书/策略的披露只能让用户获得额外资源/服务操作的权限。
(3) 证书结合。不同证书描述了特定主体不同的特征。信任协商要求策略语言具有很强的表达能力,能够使用“交”、“并”等操作将不同的证书结合起来,以满足需要提交多个证书的策略。
(4) 认证。信任协商的参与方均有多个证书,以便通过证书交换来建立信任关系。在系统运行过程中,证书提交者需证明其拥有与证书签名使用的公钥相对应的私钥信息,以确保证书的有效性。
(5) 属性值约束。通常一个证书就是一个结构化的对象,它包含关于主体属性的信息,name-value就是属性信息的典型代表。证书可关联到某种指定的证书类型,用来简化证书规范和管理。
(6) 内部证书约束。为了更好地评估远程参与方的属性,即使参与方使用了不同的密钥,策略也应该可以表达一些约束,用来比较属于同一主体的不同证书的值。
(7) 证书链。当某一证书中的主体是证书链中下一证书的发布者时,策略语言应提供足够的描述能力来表达和约束证书链。
(8) 传递闭包。在特定的环境中,信任关系具有传递性。这要求策略语言允许策略编写者来描述信任链中的数量和类型约束。
(9) 外部函数。在协商过程中,需要一个标准的函数库来规范对诸如日期、时间和货币等的操作和比较。
(10) 本地证书变量。当处理资源的标准离线策略时,本地证书变量可使这些策略自动地与其证书关联起来,提高策略与证书的匹配效率。
(11) 检测提交者。策略编写者可以指定策略中哪些原子策略应该由访问者提交的哪些证书来满足。
(12) 敏感策略保护。敏感策略里可能包含一些个人隐私或商业机密。策略语言具有敏感信息保护机制,以避免/防止重要信息外泄。
(13) 具有互操作语言的统一形式和使用:这种需求强调了协商方法的应用能力,即在设计策略语言时,须充分考虑其是否可以在真实的环境中使用,以及是否可以集成到已有的上下文中。
5.3.2 AATN-Jess语言特点
Jess(Java Expert System Shell)语言\是1995年由美国Sandia国家实验室分布式系统计算组成员Ernest J.Friedman-Hill用Java实现的一个经过扩充的CLIPS版本。它除了继承了CLIPS的特点外,还具有支持正向和逆向推理,可以在系统运行环境下直接调用Java的类库等特点。这些特点将专家系统的开发过程同功能强大的Java语言结合起来,使采用Jess语言开发的专家系统具有良好的移植性和嵌入性,可以方便地应用到网络上的不同机器中。另外,Java多线程机制使Jess可以与其他应用程序并发执行,同步机制保证了对共享数据的正确操作,通过使用不同的线程完成特定的行为,就可以很容易地实现网络上的实时交互行为。这些特点都符合P2P网络环境下信任协商系统的要求,比较适合作为P2P网络信任协商系统中的安全策略语言。但由于Jess语言是为专家系统设计开发的,其某些地方不符合信任协商安全策略语言的要求。因此本节在Jess基础上设计了AATN-Jess语言,对原有Jess语言进行了简化与提升,使其更加符合自适应信任协商系统的要求,增强了协商的效率。
AATN-Jess在保留了Jess语言的环境友好、方便用户编写策略等特点的同时,对Jess的语法结构进行了修改,取消了Jess语法结构中需要将证书中涉及的内容封装为若干对象的要求,使得AATN-Jess语法更容易理解,同时也提高了信任协商系统对策略语言的解析效率。AATN-Jess相对于其他安全策略语言具有如下特点:
(1) 具有良好的系统兼容性。AATN-Jess是在Jess的基础上进行简化和提高的,其也是用Java语言进行开发的。Java语言具有跨平台特性,这样有利于AATN-Jess应用于不同的系统,这一特性也符合P2P网络的要求。同时在设计过程中将代码封装为不同的类,便于开发过程中的调用,也有助于日后根据自身需要进行修改。
(2) 简洁的语法结构及较高的协商效率。AATN-Jess支持面向过程的编程方式,它提供了一些语句来控制规则后件的操作流程,如使用if…then…else和while…do语句,这样它就能很有效地利用面向过程编程的优势。AATN-Jess的这些特性使系统拥有很强的知识表示能力。同时AATN-Jess去掉了Jess在编写过程中封装对象的要求,简化了语法结构,也有助于提高协商效率。
(3) 完善、友好的开发环境。AATN-Jess提供了两个交互式的、命令行的开发环境,但也可以使用文本编辑器编辑代码,然后再通过系统命令以批处理的方式载入到系统中。这样使用户更容易上手,不需要了解Java知识就可以编写自身所拥有的敏感资源和敏感证书的保护策略。
5.3.3 AATN-Jess语法结构
AATN-Jess语言包含9个语言要素,即Template(模板)、Rule(规则)、LHand-rule(规则左键)、RHand-rule(规则右键)、Pattern(模式)、Match(配比)、Function(函数)、Solt(槽值)和MultiSolt(多槽值),所有访问控制策略文件都是由这9个语言要素嵌套组合而成的,其嵌套语法如图5.10所示。
图5.10 AATN-Jess语法逻辑示意图
……