QNX安全加密-通过 Certicom 和 QNX 满足安全认证要求

来源:互联网 发布:浏览器打不开淘宝图片 编辑:程序博客网 时间:2024/05/19 04:25

锋影

e-mail 174176320@qq.com


随着政府机构、医疗服务供应商和金融机构提供日益复杂的网络型服务,访问这些系统的设备范围也在不断扩大。随着这种发展趋势,人们越来越关注有关信息安全和隐私的领域:相关机构不断投入巨额资金来满足从服务器和网络设备到笔记本电脑、智能电话和打印机等各个方面的数据安全需求。例如,在接下来的五年内,美国联邦政府将投入 5000 亿美元用于发展信息技术 (IT)1,其中很大一部分将用于加密技术现代化项目以及与加密和密匙管理有关的活动。

为了降低不断扩大的联网和安全需求的复杂性和成本,美国联邦政府发布了严格的标准和互操作性要求:联邦信息处理标准 (FIPS) 140-2密码模块的安全需求。该密码安全标准已被其他一些政府采用,并逐渐成为医疗卫生、金融和新兴智能电网行业的参考标准。根据美国政府的加密现代化计划,其他高级的加密技术(如椭圆曲线加密法2)的使用也在不断增加,并有望影响安全发展的未来。

为了在这些市场中展开竞争,软件和设备供应商必须证明其产品满足联邦信息处理标准 (FIPS) 中的密码验证要求,这是一项复杂而且代价昂贵的工作,必须在每次产品升级时重新开始。供应商还必须确保,无论多小规模的升级都不会影响其产品的 FIPS 安全合规性,因为它们还必须持续监控标准本身,确保产品符合不断变化的需求——FIPS 140-3,该标准将取代 FIPS 140-2,目前正处于草案阶段。

在组成当今软件系统的大量不同组件中,其中两个组件对系统安全最为重要:


满足可靠性方面严格安全要求的操作系统3

通过 FIPS 验证的密码模块

在本文中,我们探讨了与 FIPS 140-2 验证过程有关的一些主要挑战,并描述了在构建和交付符合 FIPS 140-2 要求的软件时,QNX® Neutrino® RTOS 和 Certicom Security Builder 政府安全版 (GSE) 加密算法库如何帮助减轻负担。

COTS 和安全

同其他组织一样,政府机构希望能够使用商用现货 (COTS) 产品,以便利用优势供应商提供的专业技术和成本节约方法。但是,为了让这些机构能够使用这些技术和方法,COTS 供应商的产品必须满足相关(美国)机构制定的严格安全要求,如国防部 (DoD)、国家安全局 (NSA) 和国家标准技术局 (NIST)。在最重要的计算机安全指令中,FIPS 140-2 是常见的主要标准;例如,DoD 在有关敏感数据传播的指令中引用了本标准4。

医疗卫生和金融服务业也受到信息安全要求的类似影响,尤其是个人身份信息泄露案件急剧增加。这些行业中的数据安全要求受政府立法的推动,包括有关医疗卫生供应商的《健康保险可携性与责任法案》 (HIPAA) 和经济与临床健康信息技术法案 (HITECH),以及有关银行和金融企业消费者隐私的《金融服务现代化法案》 (GLBA)。这些要求将供应商自然尔然地引导至 FIPS 140-2 了解关于密码和数据安全的指南。

HIPAA 法规规定“动态数据的有效加密过程是指符合联邦信息处理标准 (FIPS) 140-2 的过程”。5 本文件中也规定,应根据 NIST 专刊 800-1116 保护静态数据,其中建议使用经过 FIPS 认证的加密算法。此外,HITECH 法案甚至提倡使用成熟的安全技术,为使用 FIPS 认证产品的组织提供审计支持。

但 FIPS 140-2 的重要性并未就此终结。随着一些关键基础设施系统联网程度更高,如配气管道和智能电网控制系统,这些行业很可能采用具有相似严格度的加密控制措施来保护其传输的数据,从而产生对 FIPS 认证加密解决方案的需求。

为了在这一不断发展的市场中占据相当规模的一席之地,甚至是保持当前地位,过去从未采用高级安全措施的 COTS 供应商

除了加深了解当前不断发展的安全标准和加密技术及密切监控不断变化的 FIPS 要求外,再也别无选择。他们还必须想方设法满足在嵌入式系统中支持这些要求所面临的巨大挑战。

坚实的基础

任何安全系统的一个基本要求是,它必须运行在一个可靠的操作系统中。在无法保证可靠性的操作系统中构建安全系统就如同在泥土地面上建造一座银行金库。最终会有人发现并利用这一根本性弱点。

QNX Neutrino RTOS 之所以成为 Certicom GSE 加密算法库的理想操作系统,它的主要特征包括:

实时可靠性保证:针对必须及时对各种请求做出正确和可预测响应的系统,专门设计了实时操作系统 (RTOS) 7。

微内核架构:采用 QNX Neutrino RTOS 的微内核架构,应用程序、设备驱动、文件系统和网络堆栈均处于内核外的单独地址空间内,因此与内核和彼此之间相互隔离。一个组件发生故障时不会导致整个系统崩溃,恢复机制能重新启动故障程序。

抢占式低优先级内核调用:为了满足实时承诺,QNX Neutrino RTOS 允许高优先级程序抢先占用低优先级内核调用。可能不会发生抢占的时间窗非常短。此外,对保持长时间抢占和禁用中断的时间设有一个上限,使开发人员能够确定可能出现的最坏情况。

优先级继承:QNX Neutrino RTOS 能实现优先级继承,该技术的原理是将受阻高优先级任务的优先级分配给执行阻塞的低优先级线程,直到受阻任务完成,以此方式防止优先级倒置(该问题曾在 1997 年 7 月对“火星探路者”计划造成恶劣后果8)

自适应剖分:QNX Neutrino RTOS 采用自适应剖分技术来防止程序或线程独占 CPU 周期,以免其它处理器或线程的 CPU 周期不足。通过自适应剖分,开发人员能够向程序和线程分配保证的 CPU 时间,并且动态调度算法会将未使用这些时间的分区中的 CPU 周期重新分配给能够从额外处理时间中受益的分区。只有在 CPU 运行达到规定容量时,才会执行分区时间分配。如果需要,应使用所有可用周期,但是,当不止一个分区中的程序在争夺周期时,自适应剖分会执行资源预算,防止资源匮乏。

高可用性框架:任何系统都无法做到绝对零故障;为了确保系统的持续可用性,QNX Neutrino RTOS 支持采用高可用性框架,其中包括用于监控程序故障的监视器;在不重启机器的情况下重新启动程序的自动机制;在必要时随时准备接管监视器职责的镜像程序;以及帮助系统设计人员确定监视器如何响应特定故障的编程接口。

多处理器能力:为了确保迁移期间和之后系统的稳定性以及在多核系统上的效率,QNX Neutrino RTOS 采用了限定多重处理方式 (BMP),这是 QNX 专门对处理器亲和性(或线程亲和性)做出的扩展,以帮助开发人员规定线程的运行掩码。BMP 允许开发人员设置运行掩码,将指定的线程及其子线程限制在特定的内核中,从而帮助保护从潜在错误或设计功能(如 FIFO 调度)中迁移到多核的系统,因为这些错误或设计功能会向多核系统中的不可靠单核处理器提交代码,同时,BMP 还能帮助解决与对称多核处理有关的一些常见问题,如 cache 抖动。将系统迁移至多核的开发人员可将整个线程层级绑定到单一的处理器,以确保新环境中不会出现令人不愉快的意外情况。

FIPS 140-2

在美国,政府安全要求受 FIPS 出版物的约束。NIST 编写这些出版物并用于所有政府机构中。当联邦政府对新安全和互操作性标准提出迫切要求时,它会编写并发布新的 FIPS 出版物。

FIPS 140-2 描述了用于敏感和保密用途的软件和硬件产品必须满足的美国联邦政府加密要求。FIPS 140-2 涉及对应用程序必须用来执行指定加密功能的完整模块的验证。参考下文“FIPS 验证”。其它 FIPS,如描述椭圆曲线数字签名算法 (ECDSA) 用途的 FIPS 186-2 及描述高级加密标准 (AES) 的 FIPS 197,都是对 FIPS 140-2 验证模块中所含加密算法的具体实施方法。

2002 年,《联邦信息安全管理法案》 (FISMA) 删除了允许政府机构对购买非 FIPS 认可产品发布豁免的条款。这意味着从此以后,出售给美国联邦政府的所有加密产品必须通过 FIPS 140-2 验证。如果没有通过 FIPS 140-2 验证,产品将不会被美国政府客户认可。此外,在美国境外,英国和加拿大等国也通过其通信安全机构 (CSE) 采用 FIPS 140-2 来满足其安全要求。

同样,虽然医疗卫生和金融领域的应用程序并非始终需要 FIPS 验证,但通常也是一个必须要求。例如,在使用无线技术传输患者数据的美国政府医疗结构中,其医疗设备必须通过 FIPS 验证。如果未明确要求 FIPS 验证,出于数据安全性,仍强烈建议进行验证。简尔言之,通过 FIPS 验证的产品在市场中具有更强的竞争优势。

FIPS 140-2 Validation

对于大多数供应商而言,FIPS 验证有两个级别。第一个级别验证具体算法使用的加密技术,如 FIPS 186-2 和 FIPS 197 中所述算法。这些算法包括对称加密算法,如 AES、DES、3DES 和 RSA;散列算法,如 SHA-1;及数字签名,如 RSA 和 ECDSA。FIPS 详细描述了如何定义这些算法及如何使用它们来完成验证。NIST 的密码算法验证体系 (CAVP) 负责执行这些验证。

第二个级别更高、更加重要的验证级别是 FIPS 140-2。第二个级别更高、更加重要的验证级别是 FIPS 140-2。该标准详细描述了安全系统内运行的密码模块必须满足的 11 个安全领域。此加密模块可以是硬件、固件或软件。它负责所在系统的安全服务,并执行加密、身份验证和随机数生成等密码功能。

FIPS 140-2 为其描述的 11 个安全领域定义了四个安全级别,分别为 1 到 4 (4 表示最安全);然后为安全模块分配一个单独的综合评分。有关这些级别的更多详细信息,请参考 Certicom 的应用注释“Certicom 政府供应商的安全”,地址为 www.certicom.com/fips。

为了接收 FIPS 140-2 验证,密码模块必须:

  •  具有一个明确界定的加密边界,以确保所有敏感安全信息保留在产品的加密核心中。

  •  使用至少一个已正确实施并具有完整加密边界的 FIPS 认可算法。

    验证算法或 FIPS 140-2 密码模块的过程如上图 1 所述。在通过 CMVP 进入 FIPS 140-2 验证过程之前,必须通过 CAVP 验证 FIPS 模块中使用的至少一种算法。然后,必须通过密码模块验证体系 (CMVP) 验证整个 FIPS 模块,与 CAVP 一样,CMVP 也由 NIST 运作。CMVP 规定的所有测试由根据国家实验室自愿认可计划 (NVLAP) 认证的任何一家密码模块测试 (CMT) 实验室负责实施。

    市场准入障碍和问题

    虽然政府市场充满吸引力并利润丰厚,但对许多供应商来说,FIPS 验证过程带来了巨大的准入障碍。对于希望向政府机构(或许多医疗卫生和金融机构)出售产品的供应商而言,可供他们使用的选择是有限的:他们可以从头开始制造一个产品,或向商业供应商购买通过 FIPS-140-2 验证的密码模块。

    考虑制造产品的任何供应商应注意,验证过程需要 8 到 12 个月才能完成,并需要多名开发人员投入其中,而且仅初步验证的成本便达到大约 5 万美元。另外,以后每次提交相同的模块时还必须在此初步费用中增加 1 万到 1.5 万美元的费用(更新、漏洞修补、纠正初步错误等)。因此,如果将开发成本考虑在内,模块验证的费用将很容易超过 10 万美元。

    还要注意的是,在提交加密软件模块进行验证时,供应商必须提供下列文件:安全政策、有限状态机、软件模块描述、密码界限内所有软件的源代码列表、模块作用和服务描述、密匙管理生命周期描述及算法合格证明。验证与特定平台有关:每个平台需要独立的验证证书编号。此外,对已验证产品做出的任何更改或增加都会对该产品产生一个新的验证周期,并增加验证成本。

    另外,根据 FIPS 140-2 标准构建密码模块不仅复杂,而且失败率很高。据 NIST 统计,新申请者提交的密码模块中的 48% 及重复申请者提交的模块中的 20% 包含安全漏洞。在 NIST 测试的算法中,30% 不符合 FIPS 标准9。该失败率表明公司可能需要花费大量时间和金钱去开发一个需要 FIPS 验证的解决方案,然后将其提交进行测试,测试最长可能持续一年时间,最终只是为了知晓该解决方案存在漏洞,在不付出进一步努力和金钱的情况下不能通过 FIPS 验证。

    最后,在产品接受首次验证后,FIPS 验证费用并非就此结束。我们需要内部专家监控不断变化的安全标准和行业趋势,他们可能要求更改产品来满足市场需求,或与新 FIPS 要求保持一致。FIPS 140-2 标准每五年更新一次,将在其中加入新的算法来改善标准,使其与行业趋势保持一致,并变得更加健全。虽然在 FIPS 标准变化时现有验证继续有效,但如果供应商希望利用标准中的新算法,那么该供应商需要更新产品并再次提交进行验证。

    供应商可不必尝试构建自己的密码模块,而是选择购买已提前验证过的密码模块,然后将其用于自己的 

    产品中。这种方法的好处包括可以完全绕过验证过程进行 FIPS 140-2 验证、开发成本最低、上市时间短及开发重心着眼于核心竞争力。下列注意事项有助于确保正确选择密码模块:

    可扩展架构:提供通用 API 的平台能更容易支持新算法和安全协议,并尽量减少代码重写。

    升级灵活性:使用预先验证的模块使产品供应商能够更改自己的产品或解决方案,并通过再次使用相同的安全模块来保持 FIPS 验证状态。FIPS 模块供应商负责监监控 FIPS 标准,更改模块及验证更新后的模块。产品供应商只需更换其产品中的 FIPS 模块便能保持 FIPS 验证状态。

    平台灵活性:如果有多个系统平台需要 FIPS 140-2 验证,FIPS 模块供应商必须为所有规定平台提供验证后的安全模块。

    资源约束:使用专为资源约束型设备设计、并通过 FIPS 验证的模块可以减少 CPU 带宽和内存需求,从而极大地提高系统性能。这一结果尤其体现在电池寿命是个主要问题的移动设备中。

    结论

    考虑到与开发 FIPS 验证产品有关的障碍和好处,找到一个可靠的 FIPS 实现方法让产品快速上市并最大程度低降低风险,这就是成功与失败之间的区别。

    QNX Software Systems 和 Certicom 已合作提供共享对象模块库,为开发人员提供了一种简单实惠的方法来利用 Certicom 的 Security Builder GSE FIPS 验证密码库。该解决方案使设备制造商和独立软件供应商能够在成熟的 RTOS 基础上为其客户提供带 FIPS 140-2 安全认证技术的解决方案。