日益庞大的操作系统和应用导致系统中不乏出现错误。当错误涉及安全类别的时候,我们就称之为漏洞。通过向软件输入特定的字节来触发错误。像这种触发错误的输入通常叫做漏洞攻击或者漏洞利用。

攻击可以通过病毒,手动或者自动的执行漏洞攻击。

9.1 环境安全

术语“安全”来表示所有的基本问题,用术语“防护机制”来表示特定的操作系统机制来确保计算机信息安全。

9.1.1 威胁

第一目标是数据保密,这种执行的力度应该精确到文件。
第二个目标是数据的完整性,是指未经授权的用户没有得到许可就擅自改动数据。
第三个目标系统可用性,是指没有人可以扰乱系统是指瘫痪

安全和防护上所做的努力应该取决于针对哪一类型入侵者。

9.2 操作系统安全

一般来说,我们将攻击分为被动攻击和主动攻击。

  • 被动攻击试图窃取信息。
  • 主动攻击会使计算机程序行为异常。

加密是将一个消息或者文件进行转码,除非获取秘钥,否则很难恢复原厂消息。程序加固是指在程序中加入保护机制从而使得攻击者很难破坏程序。

9.2.1 可信系统

9.2.2 可信计算基

在安全领域中,人们通常讨论可信息系统而不是安全系统。

每个可信息头的核心是最小的可信安全基(TCB),其中包含了实施所有安全规则所必须的硬件和软件,如果这些可信的计算基根据系统规约工作,那么,无论发生什么错误,系统安全性都不会受到威胁。

典型的TCB包含了大多数硬件。

TCb的一个重要组成部分是引用监视器。

9.3 保护机制

9.3.1 保护域

计算机系统中有许多需要保护的"对象",这些对象可以是硬件(如CPU、内存页、磁盘驱动器或者打印机)或软件(如进程、文件、数据库和信号量)

域是一对(对象,权限)的组合。
一个基本的原则是最低全新原则(POLA),一般而言,当每个域都拥有最少数量的对象和满足其完成工作所需的最底全新时,安全性将达到最好。

UNIX中,进程的域是由UID和GID定义的。给定某个(UID,GID)组合,就能得到可以访问的所有对象列表(文件,包括由特殊文件代表的IO设备等),以及它们是否可以读,写或执行。

每个UNIX进程由两部分——用户部分和核心部分。当执行系统调用时,进程从用户部分切换到核心部分。核心部分可以访问与用户部分不同的对象集。这样,系统调用就引发域切换。

一个很重要的问题是系统如何跟踪并确定哪个对象是属于哪个域的。下面有两个方法来确定,分别是访问控制列表和权能。

9.3.2 访问控制列表

  1. 第一种方法包括一个关联于每个对象的(有序)列表里,列表里包含了所有可访问对象的域以及这些如何访问这些对象的方法,这个列表叫做访问控制表。用户被叫做主题,以便与它们所拥有的对象(如文件)区分开来。

每个文件都有一个相关联的ACL。文件F1在ACL中由两个登录项(用逗号区分)。请注意这里的权限是用户赋予的,而不是进程。ACL登录项不只针对个人,还可以针对用户组。

在这样的条件下,当出现要求访问对象的请求时,必须使用调用者的UID和GID来进行检查。如果它们出现在ACL中,所列出的权限就是可行的。如果(UID,GID)的组合不再列表中,访问被拒绝。

在有些情况下,用户可以访问特定的文件而与当前登陆组无关。这样的情况下将引入通配符的概念。其缺点在于几乎没有任何封装性。

9.3.3 权能

  1. 一种方法是按行存储,使用这种方法的时候,与每个进程关联的是可访问对象列表,以及每个对线上可执行操作的指示。这一栏叫做全能字列表,而且每个单独的项目叫做权能字。每一个权能字赋予所有者针对特定对象的权限。一个权能i通常包含了文件i(更一般的情况是对象)。权能字本身也是对象,也可以从其它权能字列表处指定,这样就有助于共享子域。


很明显权能字列表必须防止用户进行篡改。目前有三种已知的保护方法:

  1. 建立带标记的体系结构(硬件层面实现)
  2. 在操作系统里保存权能字列表(操作系统)
  3. 把权能字列表放在用户空间,并用加密方式进行管理

9.4 安全系统的形式化模型

保护矩阵往往不是静态的,它们通常随着创建新的对象、,销毁旧的对象而改变,而且所有者决定对线的用户集的增加或限制。

保护矩阵决定了在任何域中的一个进程可以执行那些操作,而不是被授权执行哪些操作。矩阵是由系统来强制的,而授权与管理策略有关。

在一个不定的保护系统的补丁配置中,其安全性从理论上来说是不确定的。

9.4.1 多级安全

大多数操作系统允许个人用户来决定谁可以读写它们的文件和其他对象。这一策略成为可自由支配的访问策略。这类环境需要强制性的访问控制来确保所阐明的安全策略被系统强制执行,而不是可自由支配的访问控制。这些强制性的访问控制管理整个信息流,确保不会且泄露那些不应该泄露的信息。

Bell-la和Biba

9.4.2 隐蔽信道

协作程序能够通过仔细地监控响应时间来检测位流。一般而言,当服务器发送出0时的响应时间比发送出1时的响应要好一些。这种通信方式叫做隐蔽信道。

获取和释放特定资源也可以作为信号方式。

9.4.3 隐写术

不同于隐蔽信道能够在进程间传递机密信息,即人为或者自动的审查监视着进程间所有通信并禁止可疑的数据传递。

9.5 密码学原理

加密的目的是将明文—也就是原始文件或者文件,通过某种手段转变为密文。

在算法中使用的加密参数叫做密钥,如果P代表明文,则Ke代表加密密钥,C代表密文,E代表加密算法,那么C=E(P,Ke)。一般认为,加密算法应该完全公开,而加密的安全性由独立于加密算法之外的密钥决定。

9.5.1 私钥加密技术

许多类似的密钥系统都有这样的一个特点,那就是给定了加密密钥能够较为容易的找到解密密钥,反之亦然。这样的系统采用了私钥加密技术或对称密钥技术。虽然但字母替换方式每一使用价值,但是如果密钥由足够的长度,对称密钥机制还是比较安全的。

9.5.2 公钥加密技术

由于对信息进行加密和解密的运输量是可以控制的,所以私钥加密体系是十分有用的。但是它也有一个缺陷:发送者与接受者必须同时拥有密钥。他们甚至必须有物理上的接触,才能传递密钥。为了解决这个矛盾,人们引入了公钥加密技术。这一体系的特点是加密密钥和解密密钥是不同的,并且给出了一个筛选过的加密密钥后不能被推断出解密密钥。这种特性下,加密密钥可以被公开而只有解密密钥处于秘密状态。

通过不对称性的算法来解决。

9.5.3 单向函数

加密散列函数(循环每次加密提娜佳一个不同的常数)

9.5.4 数字签名

数字签名的目的:通过数字签名可以保证发送方不可抵赖。起一个通用的使用方法是首先对文档运行一种单项散列运算,这种运算几乎不可逆。

文件所有者利用其私钥对散列值进行运算得到D(散列值),该值成为签名块,它被附加在文档之后发送给接收方。解密计算后的散列值与签名块中的散列值不一样,则表明,要么文档,要么签名块,要么两者都篡改过。

这种方法仅对E(D(x))=x 且 D(E(x))=x的函数其效果。也就是说,D和E是可交换函数。

要采用这种机制,接收方必须知道发送方的公钥。

消息发送方的一种常用方法是在消息后附加数字证书,证书中包含了用户姓名,公钥和可信任的第三方数字签名。一旦用户获得了可信的第三方认证的公钥,那么对于所有使用这种可信第三方确认来生成自己证书的发送方,该用户都可以使用它们的算法。

9.6 认证

每一个安全的计算机系统一定会要求所有的用户在登录的时候进行身份认证。

大多数用户认证基于以下三个方面考虑:

  1. 用户已知的消息
  2. 用户已有的消息
  3. 用户是谁

9.6.1 使用物理识别的认证方式

9.6.2 使用生物识别的认证方式

9.7 软件漏洞

入侵用户计算机的主要方式之一是利用系统中运行的软件的漏洞,使其做一些违背程序员本意的事情。

9.8 内部攻击

防止登陆欺骗的唯一使用的办法是将登陆序列与用户程序不能捕捉的键组合起来。Windows为此目的采用了Ctrl-Alt-Dek.如果用户坐在终端前按该组合键,则当前用户就会被注销然后重新启动登陆顺序。没有任何办法可以跳过这一步。

9.9 恶意软件

闪存可以在程序的控制下被重写(以便生产者可以方便地休整期错误)。恶意软件向内存中随机地写入垃圾数据,使得电脑无法启动。

9.9.1 特洛伊木马

9.9.2 病毒

1.病毒工作原理

2.共事者病毒

病毒不感染程序,但是程序执行时病毒也执行。(病毒能够改变连接的目标,并指向病毒本身。当用户双击目标时,病毒就会运行,运行完毕之后病毒有会启动正常的目标程序)

3.可执行程序并等待

4.内存驻留病毒

内存主流病毒总是驻留在内存中(RAM),要么隐藏在内存上端,要么藏在下端的终端变量里。典型的内存驻留病毒通过把陷阱或中断向量中的内容复制到任意变量中之后,将自身的地址防止其中,俘获陷阱或中断向量,从而将该陷阱或中断指向病毒。

5.引导扇区病毒

6.设备驱动病毒

设备驱动程序被寄生病毒感染,则在每次启动时被光明正大的载入。而且,当驱动程序运行在核心态下,一旦被家在就会调用病毒,从而给病毒获取系统调用的陷阱向量的机会。

7.宏病毒

宏程序是解释指向而不是便一致性,但解释指影响其运行速度而不影响其执行效果。

8.源代码病毒

9.病毒如何传播

9.9.3 蠕虫

从技术上将,蠕虫包含了两部分程序,引导程序和蠕虫本身。引导程序是在被攻击的计算机上编译运行。一旦发作,它就在源计算机和宿主机上连接。上传病毒主题并运行,然后查看是否能连接到其他计算机上。

9.9.4 间谍软件

一种主要的感染途径是下载驱动,仅仅访问网页就可能感染间谍软件。首先,网页将浏览器导向一个可执行文件,当浏览器访问该文件时,会弹出一个对话框让用户运行或保存。

9.10 防御

9.10.1 防火墙

防火墙有两种基本的类型,硬件防火墙和软件防火墙。有局域网需要保护的公司通常选择硬件防火墙,而家庭个人的用户通常选择软件防火墙。

防火墙根据一些规则来配置,这些规则描述什么是允许的,什么是不允许的。防火墙的管理者可以修改这些操作。

9.10.2 反病毒和抑制反病毒技术

现代操作系统: 第九章 安全相关推荐

  1. 操作系统-第九章虚拟内存

    操作系统-第九章虚拟内存 虚拟内存 内存共享 按需调页 虚拟存储需要解决的几个问题 页表中须指明对应的页是否在内存中 如何具体的区分当发生页错误时 page is invalid or isvalid ...

  2. 汤晓丹的第四版计算机操作系统--第九章总结概述

    第九章 操作系统接口 管道命令:人们又进一步把重定向思想加以扩充,用符号"|"来连接两条命令,使其前一条命令的输出作为后一条命令的输入. 在计算机系统中设置了两种状态:系统态(或称 ...

  3. 操作系统--第九章 操作系统接口--习题答案

    操作系统第四版课后的全部习题答案,学习通作业答案. 说明:操作系统其他章节的习题答案也在此"操作系统"专栏. 第九章 1.系统安全的复杂性表现在哪几个方面? 答:(1)多面性:大规 ...

  4. 操作系统 第九章 死锁

    本章考核知识点 :1.死锁的产生 2.死锁的防止 3.死锁的避免4.死锁的检测 本章自学要求 :理解"死锁"影响系统的可靠性.死锁的产生与进程对资源的需求.进程的执行速度.资源的分 ...

  5. 操作系统第九章笔记---存储管理

    本文内容整理自西安交通大学软件学院田丽华老师的课件,仅供学习使用,请勿转载 操作系统系列笔记汇总:操作系统笔记及思维导图汇总附复习建议_Qlz的博客-CSDN博客 文章目录 文章目录 文章目录 思维导 ...

  6. 北大陈向群操作系统第九章知识点

    磁盘地址:柱面号-磁头号-扇区号 磁盘访问:寻道时间 延迟时间 数据传输时间 成组链接法:文件存储空间管理方法 引用一篇好博客 https://blog.csdn.net/smartab/articl ...

  7. 《操作系统真象还原》第九章

    <操作系统真象还原>第九章 本篇对应书籍第九章的内容 本篇内容介绍了线程是什么,多线程的原理,多线程用到的核心数据结构,以及通过代码实现了内核多线程的调度 线程是什么? 执行流 过去,计算 ...

  8. 慕课嵌入式系统(第九章.ucos-ii操作系统实验)

    慕课电子科技大学.嵌入式系统.第九章.嵌入式实时操作系统实验.ucos-ii操作系统实验 0 目录 9 嵌入式实时操作系统实验 9.1 ucos-ii操作系统实验 9.1.1课堂重点 9.1.2测试与 ...

  9. 操作系统概念笔记——第九章:虚拟内存

    文章目录 第九章:虚拟内存 9.1 背景 9.2 按需调页 9.2.1 基本概念 9.2.2 按需调页的性能 9.3 写时复制 9.4 页面置换 9.4.1 基本页置换 9.4.2 FIFO页置换 9 ...

  10. 操作系统导论 第九章 调度:比例份额

    文章目录 第九章 调度:比例份额 9.1 基本概念:彩票数代表份额 9.2 彩票机制 9.3 实现 9.4 步长调度 9.5 小结 第九章 调度:比例份额 在本章,我们将看到一个不同类型的调度程序–比 ...

最新文章

  1. 学好python可以做什么兼职-自学Python能干些什么副业
  2. 前端笔记之NodeJS(四)MongoDB数据库Mongoose自制接口MVC架构思想|实战
  3. Android studio 如何查看当前git 分支的4种方式
  4. javaScript面向对象编程学习(二)
  5. html自动切换文字,JS实现自动切换文字的导航效果代码
  6. 红魔3电竞手机配置进一步曝光 电池容量不低于5000mAh
  7. 【数据结构与算法基础】队列、栈、递归
  8. 【设计模式】 模式PK:命令模式VS策略模式
  9. linux 自动安装脚步,linux自动安装lnmp脚步
  10. docker-compose+postsql多容器部署django-vue项目
  11. matlab拟合例子,MATLAB数据拟合例子
  12. 搞学术不完全指北【包括谷歌学术镜像、论文工具、Wiki、SCI-HUB文献下载、翻译等】
  13. LinkedList源码浅析
  14. 二叉树【按层打印、序列化、反序列化】
  15. 老生常谈之Android里的dp和sp
  16. 如何批量将多个 PPT 文档中的图片提取出来
  17. Android安全性优化——APP加固
  18. Mysql下更改数据库密码
  19. Xcode7折叠与展开代码
  20. IBM专家畅谈未来存储十大挑战

热门文章

  1. linux下jenkins安装
  2. mysql 源代码学习 博客 [lock..]
  3. 页面中嵌入了Flash时滚动条问题
  4. 计算机专业的书普遍都这么贵,Github上的计算机电子书很多~~~
  5. Python学习资源 | 3个高性能开源计算机视觉库
  6. qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...
  7. 计算机课真多,为什么有这么多的学习资源和在线课程,依然无法提升自己的能力...
  8. java json相加_JAVA,当某个json数据中一个字段与另一个json数据中的字段值相同时,对两个json进行合并且相加,...
  9. 隐藏画质代码_【和平精英】变成恐怖精英?玩家在墙上发现了一幅隐藏的壁画!...
  10. php中data(,如何使用php中的data函数