当前位置:   article > 正文

系统安全相关知识学习_系统安全学习

系统安全学习

系统安全相关知识学习


1. 系统安全是什么

一般人只有当系统被侵入之后才会意识到网络安全非常重要,往往看到问题的时候都只是表面现象,是否能够找到根本原因并进行修复,才是安全投入的关键

安全的本质就是保护数据被合法地使用,怎么才叫做被合法的使用呢?我们可以从机密性、完整性、可用性这三个方面具体来看,这三个方面也是安全领域最为基础的3个安全原则

安全原则:

机密性、完整性、可用性,我们可以简称为CIA三元组,是安全的基本原则

1.1. 机密性

机密性用一句话来说就是,确保数据只被授权的主体访问,不被任何为授权的主体访问,简单的来讲一个词总结:不可见,机密性的一个前提是明确授权规则,也就是明确每一项数据可以被什么样的主体访问

对于数据的处理过程,存储、传输这些也需要受到应有的保护,这些保护技术包括:加密、隔离、混淆、隐藏等。

当前机密性保护的要点是引导人们去做正确的事情,避免这类看似低级、实则普遍的漏洞发生

机密性强调的是数据的“不可见”,但这并不代表数据是正确的,比如,讲一个True存成了False,这就不是机密性需要考虑的事情了,而这种错误的存储,是完整性要去考虑的事情

1.2. 完整性

完整性就是确保数据只被授权的主体进行授权的修改,简单说就是“不可改

所谓授权的修改就是对主体可进行的操作进行进一步的限制,比如,只能追加数据的主体无法执行删除的操作。

在授权方面,机密性中提到的访问控制机制同样适用。除此之外,完整性更加强调对修改行为的日志记录,并有合适的监督机制进行审计。在保护技术方面,主要是利用加密、签名等技术,使得数据的完整性变得可验证。

机密性和完整性往往是同时出现的,当我们探讨安全问题的时候,要将这两者结合起来,放在一起来研究

1.3. 可用性

可用性就是确保数据能够被授权的主体访问到,简单来说就是可读

可用性在日常的运维过程中都有以下这些挑战

  • 在运维层面上,设备的冗余、机房冗余、灾备等都是保证运维层面的系统可用性
  • 在研发层面上,如何降低响应延迟,如何处理海量数据、如何在峰值进行扩容等,这些都是在开发过程中需要考虑的问题
  • 在攻击角度上,黑客也会对可用性发起攻击,也就是我们常说的DDoS攻击(拒绝服务工具),相当于发送大量的流量占满带宽资源

总结:

在互联网企业发展的初期,可用性的优先级较高,如果涉及资金相关的业务,完整性的优先级更高,如果涉及个人隐私的相关业务,则机密性的优先级高。

思考:

如果参加一个面试,我们面试架构师岗位,面试问到系统的安全性该如何设计,根据我们学习的CIA原理该如何回答这个问题?

2. 如何解决安全问题

对于系统安全问题的解决主要包含以下几部分:认证(Authentication)、授权(Authorization)、审计(Audit)、问责(Accounting)、识别(Identification),组成了4A法则

2.1. 身份识别和认证

认证强度由弱到强排序,分别是:

  • 你知道什么(密码、密保问题等)
  • 你拥有什么(门禁卡、安全令牌等)
  • 你是什么(生物特征、指纹、人脸、视网膜)

可信的身份认证是建立安全保障体系的第一步,如果身份认证被破解,则后续的保护或者补旧机制都无法起到太多的效果。因此很多时候通过衡量一个应用的认证安全等级来看出系统整体的安全水平。

2.2. 授权

在确认完你是你之后,要进行你能做什么的验证和访问能力的授予过程

2.3. 审计和问责

当你在授权下完成操作后,安全审计需要检查一下你做了什么,这个过程检查就是审计的过程,当发现你做了某些异常操作,系统会对你做的事情和操作进行记录,让你无法抵赖,后续对你进行相应的处罚,这个过程就是问责的过程。

审计和问责通常也是共同出现的一个过程,因为它们都需要共同的基础:日志,所谓审计就是通过日志还原出用户操作的历史,从而判断是否出现了违规操作。而问责则是通过日志的完整性,来确保日志还原出来的操作是可信的。

在授权中,需要平衡可用性和安全性,很多时候都会选择牺牲部分的安全保障,来降低使用成本。

问责是对审计结果的一个保障,当需要通过一定的法律手段解决问题时,通过审计可以提供充分的证据。

换一种方式来概括,可以这么理解:大部分情况下,事前防御属于认证,事中防御属于授权,事后防御属于审计

只有在可用性为0的情况下,我们才有可能实现接近100%的安全

3. 密码学基础:如何让你的密码变得“不可见”?

密码学的加密算法:对称加密算法、非对称加密算法和散列算法

3.1. 对称加密算法

密钥(yue)
在这里插入图片描述

我们常见的经典对称加密算法有DES、IDEA、AES、国密SM1和SM4

DES:密钥的长度为56位,如果暴力破解56位密码的时间,已经能够控制在24小时内,DES实际上是一个过时的密码学算法

IDEA:密钥长度128位,该算法没有专利限制

在DES被破解后,美国政府推出了AES算法,提供128位,192位,256位三种密钥长度的加密方式,通常情况下我们使用128位即可,既能保证足够的加密强度的同时,还能使性能不受影响

SM1算法不公开,属于国家机密,SM4属于国家标准,算法公开,可自行实现使用。

#密钥长度加密强度性能版权
DES56美国
3DES168美国
IDEA128瑞士
AES128、192、256美国
SM1128中国(算法保密)
SM4128中国(算法公开)

在选取机密算法的时候,存在不同的分组计算模式:ECB/CBC/CFB/OFB/CTR,正常使用的时候,一般选取CBC和CTR这两种模式就够了,就可以满足大部分需求了,在性能和安全性上都有较好的保证

3.2. 非对称加密算法

在这里插入图片描述

所有的非对称加密算法,都是基于各种数据理论来设计的,这些数学理论的特点是:正向计算很容易,反向推倒则无解。经典的非对称加密算法包括:RSA、ECC、国密SM2

RSA的数学难题是:两个质数a和b相乘得到n非常容易,但根据n反向推倒a和b则需要非常大的计算量,它的优势就是性能比较快,但想获得较高的机密强度,需要使用很长的密钥

160位密钥的ECC加密强度,相当于1088位密钥的RSA,因此ECC是目前国际上加密强度最高的非对称机密算法

#加密强度密钥生成性能加解密性能版权/专利
RSARSA公司
ECC争议中
SM2中国

非对称加密算法最大的优势就是解决密钥分发的问题,大部分的认证和签名场景,其实使用的都是非对称加密算法,比如SSH登录,Git上传,都可以将自己的公钥上传到服务器,然后由客户端保存私钥

3.3. 散列算法

大量的应用都在使用MD5或者SHA算法计算一个唯一id,很多情况下使用散列算法并不是满足加密需求,而是利用它对任意长度的输入,计算出一个定长的id

在密码学上,我们对散列算法的要求还有:鲁棒性、唯一性

经典的散列算法包括:MD5、SHA、国密SM3

MD5(消息摘要算法)可以用来生成一个128位的消息摘要,虽然因为算法的缺陷,它的唯一性已经被破解,但是如果不是应用存储长度受限,必须是32个字符,建议不要使用MD5

SHA(安全散列算法),目前SHA-256普遍被认为是安全的散列算法,也是比较推荐使用的

#长度冲突频率安全性性能
MD5128
SHA160、256
SM3256

4. 除了账号密码,我们还能怎么做身份认证?

身份认证,分为两个部分:对外认证和对内认证

对外认证其实就是应用的登录注册模块,它是面向用户进行认证,对外认证的入口比较集中,一个应用通常只有一个登录入口。因此我们可以在登录这个功能上,实现很多种认证方式,这就是前面讲到的“你知道什么,你拥有什么,你是什么”

除了应用本身需要有登录注册模块,应用的各种内部系统同样需要涉及登录认证的功能,比如:服务器的登录,数据库登录,Git登录,各种内部管理后台的登录等等。这就是我们说的对内认证

4.1. 身份认证主要面临哪些威胁

  • 无认证

    很多数据库、Redis、接口、消息队列、搜索引擎、管理后台都没有设置相应的认证机制

  • 弱密码

  • 认证信息泄露

http://haveibeenpwned.com #验证你的邮箱密码是否泄露
  • 1

4.2. 身份认证的安全怎么保证

对于安全问题,不只是在解决一个技术问题,还要培养外部用户和内部用户的安全意识。

可以通过单点登录的方式解决身份认证的问题

  • CAS流程
  • JWT
  • OAuth
  • OpenID

CAS的实现逻辑

在这里插入图片描述

JWT是一种非常轻量级的单点登录流程。

5. 访问控制,如何选取一个合适的数据保护方案

5.1. 访问控制模型

在这里插入图片描述

通过一个主体来请求相应的客体,请求的过程中进行访问控制

  • 主体:请求的发起者,主体可以是用户,也可以是进程、应用、设备的任何可以发起访问请求的来源
  • 客体:请求的接收方,一般是某种资源,比如某个文件、数据库、也可以是进程、设备等接受指令的实体。
  • 请求:主体对客体进行的操作。常规的是读、写和执行,也可以进一步细分为删除、追加等粒度更细的操作

5.2. 常见的访问控制机制

常见的访问控制规则,有以下四种

  • DAC(Discretionary Access Control,自主访问控制)

    DAC就是让客体的所有者来定义访问控制规则。DAC具有很高的灵活性,维护成本也很低。相对的DAC降低了管理员的工作难度,也会增加整体访问控制监管的难度,以至于安全性完全取决于所有者的个人安全意识。比如Linux中采用的就是DAC方式,用户可以控制自己的文件能够被谁访问

  • role-BAC(role Based Access Control,基于角色的访问控制)

    role-BAC就是将主体划分为不同的角色,然后对每个角色的权限进行定义。role-BAC是防止权限泛滥,因此role-BAC更适合管理员集中管理的时候进行使用

  • rule-BAC(rule Based Access Control,基于规则的访问控制)

    rule-BAC就是某种规则,将主体,请求和客体的信息结合起来进行判定。在rule-BAC适合在复杂场景下提供访问控制保护。

  • MAC(Mandatory Access Control,强制访问控制)

    MAC是一种基于安全级别标签的访问控制策略。基于机密性,不能低读、高写,基于完整性,不能高读、低写

访问控制特点关注对象适用场景案例
DAC自主控制关注客体的权限列表由用户自主控制权限Linux:用户自己控制所属文件是否允许别人访问
role-BAC基于角色关注主体的权限列表管理员进行集中权限管控公司内部的系统,管理员设计角色,并将用户分配到角色
rule-BAC基于规则关注主体、客体、请求的属性无法清晰的定义角色的复杂场景网路请求,主体和客体比较多,无法清晰划分角色时
MAC基于标签关注主体、客体、请求的标签能够对全部数据打上标签政府,军工企业,每一份数据和每一饿人都要有明确的机密等级

6. 威胁评估的步骤

在安全方案落地的过程中,我们首先要考虑的是:目前存在哪些安全威胁

威胁评估主要有三个步骤:识别数据、识别攻击、识别漏洞。

识别数据的目的:当发生攻击时,某一份数据的CIA受到影响时,会对公司造成多大的损失,这也是我们衡量安全投入高低的一个主要指标

识别攻击的目的:明确什么样的数据有价值被攻击,比如公开的数据,没有窃取的意义

识别漏洞:比如XSS、SQL注入、web漏洞

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/581341
推荐阅读
相关标签
  

闽ICP备14008679号