2022软件定义边界架构标准2.0.docx
软件定义边界SDP架构标准2.02022目录1. 介绍91.1 义91.2 范围91.3 读者92. SDP设计102.1 SDP概念112.2 SDP的架构和组件112.3 SDP部署模型142.4 SDP工作流程162.5 IH加载流程示例192.6 单包授权(SPA)2()2.7 组件之间的传输层双向认证222.8 设备校验232.9 软件定义边界SDP与物联网设备242.10 访问策略243. SDP协议263.1 接受主机AH-控制器协议263.2 IH-控制器协议283.3 IH-AH协议313.4 日志34总结37参考文献37附录A:SDP,SDN和NFV39附录B:OSI/SDP组件映射401.介绍软件定义边界(SDP)架构提供了动态灵活的网络安全边界部署能力,以在不安全网络上对应用和服务进行隔离。SDP提供了隔离的、按需的和动态配置的可信逻辑层,缓解来自企业内外部的网络攻击。SDP对未经授权实体进行资产隐藏,建立信任后才允许连接,并通过单独的控制平面和数据平面管理整个系统。企业借助SDP,可以实现零信任安全的目标,并且建立有效性和弹性的安全体系,从而摆脱传统(且基本无效)的基于物理边界防御的模型。1.1意义该规范是对国际云安全联盟CSA的软件定义边界工作组(SDPWG)于2014年4月发布的软件定义边界(SDP)标准规范VL0(以下简称“SDPvl")的升级。尽管初版的规范是完整的,但没有充分讨论组件加载流程、保护NPE非人类实体(Non-PerSonEntities)等方面的问题】。此外,自SDPvl发布以来,SDP架构得到业界广泛认可,并包含在我们现在所说的零信任理念中。相比初版,本次修订版本的SDP标准规范进行了扩展和加强(包含对内容的添加、澄清和延展),并反映了当前最新的零信任行业状态。值得一提的是,该修订版基于SDP工作组发布的SDPVl及后期发布的其他文档进行修订,特别是基于SDP术语表和SDP架构指南。这两个文档的链接在本文的“参考文献章节。1.2范围该标准规范包含了SDP的架构组件、交互流程和基础安全通信协议,重点关注控制平面如何在安全边界内授权安全连接,以及数据平面如何在在发起主机IH和接受主机AH(服务器、设备、服务)之间实现安全连接。1.3读者本标准规范的目标受众是:在企业中部署零信任和SDP产品的解决方案架构师和安全主管在方案中使用SDP架构实施零信任安全理念的供应商和技术提供商1非人类实体(NPE)是一个具有数字身份的实体.在网络空间中行动,但不是人类行为者。这可以包括硬件设备、软件应用和信息制品。2. SDP设计SDP的目标是让企业安全架构师、网络提供商和应用程序所有者能够: 部署动态的“软件定义”边界 隐藏网络和资源 防止非授权访问企业的服务 实施以身份为中心的访问策略模型SDP将物理的安全设备替换为安全逻辑组件,无论组件部署在何处,都在企业的控制之下,从而最大程度地收缩逻辑边界。SDP执行零信任原则,即强制执行最小特权访问、假设被入侵、以及“信任但验证”,仅在认证和身份验证成功后,基于策略来授权对资源的访问。SDP的设计初衷是为IPv4和IPv6网络提供有效且易于集成的安全架构,包括对控制平面组件的保护和访问控制。SDP为跨数据平面通信的机密性和完整性提供保障,还包括一个“需知访问“模型,要在经过设备验证以及身份认证(用户和非人类实体NPE)成功之后才能以加密方式登录到边界网络。SDP的设计理念上提供多个层次的无缝集成-包括用户、用户设备、网络和设备的安全。SDP适用于任何基于IP的基础设施,无论是基于硬件的传统网络、软件定义网络(SDN),还是基于云计算的基础设施。SDP的双向验证隧道实际上是一个加密层,可以部署在任何一种IP网络之上。因此,SDP能将多个异构的环境统一成通用的安全层,从而简化了网络、安全和运维。对于云计算基础设施,SDP在OSl网络模型七层中的五层集成了安全性,即: 网络层:在该层以虚拟化2的方式提供计算、存储和监测。 传输层:在该层云APl将虚拟化资产与资源池和用户联系起来。 会话层:该层用于管理底层虚拟化基础设施。 表示层:该层用中间件来管理应用层和应用。 应用层:为用户提供商业价值。未集成SDP的OSl层是数据链路层和物理层,TCP/IP网络模型将这两层合并为网络层。有关SDP和分层网络模型的更多信息,请参见附录Bo作为SDN和网络功能虚拟化(NFV)的补充,SDP可以保护SDN仓IJ建的基于IP的网络连接。基于过往的反馈以及SDP标准规范1.0»实施中的经验教训,本次更新的SDP标准规范2.0将进一步阐明上一版本标准规范中定义的以及SDP架构指南白皮书中阐述的各种部署模型中的访问控制问题3。SDP提供了个显著更好的方法预防、监测和应对那些针对应用程序和基础设施的各种网络2参见关于SDP和网络功能虚拟化(NFV)的论文-https:WwW3https:/cloudsecurityalliance.org/artifacts/sdp-architecture-guide-v2/攻击及跨域攻击。SDP通过尽可能缩小攻击面、采用最小特权原则实现这一点,即使用户通过不受信任的公共网络(如互联网)访问资源也能得到保护。传统的网络安全解决方案侧重于保护网络和系统的安全,而SDP侧重于以身份为中心保护数字资产。从传统边界防护转变到SDP,使企业能够更加从容地应对DDoS.凭证失窃和对企业资源的勒索软件等攻击。2.1 SDP概念SDP聚焦于保护组织机构的关键资源,而非组织机构的边界。它能够为网络的所有层面定义和执行基于风险的、动态的,以身份为中心的、且上下文感知的访问策略。SDP为定义和执行访问策略提供了基础,这些策略对于业务、应用程序和网络的负责人来说意义重大,尤其在组织机构内第一次实施的时候。SDP能够为应用程序和企业资源所有者提供的边界防护能力有: 可以将服务安全部署到假定被入侵的网络上(即“假定被入侵。 通过不受信任的网络访问企业资源时,可以精细化调整用户身份权限。一个典型的用例是替换VPN。SDP使用由应用负责人控制操作的逻辑组件取代了传统边界防御设备(通常是物理的)°SDP通过访问策略进行设备认证和身份验证后,才允许用户对应用程序的访问。SDP背后的原理并非全新的。美国国防部(DoD)和美国情报机构(IC)内的多个组织,已经实施构建了相应的网络架构,即访问网络之前先进行身份验证和授权。通常在机密或“高端网络(如国防部定义的网络)中,所有服务器都隐藏在远程访问网关设备后面,用户必须完成身份验证,才能被授予服务的可见权限并开放访问通道CSDP借鉴了机密网络中使用的逻辑模型,将其合并进入标准工作流程。多年来,相关安全负责人逐步达成了对这些概念的共识,最具代表性的开端就是2004年举办的Jericho论坛。近期,在美国国家标准与技术研究院(NIST)中定义的零信任架构中也包含了这些原则,SDP保留了上述“需知(最小特权)模型的优点,同时克服了必须借助远程访问网关设备的不足。事实上,SDP访问控制设计的初衷是面向所有用户,而不仅仅是远程用户。SDP要求任何终端在获得对受保护的服务器和相关服务的网络访问权之前,首先要进行终端的身份验证和鉴权,然后就在请求系统和应用程序之间实时创建加密连接。概括来说,SDP可以在对相关资源(如用户、设备和服务)完成安全验证后,允许其在一个特定边界中访问所需的服务,这些服务对未经授权的资源保持不可见。2.2 SDP的架构和组件简单来说,SDP由两个逻辑组件构成:SDP主机和SDP控制器。4-参见NIST零信任架构文档-SP800-207https:/CSrC.nist.gov/publications/detail/sp/800-207/finalSDP主机,通常是全栈主机或轻量级服务,可以发起或接受连接。这些动作由SDP控制器管理,通过控制平面上的安全信道交互。数据则通过数据平面中单独的安全信道通信。控制平面与数据平面分离,实现系统架构的灵活性且高度可扩展性。此外,出于规模化或可用性的目的,所有组件均可以做冗余部署。SDP主机(发起主机或接受主机)与SDP控制器进行通信,SDP控制器是一个设备或服务器进程,它确保用户经过身份验证和授权、以及设备得到验证,并建立安全通信,保证网络上的数据流量和控制流量是分离的。BM*SDP”I接受主机SDP的架构由以下组件组成: SDP控制罂一该组件的设计初衷是用于管理所有的身份验证和访问流程。SDP控制器本质上是整个解决方案的“大脑”,负责定义和评估相应访问策略。它充当了零信任架构下的策略决策点(PDP职能)。SDP控制器负责同企业身份验证方(例如,身份提供商IdP,多因子身份验证MFA服务)的通信,统一协调身份验证和授权分发。它是一个中心控制点,用于查看和审计所有被访问策略定义的合法连接。 发起主机(IH)-这类访问实体可以是用户设备或NPE(非人类实体),例如,硬件(如终端用户设备或服务器)、网络设备(用于网络连接)、软件应用程序和服务等。SDP用户可以使用SDP客户端或浏览器来发起SDP连接。 接受主机(AH)-这些实体是逻辑组件,通常被放置在受SDP保护的应用程序、服务和资源的前端。AH充当零信任架构下的策略执行点(PEP职能),PEP通常由具备SDP功能的软件或硬件实现。它根据SDP控制器的指令来执行网络流量是否允许发送到目标服务(可能是应用程序、轻量级服务或资源)。从逻辑上讲,AH可以与目标服务可以部署在一起或者分布在不同网络上。这些SDP组件可以部署在本地或云上,出于扩容或可用性目的可以进行冗余部署。以下我们详细介绍每个组件:1) SDP控制器SDP控制器是一个关于策略的定义、验证和决策的组件(零信任架构中的策略决策点PDP),5httpsClOUdSeCUriyalliance.orgartifactsSofIWare-defined-perimeter-and-zero-trust/第6页其维护的信息包括:哪些身份(如用户和组)可以通过哪些设备访问组织架构中的服务(本地或云中)。它决定了哪些SDP主机可以相互通信。一旦用户(在IH上)连接到控制器,控制器将对该用户进行身份验证,并根据用户的上下文(包括身份和设备属性)判定是否允许其访问被授权的服务(通过AHs)o为了对用户进行身份验证,控制器可以使用内部用户表或者连接到第三方的身份和访问管理(IAM)服务(本地或云中)执行认证,并且可以加上多因子认证(MFA)°身份验证方式通常基于不同用户类型和身份。例如,企业员工可以通过身份验证提供商进行身份验证,而外部承包商可以通过存储在数据库中的凭据或使用联合身份进行身份验证。为了对用户访问服务进行授权,控制器可以使用内部的“用户到服务”映射策略模型,或第三方服务:如LDAP、活动目录(AD)或其他授权解决方案(本地或云上的)。授权通常由用户角色和细粒度信息决定:基于用户或设备属性,或者用户被授权访问的实际数据元素/数据流。实际上,SDP控制器所维护的访问控制策略可以由其他组织型的数据结构(如企业服务目录和标识存储)来输入。通过这种方式,SDP控制器实现了NIST定义的零信任原则中的动态零信任策略。此外,控制器可以从外部服务获取信息,例如地理位置信息或主机验证服务,以进一步验证(在IH上的)用户。此外,控制器可以向其他网络组件提供上下文信息,例如有关用户身份验证失败或访问敏感服务的信息。SDP控制器与零信任PDP概念组件密切相关。根据SDP架构的配置需求,它可以部署在云上或本地。SDP控制器由单包授权(SPA)协议的隔离机制保护,使其对未授权的用户和设备不可见和不可达。该机制可以由控制器前端的SDP网关提供,也可以由控制器本身提供。2) SDP发起主机IHSDP的发起主机IHs与SDP控制器通信,以便开启通过AH接受主机来访问受保护的公司资源的过程。控制器通常要求IH在认证阶段提供用户身份、硬件或软件清单以及设备健康状况等信息。控制器还必须为IH提供某种机制(如凭证密钥),以便IH与AH建立安全通信。IH的形式可以是安装在终端用户机器上的客户端程序或Web浏览器。使用客户端程序可以提供更丰富的能力,例如主机检查(设备安全状态检查)、流量路由和更便捷的身份验证。发起主机(IH)最重要的作用之一是使用SPA启动连接,本文稍后将对此进行详细讨论。在某些实现中,SPA报文可能由基于浏览器的SDP客户端生成。IH可以是人类用户的设备(如员工或承包商的计算机或移动设备)、应用程序(如胖客户端)或是物联网(IoT)设备(如远程水表)。在刚刚的最后一个例子(远程水表)中,其身份是一个非人类身份,但还是需要经过身份验证和授权。有关这个话题的更多讨论,请参阅翔微掇钠啊播节。3) SDP接受主机AH接受主机(AH)是SDP策略执行点(PEP),用于隐藏企业资源(或服务)以及实施基于身份的访问控制。AH可以位于本地、私有云、公共云等各种环境中。受AH保护的服务不仅限于Web应用程序;可以是任何基于TCP-或UDP的应用程序,例如SSHsRDP、SFTPSMB或胖客户端访问的专有应用程序。默认情况下,对AH的任何网络访问都被阻止,只有经过身份验证和授权的实体才能访问。接受主机(AH)从SDP控制器接收控制信息,并只接受经过控制器确认的那些发起主机(IH)的连接请求。利用从控制器接收到的控制信息,接受主机(AH)保证只有经过授权的发起主机(IH,包括用户和设备)才能访问到受保护的服务。接受主机(AH)作为安全通信的交换站,从发起主机(IH)接收访问流量然后转发到被保护的后端服务。后端服务的响应信息通过接受主机(AH)返回到发起主机(IH)oSDP是一个面向连接的逻辑层协议,可以用来保护多种网络拓扑架构。下图3介绍了多种SDP部署模型和架构的细节。它们在SDP架构指南一文中有详细的说明,阐述了不同部署模型下各个SDP组件的配置。2.3 SDP部署模型SDP把客户端(包括人类和非人类实体)连接到资源(在下图中资源被描述为服务器)。资源可以是任意类型能被网络访问到的服务。它可以是在物理服务器中或虚拟机中运行的服务,或是在IaaS.PaaS平台上运行的服务或容器化的服务。本节概述了六种SDP部署模型。尽管不同模型使用了不同的网络拓扑,但在逻辑上提供了同样的价值,都是对受保护的资源进行严格的访问限制。要请参阅SDP架构指南6了解这些部署模型的详细情况。6关于完整的描述.请参见CSA软件定义边界架构指南,2019年5月,第14到18页下图中,蓝线表示被双向认证加密协议(如mTLS协议和IKE协议等)保护的网络连接,从而可以抵御中间人攻击(MlTM)。灰线表示使用应用程序原有协议的网络连接,这些连接可能是加密的,也可能是未加密的。在图表中为了表述简单,省略了SDP控制器。其中有部分部署模型用到了SDP网关。SDP网关是SDP接受主机(AH)的软件程序,为受保护的后端服务提供隔离性和访问控制能力。当一个或多个服务器需要被SDP网关保护时,不论底层网络拓扑如何,发起主机(IH)和接受主机(AH,网关)之间的通信连接将会被加密保护。在客户端-网关模型中,网关可以被远程访问,但同时也是隐藏的,从而提供了安全边界。这个模型不需要受保护服务器侧进行任何改造。客户端服务器模服务器客户端HiTLS由SDP保护当一个组织机构需要端到端的安全通信的时候,客户端-服务器模型将服务器和接受主机(AH)绑定在同一个主机上。在这个模型中,服务器隐藏在安全边界内的,服务器端必须要安装一个SDP软件,用来实现客户接受主机(AH)的功能。服务静-服务谎模mTLS由SDP保护服务器服务器-服务器模型下,不论底层网络拓扑如何,可以保证所有服务器之间的通信连接全部经过加密来保护。在这个模型下,服务器都隐藏在安全边界内。客户端-服务器-客户端模型mTLS一一mTLSSDP保护SDP保护客户端服务器客户螃在一些点对点的通信场景中(如VOIP,聊天和视频会议服务等),点对点的流量都通过中间服务器来转发。在这个模型下,服务器隐藏在安全边界内。客户端-网关-客户端模型mTLS-SDPMmTlS一SOPKlPmTLSSDP保护客户网关客户端SDPO1客户端客户端-网关-客户端模型是客户端-服务器-客户端模型的变体。这个模型支持在点对点网络协议下,由一个客户端直接向其他客户端连接的场景中执行访问控制策略。在这个模型下,网关都隐藏在安全边界内。网关-网关模型原有流量(未变 化)在SDP规范1.0中未包含网关网关模型。这个模型很适合用于某些物联网场景。在这个模型下,网关都隐藏在安全边界内。2.4 SDP工作流程一般来说,SDP组件工作流程流通常分为两种独立的类型:加载(Onboarding)流程(每个组件均有独立流程)和访问流程(在多个组件之间协调)。就定义而言,每个SDP组件都有一个单独的加载(Onboarding)流程,并参与多个访问流程。以下所述的工作流程只是代表一般情况,因为在不同的SDP实现方案和不同的SDP部署模型之间的细节会有所不同.1)控制器加载(OnbOarding)流程每个SDP系统都需要一个或多个控制器。为了让加载流程得以成功,至少必须保证有一个控制器在任何时候都是可用的。一些SDP实现方案中,需要一个始终在线的控制器使访问流程获得成功。控制器必须是可从其他任何SDP组件的运行位置进行网络访问。因此,它们通常是可通过互联网在全球范围内可达,但仅限于获得授权的用户/设备。初始SDP控制器SDP控制器初始化参数后续的SDP控制器置书等 配证等,'组织机构专属的配置和初始化参数: 网络配置 PKI和CA IAM 认证 多因子认证 设备/端点管理 等等控制器的工作流如图4所示:一个初始的(主要的)SDP控制器被引入服务,并连接到适当的、可选的身份验证和授权服务(例如,PKI颁发证书机构服务、设备身份验证、地理位1SAML.OpenID.OAuth.LDAP、Kerberos,多因子身份验证和其他此类服务)。SDP控制器应该时刻在线,以便对任何其他SDP组件随时可用。如有必要,也可以让后续更多的控制器上线,并使用相同的组织机构的专属配置,以及来自初始控制器的初始化参数(配置)信息加载。为了实现负载均衡和冗余,许多SDP的实现方案会支持控制器集群部署。任何SDP实现方案都必须支持这样一种机制:后续的控制器可以加入集群,连接到集群内的其他控制器,并共享或访问任何当前的状态信息。这种机制依赖于具体实现方案,本文不进行详细讨论。2)接受主机(AH)加载流程每个SDP系统都需要一个或多个接受主机AH0它们可以使用上述的任何SDP部署模型进行部署。也就是说,它们可以是独立的网关,也可以作为服务器(资源/业务系统)的一部分部署。AH可以是长期在线的,也可以是短暂的一一两者在SDP实施中都是可以接受的。独立网关AH可能寿命较长,运行数月或数年。但也可能是短暂的,如在基于负载进行扩展或收缩的动态网关集群中。部署在单个服务器(业务系统)中的AH在线时间可长可短。在这种场景下,它们的生命周期将与它们所属的服务器实例的生命周期绑定在一起。服务器实例可以是长期存在的,例如传统的Web或应用服务器;也可以是短期存在的,如DeVOPS基础设施的一部分服务。AH加载流程如图5所示:当AH投入使用时,它们必须连接到SDP系统中的个或多个控制器并进行认证。一旦加载成功,它们就可以接收SPA报文,并处理来自授权IH的访问。任何SDP实现方案都必须支持这样一种机制:所有AH都可以被配置为连接到控制器集群中。由于这种机制依赖于具体实现方案,因此具体内容不在本文的讨论范围内。同样地,许多SDP实现方案都支持AH集群部署,以实现负载均衡和冗余容灾的目的,这是一种比较常见的网关部署模型。3)发起主机QH)加载流程发起主机(IH)可以是用户设备、或非用户操作的系统(如物联网设备或充当IH的服务器)。与SDP系统中的其他所有组件一样,IH也需要加载,如图6所示。在这个流程中,它们首先需要被配置连接到控制器所需的初始参数信息:包括网络信息(主机名或IP地址),以及任何必要的共享密钥(例如,SPA密钥、数字证书)。由于这种机制依赖于具体实现方案,因此具体内容不在本文的讨论范围内。通常,IH加载流程需要使用到企业身份管理服务供应商,并且在用户设备上需要做用户身份认证。IHS只需要加载一次,之后就可以启动访问流程。IH初始参数SDP控制器 控制器信息 配置 SPA密钥 数字证书 其他发起主机(IH)4)访问流程发起主机IH启动访问流程以连接被SDP系统保护的业务系统(资源),参考表1和图7o访问流程涉及了SDP全部组件:发起主机IH,控制器,接受主机AHo步骤访问流程1当已加入的IH重新上线时(例如,在设备重新后动后,或当用户启动连接时),它将连接到SDP控制器进行身份验证2在IH身份验证(在某些情况下,使用其相应的身份提供商)成功后,SDP控制器会确定该IH有权(通过AH)通信的服务列表。但此时控制器尚未将此列表发送给IH:必须等到步骤3之后。3SDP控制器指示AH可以接受来自IH的通信,以及向AH发送用于建立用户、设备和服务之间双向加密通信所需的信息。4SDP控制器向IH提供已授权的AH和服务列表,以及建立双向加密通信所需的任何可选信息。5IH使用SPA协议发起与授权AH的连接,首先验证SPA中的信息以确保安全,然后IH建立与AH之间的双向TLS(mTLS)加密连接。控制器通知IH针对IH的授权服务QSDP 控制器控制器确定IH授权的服务 列表©控制器通知AH针对IH的 授权服务IH通过SDP控制器认证O2.5 IH加载流程示例SDP控制器、IH、AH和用户的加载,根据图2所示的部署模型以及具体实现方案的不同情况会有差异。SDP系统的创建和运行可以通过应用程序编程接口(API)或管理界面进行。如上述流程所述,当SDP系统部署和配置完成之后,接下来SDP控制器和AH上线。以下时序图是使用了外部身份提供商(IdP)进行身份验证的IH用户加载流程7。注解:此示例使用身份提供商(IdP)的信息用于用户加载上线。加载系统可以包括多因子认证功能,例如MFA和设备属性验证(如企业部署的数字证书或终端管理软件)。此示例还省略了向各节点分发密钥信息(如SPA密钥或其他共享密钥)的步骤,该步骤和SDP的实现方案有关。例如,开源SDP实现方案中会生成此密钥信息,然后依赖企业的部署方式将其安全地传输给SDP的组件。在该示例工作流程中,IH使用客户端(上图中的SDP客户端)与身份提供商(IdP)协商。值得注意的是,对于某些SDP产品模型,SDP控制器将与IdP建立起信任关系(例如,验证客户端转发7基于SDP的开源参考实现-https:wWW.W给它的SAML令牌)。2.6 单包授权(SPA)SDP的核心原则之一是,任何未经授权的实体不仅不能访问业务系统(资源),还不得访问SDP基础设施本身。为达到这一目标,要求实体与任何SDP组件连接之前必须要通过基于密码学的授权验证。这种机制提高了SDP的安全性和弹性:未经授权的实体无法与SDP组件建立网络连接,因此无法尝试漏洞利用、无法尝试暴力破解或利用被盗的用户账密。这与传统的远程访问解决方案(如VPN)形成了鲜明的对比,后者往往暴露在互联网上的所有恶意攻击者面前。8SDP中实现这个目标的机制就是单包授权(SPA)。SDP版的SPA是基于RFC4226HMAC的一次性密码"H0TP”9,后面会阐述SPA包中如何使用它。值的一提的是,虽然SDP标准规范始终围绕着如何使用SPA保护对控制器和AH的访问,但也存在其他合理架构下的可靠替代方案。请参阅后面的SPA替代方案章节部分。SPA在SDP中实现的主要原则如下:.隐蒙SDP系统组件:控制器和AH不会对来自远程系统的任何连接尝试作出反应,直到它们提供了对该SDP系统合法可信的SPA报文。具体地说,在基于UDP的SPA的情况下,主机不会响应TCPSYN,从而避免了向潜在攻击者泄露任何信息。(具体实现示例:配置了“默认丢弃”规则的防火墙)。无论是独立的AH(SDP网关),还是逻辑上属于服务器/业务系统一部分的AH,都采用这样的原则。减轻对TLS的拒绝服务攻击:运行HTTPS(使用了TLS)协议的面向互联网的服务器非常容易受到拒绝服务(DoS)或分布式拒绝服务(DDOS)攻击。SPA可以减轻这些攻击,因为它可以让服务器在产生建立TCP或TLS连接的开销之前快速拒绝未经授权的连接尝试,而同时允许授权连接的建立,即使DoS攻击还在进行中。攻击检测:从任何其他主机发往控制器或AH的第一个报文必须是SPA报文。如果AH收到任何其他报文,则应将其视为攻击。因此,SPA让SDP能够根据单个恶意报文确定攻击。值得一提的是,对于SPA报文进行验证的计算开销应该是比较轻量的,从而提高SDP系统抵御DDOS攻击的恢复能力(如在国际云安全联盟SDP工作组的SDP作为DDOS防御机制白皮书中所述】°)。SDP组件之间的通信由SPA发起:IH-控制器、AH控制器和IH-AHaSPA报文使用UDP或TCP协议,具体取决于所选的实现方案。基于UDP的SPA为受SPA保护的服务器提供上述所有安全优势。与基于UDP的SPA相比,基于TCP的SPA只具备其中一部分优势。具体地说,使用TCPSPA的SDP组件将向所有远程(和潜在的恶意)用户暴露开放的端口,因此服务器不会被隐藏。该服务器也将部分受到DDoS攻击-它允许从任何远程IP地址建立一个TCP连接,然后在建立TLS连接之前执行SPA验证。TCP连接8公平地说.有一些商业和开源的VPN类解决方案确实隐藏了基础设施,例如WiregUard就是这样一个开源案例9 详 见 https:/iools.ietf.org/himl/rfc4226 https:ClOUdSeCUrityalIianCeQrg/artifacts/SoftWare-defined-periEeter-as-a-ddos-prevention-mechanism/比TLS连接的资源消耗要小得多,但它确实也会消耗服务器资源,使服务器面临一定程度的DDoS风险。总的来说,使用TCPSPA,TCP可以让服务器通过识别无效SPA包来鉴别攻击,但这种识别只有在建立TCP连接之后才能做到,因此会消耗服务器资源。关于最小化服务暴露面,另一个值得注意事项是AH和控制器的DNS枚举攻击。直接通过IP地址或仅通过私有DNS服务进行连接可能会降低服务对攻击者的可见性。也就是说,SDP服务组件的公有DNS解析(例如COrItrolIerLSdP)的本身可能就对恶意攻击者暴露了攻击面(例如:攻击者可以对SDP基础设施的进行大规模DDOS攻击)。请注意,为了提高SPA协议的安全性和弹性,下文中推荐的SPA消息格式相比SDP标准规范Vl版做了改进和更新。1) SPA消息格式虽然不同SDP实现方案的SPA消息格式可能不同,但所有SDP系统都应支持SPA作为在组件之间启动连接的机制。值得一提的是,SPA报文创建者和接收者应当具有共享的信任根,因为每个SPA报文都需要共享密钥才能构建有效的SPA报文。建立信任根(即如何将共享密钥安全地传递到SDP组件)取决于具体实现方案,超出了本文的讨论范围。通常来说,这些信息包括在IH和AH的加载流程中。用户ID为每对用户-设备分配256位数字标识符。该字段用于区分发送报文的用户、设备或逻辑组。非重复随机数16位随机数据字段,用于避免SPA报文被重复使用,以防止重放攻击。时间戳通过确保SPA报文在短时间内的有效性(例如15到30秒),以防止处理过期无效的SPA报文。这也提供了一种机制减少接收方所需的重放攻击检测缓存。源IP地址发起主机的公开可见IP地址。接受主机不依赖报文头中的源IP地址,因为在传输过程中很容易修改。IH必须能够获得IP地址,供AH使用,作为报文的来源地址.消息类型该字段是可选的。它可用于通知接收者在建立连接后,IH会发送什么类型的消息。消息内容字符串此字段是可选的。它将取决于“消息类型”字段。例如,这个字段可以用于标明IH将请求的服务(如果在连接时已知目标服务)。HoTP(基于HMAC的一次性密码)这个一次性哈希密码是基于RFC4226所描述的算法以及共享密钥生成的。SPA报文中必须要使用OTP以验证其真实可靠性,其他替代的OTP算法也可以应用在这里,只要能达到验证SPA报文真实可行性的总体目标。HMAC值基于上述所有字段计算得出。算法可选择SHA256(推荐)、SHA384、SHA512,SM3、EqUihaSh或其他高效鲁棒的算法。HMAC使用共享(密钥)种子计算。将此SPA消息的所有先前字段合并然后计算HMAC值,最后AH会使用它来验证SPA消息的完整性。HMAC验证在计算上是轻量级的,因此可以用来提供抵御DOS攻击的弹性能力。任何带有无效HMAC的SPA报文将被立即丢弃。值得一提的是,其他SPA实现方案可能包含额外的加密方式,例如,使用IH的私钥(以实现不可假冒),或AH的公钥(以实现保密)。然而,非对称加密在计算上开销比较大,建议只有在轻量级验证机制(如简单的HMAC)通过之后才应该被接收方使用,以保持AH对DOS攻击的弹性。2) SPA作为一种安全的、独立的、无连接的消息传输协议在SDP系统中,SPA的一个有趣的“副产品用例是,SPA包不仅可以用作发起连接的手段,还可以用作从远程对象传输数据的手段。因为SPA报文基于一个共享的密钥,接收方可以相信其中包含的数据是由一个有效的SDP客户端发布的。如果SPA种子密钥对于特定的客户端是唯一的(由SPA报文中的CIientID标识),那么消息内容字符串字段可以被客户端用来传输有意义的数据。这既不需要任何进一步的处理或策略评估,也不需要建立TCP或TLS连接。这个方案对一组需要定期传输少量数据的分布式物联网传感器很有用。将数据嵌入到SPA报文中,从而使这些设备完成数据传输任务而避免产生TCP/TLS连接的额外开销。当然,这种机制也有一些缺点。接收方(AH)必须随时待命接收这个数据,而且因为这是一个单向传输协议,即便数据通过“发送后就不管”的SPA报文传输被收到,发送方也不会收到确认消息。尽管如此,在某些数据并非关键且事关重大的场景下,SPA数据传输可以是一种有用的方案。3) SPA的替代方案SDP架构在设计时考虑到了灵活性,因此这次对标准规范的修订中包含了各种可能的方案和部署模型。例如,SDP定义了六种部署模型,每种部署模型都可以用来解决不同的场景,以不同的方式实现,但有不同的取舍。SPA是一种健全和安全的机制,可以落地实现SDP的关键原则,即隐藏基础设施,提供了对DDoS攻击的弹性应对能力,并提高了检测攻击的能力。SPA还具有使SDP成为一个闭环系统的优势:一旦种子密钥被分发后,IH就可以安全可靠地与控制器和AH建立加密通信,而无需依赖任何外部系统。然而,SPA并不是实现这些目标的唯一机制。有一些替代方案也可以实现上述定义的原则,因此它们可以成为支持SDP和零信任原则的系统的一部分。例如,一个无SPA的SDP系统可以利用一个全球可访问的企业身份提供商,并有一个控制通道通往SDP的控制器和AHo在这种模式下,IH向身份提供商的认证请求的将触发一个控制面消息给SDP控制器和AH,通知他们IH认证成功,并告知它们立即会收到来自IH的公网IP地址的连接。随即,IH将能够建立一个与控制器和AH的TCP连接,因为控制器和AH已经预期到这个连接。当然,TCP连接之后紧跟着会有双向认证的TLS连接(mTLS),以及下文将阐述的其他安全层。当然,每个系统和架构都有自己的设计考量和取舍。只要该方案实现了上面提到的三个原则,基于SPA替代方案的系统就可以成为一个健全和有价值的SDP系统的组成部分。2.7 组件之间的传输层双向认证SDP在建立连接的过程需要进行多层次的安全校验。第一步是SPA,如上所述。下一步,也就是本章节的主题,要求双向认证,它是作为分布式SDP组件之间建立安全加密连接的关键步骤。其他更多的步骤,包括设备和用户安全校验,将在后面讨论。当SDP组件利用SPA进行安全校验和授权后,SDP系统中主要组件之间的连接必须使用TLS或其他替代方案(如网络密钥交换IKE),并通过双向身份认证,来确认设备作为SDP的授权成员。具体而言,发起主机和接受主机(IH-AH)、发起主机到控制器(IH控制器)以及控制器到AH之间的连接必须使用双向认证。请注意,TCP和UDP都支持TLS(在UDP情况下,它被称为数据报传输层安全(DatagramTranSPortLayerSeCUrIty,简称DTLS)。这两种都适用于SDP系统。不支持双向认证的弱密码软件套件或协议是不可取的,也是不安全的。高安全强度的密码和协议确保每个组件都包含一个由可信机构颁发的有效私钥,通过双向验证数字签名证书,显著降低了中间人(MITM)攻击U的可能性。这些组件的根证书必须是企业PKI系统或SDP专用CAo它不能依赖预装的或与用户浏览器关联的默认信任的数字证书,因为这些证书有可能会受到假冒攻击,攻击者因此可以伪造来自被假冒的证书颁发机构的数字证书。SDP应实施一种方案,以确保被吊销的证书可以有效地被检测到(例如,使用在线证书状态协议【OCSP】n或其他机制)。无论SDP系统使用哪种传输层方案,它都必须能够抵御潜在的攻击,如MITMTLS降级协议攻击(使用mTLS可以避免这种攻击)。2.8 设备校验上个章节阐述的传输层双向认证方案可以证明SDP的访问设备拥有一个未过期且未被吊销的私钥,但不校验设备是否满足安全或配置要求。设备校验的目的是证明设备符合安全要求。特别需要注意的是,在企业环境中,控制器被假定为是受信任的设备,因为它们存在于最受控制的环境中。如果SDP网关也在企业的控制下,则也假定它们是受信任的组件。也就是说,这些组件在受控和托管环境中运行,这些环境必须受到企业变更管理控制流程和部署流程的约束,并且必须在SDP系统中被谨慎地启动上线。因此,对于控制器和网关组件来说,设备验证被认为是可选项。另一方面,用户设备(IH)需要设备校验。设备校验可缓解凭证盗窃和由此产生的假冒攻击。 https Wott.ioblogtutorials20190909what-is-mils ht