techdoc centre
本站搜索 用户名: 密码:
   HOME  TECHDOC  WEB  SDK  NSDT  TOPIC  BIZDOC   LOGIN
  发布地区 Global 发布类别 TOPIC standard
  通过FIPS 140谈密码的正确实现
于 2017-10-23 编辑: Eric 查看: 1356 次   Article Url Print this page

    关键词:FIPS 140、CMVP、密码算法、密码模块、评测认证

    密码算法和密码模块是信息系统安全之源,任何安全协议或者系统都是基于密码而设计的。而密码算法和密码模块的正确实现却往往被忽略,IT厂商关注完善产品 实现功能性的同时,应该加强重视密码算法和密码模块的设计、开发和维护流程,以及第三方代码的安全性控制。从宏观层面来说,信息安全体系建设的三大属性 (机密性、完整性和可用性)都离不开密码算法和密码模块的安全保障。

    据美国国家标准和技术委员会(NIST)密码模块验证体系(CMVP)统计,进行测试的首批164个密码类模块,50%的模块被发现有安全漏洞;25%的 密码算法的实现不正确。通过专业的密码模块安全需求标准的兼容性评估认证可以提高密码模块的安全保障,但不能确保绝对的安全。
近几年密码学领域的 破解研究取得了非常“美妙”的结果,MD5和SHA-1等著名的密码算法先后被王小云教授带领的中国专家发现拥有冲撞(Collision)漏洞,某种意 义上降低了业界使用该算法进行数字签名的安全性;各国的密码界专家也在致力于钻研并寻求替代算法。但是严格地说,已经被发现的密码算法本身的缺陷并不意味 着算法被破解而须马上废除,因为所找到的“强无碰撞”和实际的破解还有一定的差距,国际密码界专家们也认为密码的正确设计和实现才是保障整体系统安全的重 点。

    FIPS 140是密码模块安全性需求最为重要的标准之一,也是业界衡量密码实现的准则。如果机构的信息或数据需要通过密码的方式进行保护,比如金融或者政府机构, 那么FIPS 140-2标准则被适用。经过该标准符合性评估认证的产品模块将满足这些机构的密码系统技术要求,目前世界范围很多机构的IT产品采购和招标要求中均提出 了产品满足FIPS 140-2的需求。

    本文从密码模块安全需求标准FIPS 140-2出发,探讨IT产品和机构内部的平台系统如何正确地实现密码算法和密码模块。FIPS 140-2已经被国际标准组织(ISO)采用,当前编号为ISO/IEC 19790。

    标准的历史和发展

    为了更好的理解我们所探讨的FIPS 140-2标准,我们先来简单的看一下FIPS标准的背景。

    首先,FIPS是美国联邦信息处理标准(Federal Information Processing Standard)的缩写。根据美国信息技术管理改革法案(公法104-106),商务部批准了美国国家标准和技术委员会(NIST)制定的针对联邦计算 机系统的标准和方针。这些标准和方针由NIST发布,并作为联邦信息处理标准(FIPS)在各类机构中广泛采用。NIST根据强制性的联邦政府需求制定 FIPS标准,比如安全和互操作性;同时针对那些尚未形成可接受的工业标准和解决方案制定需求。

    FIPS Publication 140-2是NIST所发表针对密码模块的安全需求。目前该标准的最新版本发表于2002年12月3日,其提供了密码模块评测、验证和最终认证的基础。 NIST正在进行该标准新版本的审核,FIPS PUB 140-3将会很快发布。正如我们所提及,FIPS 140标准被ISO标准所采用,并将在世界范围内被业界广泛应用。

    下图为FIPS 140标准历史和发展情况的示意图:(图1)

(图1)

    基本概念

    当前业界所关注的密码验证包括密码模块和密码算法两个方面。密码算法的验证是指基础的加解密算法的验证,其中包括:

    1.对称算法,如AES、DES、3DES、EES(Skipjack);

    2.非对称算法,如DSA、RSA和ECDSA;

    3.哈希算法SHS,如SHA-1、SHA 224、SHA 256、SHA 384和SHA 512;

    4.任意数生成器算法RNG;

    5.消息鉴别码MAC,如CMAC、CCM、HMAC。

    那么什么是密码模块?在FIPS 140-2标准中给出了明确的定义。密码模块为“硬件(Hardware)、软件(Software)和固件(Firmware)的集合,它们实现了经过 验证的安全功能(包括密码算法和密钥生成),并包括在一定的密码系统边界(Boundary)之内。”其中硬件(Hardware)是指在密码边界之内被 用于处理程序和数据的物理设备;软件(Software)是指密码边界之内的程序和数据组件,通常被存储于可擦写的介质(如:硬盘),可以在执行过程中被 动态修改;固件(Firmware)在这里是指密码边界之内的程序和数据组件包括存储于硬件(比如ROM、PROM、EPROM、EEPROM或 FLASH)的密码模块,且在执行过程中不能被动态修改。

    明确了密码模块的概念,我们再来看一下FIPS 140-2中提及的主要概念。FIPS140-2标准指定了密码模块应该需要满足的安全需求,从而模块被应用在安全系统之中保护敏感数据,而不是未经分类的信息。

    为了适应广泛的密码模块应用和环境,定义了四个逐次增加且定性的安全级别:Level 1、Level 2、Level 3、Level 4。

    安全需求涵盖了密码模块安全设计和实现的相关领域,每个领域在特定的安全级别上开展评估。这些领域包括:密码模块的规格说明;密码模块端口和接口;角色、 服务和认证;有限机模型;物理安全;操作环境;密钥管理;电磁干扰/电磁兼容性;自我评测;设计保障;其它攻击减缓。

    下面我们重点介绍一下密码模块的验证工作内容。

    工作要求

    根据FIPS 140-2提出的密码模块安全需求,主要的工作内容包括:

    1.密码模块规格:

 密码模块硬件、软件和固件组件的规格说明,这些组件环境的密码边界详细说明,以及模块的物理配置描述;

 密码模块中任何与标准中安全需求相排斥的硬件、软件或者固件组件的详细说明,并针对此排斥点做出原理解释;

 密码模块中物理端口(port)和逻辑接口(interface)的规格说明;

 密码模块中人工方式或者逻辑控制的详细说明,物理或逻辑状态指示器,以及有效的物理、逻辑和电子方面的属性;

 包括经过认可的和非认可的所有安全功能的列表,这些功能由经过认可或者非认可的密码模块所使用;并针对所有操作模式进行详细说明;

 所有密码模块主要硬件组件和组件交互结构图(block diagram)描述,包括任何微处理器、缓冲区输入/输出、明文/密文缓冲区、控制缓冲区、关键存储、工作存储器、以及程序存储器;

 密码模块中硬件、软件和固件组件的设计说明;

 所有安全相关的信息说明,包括密钥和私钥(明文和经过加密的),认证数据(比如密码、PIN)、重要安全参数(CSP)、以及其他受保护的数据(比如审计事件、审计数据),这些信息的泄露或修改可能会影响密码模块的安全性;

 密码模块安全策略的说明,包括源自于标准的规则和来源于开发者定义的其他需求说明。

    2.密码模块端口和接口:针对密码模块、及其物理端口和逻辑端口的详细说明,以及定义的输入输出数据路径进行审核,使其与标准的源自测试需求(DTR)相一致或提供可接受的解释说明。

    3.角色、服务和认证:

 所有密码模块所支持的经授权的角色详细说明;

 密码模块所提供的经认可的和未获认可的服务、操作和功能详细说明。对于服务,说明文档应包括服务输入、相应输出和在该服务中可被执行的授权角色;

 针对第二级和第二级以上的安全级别,应说明密码模块支持的认证机制,实现此认证机制的认证数据类型,首次初始化认证机制时用于模块访问控制的授权方法,以及模块支持机制的相应强度。

    4.有限状态模型:应验证有限状态模型(或同类)的表述,该验证工作通过使用状态跳转图和/或状态跳转表来指定所有的操作和错误状态、状态间的跳转、以及状态跳转结果的输出事件(包括内部模块条件、数据输出和状态输出)。验证其与密码模块的实现相一致。

    5.物理安全:

 针对密码模块及其产品资料进行审核,验证其DTR的一致性和可接受的解释说明;

 应验证物理形态的规格说明,实现密码模块的物理安全机制的安全级别,以及模块所使用的物理安全机制的详细说明;

 如果密码模块中存在维护角色需要物理层面访问模块的内容,或者设计的模块允许物理访问,需要提供维护访问接口的详细说明,并提供一旦维护访问接口被访问,明文形式的密钥、私钥和CSP是如何清零的;

 在第四安全级别,需要验证密码模块的一般操作范围。密码模块所使用的环境保护失败的特性说明,或环境保护失败所执行的测试说明需要进行验证。

    6.操作环境:针对密码模块的操作环境规格说明进行审核。在第二安全级别或以上,应包括密码模块所使用的操作系统正确性鉴别,验证所采用的保护轮廓(PP)和共同准则(CC)保障级别。

    7.密钥管理:

 所有密码模块所使用的密钥、密钥组件、以及重要安全参数(CSP)的规格说明;

 密码模块所使用的每个任意数生成器RNG(经认可和未经认可)的规格说明;

 密码模块所使用的每个密钥生成方法(经认可和未经认可)的规格说明;

 密码模块使用的密钥确立方法规格说明;

 密码模块所使用的密钥进入和输出方法详细说明;

 在第三安全级别或以上,如果使用单独的知识流程,需要验证如果重建最初的密钥需要n个密钥组件知识,那么任何n-1个密钥组件不能提供最初密钥的关于强度以外的任何信息,需要提供密钥模块所使用的独立知识流程的详细说明;

 密码模块所使用的密钥存储方法说明;

 密码模块所使用的密钥清零方法说明。

    8.EMI/EMC:

 针对所要求的EMI/EMC规定,进行一致性验证;

 应由经授权的专业EMI/EMC评测实验室开展验证工作。

    9.自我测试:

 密码模块执行的自我测试说明,包括上电自我测试和条件测试;

 密码模块自我测试失败进入的错误状态说明,以及退出错误状态并恢复一般操作模式的必要的条件和行为的说明;

 所有与密码模块安全操作密切相关的安全功能说明,以及密码模块所执行的适用的上电测试和条件测试的相关鉴定功能;

 如果密码模块实现旁路的能力,提供机制说明或转换流程的逻辑控制说明。

    10.设计保障:

 密码模块关于安全安装、生成和启动的流程说明;

 密码模块的硬件、软件和固件组件,与密码模块安全策略之间的对应性说明(比如操作规则);

 如果密码模块包括软件和固件组件,提供软件和固件组件的源代码,并配有清晰注释描述该组件与模块设计的对应性;

 第二安全级别或以上,应明确分发或交付密码模块版本供授权的操作员进行安全维护的流程。

    11.其他攻击减免

 验证其他攻击减免(mitigation of other attacks)的任何措施;

 其他攻击减免针对的攻击可能包括简单功耗分析(SPA)、差分功耗分析(DPA)、时序攻击(Timing attack)和差分错误分析攻击(Differential Fault analysis)。

    标准的评估认证

    标准的实现需要进行独立(第三方)的评测。成功的加密取决于所选择的数学算法、实现技术的安全能力、密钥的安全存储和处理,以及加密模块运行的环境,一旦确定标准算法的强度,实现所采用的技术必须得到验证。

    密码模块验证体系负责维护FIPS 140标准,并确保经过认证的模块与标准相兼容;该组织作为验证者的角色,确保实验室开展的评测工作的正确性。CMVP由美国NIST和加拿大政府的通讯安全组织CSE于1995年共同建立。

    标准的评测认证流程如下图所示:(图2)

(图2)

    所有基于CMVP的评测由第三方的授权实验室展开,这些密码模块评测(CMT)实验室需要经过美国国家实验室自愿认可计划(NVLAP)的授权。CMVP 接受NVLAP授权的密码模块测试实验室的评测结果,评测实验室的授权过程需要对该实验室管理体系QMS进行完整细致的审核,并通过技术熟练度测试。通过 验证的证书在本产品当前版本的整个生命周期中有效。

    而作为被评测的厂商,则不由CMVP体系直接监管,CMVP直接监管实验室。一般来讲,评测实验室作为厂商的直接联络人,与CMVP进行沟通。评测实验室将确保测试执行的正确性,并帮助厂商解决任何问题,从而呈交给CMVP完整的验证报告。

    从目前的NIST所维护的认证厂商列表来看,全球众多的IT厂商投入到产品模块的密码验证工作,如IBM、Cisco、Oracle等,一些国内厂商也已经开始或者正在计划FIPS 140验证;验证产品类型广泛,如网络设备、智能卡、数据库、数字影音系统等。

    通常来讲,存在着不同的因素影响评测认证的时间周期。在评测开始之前,应该考虑如下几个因素:

    1.模块的设计和开发应考虑FIPS140-2的需求要求;

    2.文件的完整性和正确性。测试期间,如下因素可能会影响项目周期:是否存在创新的技术;(创新技术可能需要新的解释说明);模块的规模和复杂度;所决定的安全级别;实验室所分配的评测资源;开发者/发起者所分配的资源;

    3.在验证/认证中,需要考虑:CMVP验证评审小组所获得资源。

    符合性评测和认证的成本将会根据诸多因素有所调整,比如产品所选择的安全级别、产品自身属性、之前的产品版本的分析和评估、以及所要求的时间。

    与通用评估准则(CC)的关系

    Common Criteria(CC)是业界安全功能和安全保障评估的通用准则,并实现了国际互认。而在美国NIAP体系下的CC产品评估,如果产品包括密码模块或者 密码算法,该产品的CC认证证书上将标明该产品是否通过FIPS 140认证。事实上,CC和FIPS 140标准相辅相成,存在强烈的相关性,但关注点各有侧重。

    在FIPS 140验证中,如果操作环境是可以更改的,那么CC的操作系统需求适用于安全级别2或者更高。

    CC和FIPS 140-2标准分别关注产品测评的不同层面。FIPS 140-2测评针对定义的密码模块,并提供4个级别的一系列符合性测评包。FIPS 140-2描述了密码模块的需求,包括物理安全、密钥管理、自评测、角色和服务等。该标准最初开发于1994年,早于CC标准。而CC是针对于具体的保护 轮廓(PP)或者安全目标(ST)的评估。典型的模式是某个PP可能涉及广泛的产品范围。

    总之,CC评估不能替代FIPS 140的密码验证。FIPS 140-2中定义的四个安全级别也不能够直接与CC预定义的任何EAL级别或者CC功能需求相对应。CC认证不能取代FIPS 140的认证。(文/刘岩)

网址: 相关网址


相关文章:

o 信息技术安全标准目录


   Search:

   

   Categories:

 Open All Close


Copyright techdoc.netsoftlab.ca powered by netsoft lab. 2007-2012  
Friend Websites:   netsoftlab.ca   cnstar.ca   CS lessions