我在前言中提到,黑帽子方法和白帽子方法这两种思路缠绕在一起而构成了软件安全。这也是本书封面的灵感来源。阴/阳设计是传统的东方符号,用于描述不可分割的标准的西方辨证对立面的融合。由于这个原因,东方哲学被称为整体哲学。一种融合了阴和阳的整体方法—即融合了黑帽子和白帽子的方法—就是我们所开的处方。
    我将破坏方法(destructivealtivity)定义为那些与***、***程序和破解软件相关的方法。这些方法用黑帽子来表示。我将建设方法(constorutiveactivity)定义为那些与设计、防御和功能性相关的方法。这些方法用白帽子来表示。可能不用做太多判断的划分,就是根据这些方法是属于防御还是进攻而定。防御和进攻在本质上都不是坏的或者好的,在进行任何活动时都离不开它们。无论如何,我们都可以基于破坏和建设回过头来审视接触点,并描述黑与白两种思路相互缠绕的状况。
    代码审核是一种通过研究黑帽子的历史记录而设计的白帽子(建设性的)方法。这种方法就是要使我们建造安全的软件时避免出现代码实现上的问题。
    体系结构风险分析也是一种通过研究黑帽子的历史记录而设计的白帽子(建设性的)方法。在这种方法中,我们力图避免建造安全的软件时出现设计瑕疵。
    ***测试是一种黑帽子(破坏性的)方法。最好的***测试是根据关于设计和风险的白帽子知识而设计的。但是即使世界上的所有***测试都不会替你建造出安全的软件。
    基于风险的安全测试是一种建设和破坏方法的混合体,它要求全盘考虑黑帽子和白帽子方法。由于基于风险的安全测试是通过滥用案例和风险分析结果以及功能性安全需求来进行的,所以不得不采用黑帽子和白帽子的混合方法。
    滥用案例是很难处理的。你可能会根据名称来猜测滥用案例仅仅与黑帽子(破坏性)方法有关。但是,这是错误的。滥用案例本身就是由这两种思路来驱动的。白帽子思维(建设性)驱动安全需求,这是相当一部分滥用案例的必需基础。黑帽子思维以***模式的形式出现,驱动了其余部分(的滥用案例)。虽然滥用案例明确地包含黑帽子和白帽子的混合,但是黑帽子是其中的主要因素。
    安全需求和它产生的安全功能都是毫无疑问的建设性的白帽子方法。直观地讲,白帽子方法就是抵御黑帽子世界的方法。实际上,从某种意义来说,安全需求的观念是最根本的白帽子方法。
    安全操作是一种白帽子方法,但是它的建设性是很有限的。当然,操作对安全来说是非常重要的,但是在使安全成为软件开发必需的部分方面,网络操作人员实施的日常策略大部分都是防御性的。
    有多种接触点都属于质量保障方法,它们通过查看不同的工件的状态来评估安全状况。其他的接触点,比如滥用案例开发和安全测试计划,都涉及从头开始创建与安全相关的工件。一般来说,用于创建新工件的方法都被用于***的创造、设计和模拟。从某种意义来说,只有当你戴上黑帽子时,才能够最有效地使用这类方法。其他的接触点则更多地与正确地建造软件有关。只有当你戴上白帽子时,才能最有效地使用这类方法。
    软件安全要求均衡地使用紧密难分地缠绕在一起的黑帽子和白帽子方法。
    注:奇特的是,这些“建设性的”方法-建造新的工件-在本质上却是破坏性的!这就是软件安全的奇异之处。
 
本文节选自电子工业出版社2008年6月出版的《软件安全——使安全成为软件开发必需的部分》