操作系统的安全管理_安全操作系统设计技术(tcb)-程序员宅基地

技术标签: OS  操作系统  安全管理  

总结学习操作系统当中的一些知识点,这篇博客只要是基于Linux的系统安全管理的一些基本概念以及设计思路。

主要知识来源于费祥林老师的操作系统基础一书,以及网络上的部分知识。初学者,存在不足望指正。

关于OS的一些基本概念:

计算机的可靠性:指系统正常运行的程度,其目标是反故障。

安全性:指不因人为疏漏或蓄谋作案而导致信息资源泄露、篡改和破坏,其目标是反泄密。

可靠性是基础,安全性更为复杂。

 

一般来说,信息系统的安全模型设计管理和实体安全性、网络通信安全性、软件系统安全性和数据库系统安全性。

 

操作系统安全性:

1.安全策略:描述一组用于授权使用计算机的以及其信息资源的规划。

2.安全模型:精确描述系统安全策略,对系统安全需求以及如何设计和实现安全控制的一个清晰而全面的理解和描述。

3.安全机制:实现安全策略所描述的安全问题,关注如何实现系统的安全性,包括内容有认证机制,授权机制,加密机制,审计机制和最小特权机制。

 

操作系统安全威胁来源:

1.硬件   2.软件   3.数据   4.网络和通信线路


安全策略

安全需求和安全策略

安全需求:机密性;完整性;可记账性;可用性;

安全策略:是指用于授权使用计算机及信息资源的规则,即有关管理,保护,分配和发布系统资源和敏感信息的规定和实施细则。

其目的是使安全需求得到保障。

 

根据计算机信息系统的应用场合,可将安全策略分为以下两类:

1.军事安全策略

2.商业安全策略

对于制作安全策略涉及问题,可以将安全系统分为以下两类:

1.访问支持策略(反映可记账性和可用性要求)

2.访问控制策略(反映机密性和完整性需求)

 

 

可信计算基

计算机系统内安全保护装置的总体,包括硬件,固件,可信软件和负责执行安全策略的管理员在内的组合体,统称为可信计算基(Trusted computing base  TCB

TCB的组成部分:操作系统的安全内核,具有特权指令的程序和命令,处理敏感信息的程序,实施安全策略的文件,相关硬件和设备,机器诊断程序,安全管理员等。

 

TCB 能完成的任务:

1.内核的安全运行

2.标识系统中的用户

3.保持用户到TCB登录的可信路径

4.实施主体到客体的访问控制

5.维护TCB功能的正确性和监视以及记录系统中所发生的事件



引用监视程序


在一个引用监视程序中,操作系统将无源的资源隔离到截然不同的客体如文件、运行中的程序活动条目,引用监视程序机制(叫做引用有效机制)将会通过应用一个嵌入在一套访问控制规则中的安全策略确认在活动主体和客体之间的访问。按照这种方法,程序访问系统资源(如文件)可以被限制到那些符合安全策略的访问,访问控制决定基于每个活动主体和客体的安全属性,安全属性指活动主体/客体与安全有关的特性。例如:在标准的Linux中,活动主体(即进程)有真实有效的用户标识,客体(如文件)有访问许可模式,由许可模式决定进程是否可以打开某个文件。


目标

防止窜改(不能恶意改变或修改)

无旁路(活动主体不能避免访问控制决定)

可验证(可以证明安全策略实现是正确的)

访问支持策略

一、标识与鉴别

  用户标识

  用户鉴别

标识和鉴别用于保证只有合法用户才能进入系统和访问资源。

三类信息用于用户标识与鉴别:

1.用户知道的信息,如口令和密码

2.用户拥有的物品.如智能卡和钥匙

3.用户的生物特征,如签名,指纹,语音和虹膜。

 

二、可记账性

三、客体重用

四、隐蔽信道分析

存储隐蔽信号和时间隐蔽信号

五、可信路径和可信恢复

 

访问控制策略

1.访问控制属性:在计算机信息系统当中,访问控制(access control)是规范和控制主体访问本系统中客体的决策和实施过程,与访问控制策略的相关因素有三个:主体,客体,主客体属性。

主体是主动实体,系统行为的发起者。

客体是被动实体,系统内所有实体行为的直接承担者。

主客体属性,又称敏感标记或标记,是TCB维护与可被外部主体直接或间接访问到的计算机信息系统相关的安全标记,是实施自主或强制访问的基础。

信息系统的安全决策就是通过比较主客体的相关属性来制定的

用户与主体绑定。

 

2.自主访问控制策略

  自主访问控制策略是指主体对客体的访问权限只能由客体属主或超级用户指定或更改。

 

3.强制访问控制策略

  强制访问策略是由安全管理员按照一定规则分别对系统中的主体和客体赋予安全标记,且基于特定强制访问规则来决定可否访问。

 

 

安全模型

安全模式是对安全策略所表达的安全需求的一种精确,无歧义的抽象描述,在安全策略和安全机制的关联之间提供一种框架。

安全模式示例:

1.lampson访问控制矩阵模型

2.Graham-denning模型

3.Bell-lapadula模型

4.D.Denning信息流模型

 

安全机制

安全机制的主要目标是根据安全策略对用户的操作进行控制,防止用户对系统资源的非法存取;标识系统中的用户并对其进行身份鉴别;监督系统运行的安全性;保证系统自身的安全性。

 

一、硬件安全机制

1.内存保护

2.运行保护

3.I/O保护

 

认证机制

1.用户身份的标识与鉴别

2.Linux系统的标识和鉴别

3.Kerbros网络身份认证

 

 

授权机制

1.授权机制的功能和安全系统的模型

2.自主访问控制机制

3.强制访问控制机制

4.最小特权管理机制

 

 

加密机制

1.数据加密模型

2.基于密钥的算法分类

3.计算机密码算法

4.数字签名

5.网络加密

 

审计机制

1.审计事件

2.审计记录和审计日志

3.审计机制的实现

4.审计缓冲区的设计

 

 

 

安全操作系统设计和开发

一、安全操作系统结构和设计原则

安全操作系统是指能对所管理的数据和资源提供适当的保护级以便有效的控制软硬件功能的操作系统。

 

计算机软件分为以下三类:

可信软件;良性软件;恶意软件。

 

二、安全操作系统的一般开发方法

主要有两种方法,一是自设计开始就建立完整的安全操作系统开发,而是在现有的非安全操作系统上增强和引入安全机制,形成安全操作系统。基于第二种方法开发,一般有以下三种方法:

1.虚拟机法。

在原有操作系统和硬件之间增加一个分层作为安全内核,操作系统几乎不变的变为虚拟机运行,安全内核的接口同原有硬件接口等价,其自身并未意识到已被安全内核所控制,仍然像是在裸机上一样执行自己的系统功能,所以,它可以不变的去支持现有的APP。(IBM系列机中运行应用广泛,因为IBM系列机很好的支持虚拟机。)

2.改进/增强法

  在原有你的OS之上,对其内核以及应用程序进行面向安全策略的分析,引入安全机制,经过这样改造之后的系统基本保持原通用操作系统的用户接口。这种方法最大的局限性是在于现有体系结构和应用程序的限制,难以达到较高的安全级别。

3.仿真法

  对现有的操作系统的内核做面向安全策略的修改,在安全内核和原操作系统的用户界面在编写一层仿真程序,这样就不会受现有的程序的限制,但采用这种方法受到上层通用操作系统的接口限制,另外,有些接口功能不安全,不能仿真,以及部分接口仿真难度极大,难以实现。

 

一般开发步骤:

1.系统需求分析:描述各种安全需求

2.系统功能描述:准确的定义应实现的安全功能,包括描述验证,即证明描述与需求分析相符。

3.系统设计实现:设计并建立系统,包括实现验证,即论证实现与功能描述相符。

 

三、安全功能与安全保证

   安全功能的10个安全元素:标识与鉴别,自主访问控制,标记,强制访问控制,客体重用,审计,数据完整性,可信路径,隐蔽信道分析和可信恢复。

   安全保证涵盖三个方面:

   1)可信计算基自身安全保护,包括安全功能模块,资源利用,可信计算基访问等

   2)可信计算基的设计和实现,包括配置管理,分布和操作,开发,指导性文档,生命周期支持,测试,脆弱性评定等。

   3)可信计算基安全管理。

 

四、安全操作系统设计技术

(1)隔离技术:将系统中用户进程和其他用户进程隔离开(物理分离,时间分离,密码分离,逻辑分离)

(2)安全内核:安全内核通过对系统资源的访问来实现基本安全规程的操作系统内核中相对独立的一部分程序,它在硬件和操作系统功能模块之间提供安全接口,凡是与安全有关的功能和机制都必须被隔离在安全内核之中。

安全内核的设计和实现需要符合下述三条基本原则:

完整性;隔离线;可验证性。

也需要监控四种交互活动:

进程激活;区域切换;存储保护;I/O操作;

(3)分层设计:层次分级适用于将安全内核分离的安全操作系统的设计,自内存至外层可想象为同心圆结构,越敏感的软件越是处于内层,反之是处于外层;越是内层的信息越可信,反之是越不可信。

 

 

 

 

 

Linux安全机制

Linux基本安全机制

  1)标识与鉴别

  2)存取控制

  3)审计

  4)特权管理

  5)网络安全

  6)其他安全机制(加密和解密,备份和恢复)


这篇博客简单介绍一下OS的安全管理部分,后续还会有相应博文。

Thanks for your reading.





版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/vito_bin/article/details/72852233

智能推荐

acwing 语法基础刷题 (第一讲习题)python C/C++ 第二天_"print(\"volume = %.3f"-程序员宅基地

文章浏览阅读230次。605. 简单乘积//C++版本 #include <bits/stdc++.h>using namespace std;int main(){ int a,b,X; cin>>a>>b; X=a*b; printf("PROD = %d",X); return 0;}#python版本a=int(input())b=int(input())print("PROD = %d"%(a*b))611. 简单计算/_"print(\"volume = %.3f"

[INFO] [copilotIgnore] inactive,github copilot没反应怎么解决_copilot no completions were found-程序员宅基地

文章浏览阅读1.9k次。这种情况下就是它的激活出现了问题,如果账号的使用权没有问题的话,就将该插件disable之后再重新enable,重新观察输出,就会看到copilot在重新链接引擎了,一次不行就多进行几次。在使用github copilot的时候,插件不工作,后台出现了这种输出,然后就能重新使用了,_copilot no completions were found

antd日期:禁止选择当天之前的日期_ant日期组件如下禁用当前之前的时间-程序员宅基地

文章浏览阅读175次。1、年月日——日期禁止当天之前的,不包括当天的(带有时间的除外)2、年月日——日期禁用当天之前的(包括当天的)_ant日期组件如下禁用当前之前的时间

在有序的数列中插入若干个数,使得数列再插入过程中始终保持有序s发_有序的数列中插入若干个数,每插入一个数都要保持有序。-程序员宅基地

文章浏览阅读3.2k次。题目的意思是:一个有序的数列中插入一个数,这个数列依然是有序的。1 3 5 7 9 当插入6时,数列应当变成这样1 3 5 6 7 9算法:原数组从最后一个数开始与number相比较。 如果number大于最后一个数,那么number就会插入到最后一个数后面 (array[j+1]=number),而且比较在这里就会结束了。程序中使用br..._有序的数列中插入若干个数,每插入一个数都要保持有序。

一个例子来全面比较一下传统测试与敏捷测试的区别_敏捷测试与传统测试的区别-程序员宅基地

文章浏览阅读1.2k次。这一讲的内容我想通过一个例子来全面比较一下传统测试与敏捷测试的区别,这个例子来自一本书——《凤凰项目:一个 IT 运维的传奇故事》。这是由美国的三位 DevOps 专家撰写的一本关于 IT 运维的小说。有人说,在 IT 咨询业,没读过这本书都不好意思跟人家谈 DevOps。别急,我们这一讲的重点的确不是 DevOps,而是比较传统测试与敏捷测试,一千个人眼里有一千个哈姆雷特,尽管大家对 DevOps 有不同的理解,但是,你要知道,DevOps 其实是敏捷开发向 IT 运维的自然延伸,它的原则和实践与_敏捷测试与传统测试的区别

VS2015中QT VS TOOLS Open Qt Project file 无反应报错Cannot run compiler 'cl'. Maybe you forgot to setup the_vs2015 qt tools 报错cmd32.exe-程序员宅基地

文章浏览阅读4.5k次。用VS2015中QT VS TOOLS 的Open Qt Project file 选项打开qt工程报错(Import): Generating new project of liteidex.pro file(qmake) : Using: C:\QT\QT5.9.1\5.9.1\MSVC2015\bin\qmake(qmake) : Working Directory: C:\_vs2015 qt tools 报错cmd32.exe

随便推点

旋转目标检测非极大抑制库报错 No such file or directory: ‘:/usr/local/cuda-11.7:/usr/local/cuda-11.7/bin/nvcc‘_warnings.warn(msg.format('we could not find ninja.-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏6次。【代码】[Errno 2] No such file or directory: ‘:/usr/local/cuda-11.7:/usr/local/cuda-11.7/bin/nvcc‘_warnings.warn(msg.format('we could not find ninja.'))

011——人体感应模块驱动开发(SR501)_人体传感器csdn-程序员宅基地

文章浏览阅读888次,点赞16次,收藏14次。人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10uM 左右的红外线,被动式红外探头就是靠探测人体发射的 10uM 左右的红外线而进行工作的。人体发射的 10uM 左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。人体红外模块是一种能够检测人或动物发射的红外线而输出电信号的传感器。广泛应用于各种自动化控制装置中。_人体传感器csdn

(c++)vector——find方法的使用_vector find-程序员宅基地

文章浏览阅读3.9w次,点赞14次,收藏32次。## vector _find方法的使用 不同于map(map有find方法),vector本身是没有 find这一方法的,其find函数是依靠algorithm来实现的 所有要使用#include<algorithm> 例如:vector<int>::iterator it = find(vec.begin(),vec.end(),1); if(it != vec.end()) cout<<"found"<<endl; else _vector find

【STM32】EXTI---外部中断/事件控制器_stm32外部中断上升沿下降沿都触发 如何区分-程序员宅基地

文章浏览阅读5.4k次,点赞55次,收藏109次。EXTI——外部中断/事件控制器。外部中断简介,EXTI初始化结构体,外部中断控制实验。利用按键输入作为中断的外部输入,产生中断后,进入中断服务函数,实现LED状态的变化。_stm32外部中断上升沿下降沿都触发 如何区分

[vue3] error in ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js-程序员宅基地

文章浏览阅读2.1k次,点赞10次,收藏8次。question使用vue-cli(4.5.13) create vue3(3.1.3)npm run servererrorerror in ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.jssolution1办法1: 编辑配置文件vue.config.js此办法不行// vue.config.jsmodule.exports = { transpileDependencies: ['@vue/reactivi_in ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js

数据挖掘——数据采集和数据清洗_selenium 自动化数据采集和清洗-程序员宅基地

文章浏览阅读7.2k次,点赞12次,收藏63次。数据采集和数据清洗一、数据清洗1.数据去重(一)相关知识1> pandas读取csv文件-read_csv()2> pandas的去重函数-drop_duplicates()(二)本关任务(三)参考代码2.处理空值(一)相关知识1> DataFrame中空值的表示2> 查找空值及计算空值的个数3> 处理空值-fillna(二)本关任务(三)参考代码一、数据清洗1.数据去重(一)相关知识1> pandas读取csv文件-read_csv() _selenium 自动化数据采集和清洗