软考笔记
CMM(能力成熟度模型)
五个阶段——非正式执行、计划跟踪、充分定义、量化控制、持续优化,与常见的CMM模型中的五个等级(初始级、可重复级、已定义级、已管理级、优化级)在表述上有所不同,但本质上描述了类似的软件过程改进路径
- 非正式执行:
这个阶段类似于CMM中的“初始级”。在这个阶段,软件开发过程往往是不规范的,缺乏系统的管理和监控。软件开发主要依赖于开发人员的个人经验和技能,项目成功的不确定性较大。
在这个阶段,组织可能还没有形成明确的软件开发流程和质量标准,项目的执行往往是随意的,缺乏统一的规划和协调。 - 计划跟踪:
这个阶段类似于CMM中的“可重复级”。在这个阶段,组织开始建立基本的软件开发流程和管理制度,以确保项目能够按照预定的计划进行。
组织会制定项目计划,并对项目的进度、成本和质量进行跟踪和监控。同时,组织也会开始积累项目经验,以便在未来的项目中复用。 - 充分定义:
这个阶段类似于CMM中的“已定义级”。在这个阶段,组织已经制定了详细的软件开发流程和质量标准,并将其集成到一个协调的整体中。
所有的开发项目都会遵循这些流程和标准,以确保项目的质量和一致性。同时,组织也会开始对软件开发过程进行量化分析,以进一步改进和优化过程。 - 量化控制:
这个阶段类似于CMM中的“已管理级”。在这个阶段,组织已经建立了完善的软件开发过程管理体系,并对过程进行了量化控制。
组织会收集和分析软件开发过程中的各种数据,如过程指标、质量指标等,以了解过程的性能和问题所在。同时,组织也会根据这些数据制定针对性的改进措施,以进一步提高过程的质量和效率。 - 持续优化:
这个阶段类似于CMM中的“优化级”。在这个阶段,组织已经将软件开发过程视为一个持续改进的过程,并致力于不断优化和改进过程。
组织会定期回顾和分析软件开发过程的性能和问题,并根据分析结果制定长期的改进计划。同时,组织也会鼓励员工积极参与改进活动,提出创新性的改进建议,以推动过程的持续优化和改进。
CMM(能力成熟度模型)
- 成熟度级别描述
初始级(Initial Level):组织的安全工程过程通常是临时的,没有明确的定义或标准。安全活动往往是反应式的,而不是预防性的。缺乏一致性和可预测性。 - 可重复级(Repeatable Level):组织建立了一些基本的安全工程过程,这些过程能够在一定程度上重复执行,但仍然缺乏全面的标准化。开始有一些基本的文档和记录。
- 已定义级(Defined Level):安全工程过程已经文档化,并且在整个组织中一致应用。有明确的标准和指南来指导安全工程活动。组织内部对安全工程过程有清晰的理解和共识。
- 已管理级(Managed Level):安全工程过程得到量化管理,能够进行度量和控制。通过收集和分析数据来监控过程的有效性和效率。能够基于度量结果进行调整和优化。
- 优化级(Optimizing Level):组织不断改进安全工程过程,通过持续的过程改进活动达到最优状态。采用先进的技术和方法来提高安全工程的效果。组织具有高度的灵活性和适应性,能够快速响应变化。
SSE-CMM和CMM都定义了成熟度级别,用于描述组织在相应领域(系统安全工程或软件开发)的能力水平。这些级别从低到高逐渐递进,代表了组织在过程管理、标准化、量化控制和持续改进等方面的不同发展阶段。
虽然SSE-CMM和CMM的关注点不同(一个是系统安全工程,一个是软件开发),但它们的最终目的都是帮助组织提升其在相应领域的能力水平。通过应用这些模型,组织可以更好地理解和管理其过程,提高产品质量和效率,降低风险和成本。
数据安全成熟度模型
是数据安全能力成熟度模型(Data Security Capability Maturity Model,简称DSMM),是一个用于衡量和提升组织数据安全能力的框架。以下是对数据安全成熟度模型(以DSMM为例)的详细解释:
DSMM是由阿里巴巴联合中国电子技术标准化研究院、国家信息安全工程技术研究中心、中国信息安全测评中心等业内权威机构联合编写的国家标准。该模型于2019年8月30日发布,2020年3月1日正式实施,其标准号为GB/T 37988-2019。DSMM旨在帮助组织系统地识别其数据安全实践的当前状态,并规划出改进步骤,以提升数据安全水平。
模型架构
DSMM模型架构主要包括三个方面:
五个成熟度等级:非正式执行级、计划跟踪级、充分定义级、量化控制级、持续优化级。
**四大安全能力维度:组织建设、制度流程、技术工具、人员能力。**这些维度明确了组织在数据安全领域应具备的能力。
七大数据安全过程维度:数据采集安全、数据传输安全、数据存储安全、数据处理安全、数据交换安全、数据销毁安全、通用安全。这些维度基于大数据环境下数据在组织机构业务中的流转情况,定义了数据生命周期的各个阶段。
软件安全能力成熟度模型(SSCMM)
是一个描述组织中为确保优质安全工程而必须具备的安全工程过程的基本特性的模型。
在软件工程领域,随着对软件安全性和质量的日益重视,许多组织和研究机构都在努力研究和开发新的方法和技术,以帮助开发人员更好地管理和提高软件的安全性和质量。SSCMM模型的出现,正是为了提供一个框架和指导,帮助组织评估和提高软件安全能力。
关键过程和实践
对于每个成熟度等级,SSCMM模型都定义了一系列的关键过程和实践。这些过程和实践是组织在该等级下需要关注和实施的重要活动,包括:
安全管理:确保软件安全性的基础,包括建立安全策略、制定安全规章制度、进行安全培训等。
风险评估:对软件系统进行全面的风险评估,识别潜在的安全威胁和漏洞。
安全编码:在软件开发过程中,采用安全编码实践,避免常见的安全漏洞。
渗透测试:通过模拟黑客攻击,对软件系统进行渗透测试,以发现潜在的安全漏洞。
安全审计:定期对软件系统进行安全审计,检查系统的安全性是否符合预期。
SSL (Secure Sockets Layer)
即安全套接层,是一种网络安全协议,主要用于在互联网上的服务器和浏览器之间建立加密链接,以保护数据传输过程中的隐私和完整性。
定义:SSL是一种为网络通信提供安全及数据完整性的一种安全协议。
原理:SSL协议的工作原理基于公钥和私钥系统。在SSL握手过程中,服务器会向客户端发送其公钥和一个证书,证书由一个可信的第三方(如VeriSign或DigiCert)签发,用于验证服务器的身份。之后,客户端和服务器会协商一个加密算法和密钥,用于加密和解密传输的数据。
SSL的应用场景
HTTPS:在Web浏览器和服务器之间的通信中,SSL被广泛用于实现HTTPS协议,从而保护用户隐私和数据安全。HTTPS握手过程是SSL/TLS协议的一部分,涉及多个步骤和密码套件的选择,以确保连接的安全性。
邮件协议:在邮件传输中,SSL或TLS可用于保护邮件内容的安全。例如,POP3、IMAP和SMTP等邮件协议都可以使用SSL/TLS来提供安全的邮件传输。
小程序与App:在开发小程序和App时,开发者需要确保网络通信的安全性。SSL证书可用于实现HTTPS加密传输,保护用户的隐私信息。
物联网IoT设备:随着物联网的普及,越来越多的IoT设备开始通过互联网实现远程控制和数据交换。SSL证书可用于为IoT设备提供身份认证和安全通信通道,保护设备与用户端之间的传输数据安全。
SSL证书的作用
加密数据:SSL证书会加密从用户计算机到目标网站并返回的数据,确保数据在传输过程中的安全性和隐私性。
身份认证:SSL证书由可信的第三方颁发机构签发,可用于验证服务器的身份,防止中间人攻击。
提升信任度:在网站上部署SSL证书可以消除浏览器的不安全提示,提高用户对网站的信任度。
TCP三次握手
在HTTPS握手之前,首先会进行TCP的三次握手,以确保客户端和服务器之间的连接稳定可靠。
第一次握手:客户端发送一个SYN(同步)数据包给服务器,表示希望建立连接。此时,客户端进入SYN_SEND状态,等待服务器的响应。
第二次握手:服务器接收到SYN数据包后,同意建立连接,并发送一个SYN-ACK(同步-确认)数据包给客户端。服务器此时进入SYN_RCVD状态。
第三次握手:客户端收到SYN-ACK数据包后,向服务器发送一个ACK(确认)数据包。此时,客户端和服务器都进入ESTABLISHED(已建立连接)状态,三次握手完成,可以开始数据传输。
HTTPS握手过程
在TCP连接建立后,HTTPS会进行其特有的握手过程,以确保通信的安全性。
ClientHello:客户端向服务器发送一个ClientHello数据包,其中包含客户端支持的SSL/TLS版本、加密组件(如加密算法、压缩方法等)以及一个随机数等信息。
ServerHello:服务器接收到ClientHello后,选择一个与客户端兼容的SSL/TLS版本和加密算法,并发送一个ServerHello数据包给客户端,确认连接的参数。
Certificate:服务器发送其数字证书给客户端,证书中包含服务器的公钥、证书的发布机构CA、有效期等信息。这一步是可选的,但通常用于身份验证。
ServerKeyExchange(可选):如果服务器选择的加密算法需要额外的密钥交换数据,服务器会发送一个ServerKeyExchange数据包给客户端。
ServerHelloDone:服务器告知客户端所有握手消息已发送完毕。
ClientKeyExchange:客户端根据服务器提供的证书和公钥,生成一个PreMasterSecret(预主密钥),并用服务器的公钥加密后发送给服务器。
ChangeCipherSpec:客户端和服务器各自使用PreMasterSecret和之前交换的随机数生成会话密钥,并切换到加密模式。客户端首先发送一个ChangeCipherSpec数据包,表示接下来的数据将使用新的加密密钥进行加密。
Finished:客户端和服务器各自计算并发送一个Finished数据包,其中包含使用会话密钥加密的握手消息的哈希值。双方通过验证Finished数据包来确认握手过程是否成功完成。
证书签名验证
CA公钥的作用:每个CA机构都拥有自己的公钥和私钥对。CA使用自己的私钥对证书进行签名,而客户端则使用CA的公钥来验证这个签名。
验证过程:
客户端接收到服务器发送的数字证书后,会首先提取出证书中的CA签名。
客户端使用预先内置或已获取的CA公钥对证书签名进行解密和验证。
如果解密后的信息与证书中的信息一致,说明证书是由该CA机构签发的,且未被篡改。
证书链的验证
证书链的概念:证书链是由多个证书组成的链式结构,从服务器的证书开始,一直延伸到根证书(由CA机构自己签发的证书)。
验证过程:
客户端会遍历整个证书链,从服务器的证书开始,逐级向上验证每个证书的签名。
每一级证书的签名都由上一级的证书(或根证书)的公钥进行验证。
最终,如果成功验证到根证书,说明整个证书链是可信的。