最近由于要编写关于应用安全需求方面的规范文档需要学习关于安全需求的知识,看到一篇文章挺好用的说,特意写下学习笔记。
原文链接:
http://www.uibk.ac.at/linuxdoc/LDP/HOWTO/Secure-Programs-HOWTO/requirements.html
里面介绍到Common Criteria标准(简称CC),它包括三个部分:CC的介绍(Introduction),安全功能需求(Security Functional Requirement)和安全保障需求(Security Assurance Requirement)。另外有一份"Common Evaluation Methodology" (CEM)文档用于指导大家怎样按照CC去评估软件的安全需求。
由于CC作为ISO/IEC 15408:1999国际标准,要实施它是非常昂贵的。因此ISO的标准往往不如W3C,IETF所倡导的免费标准受欢迎。而且由于ISO收费都据为己有,而没有回馈给为他们编写标准的志愿者们。所以CC的编写者们预见到这种情况,特意地编写了另外一个版本:[url]http://csrc.nist.gov/cc/ccv20/ccv2list.htm [/url],这个版本是免费的,因此尽管它并不是ISO标准,但是却广为使用,而免除我们实施ISO的高昂费用。
CC通常用于创建两类文档,"保护概述(Protection Profile)" (PP) 或者是"安全目标(Security Target)" (ST)。
一个PP文档通常是由用户群组定义出来的产品所需的安全属性。基本上,PP是一个由用户按照CC特定要求定义出来的安全需求列表。因此假如你想要构建某类产品,你可能可以找到一个或多个该类产品的PP文件,用于描述其它用户对该类产品的安全需求(例如,一个操作系统或者防火墙)。
一个ST文档描述一个产品于安全相关的具体行为,或者其行为的一个子集。一个ST文档不需要特意去满足任何一个PP文档的要求,但是它可以同时满足一个或者更多的PP文档要求。
PP和ST都可以用于进行正规的安全需求评估。
一个基于PP的评估只需要保证PP符合各类文档描述的规则以及明智的检查。
一个基于ST的评估会使用ST文档去校对一个特定的产品(也叫"评估目标(Target Of Evaluation)"(TOE))的行为是否和ST文档描述的情况一样,检查TOE是否满足ST所要求的安全功能需求。顾客可以根据所需拿ST的评估结果和PP所描述的安全特性进行比较。通过这种对比,消费者可以知道产品是否满足其所需——假如不满足,也能知道其限制在何处。
为了制定一份PP或ST,你需要进行一个定义安全环境的流程,即你的假设,面临的威胁,以及组织相关的政策文档(如果有的话)。通过安全环境的定义,可以派生出产品以及该类产品的安全目标。最后,挑选能够符合目标的安全需求。
安全需求分为两类:功能需求(产品必须能做什么)和保障需求(通过度量确保满足安全目标)。实际上定义PP和ST往往并不如这里所说的那么简单,但是最终的结果必须能够罗列出一种清晰的关系以确保没有任何关键目标被轻易忽视了。即使你并不打算写一份PP或者ST,CC的一些意见仍然对你有帮助;定义出安全环境,安全目标及安全需求的过程对于你定义出产品的什么特性是重要的仍然有很大的帮助。
CC的最主要目标是为了制定出正规的功能需求和保障需求。大体上来说,大部分的CC就像是一个安全需求的"chinese menu(中文菜单?)"一样供任何可能需要的人选择。PP的作者们会从各种选项中挑选出他们所需的,而ST的作者们会从CC中挑选出他们会提供的。
由于会有很多人很难定义出一组合理的保障需求,因此一批预定义的保障需求,名为"评估保障等级(Evaluate Assurance Levels)"(EAL),被定义在CC里面,以供有1到7个等级。EAL2是对EAL2所定义的一套保障需求的简述。产品可以自己定义额外的保障度量,例如,它们可以把EAL2和其它的保障需求加在一起(假如这时这组需求无法到达更高的等级,我们叫这个等级为EAL2+(EAL2 plus))。现在已经有很多国家签署了公共声明承认有资格的实验室去进行EAL4或者更低等级的评估结果。
假如你要写ST或者PP,有一个开源软件可以帮助你,叫做CC Toolbox"。它可以保证需求之间的依赖关系是否得当,提供通用的需求,并且帮助你快速完成一份文档,但是显然它不能帮你去完成你对所需要的安全需求的思考。对于PP和ST具体所需要包括的内容,在CC文档的附录B和C中分别有描述。
假如你决定要让认证实验室为你进行评估,那你要准备好花钱,花费时间,并且要按照流程走。另外,评估要求你花钱让认证实验室为你评估,评估的等级越高花的钱越多。单纯相信你的产品足够安全是不足够的;评估员还要找证据去支持各种宣称的目标。因此,评估需要有文档,而且所需的文档必须符合或者改进到符合CC的要求(尤其是对于高等级的评估)。每一个要求都必须要证明是符合于某些等级的,因此要求越多越强壮,而设计越复杂,评估费用越高。显然,假如发现缺陷,它们通常都要被修正。必须注意我们是要给钱给一个实验室让它帮我们去评估一个产品并且验证其真实性。假如一个产品不能符合其要求,那你基本上只有两个选择:要么修复它,要么修改(降低)要求。
在进行一次正规的ST评估之前跟你的客户讨论他们想要些什么是非常重要的;一个包含了功能需求和保障需求但是并不符合客人需求的评估将是物非所值的,而且一个疏忽了必要需求的ST也可能不被顾客所接受(因为必要的部分将不被进行评估)。PP文档叙述了这些需求,但是要确保PP反映的是顾客的真实需求(也许顾客只需要PP中的一部分功能或保障需求,或者他们脑中有一个完全不一样的安全环境,或者在想你的产品可能会在其它的情况可以被用到)。值得注意的是ST不需要让产品满足每一个安全特性;一份ST只会描述什么将会被(或者已被)评估。一个拥有较高EAL等级的产品不需要比一个有较低EAL等级甚至没有等级的产品更加安全;假如安全环境不一样的话,可能可以通过不去评估一个有较高等级的产品,或者省略一些重要的评估目标等方式来节省时间和金钱上面的开销。评估并不等同于证据,它只是利用定义好的最低门槛来获得对需求或产品的信任。
分享到:
相关推荐
对2020年5月新颁布的《智慧城市安全需求与框架》进行学习整理,并整理为学习笔记PPT供大家一起交流、学习。
《功能安全学习笔记20230806》是一份关于功能安全的个人学习记录,旨在为读者提供一个补充性的知识框架。虽然它不是全面的培训材料,也没有包含具体的实例,但可以从宏观上帮助理解功能安全的重要概念,特别是在汽车...
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
系统架构师的学习笔记,通常是资深架构师或者对架构有深入研究的专业人士根据个人经验和学习总结所撰写的学习资料,它可以帮助开发工程师向系统架构师的职业发展道路上迈进。 从提供的内容来看,系统架构师的学习...
云计算学习笔记 云计算是近年来非常热门的技术领域,它的出现改变了传统的计算模式,带来了许多便捷和优势。下面是关于云计算的学习笔记,涵盖了云计算的概念、演进过程、商业模式等方面的知识点。 云计算的概念 ...
【标题】: "DWS学习笔记" 【描述】: "DWS(Data Warehouse System,数据仓库系统)是用于企业数据分析的重要工具,它整合了来自不同业务系统的数据,为决策支持提供高效、一致的信息。这份学习笔记主要涵盖了DWS的...
在Oracle学习笔记中,对安装卸载和配置的详尽讲解,不仅为学习者提供了操作指导,而且还涉及到了数据库管理的一些基础知识点。这些内容对于数据库管理员和开发人员来说都是十分重要的,因为它们是操作Oracle数据库的...
《尚医通学习笔记》是针对尚医通平台的学习资料,涵盖了使用Java和SpringCloud进行系统开发的相关知识。本文将详细解析这些知识点,帮助读者深入理解如何在医疗信息化领域运用这些技术。 首先,我们来了解一下Java...
本压缩包包含了一份OA项目的学习笔记,是深入理解并掌握OA项目开发与实施的重要资料。 在OA项目学习笔记中,我们可以探讨以下几个关键知识点: 1. **OA系统概述**:OA系统通常包括工作流管理、文档管理、协同办公...
### 内网安全入门学习笔记day04:深入解析工作组权限及UAC管理 #### 一、本地工作组概念与管理 在本章节的学习笔记中,作者着重介绍了本地工作组的概念及其在计算机安全中的应用。首先,我们需要了解“本地工作组...
【华为HCIP-RS学习笔记】是一份针对华为认证的中级网络专家(Huawei Certified ICT Professional - Routing & Switching,简称HCIP-RS)的详细学习资料。该压缩包包含了全面的知识点,旨在帮助考生系统地掌握路由与...
### 瑜琅Java学习笔记概览 ...通过上述总结可以看出,瑜琅的Java学习笔记覆盖了Java的基础知识和核心概念,对于初学者来说是一份非常宝贵的资料。希望这份笔记能够帮助更多的人更好地理解和掌握Java编程。
Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这份"Java学习笔记PPT"是针对Java2版本的学习资源,旨在帮助初学者或有一定基础的开发者深入理解Java的核心概念和应用。 在Java学习的...
### Mariadb学习笔记 #### MariaDB简介 MariaDB是一款基于MySQL源码的开源数据库管理系统,其初衷是为了替代MySQL,提供一个完全兼容且功能更加强大的选择。MariaDB由MySQL的创始人Michael Widenius主导开发,并...
"mysql学习笔记.doc"很可能是核心的学习资料,它可能包含了MySQL的基础概念、安装与配置、SQL语言基础、数据类型、数据库设计、表的创建与管理、索引、视图、存储过程、触发器、事务处理、备份与恢复、性能优化以及...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习...总之,《Java学习笔记》是一份全面而实用的学习资源,适合Java初学者和进阶者。
### SpringBoot学习笔记 #### 一、SpringBoot入门 ##### 1、SpringBoot简介 - **简化Spring应用开发**:SpringBoot是简化Spring应用开发的一个框架,它通过默认配置极大地减少了开发过程中的样板代码,使得开发者...
在本篇经典VLAN学习笔记中,我们将深入探讨VLAN的基础概念、工作原理、优势、配置方法以及常见应用。 1. VLAN基础概念: VLAN是将局域网(LAN)内的设备根据需求划分为不同的逻辑子网,每个子网称为一个VLAN。这些...
《兄弟连Linux教程1-16章学习笔记》是一份全面涵盖Linux基础知识的学习资料,特别适合初学者和希望快速提升Linux技能的人群。这个压缩包包含了一系列文本文件和辅助图片,旨在帮助用户深入理解Linux系统的基本操作和...
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...