系统安全相关知识学习

文章目录

  • 系统安全相关知识学习
  • 1. 系统安全是什么
    • 1.1. 机密性
    • 1.2. 完整性
    • 1.3. 可用性
  • 2. 如何解决安全问题
    • 2.1. 身份识别和认证
    • 2.2. 授权
    • 2.3. 审计和问责
  • 3. 密码学基础:如何让你的密码变得“不可见”?
    • 3.1. 对称加密算法
    • 3.2. 非对称加密算法
    • 3.3. 散列算法
  • 4. 除了账号密码,我们还能怎么做身份认证?
    • 4.1. 身份认证主要面临哪些威胁
    • 4.2. 身份认证的安全怎么保证
  • 5. 访问控制,如何选取一个合适的数据保护方案
    • 5.1. 访问控制模型
    • 5.2. 常见的访问控制机制
  • 6. 威胁评估的步骤

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属于国家标准,算法公开,可自行实现使用。

# 密钥长度 加密强度 性能 版权
DES 56 美国
3DES 168 美国
IDEA 128 瑞士
AES 128、192、256 美国
SM1 128 中国(算法保密)
SM4 128 中国(算法公开)

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

3.2. 非对称加密算法

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

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

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

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

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

3.3. 散列算法

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

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

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

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

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

# 长度 冲突频率 安全性 性能
MD5 128
SHA 160、256
SM3 256

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

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

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

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

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

  • 无认证

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

  • 弱密码

  • 认证信息泄露

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

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漏洞

系统安全相关知识学习相关推荐

  1. linux系统基础知识学习笔记

    /  根分区 boot 系统引导程序(内核,GRUB配置文件等) bin  存放终端二进制命令 etc 系统配置文件(大多数配置文件都是文本文件) dev  存放设备文件(系统将计算机中的各种设备资源 ...

  2. 嵌入式系统的知识体系、学习误区及学习建议

    嵌入式系统的知识体系.学习误区及学习建议 1.嵌入式系统的知识体系     嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计 ...

  3. 基于微信小程序的育教幼教知识学习系统 计算机毕业设计源码

    随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作.生活不可或缺的工具,各种管理系统层出不穷.时代对人们的知识水平和综合素质要求也越来越高了,因此出现了各种适合用户在线学习系统 ...

  4. 飞机订票系统c语言大作业,C语言知识学习飞机订票系统

    C语言知识学习飞机订票系统 课程设计 课程:数据结构 专业班级:xx软件工程 xx班 姓名:xx 学号:xxx 姓名:xxx 学号:xxx 设计时间:xxx 指导老师:xxx 课程设计题:飞机订票系统 ...

  5. (附源码)计算机毕业设计ssm古诗词知识学习系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  6. 计算机毕业设计ssm古诗词知识学习系统q5697系统+程序+源码+lw+远程部署

    计算机毕业设计ssm古诗词知识学习系统q5697系统+程序+源码+lw+远程部署 计算机毕业设计ssm古诗词知识学习系统q5697系统+程序+源码+lw+远程部署 本源码技术栈: 项目架构:B/S架构 ...

  7. 基于SSM+JSP实现的流浪猫狗救助系统(分为用户端和管理员端,领养动物、流浪动物知识学习、用户管理、评论管理、领养记录查询、流浪猫狗管理等)

    博客目录 基于SSM+JSP实现的流浪猫狗救助系统 实现功能截图 系统功能 使用技术 完整源码 基于SSM+JSP实现的流浪猫狗救助系统 本系统是一个流浪猫狗救助系统,分为用户端和管理员端,用户端可以 ...

  8. Linux运维工程师学习:Linux系统基本知识

    Linux系统基本知识 一. Linux基本概念 二. 学习LINUX用户管理和文件结构部分 2.1 /etc/passwd与/etc/group 2.2 建立用户组的意义及在Oracle及服务器中的 ...

  9. [附源码]Java计算机毕业设计SSM古诗词知识学习系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

最新文章

  1. webpack打开项目命令_webpack前端模块打包工具基本使用的详细记录(一)
  2. TNS-01201: Listener cannot find executable /u01/oracle/bin/extproc for SID orcl Listener failed to
  3. 关于鸿蒙 2.0,那些开发者不知道的一切
  4. linux扫描hba卡命令,如何在redhat中查看HBA卡的信息
  5. visual foxpro 程序员指南_如何平衡工作和生活的关系?程序员归来依旧是少年的好方法...
  6. html鼠标悬停盒子凸起,css3 transform动画鼠标悬停div容器凸起放大显示
  7. Oracle MAF中的LOV
  8. leetcode14. 最长公共前缀
  9. Vue权限控制——动态注册路由
  10. android实现截图功能吗,Android实现拍照截图功能
  11. delphi 线程安全list_Java的中的集合(容器)-List
  12. window.location.hash属性介绍
  13. C# 文件查询管理器
  14. 如何在不支持双面打印的打印机上实现双面打印
  15. Unable to run mksdcard SDK tool
  16. [渝粤教育] 信阳师范学院 奥尔夫音乐教育 参考 资料
  17. 服务器和交换机物理连接_什么是光纤交换机?有什么功能?
  18. 数据库连接池连接耗尽,导致tomcat请求无响应,呈现出假死状态
  19. mysql中的分隔符有哪些_MySQL中的分隔符
  20. 为什么要有虚拟内存?

热门文章

  1. 做项目和做产品有什么区别
  2. 无人驾驶真体验!老百姓都能打得到的“共享无人车”来了
  3. ReactNative连接android模拟器
  4. win7 访问局域网共享文件时提示输入网络凭据 设置开机免输入凭证进入共享盘设置
  5. Live Love(思维)
  6. 怎么用云服务器搭建游戏,搭建游戏用什么云服务器
  7. 微信小程序如何做营销推广?
  8. Android实现仿制手机卫士的一键加速的百分框
  9. fork函数产生进程
  10. 如何找到隐式转换的SQL?