全文约7000字 5图 阅读约20分钟
2020年7月15日,TOG(国际开放组织,The Open Group)联合SABSA研究院,正式发布中文版指南《安全架构实践的公理》(其英文版《Axioms for the Practice of Security Architecture》发布于2019年7月)。指南的受众是安全架构师,或对安全架构感兴趣的人。笔者如获至宝,对20条公理,分别做了极简摘录,可谓字字珠玑、句句经典。
TOGAF(开放组织架构框架)是最知名的企业架构(EA),SABSA(Sherwood业务应用安全架构)是最知名的安全架构。而该指南恰恰是由管理维护这两大架构的组织,共同联合推出。且该指南的第一作者Sherwood,也正是SABSA(Sherwood Applied Business Security Architecture)的创立者。由此可见该指南的权威性和重量级。
20条安全架构公理,是从安全学科的几十年安全架构实践经验中提炼出来的,是对永恒安全主题的升华,是对完美理想主义的陈述。无论数字技术和威胁如何发展演进,它们都是具有广泛适用性的永恒声明。它们也许不是完全可以实现的,但它们就像遥远的灯塔,可以指导业务和安全能力的开发活动的方向。20条公理是有序的,从业务性公理,到技术架构性公理,再到设计性公理。
世界因公理而美好。公理虽是不证自明的真理,但并非不可突破。通过怀疑欧式几何学的平行公理,产生了黎曼几何学,间接催生了广义相对论。笔者在本文末尾特别增加了一篇后记:公理为何重要——从几何学到相对论。也从侧面反映了对公理的认知有多难。
下载说明:需要《安全架构实践的公理》(中文版 英文版)(中文版70多页,3万多字)的读者,请关注“网络安全观”公众号,并在公众号后台输入文字“安全公理”。
首先列出《安全架构实践的公理》中的20条公理(其中括号中的内容均为笔者添加以助理解):
公理1:业务风险驱动安全
公理2:场景(无场景,不安全)
公理3:范围(明确定义架构范围)
公理4:情报(利用情报主导响应)
公理5:信任(准确建模实体信任关系)
公理6:整体分析(跨越所有架构域)
公理7:简洁性(自上而下管理复杂性)
公理8:重用(不要重新发明轮子)
公理9:弹性(通过控制执行降级)
公理10:过程驱动(使用清晰的生命周期)
公理11:优化冲突解决(平衡利益相关方)
公理12:清晰的沟通(跨越业务和技术)
公理13:易用性(注重用户体验)
公理14:设计安全(而非通过隐藏构建安全性)
公理15:优先级(强者保护弱者)
公理16:设备主权(接受不可信网络)
公理17:纵深防御(各层之间彼此独立)
公理18:最小特权(离不开细粒度访问控制)
公理19:访问管理(识别/认证/授权)
公理20:通信安全(网络层安全无法保护应用层)
安全架构公理
01
公理1:业务风险驱动安全
安全架构应通过最大化收益和最小化损失来支持业务目标。
必须牢记的是,组织资产并不是为了被保护而存在,它们的存在是为了创造价值。而利用资产创造价值,通常意味着使该资产面临风险。这正是矛盾之处。
为了提供最优架构,安全架构师不仅要从防止负面结果的角度来看待它们对组织的贡献,还要从促成积极结果的角度来看待它们。
如果安全架构无法支撑组织利用其资产来完成业务工作,则该安全架构可能被边缘化和显得无用。
安全架构应基于业务风险驱动,并且应该是对这些风险进行适当响应。
02
公理2:场景
不要虚构场景,否则后果自负。专为一种场景而设计的安全系统或解决方案,并不总是可以有效地在另一种场景中工作。
这并不是反对重用,可重用的基于组件的架构有很多好处。但是,如果为了节省时间和精力,将安全系统重用于不同的用例,则需要针对这两个用例之间的差异,进行新的风险分析。
该指南还专门针对系统设计中的一个常见错误——访问控制过程的身份识别、身份验证、授权过程的混淆,进行了澄清。
03
公理3:范围
明确定义安全架构的范围很重要。在这方面,系统收益(SOI)的概念很有用(如ISO/IEC/IEEE 42010:2011中所定义)。
04
公理4:情报
安全系统应利用情报来主导响应活动。通过威胁情报,既可以了解对手的意图、能力、攻击方式,也可以了解自身的漏洞情况。
建议对潜在威胁场景进行建模分析,来实现最佳效果。可参考SABSA《企业安全架构》一书中描述的方法,如下图所示:
图1-SABSA威胁场景建模
05
公理5:信任
安全架构应该保障系统可以准确建模业务实体关系中存在的信任的性质、类型、级别、复杂性。
信任是人际关系的特征。但我们可能要给非人员对象以信任。当这样做时,其实是在说,我们可以信任操作这类对象的人员,或可被操作这类对象的人员所信任。因此,一个可信的系统是指我们信任参与系统生命周期过程的人员。
信任从来都不是二进制,而是一个很长的灰度连续体,很少有黑色或白色。
“信任”和“被信任”不是镜像关系。
即使是最复杂的信任关系,也可以自顶向下分析成一系列简单的单向信任关系。通过严格执行此项分析,可以将任何业务关系分解为简单且独立的单向信任组件。
06
公理6:整体分析
安全需求应与其它的功能性需求和非功能性需求集成在一起。安全需求通常被描述为非功能需求(NFR),并且不应将其与其他功能需求或非功能需求分离。只有将所有需求都视为SOI(系统收益)整体风险的一部分时,安全架构才能有效工作。
架构通常被视为不同视角的一系列观点。这些观点通常被称为架构域。例如:业务架构域、应用架构域、信息架构域、数据架构域、服务管理架构域、技术架构域。就像看一座被群峰环绕的山谷,远近高低的观点各不同。
而安全架构域是从另一个视角来看的另一种观点,但与其它视角有很大不同,因为它是一个跨领域的域,必须以整体的方式解决所有其它域的安全和风险管理问题。因为风险无法分为孤立的架构域,所以安全架构师必须同时从所有视角看到山谷,即拥有可以随意旋转的全息视图。
07
公理7:简洁性
系统和服务应在保证功能性的前提下尽可能简洁。
复杂是安全的敌人,必须在保持整体性的同时,将其简化为子结构进行管理。安全架构将会受益于面向服务的架构(SOA)方法,在这种方法中,我们看到了“一切即服务”(EaaS)。服务的性能对于实现顶级业务绩效目标至关重要。
任何架构类型的主要目标之一就是管理复杂性。必须通过自上而下的分解来分解高度复杂的SOI(系统收益),从最高级别的业务目标开始,并创建逐渐简化的SOI层次,并对其逐层解决。
高度复杂的系统,倾向于表现出涌现性。涌现性的示例包括:两个或多个进程争用同一系统资源时发生死锁;网络在超出容量后的流量拥塞。
系统安全漏洞主要来自两个来源:设计错误和涌现性。两者不相同,不应混淆。涌现性是系统工程的一种现象,并非一开始就被设计出来。复杂性本身就是导致出现这一现象的原因。
简化复杂性的方法,通常是通过自上而下的逐层分解。下图显示了两种分解方式。
图2-IT技术栈
图3-SABSA业务栈
通过IT技术栈与SABSA业务栈的对比可见,在这两种情况下,顶级资产(IT栈中的信息和业务栈中的业务价值链)都分解为分层架构模型。
将面向服务的方法应用于这些分层堆栈,可以实现“一切即服务”(EaaS)。这是一种供需模型,其中上一层从下一层请求服务,而下层向上层交付所需的服务。
爱因斯坦曾说过:“一切都应该尽可能简单,但不要过分简单”,这对于安全系统来说是正确的。
08
公理8:重用
在可行的情况下,尽可能重用受信任的系统开发实践和系统组件。
安全架构师不应从零开始,不要重新发明轮子。从通用框架和参考架构开始,并针对特定的场景进行定制,始终是效率更高的方法。
框架示例包括:
- NIST网络安全框架(CSF):是150多个RFI响应和许多利益相关方会议的产物。
- ISO 27000系列:是用于组织和监控企业安全机制的一组控件和过程。
- ISO 31000-2018:定义了一个周期性的风险管理流程。
- SABSA平衡风险模型:提供了定义风险相关组件的组织结构。
09
公理9:弹性
安全系统应在受到胁迫时依然正常运行。
架构的弹性不仅仅是设备,还必须包括人员和流程。
弹性的关键特征是计划内的系统降级——通过控制将系统降级,而非由于无法控制导致故障。
良好的弹性设计的一个例子,是在大容量云服务数据中心中使用混沌工程。混沌工程通过在时间敏感的在线服务中,不断进行故障自动转移测试,来验证系统弹性。
10
公理10:过程驱动
安全开发过程应使用清晰的生命周期,来解决要求的时间跨度,并引入利益相关方。
战略:安全架构的目标是支持组织的长期的业务战略。安全架构本身是一项战略活动,需要长期的投资和管理层的支持。
战术:安全架构是通过一系列步骤开发和实施的:利用变更项目从而使长期愿景变为现实。
运营:安全架构提供技术、工具、流程来确保日常的安全,并对业务运营提供风险管理。
11
公理11:优化冲突解决
安全应通过平衡业务风险,来优化解决利益相关方的冲突。
利益相关方的关注通常会发生冲突。安全架构的作用之一是以最佳方式解决这些冲突,在功能需求和其他非功能需求与安全需求之间取得平衡。这些利益冲突可能非常复杂,源于安全架构的跨复杂领域的性质。
12
公理12:清晰的沟通
安全应使用有利于业务和技术利益相关方之间进行有效沟通的通用术语。
安全架构师必须至少会两种“语言”,能熟练使用业务涉众的语言(“业务术语”)和技术人员的知识(“技术术语”)。
13
公理13:易用性
安全系统应该尽可能对用户透明且易于使用。
不易使用或导致生产受到影响/破坏的安全控制措施,通常会被忽略、禁用、废除,导致资源容易受到攻击,从而失去了控制措施的价值。而被绕过或未被使用的安全系统将毫无价值。
可用性差的经典示例,是密码的使用。另一个示例是Web浏览器使用PKI证书对网站进行验证。
14
公理14:设计安全(SbD)
安全性应依赖于经过验证的特定控制措施,而非隐藏。
每本安全书籍都强烈建议不要使用“通过隐藏构建安全性”。其实通常被否定的,是希望安全漏洞不被发现的侥幸心理。
安全不应依赖于暗箱操作或其它晦涩的形式,而应依赖于经过验证的特定控制。就像密码学的安全性,应取决于对加密密钥的保护,而非加密算法。
15
公理15:优先级
使用较强的保护机制来保护较弱的机制,而非相反。
最重要的事物不应依赖于不重要的事物。
16
公理16:设备主权
所有设备均应能够在不受信任的网络上保持其安全策略。
保护机制通常位于本地或靠近被保护的资源更有效。这使得防护机制更容易随受保护资源一起迁移。
物联网设备的市场壁垒,使得设备主权原则难以适用。安全架构师必须面对这一挑战。不可能强迫市场将高级安全性集成到IoT设备中,因为这是一种市场驱动的现象,受成本和收益的感知驱动,但是设计整体集成的分层方式将改善一定程度的安全性。
17
公理17:纵深防御
通过分层防御可以获得更高的安全性。
纵深防御是一种传统方法,它通过在攻击路径上应用多层或多级安全性,来最大程度地保护每个资源。
为了使纵深防御有效,各层之间必须彼此独立,各层应该由不同类型的控制措施组成,而非多层使用同一类型的控制。
当控制措施失效时,选择失效而开放,还是失效而关闭,取决于资源的敏感性和它所支持的服务的需求。在此领域,有限状态机(FSM)建模可用于探索系统可能进入的所有可能状态。
18
公理18:最小特权
主体(人员、事物、流程等)应仅被授予执行其授权任务所需的权限。
部署最小特权系统和服务的能力,在一定程度上取决于可以执行细粒度访问控制的技术和流程。细粒度的访问控制,要求以一种方式捕获或存储有关资源或资产以及最终用户的元数据,以便访问控制系统可以通过它来做出有关资源的访问决策。
职责分离也是从纵深防御中衍生出来的一种特殊形式的最小特权。
19
公理19:访问管理
访问控制包括三种不同的操作过程:
- 识别:识别并区分主体;
- 认证:验证主体的身份;
- 授权:授予主体适当的访问权限。
最终用户访问资源或资产的通用模型,如下图所示:
图4-逻辑访问控制
20
公理20:通信安全
设备和应用程序应使用开放、安全的协议进行通信。
在当今过度连接的世界中,无法假设未加密的传输具有任何级别的安全性。
最重要的一点是,无论加密服务是否已打开并处于最佳运行状态,网络服务都无法向应用服务发出信号。因为网络无法理解应用程序的数据结构。
规则很简单:网络需要网络安全服务来保护。应用程序需要应用安全服务来保护。
通信安全架构是一门复杂的学科。它必须在通信设备之间采用敌对环境,并且必须同时满足应用程序层安全性和网络层安全性。
后记:公理为何重要——从几何学到相对论
一提到公理,就会想到几何公理。正是在这种条件反射下,笔者整理了这篇公理后记。希望有助于理解公理之伟大。
01
欧式几何五大公理
我们从小学习的几何学科,来自于欧式几何。
公元前3世纪,古希腊的欧几里得编写《几何原本》,创立欧式几何。欧式几何应用于平面时,也称为平面几何;应用于三维空间时,也称为立体几何。欧式几何有5大公理:
- 公理1:任两点必可用直线相连。(直线公理)
- 公理2:直线可以任意延长。
- 公理3:可以以任意一点为圆心,任意长度为半径画圆。(圆公理)
- 公理4:所有直角都相同。(角公理)
- 公理5:过线外一点,恰有一条直线与已知直线平行。(平行公理)
欧式几何影响了世界多少年?两千多年,并未终止。中国在内的许多国家,仍以它为基础作为几何教材。它是整个人类文明史上的里程碑,而最重要的是欧几里德在书中创造的公理化方法。
02
命运坎坷的罗氏几何
1826年,俄国的罗巴切夫斯基,在大学的学术会议上,宣读了论文《几何学原理及平行线定理严格证明的摘要》。将平行公理,改成双曲平行公理:过直线之外的一点,至少有两条直线和已知直线平行。从而创立了罗氏几何,也称为双曲几何。
遭受打压:罗氏几何这项开创性工作,长期没有得到学术界的理解和重视。当时的学术界普遍不承认非欧几何的存在。罗巴切夫斯基在生前一直遭受俄国科学界的打压,直到他1856年去世,学术界普遍认为非欧几何纯属“无稽之谈”。
知音难免:高斯是当时数学界首屈一指的数学巨匠,负有“欧洲数学之王”盛名,享有“数学王子”美誉。在1817年左右,他的非欧几何思想已达到成熟程度。但是,高斯担心非欧几何会激起学术界的不满,生前一直没有公开其研究成果(仅反映在与朋友的书信中)。当高斯看到罗巴切夫斯基的《平行线理论的几何研究》后,内心极为矛盾:他私下在朋友面前高度称赞罗巴切夫斯基是“俄国最卓越的数学家之一”,并下决心学习俄语,以便直接阅读罗巴切夫斯基的全部非欧几何著作,并积极推选罗巴切夫斯基为哥廷根皇家科学院通讯院士;但在亲笔推选通知书中,却对罗巴切夫斯基在数学上的最卓越贡献——创立非欧几何,避而不谈。高斯非常信教且保守,这也许是他不敢公开发表非欧几何学的原因吧。
终获认可:1868年,意大利数学家贝特拉米发表了论文《非欧几何解释的尝试》,证明非欧几何可以在欧氏空间的曲面上实现。直到这时,长期无人问津的非欧几何,才开始获得学术界的普遍注意和深入研究。罗巴切夫斯基则被赞誉为“几何学中的哥白尼”。
03
就职演讲诞生的黎曼几何
1854年,德国的黎曼先生发表《论作为几何学基础的假设》的演讲,继续对公理5提出挑战,认为公理5还可以改成:在同一平面内任何两条直线都有交点(也就是不存在平行线),从而创立了黎曼几何。
如果大家思考一下圆形球面,就不难理解了。圆球上的“直线”是过球心的圆上的“大圆弧”,且所有的这些“直线圆”都是相交的。因此,绝不会存在平行线。(球面上的直线必须是球面上的最短路径,所以我们熟知的纬线并不是直线,而经线才是直线)
黎曼由圆球面得出的结论,也可以推广到“椭球面”上(毕竟圆球是椭球的特例)。所以,黎曼几何也称为椭圆几何。
黎曼生平:
- 数学界公认,黎曼几何是黎曼对数学的最大贡献,由此黎曼成为了近现代最伟大的几何学家,没有之一。黎曼开创的黎曼几何,为后来爱因斯坦的广义相对论提供了数学基础。
- 黎曼和高斯是同时代的师徒巨匠:黎曼在20岁的时候,进入哥廷根大学学习哲学和神学;后来听了高斯的数学课程后,改修数学;高斯也成为黎曼的博士论文导师。
- 注意:黎曼在哥廷根大学发表的《论作为几何基础的假设》演讲,其实只是一个就职演讲,而且只是为了谋求一个大学讲师的职位。
- 黎曼身体多病,羞怯忧郁,内心丰富,喜欢独处。40岁时,因肺结核去世。
- 黎曼1859年提出黎曼猜想。虽然在知名度上,黎曼猜想不及费尔马猜想和哥德巴赫猜想,但它在数学上的重要性要远远超过后两者,当今数学文献中已有超过一千条数学命题以黎曼猜想(或其推广形式)的成立为前提。一百六十年过去,黎曼猜想至今尚未被成功证明。
03
公理无对错
上述三种不同的几何学,从本质上看是平行公理的不同造成的:
- 欧式几何:过直线外一点,恰有一条直线与已知直线平行;
- 罗氏几何:过直线外一点,至少有两条直线和已知直线平行;
- 黎曼几何:过直线外一点,没有直线与已知直线平行。
另一方面,从三种不同的几何学,可以推断出不同的三角形内角和(如下图所示):
- 欧式几何:三角形的内角和=180度;
- 罗氏几何:三角形的内角和>180度;
- 黎曼几何:三角形的内角和<180度。
图5-不同几何学的三角形内角和
这三种几何各自所有的命题,都构成了一个严密的公理体系。各公理之间满足和谐性、完备性、独立性。因此这三种几何都是正确的,本质上它们反映了不同曲率空间的性质:
- 欧氏几何是平直空间中的几何;
- 黎氏几何是正曲率空间中的几何;
- 罗氏几何是负曲率空间中的几何。
在我们这个不大不小、不远不近的日常生活空间里,欧式几何是适用的;在宇宙空间或原子核世界,罗氏几何更符合客观实际;在地球表面研究航海、航空等实际问题时,黎曼几何更适用一些。
02
从几何学到相对论
1915年,爱因斯坦运用黎曼几何和张量分析工具,创立了新的引力理论——广义相对论。爱因斯坦借助黎曼几何,构建了广义相对论的空间模型。因为在广义相对论中,爱因斯坦设想引力场是一个弯曲的时空,光线在通过引力场时会出现弯曲,而黎曼几何恰好描述了这种弯曲了的空间。
最后,我们还应回想到经典物理的开创者牛顿。如果说牛顿经典力学的时空是以欧几里得为基础的话,那么,爱因斯坦广义相对论的时空就是以黎曼几何为基础。