当前位置:文档之家› 密码算法自动化测评系统

密码算法自动化测评系统

西安电子科技大学

硕士学位论文

密码算法自动化测评系统姓名:苏昊欣

申请学位级别:硕士专业:计算机系统结构指导教师:李凤华

20100101

摘要

摘 要

随着信息技术的快速发展以及各种网络业务的不断涌现,对信息安全的需求日益增强。密码算法是信息安全的重要基础,为了保证密码算法的安全性和有效性,在设计过程中通常涉及到大量数据的反复验证,因此对自动化测评工具的需求极为迫切。

本文根据用户功能可扩展和可定制的需求,设计并实现了一种针对密码算法的自动化测评系统,主要由基于组件的可扩展动态框架、公共组件、私有组件、XML文件的设计等四部分构成。其中,私有组件分为测评组件和密码算法组件两类。该系统采用基于组件可扩展的动态框架,以组件形式开发密码算法和测评功能,使得测评系统可动态集成不同密码算法和测评功能,具有可扩展性。公共组件为测评组件的输入和输出提供统一接口,便于系统与测评组件进行数据交互。论文分析了系统内部所用到的数据类型,设计了系统内部数据通信的统一格式,利用该数据交互格式实现了公共组件、测评组件及密码算法组件之间的数据通信。为了便于描述测评方法与密码算法之间多对多的对应关系,以及实现测评系统自动化工作模式,制定了相关的XML规范格式。该格式包括指定工作模式、提供数据、保存测评结果等标签,可以对密码算法测评的情况进行描述,实现密码算法的自动化测评。工作模式分为自动和人工两种方式,人工方式由用户根据系统提示选择相关测评内容,选定后由测评系统自动生成对应的XML文件;自动方式由用户直接提供通过其它文字处理软件编辑的无版式XML文件。

关键词: 自动化测评密码算法测评数据交互 XML语言

Abstract

Abstract

With the development of information technology and the emergence of various network applications, the information security is of great significance. The cryptographic algorithm is the essential basis of information security. To ensure the accuracy and availability of cryptographic algorithms, a large amount of data verification is necessary during the evaluation. Therefore, an automated evaluation system for cryptographic algorithms is urgently necessary.

To achieve function scalability and customization, an automated evaluation system for cryptographic algorithms is proposed in this paper, which contains the component-based scalable and dynamic framework, common component, private component and design of XML files. The private component includes the evaluation component and the cryptographic algorithm component. The proposed system uses the component-based framework, and the cryptographic algorithms and evaluation methods are developed as different components. Therefore, the system may integrate different cryptographic algorithms and evaluation methods dynamically, and then the scalability is achieved. Unified interfaces for input and output in evaluation components are provided by common component to facilitate the data exchange between the system and evaluation component. Data types in the proposed system are analyzed, and a unified data format for communications is designed. The data among the common component, evaluation component and cryptographic algorithm component are communicated using the unified format. In order to facilitate the description of the many-to-many relationship between evaluation methods and cryptographic algorithms, the automatic work pattern in evaluation is realized, and the XML files are formatted. The format include many elements, such as the specify work pattern, provide data, save data and so on. The evaluation situation can be described, and the automatic evaluation of the cryptographic algorithms is achieved. The work pattern includes manual and automatic ways. The manual way is that the data selected by users according to the indication of system, and then XML file is created by system. Automatic way is that the unformatted XML file is provided by user through other word processing softwares.

Keyword:Automatic Evaluation Cryptographic Algorithm Evaluation Data Exchange XML

西安电子科技大学

日期

西安电子科技大学

日期

导师签名:日期

第一章绪论1

第一章绪论

1.1 课题背景及意义

随着计算机的广泛应用和网络通信技术的快速发展,信息技术与人类生产生活之间的关系越来越密切。信息安全服务依靠安全机制来完成,而安全机制主要依赖于密码技术。密码技术可以保证信息的机密性、完整性和确定性,同时可以防止信息被篡改、伪造和假冒。因此,密码技术是信息安全的核心。而密码算法(Cryptography Algorithm)又是密码技术的核心,所以密码算法的重要性不言而喻[1]。

密码技术主要由密码编码技术和密码分析技术两个分支组成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对信息进行加密或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取机密信息或进行诈骗破坏活动。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展。目前人们将密码理论与技术分成两大类:一类是基于数学的密码理论与技术,包括公钥密码、分组密码、序列密码、认证码、数字签名、Hash函数、身份识别、密钥管理、PKI技术、VPN技术等;另一类是非数学的密码理论与技术,包括信息隐藏、量子密码、基于生物特征的识别理论与技术等[2]。

密码算法在信息安全中的广泛应用,使世界各国相继开展密码算法标准化的工作。自上世纪70年代起,美国最早开始了大量密码算法的标准化工作,先后颁布了分组密码算法标准、安全杂凑算法标准和数字签名标准等。随后,欧洲在2000年3月启动了NESSIE(New European Schemes for Signatures,Integrity,and Encryption)[3,4,5]大计划,目的是推出一系列安全的密码模块,保持欧洲在密码研究领域的领先地位并增强密码在欧洲工业中的应用。NESSIE涉及的范围很广,不仅征集分组密码,而且还征集流密码、公钥密码、数字签名、消息认证码及杂凑函数。日本也不甘落后,在2000年4月开始进行自己的密码算法评估CRYPTREC[5,6],目标是通过对一系列密码技术的评估,列出适用于电子政务应用的密码技术及其特征,确保截至到2003年为电子政府建立一个适用的安全基础。韩国在1997年为了促进电子商务的发展,决定发展自己的标准加密算法。1998年由韩国信息安全局(KISA)和一批专家确定加密算法SEED[7]的初级版本作为标准算法[8]。在密码算法遴选的过程中,要求有一套全面的评估策略,主要包括安全性、

2密码算法自动化测评系统

代价和算法的实现特性。同时,在密码算法测评过程中,如何自动、快速、高效的检测密码算法在整个评估过程中起着非常关键的作用。密码算法的安全性分析是密码算法研究的核心问题,只有在安全性得到保证的基础上,才能考虑其它因素。

1.密码算法的安全性

安全性包括以下几个方面:

(1)算法数学基础的稳健性。

(2)算法的抗攻击性,我们可以用现有的攻击方法对密码算法进行攻击以发现密码算法设计的缺陷。

(3)算法的相对强度,可以将算法与现有的公认的安全的算法进行比较,以取得算法安全强度量上的认知。

(4)用己知的统计检测原理来检测算法输出序列是否随机。

2.密码算法的代价

代价是算法评估的第二个重要因素,主要包括许可要求、在各种平台上的计算效率(速度)和内存空间的需求。

3.密码算法的实现特性

实现特性包括灵活性、硬件和软件适应性、算法的简单性等。算法的灵活性包括:处理的密钥和分组长度必须要超出最小的的支持范围;在许多不同类型的环境中能够安全和有效的实现。对于分组密码算法,它可以实现序列密码、杂凑算法,并且可提供附加的密码服务。算法必须能够用软件和硬件两种方法实现,并且有利于有效的固件实现。另外,算法设计要相对简单[8]。

1949年Shannon首先讨论了密码系统的安全性问题[9,10]。密码算法的安全性体现在其数学基础的稳健性、抗攻击性、相对强度以及用已知的统计检测原理来检测算法输出序列是否随机等。密码算法随机性检测是密码算法安全性研究的重要技术手段,为密码算法的设计、分析提供客观的量化指标和技术参数,对密码算法的应用具有重要的指导意义[11]。测试目的就是通过大量测试来推断密码算法的输出与输入之间是否具有统计特性。

由于对密码算法的安全性测评需要输入大量的数据,因此在测试过程中就需要人工手动将数据输入,等待测试结果,从而判断该密码算法是否安全。这是基本流程,但是却将人们绑定于输入数据中。目前人们已经研究出自动生成数据的随机数方法,且自动化测试技术也越来越成熟。所以通过自动化测试,将随机产生的数据传送给密码测评系统,测试完成后自动进行评估,将测试结果反馈给用户。这样可使人们有更多的时间去研究实际的测评方法,而不是输入测试数据。也可以先将测评所需数据提供给该测评系统,并指定测评次数及需要进行测评的密码算法,该测评系统即可根据用户的需求进行自动化测评,得出结果后将测评

第一章绪论3

结果以报告形式反馈给用户。

根据国家863计划专题课题――密码算法和安全协议自动化检测工具开发及测评系统的需求,开发了密码算法自动化测评系统。虽然自动化测试技术已经很成熟,但大多数都是软件自动化测试。所以需要根据密码算法测评的特点开发一个针对密码算法的专用自动化测评系统。该测评系统需要将测评方法及密码算法独立为两类组件,测评组件进行测试的对象可以是多个密码算法组件中的多种密码算法。因此在很大程度上保证了密码算法测评系统的灵活性和功能可扩展性,并且测评组件和密码算法组件是用户自己进行选择而加载的,满足了用户功能可定制的特性。

1.2 课题来源

本课题来源于国家863信息技术领域信息安全技术专题目标导向类“密码算法和安全协议自动化检测工具开发及测评系统(2007AA01Z472)”。密码算法自动化测评系统是该专题的重要组成部分之一,该系统为密码算法的测评提供了一个平台,并为课题中组件的开发及自动化测评制定了规范。该课题由西安电子科技大学、北京电子科技学院以及国家保密局涉密信息系统安全保密测评中心联合完成。

1.3 国内外研究现状

目前国外的研究重点是在测评标准的制定以及测评算法的开发方面。近几十年来,美国、欧洲、韩国和日本等国家纷纷启动密码算法标准化工作[3-8]。大量的密码算法需要经过遴选过程,挑选出最优算法,因此需要有良好的评估策略。很多国外的专家致力于研究密码算法及测评标准的研究与开发,但并没有将测评与密码算法开发成为一套完整的密码算法测评系统。

我国同样重视密码算法的研究,许多密码学专家也致力于研究测评密码算法的安全性与稳定性。文献[12]中设计并实现了一种分组密码算法的测试平台,文中将分组密码各个组成部件包括S盒、轮函数、密钥扩展等设计方法归类总结,同时也给出了一些比较实用的方法;并综述了较为典型的随机性和S盒的评估测试方法,运用现代开发工具给出WIN32平台的下的解决方案。但是该解决方案过于单一,仅考虑了分组密码算法,通用性不强。文献[13,14,15]设计并实现了密码算法测试平台,分别从算法、软件和硬件方面给予说明及实现。但密码算法和测试方法在使用时不够灵活。

因此,开发一个可以根据用户需求灵活定制的密码算法测评系统为密码算法

4密码算法自动化测评系统

及测评方法的发展提供了良好的平台。

1.4 论文工作

根据密码算法和安全协议自动化检测工具开发及测评系统对功能可扩展和用户可定制的需求,该系统采用基于组件的软件开发方法。在已经开发完成的基于组件可扩展的动态框架[16,17,18]的基础上,该系统将测评方法与密码算法分为私有组件中的两类不同组件,并通过公共组件为系统提供统一的输入输出格式。修改了原有数据库的设计,并且新增加了三个数据库表用于保存样本数据和测评结果。设计并实现了组件内部的数据交互格式和通信协议,制订了XML文件的格式规范,使得该测评系统可以根据XML文件进行自动化测评。经过以上设计及实现,该密码算法自动化测评系统可以实现测评组件及密码算法组件的无限扩展以及测评的自动化功能,同时可以根据用户的需求灵活定制测评方式。

论文的主要工作如下:

(1)研究了公开的十六种密码算法随机性测评方法的原理以及测评流程,并将测评算法根据系统制定的开发标准编写为组件,成功的加载到系统中对密码算法进行测评。

(2)设计并实现了组件内部数据交互的统一格式,包括私有组件内部、私有组件与公共组件之间的数据交互方式,用户与测评系统之间的数据传递方式以及测评组件与私有组件之间的数据传递方式。

(3)根据系统目前的需求,修改了原有数据库的设计。因为密码算法组件与测评组件虽然被独立开,但又同属于私有组件,因此信息需要保存到一个表中。在该表中使用一项标识用于区分该组件的分类。同时增加了三个新的数据库表用于记录测评结果以及可以提供给用户的样本数据库信息。

(4)设计并实现了自动化测评流程。通过实现组件间的数据传递,并考虑数据的多次传递问题,使系统可以完成一个测评组件对一个或多个密码算法组件进行多次测评,多个测评组件对一个或多个密码算法组件进行多次测评的情况。最终实现自动化测评的功能。

(5)实现了测评系统自动化的工作模式,研究了XML语言及XML Schema 的语法规则及其使用方式,制定了相关的XML规范格式。该格式包括指定工作模式、提供数据、保存测评结果等标签,可以对密码算法测评的情况进行描述,实现密码算法的自动化测评。工作模式分为自动和人工两种方式,人工方式由用户根据系统提示选择相关测评内容,选定后由测评系统自动生成对应的XML文件;自动方式由用户直接提供通过其它文字处理软件编辑的无版式XML文件。

第一章绪论5

1.5 论文结构

论文结构安排如下:

第一章介绍了本文涉及的技术背景、课题研究内容和研究意义,简述了论文研究的内容和主要工作。

第二章介绍了密码算法自动化测评的相关技术及开发测评系统所需相关技术,包括十六种随机性测评算法、数据交互技术、自动化测评技术以及XML语言。

第三章介绍了密码算法自动化测评系统的设计,包括需求分析的说明、设计目标描述、系统架构介绍、各组件的作用以及数据库的介绍。

第四章详细介绍了数据库的设计,包括私有组件数据库、样本数据数据库、测评结果数据库以及样本XML数据库的设计说明。同时详细阐述了系统内部的数据交互,包括数据通信流程、内部数据交互格式的定义及说明系统内部各个模块间的数据交互流程,组件开发时的接口函数规范以及自动化测评时各个组件间的调用关系和实现。

第五章介绍了XML文件应用于此系统的格式规范,包括XML的语法规则、XML Schema、测评系统制定的XML规范和XML文件的解析方法。

第六章介绍了密码算法自动化测评系统的最终实现和测试情况。

第七章总结研究现状,并提出下一步的研究方向和工作内容。

第二章相关技术知识7

第二章相关技术知识

2.1 随机性测评

在密码算法测评中,测评的方法有很多种,针对不同的算法有不同的测评方法。在此系统中,使用随机性测评方法验证算法的可靠性和正确性。目前对于随机性测试使用较多的是NIST出版的十六种随机性统计测评方法。在此测评系统中,该十六种算法被拆分成独立的功能模块,并根据系统中组件的编写规范编写成组件的形式加载到系统中,供用户使用。十六种随机数测评[19]的原理简介如下:

1.频率检测(Frequency Test)

频率检测[20]是测试待测序列中的‘0’,‘1’所占比例。由于真正的随机序列中‘0’,‘1’所占的比例是一样的。因此频率检测的目的是确定在一个序列中,‘0’,‘1’所占的比例是否近似相等,从而判断给定序列是否随机。

2.块内频率检测(Frequency Test within a Block)

块内频率检测是测试‘1’在M比特数据块中的比例。分块频率测试的目的是确定在一个序列中‘1’在M比特长的数据块中的比例是否近似等于M/2。当分块长度M=1时,块内频率检测即为频率测试。

3.游程检测(Runs Test)

游程检测[21]是测试一个序列中游程的总数。一个游程是某个比特连续出现的比特流。测试的目的是确定‘0’,‘1’构成的不同长度的游程是否满足随机序列的游程特性。特殊的是,这个测试可以确定‘0’,‘1’之间的震荡是否太快或太慢。

4.块内最大游程检测(Test for the Longest Run of Ones in a Block)

块内最大游程检测是对M比特的分块中‘1’的最长游程检测。此测试的目的是确定在测试序列中‘1’最大游程检测的长度是否与真正随机序列中‘1’最大游程测试的长度一致。由于‘1’最大游程检测的无规则性意味着‘0’最大游程的无规则性。因此,‘1’最大游程检测就已经足够。

5.二元矩阵秩检测(Binary Matrix Rank Test)

二元矩阵秩检测[22]是对测试序列中不连续的子矩阵的秩的统计。测试的目的是检测原始序列中固定长度字串间的线性独立性。

6.离散傅里叶变换检测(Discrete Fourier Transform Test)

离散傅里叶变换检测[23]是待测序列的离散傅里叶变换的峰高。测试的目的是

8密码算法自动化测评系统

检测在一个待测序列中的周期性特点,这可以表明随机性的假设偏差。目的是检测超过阈值的95%的峰值数与5%的有着显著不同。

7.非重叠模板匹配检测(Non-overlapping Template Matching Test)

非重叠模板匹配检测是测试序列中预先指定目标串的出现次数。测试的目的是检测序列中是否出现太多的非周期模式。一个m比特的窗口用于查找一个指定的m比特模式。如果没有匹配该模式,则窗口滑动一个比特位。如果匹配该模式,就将窗口的起始位置重新设置到匹配的位置,并且继续计数。

8.重叠模板匹配检测(Overlapping Template Matching Test)

重叠模板匹配检测[23]与非重叠模板匹配检测相同,都是测试序列中预先指定目标串的出现次数。不同的是,如果匹配该模式,则是将窗口仅向后滑动一个比特位,然后计数。

9. Maurer通用统计检测(Maurer’s Universal Statistical Test)

Maurer通用统计检测是统计两个匹配模式间的比特数。测试的目的是检测序列在不丢失信息的情况下是否能够被大幅度压缩。一个能够被大幅度压缩的序列被认为是非随机序列。

10. L-Z压缩检测(Lempel-Ziv Compression Test)

L-Z压缩检测是统计一个序列中累积独特模式的个数。测试的目的是确定待测序列可以被压缩的程度。一个真正随机序列不同模式的个数是特定的数值。

11.线性复杂度检测(Linear Complexity Test)

线性复杂度检测是测试线性反馈移位寄存器(LFSR)的长度。测试的目的是确定一个序列是否足够复杂,从而可以被认为是随机序列。真正的随机序列是以长的LFSR为特征的,一个太短的LFSR则意味着非随机序列。

12.连续性检测(Serial Test)

连续性检测[24]是测试一个序列中所有可能的m比特长的重叠模式出现的频率。测试的目的是确定2m个m比特长的重叠模式出现的次数与真正随机数中的近似相等。真正的随机序列具有均匀性。也就是说,每一个m比特长的模式出现的几率是一样的。当m=1时,连续性检测即为频率检测。

13.近似熵检测(Approximate Test)

近似熵检测[25]是测试一个序列中所有可能的m比特长的重叠模式出现的频率。测试的目的是比较两个连续或邻近长度的重叠块的出现频率是否与真正随机序列的结果一致。

14.累积和检测(Cumulative Sums Test)

累积和检测[26]是测试序列中调整数字的累加和定义的最大幅度的随机游走。测试的目的是确定部分序列出现在待测序列中的累加和与真正随机序列中的相比是太大或太小。这个累积和可以被认为是随机游走。对于一个随机序列,随机游

第二章相关技术知识9

走的振幅应该接近于零。对于某些类型的非随机序列,随机游走的幅度从零开始增大。

15.随机游程检测(Random Excursion Test)

随机幅度检测[26]是测试在一个随机游走累积和中有精确的K访问的循环次数。测试的目的是确定一个循环中特定状态的访问次数是否与真正随机序列中的值相背离。

16.随机游程可变检测(Random Excursions V ariant Test)

随机幅度可变检测[26,27]是测试在一个随机游走累积和中特定状态被访问的总次数。测试的目的是在随机游走中对不同状态的预计访问次数是否发生偏离。

以上十六种测试的结果为一个P_V alue值,当这个值小于0.01时,则认为测试序列是非随机序列;反之,则认为测试序列是随机序列。

因为此系统并不研究具体测评算法,因此对以上十六种随机性测评方法的核心算法不作介绍。

2.2 数据交互

数据交互的定义:对数据的发送和接收进行处理并使信息的内容或者数据被赋予的意义在传送过程中不发生改变的方式[28]。数据交互是采用源模式下的数据结果问题,创造一种目标模式的实例反映尽可能准确的源数据[29,30]。

各种软件的实质都是以一定的控制逻辑进行某种数据处理的过程,而数据处理不免涉及到数据的交互问题,一个系统内部当然需要进行数据交互,不同的系统之间也需要进行数据交互,否则就成了一个个的信息孤岛,以下就是分析不同系统间数据交互的几种典型方式,以及演变过程。

最早也是最通用的一种方式,就是通过文件方式进行系统间的数据交互,通过定义好文件交互的格式,使双方的系统都能识别,来满足交互的要求。这种方式虽然很古老,但相当有效,而且这种方式可以在异构系统间进行交互,甚至可以跨越平台的限制。不同的平台间通过文件交互,由于无法直接进行文件共享,因此通常采用FTP进行文件交互,这样带来的问题是文件需要以阻塞方式进行读写,否则会引起冲突或者丢失。

文件交互方式最大的缺点是交互不够实时,很难应付同步数据交互。Socket 方式的出现解决了这个问题,Socket方式更准确的说应该是一种通信协议,不过确实可以用于数据交互,通过在双方系统指定IP和Port的套接字上进行数据传输。这种方式也是需要系统双方自己定义交互格式,而且是以字节的方式进行定义,发送方需要将数据组织成指定的Socket报文,接收方需要根据报文格式,进行相应的解析,才能转到相应的处理,这也是Socket方式最大问题,实现起来相

10密码算法自动化测评系统

当繁琐。

在Socket基础上,引入成熟的HTTP、UDP等通信协议,作为数据交互的基础,利用这些协议的特点,定义交互格式相对就简单多了,无须纠缠于字节长度,只要按照通用的HTTP报文格式组织数据即可。不过介于通信层交互方式的特点,还是需要接受方先解析数据后,再转向自己的内部流程进行处理[31]。

实际上数据交互主要是满足不同系统或者同一系统中的不同模块之间对数据的统一理解方式。即一方传递数据给另一方,两方规定通信的协议或数据的格式。传递方通过该规范格式进行封装,接收方根据该规范格式进行解析,从而保证对数据理解的正确性。

2.3 自动化测试技术

测试自动化是使用软件来控制测试的执行,比较实际结果和预期结果,建立测试的先决条件和其它测试控制及测试报告的功能[32]。

自动化测试可理解为测试过程自动化和测试结果分析自动化。测试过程的自动化指的是不用手工逐个的对用例进行测试。测试结果分析自动化指的是不用人工一点点去分析测试过程中的中间结果或数据流。软件自动化测试就是模拟手动测试步骤,执行用某种程序设计语言编写的测试程序,控制测试软件的执行,完成全自动或半自动测试的过程。全自动测试就是指在自动测试过程中,根本不需要人工干预,由程序自动完成测试的全过程。半自动测试就是指在自动测试过程中,需要手动输入测试用例或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试。

与手工测试相比,测试自动化的优势是明显的。首先自动化测试可以提高测试效率,使测试人员更加专注于新的测试模块的建立和开发,从而提高测试覆盖率;其次,自动化测试更便于测试资产的数字化管理,使得测试资产在整个测试生命周期内可以得到复用,这个特点在功能测试和回归测试中尤其具有意义;最后,测试流程自动化管理可以使机构的测试活动开展更加过程化[33]。

由此可见,自动化测试系统是测试领域发展的必然方向。

自动化测试,模拟手工测试步骤,通过执行程序语言编写的测试脚本自动地测试软件,自动地实施软件的单元测试、功能测试、负载测试或性能测试等。自动化测试集中体现在实际测试执行(test execution)的过程,也就是由手工逐个地运行测试用例的操作过程被测试工具自动执行的过程所代替。自动化测试,强调借助工具(不仅仅是工具,有时包括策略和工件)来完成测试的执行,也就是用工具来帮助或辅助测试,这个执行过程可能是全自动的,也可能是半自动的。

测试自动化的要求高得多,侧重说明将测试用自动化设计和实现的过程,即

第二章相关技术知识11

所有的测试工作都能有计算机系统自动完成,包括:

(1) 测试环境的搭建和设置,如上载安装包到服务器。

(2) 脚本自动生成,如根据UML状态图和时序图等生成可运行的测试脚本。

(3) 测试数据的自动产生,如自动产生数据负载测试所需要的大量数据。

(4) 测试操作步骤的自动执行,包括测试执行过程的控制。

(5) 测试结果分析,实际输出和预期输出的自动对比分析。

(6) 测试流程的自动处理,即测试工作流的自动实现,包括测试计划复审和批准、测试任务安排和执行、缺陷生命周期等流程的自动化处理。

(7) 测试报告自动生成功能等。

测试自动化意味着测试全过程的自动化和测试管理工作的完全自动化,这是测试工程师所追求的一种理想境界,但很难实现。往往不能完全通过全自动化过程来完成一个完整的测试任务,自动化到不需要人工参与的程度是不现实的[34]。因此,多数的自动化测试仍然需要人工的参与,从而完成测试过程。

基于自动化测试的特点:快速、准确、可重复。作为决策者,应该挑选合适的测试用例来实施自动化测试。被选定实施自动化的测试通常有一些共同的特性:非技术性的测试执行、进行重复性的劳动和测试时间冗长[35]。

一般对于只进行几次的技术含量高的测试,则无需选择自动化测试。如图2.1所示[36]。

图2.1手工测试与自动化测试应用场景图

一个完整的自动化测试系统包含以下几个部分:

(1)自动化测试框架。

(2)测试脚本以及测试数据管理。

(3)测试脚本的执行管理系统。

(4)测试结果的显示与分析系统。

自动化测试处理流程如图2.2所示。

图2.2自动化测试处理流程图

12密码算法自动化测评系统

自动化测试具有以下几个方面的优点[37]:

(1) 提高测试效率。手工测试是一个重复性的劳动的过程,容易出错。引入自动化测试能够用更有效并且可重复的自动化测试代替繁琐的手工测试活动,而且能在更短的时间内完成更多的测试工作,从而提高了测试工程师的工作效率。

(2) 降低对软件新版本进行回归测试的开销,提高测试覆盖率。

(3) 完成手工测试不能完成或难以完成的测试。对于那些难以通过手工进行的测试,如压力测试、并发测试、大数据量测试、多次执行的回归测试、测试数据的动态生成与输入、测试用例的实时调度与管理、测试结果的动态获取与记录等就必须使用自动化测试来执行。

(4) 使得测试具有一致性和可重复性。由于每次自动化测试运行的脚本是相同的,所以可以进行重复的测试,使得每次执行的测试具有一致性,手工测试则很难做到这点。

(5) 更好地利用资源。将重复的测试任务自动化,可以使测试人员解脱出来,将精力更多地投入到测试系统及测试用例的设计当中。

(6) 降低风险,增加软件信任度。自动化测试能通过较少的开销获得更彻底的测试效果,从而更好地提高了软件产品的质量。

2.4 XML介绍

可扩展标记语言(eXtensible Markup Language,XML)[38]是一门新兴的面向Internet应用的置标语言,它是由W3C(World Wide Web Consortium)组织于1998年制定的一种通用语言规范[38,39]。它描述了一组称为XML文档的数据对象并部分的描述了计算机程序处理这些对象的逻辑和行为。XML是标准通用标记语言(Standard Generalized Markup Language,SGML)[40]的子集,所以XML也遵循SGML的规范,但是XML在很大程度上简化了SGML,包括一些调整使其更适合于Web环境。

1. XML的特点

(1)XML是自描述的。

(2) 内容和形式相分离。

(3) 具有良好的可读性和可维护性。

(4)XML文件独立于平台,包括跨操作系统平台、跨数据库平台,以及跨编程语言平台[41,42]。

(5) 用XML文件作为数据载体结构对外开放,而不是开放产品数据库结构,这样更安全。

(6)XML处理器容易免费获取,并且符合正式标准;且XML标准得到业

第二章相关技术知识13

界广泛支持,目前越来越多的行业都对基于XML的数据交换定义相应的规范,方便与商业伙伴之间的数据交换[42]。

总的来说,XML是一种中介标识语言,可提供描述结构化资料的格式。XML 由若干规则组成,这些规则可用于创建标记语言,并能用一种被称为分析程序的简明程序处理所有新建的标记语言。

XML作为信息的载体可以通过多种网络途径传播,如HTTP、SMTP协议、Java信息服务(Java Meassage Service,JMS)等。其中JMS是基于Java的消息传递规范,使消息导向的中间件(Message Oriented Middleware,MOM)之间简单对接[43]。

2. XML的优势

1)数据的检索

Internet上主要的数据检索方式:分类检索和全文检索。检索效率低,或找不到。XML:在语义标记作为搜索索引;在文件中截取关键部分。所有标记内的数据都可视为一个元素,而每一个元素都可以作为数据的索引。

2)数据的显示

XML将数据保存的格式与数据显示的方式分开,使得XML文件可以轻易地更换数据显示的方式,仅需改变扩展样式表语言(EXtensible Stylesheet Language,XSL)的设置,用户就可以将同一数据制作成HTML、PDF、无线标记语言(Wireless Markup Language,WML)、手持设备标记语言(HandHeld Device Markup Language,HDML)等不同格式,供不同的硬件显示。

3)数据的交换

XML语法简单,可以被所有的机器解读,同时可以在各种平台上使用,使得XML可以成为一个通用的标记语言[44]。

第三章密码算法自动化测评系统设计15第三章密码算法自动化测评系统设计

3.1 需求分析

密码算法和安全协议自动化检测工具开发及测评系统的研究是要实现一个对密码算法和安全协议进行评测的平台,以达到检测分析的自动化,有助于提高密码设备及网络安全产品的安全性设计,体现测评系统的客观性。该系统最后要形成几个小的测试原型系统,如密码算法安全性测试系统、密码算法性能测试系统、安全协议安全性测试系统、密码协议性能测试系统和在线测试系统等。

目前,密码算法安全性自动检测方法对不同的安全标准的重要性并没有普遍达成一致。因此随着新的密码算法技术的出现,密码算法安全性检测标准也在不断更新发展。对于新的密码算法及测评标准也需要新的支持,所以测评系统必须具备良好的扩展性,可以根据用户的需求对现有系统内的功能进行升级,即加载或卸载密码算法和测评组件。因此根据不断更新的测评标准,开发一套密码算法自动化检测系统是必须的。该系统包含了对密码算法的安全性测试和密码算法性能测试,并且能够根据用户的需求进行扩展和定制。

如今很多测评方法都与密码算法绑定在一起,测评方法的使用不够灵活。因此该密码算法测评系统需要能够将测评方法与密码算法独立开来,使不同的测评方法可以测试不同的密码算法,而不是固定到具体某一种密码算法。由于该系统将测评方法和密码算法都设计成组件,因此在实现时就需要考虑测评方法组件与密码算法组件之间的数据传递问题。对密码算法进行测评,经常需要通过大量的测试数据进行测试,以得出正确且稳定的测试结果,所以该测评系统还需要能够满足大数据量的自动化测评需求。即用户指定测评次数以及测评所需密码算法和测评方法后,既可以通过随机数生成器生成大量的随机数对该密码算法进行测评,也可由用户指定存有大量数据的文件,系统根据文件中的数据进行测试。实现以上功能,该系统才能够满足用户对功能可扩展和可定制的特性以及自动化测评的需求。

3.2 设计目标

密码算法自动化测评系统所需要实现的功能应该是用户可扩展,功能可定制的。因此密码算法和测评方法必须独立成两部分,才能够保证测评的灵活性。一种测评方式并不绑定到固定的密码算法,可以对同一类的密码算法进行测评。系

16密码算法自动化测评系统

统可以根据用户的需求添加或删除测评组件和密码算法组件,使系统针对不同的用户可以实现不同的功能。在测评过程中,该系统可以根据用户需求对一种密码算法进行一次或多次测评,也可以对多种密码算法进行一次或多次测评。通过这种灵活的对应关系,该系统还能够根据用户提供的测评组件和密码算法组件的信息以及数据信息进行自动化测评。

3.3 系统框架结构

基于密码算法自动化统计检测工具及测评系统的用途与需求,密码算法自动化测评系统分为基于组件的可扩展动态框架、公共组件、私有组件和XML文件的设计与解析四部分。其中私有组件分为测评组件与密码算法组件。系统框架结构如图3.1所示。

图3.1系统框架图

该测评系统不仅需要能对现有的组件进行加载,还需要能够加载将来开发的组件。因此该系统中的动态框架加载或卸载组件后,在不需要修改源代码的前提下要能够自动更新界面。为了实现此功能,组件需要提供统一格式的配置文件,方便动态框架获取组件信息。所有数据信息和组件配置信息使用数据库进行存储。

在密码算法自动化测评过程中,测评方法与密码算法之间是多对多的对应关系,即某种密码算法可能需要进行多种方法的测评,而某种测评方法也可能用于测评多种密码算法。因此需要将测评方法与密码算法独立为类组件进行设计,这样才能够使测评方法和密码算法产生灵活的对应关系。

测评组件和密码算法组件仅完成对数据的处理,数据的输入和结果的输出由公共组件完成,公共组件提供统一接口供测评组件调用。公共组件需要对获取的数据进行解析,因此数据提供的文件格式必须统一。此系统中采用XML文件提

第三章密码算法自动化测评系统设计17供信息和数据。

3.3.1 基于组件可扩展的动态框架

基于组件可扩展的动态框架可以根据用户需求进行扩展与定制。整个动态框架是基于组件设计的,因此需要组件开发者提供该组件的基本描述信息。为了满足测评组件及密码算法组件开发者和动态框架对信息定义的一致性,动态框架根据所需信息,给出配置文件的格式及规范,组件开发者根据动态框架的需要编写相应的配置文件。

由于动态框架集成的组件很多,为了便于组件信息的管理,动态框架采取菜单这种直观的方式来展现各组件的功能,用户只需点击相应功能的菜单项即可实现自己所需的功能,菜单结构通过提取数据库中的组件信息构造一棵二叉树来实现。该框架使用数据库记录组件相关信息,通过数据库对组件信息进行管理,便于动态框架对组件进行加载、卸载、组件中功能的启用和禁用等管理。

组件之间的组织方式及组件信息管理方式体现给用户的最直观的方式是通过菜单显示。任何一个菜单体系,均可抽象成为一个菜单树。每一个菜单项可以表示为一个节点v,如果调用v可得到某个子菜单,则这个子菜单中若干菜单项关于v是相关的。菜单树的特点:

(1)所有的过程调用事件仅出现在树叶处。

(2)与v相关的节点,构成v的一个子菜单[45]。

由于框架的可扩展性和可定制性,菜单必须是动态生成的。对于动态添加的菜单项,需要解决两个问题:

(1)如何把指定菜单项加入该集成框架菜单的特定位置。

(2)如何使系统能够响应到该菜单的点击消息,并执行相应的程序。

问题(1)通过读取数据库中的组件功能信息,根据该信息掌握其菜单结构,构建一棵与组件提供信息一致的二叉树。给集成框架特定位置添加菜单项相当于在二叉树的特定节点下插入节点。

解决问题(2)的关键是:菜单项ID值的动态分配。菜单响应的核心是将一个ID值与菜单项绑定,但是在集成框架中菜单项经常会发生变化,因此菜单ID 值必须是动态分配的。这不同于传统的固定菜单ID。在此框架中,根据用户所点击菜单项的ID,在二叉树中查找对应的节点,获取保存在该节点中的程序名称,调用该程序完成用户所需功能。

为了避免由于不断的加载组件而造成系统无限膨大,卸载组件的功能是必不可少的。另外,启用和禁用子功能的操作可以使用户更加清晰地针对某段时间的某项特殊工作对测评系统的功能进行定制。

18密码算法自动化测评系统

3.3.2 公共组件

公共组件是由测评系统提供,实现与用户自定义私有组件进行交互的功能。其功能如下:

(1)用于解析用户提供的数据(以XML文件方式),并将得到的数据按照系统所制定的数据格式规范存放,发送给测评组件。

(2)用于提供统一输入、输出接口,其中输出接口包括测评结果输出及程序运行出错处理。

公共组件传递数据给测评组件时,需要考虑数据不能一次传递完成的情况。此时,公共组件需要将解析的数据保存,下次测评组件再次调用公共组件时,公共组件将没有传递完的数据继续传递,直至传递完毕为止。

公共组件在系统开始运行时加载,并不在界面中显示。公共组件提供的统一接口使不同用户开发的私有组件均能够以统一的方式进行处理。从而使该系统可以处理不同用户数据的输入方式,以满足可扩展的需求。

3.3.3 私有组件

私有组件为测评方法开发者及密码算法开发者所开发,根据测评系统制定的接口规范及标准开发成系统所使用的组件。

1.私有组件概述

私有组件分为测评组件和密码算法组件。测评组件用来实现具体的测评方法,不同的测评方法可独自开发成一个私有组件。密码算法组件是另一类功能性的私有组件,用来实现公开密码算法或算法设计者自己设计的密码算法,不同的密码算法可独自开发成一个私有组件。测评组件和密码算法组件均可通过相应配置文件(*.inf)来描述该组件的功能及其调用接口信息。一个组件中的不同功能函数用同一调用接口导出,由参数funID指定不同的值决定执行不同的功能。

测评组件和密码算法组件性质不同,因此测评系统对于这两类组件的处理方式也有所不同。动态框架加载测评组件时会将该测评组件显示到用户界面中供用户选择。对于密码算法组件,动态框架加载时只将密码算法的配置文件及可执行文件拷贝到相应目录下,并记录在数据库中,用户界面无任何显示。用户需要了解动态框架中有多少种密码算法组件时,可以点击“显示密码算法组件”菜单获得。当用户点击动态框架用户界面中具体的测评功能时,动态框架弹出对话框让用户在所加载的现有密码算法中选择一种或多种进行测评。如果用户所需测评的密码算法不在动态框架中,用户应先加载该密码算法组件,然后再调用测评组件

相关主题
文本预览
相关文档 最新文档