




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CENTRAL SOUTH UNIVERSITY操作系统安全课程设计报告题目:文件系统的设计与开发学生姓名 袁琨茗 学 号 0909121922 小组成员 袁琨茗、孙奥 专业班级 信息安全1202班 学 院 信息科学与工程 指导教师 何小贤 设计时间 2014年12月 第1章 设计概述1.1前言市场的需求、人的安全意识、环境的诸多因素促使着我国的信息安全高速发展,信息安全经历了从传统的单一防护如防火墙到信息安全整体解决方案、从传统的老三样防火墙、入侵检测、杀毒软件到多元化的信息安全防护、从传统的外部网络防护到内网安全、主机安全等。操作系统安全是保障主机安全的一大关键。操作系统安全是整个计算机系
2、统安全的重要基础,主要针对操作系统层面的安全进行剖析,是上层运行的重要保证。操作系统中文档安全是一个很重要的层次。文件安全的解决方案主要从客户端的身份认证管理、电子文档的手动/自动加密、电子文档的密级权限控制、日志审计等环节进行综合安全防护,构成多层次、全方位的文档终端安全管理体系。为提供安全的移动信息安全服务,为用户提供了强有力的文档信息安全支撑。此次课程设计将设计一个简单的安全文件系统,把它作为安全操作系统的缩影,来学习和体会权限、加密、审计等各种安全策略。目的是综合应用学生所学知识,建立安全系统的概念,理解和巩固操作系统基本理论、原理和方法,掌握安全操作系统开发的基本技能。1.2主要任务
3、采用C或C+编程语言,开发一个多用户安全的文件系统。(1)能实现对多种不同文件及目录的管理,包括对文件系统(包括文件和目录)读、写、创建、删除、打开、关闭、命名等操作;(2)对不同的文件和目录能设置访问权限和操作权限;(3)对不同的用户也设置访问权限和操作权限;根据用户和文件的权限来进行文件系统的操作。(4)文件可以加密存储,可以进行一致性检测;(5)审计记录(6)能完成一种外部存储设备(如USB、移动硬盘)的空间动态添加到该文件系统中进行管理,存入该设备的文件是有权限用户。(7)采用类似于Windows的窗口界面。1.3需求分析1. 要建立一个简单多用户文件系统,实现文件系统基本功能,要有窗
4、口界面,所以采用C+ MFC编程。2. 文件系统要加入安全策略,具体为:用户、目录和文件设置权限;文件内容加密;建立操作审计记录。3. 文件系统可以读取外部存储设备并进行管理。第2章 总体设计2.1软件结构和主要实现方法系统设计总体分为三个部分:1.界面设计1)采用VC+ MFC来编写简单友好的操作界面。MFC是微软提供的一个类库用于在C+环境下编写应用程序的一个框架和引擎。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。界面需要建立一个MFC窗口,过程:首先从CWinApp派生一个应用程序类,这里为CFileSystemApp。class C Fil
5、eSystemApp : public CWinApp;然后建立应用程序对象,这里为theApp。CFileSystemApp theApp;产生一个自己需要的窗口,在InitInstance()里创建,初始化创建各种控件。2)窗口界面主要划分为四块区域:文件目录区,通过树视图控件显示文件目录。文本编辑区,编辑框控件,显示文本文件内容,进行查看修改等工作。用户区,显示当前使用用户,包括用户登陆和注销功能按钮。文件操作区,包括对文件的各种操作按钮。3)界面图:2.文件系统功能设计文件系统功能主要分为三类:1) 多用户功能定义Account类,定义一个Account结构体,在程序中初始化多个用户,
6、登陆时匹配用户输入密码和初始化用户的密码,实现多用户。2) 文件的增删改查文件和目录的创建删除在固定的磁盘路径中初始化目录,显示在树视图控件中。通过选择节点获取目录或文件的路径,进一步进行创建和删除。创建时弹出对话框获取目录或文件名字。文件的查看修改对txt等文本文件进行查看修改,将文本内容读取进文本编辑框查看,修改后点击保存,将文本编辑框内容读取写入文件。3) 外部设备U盘读取通过检测电脑中有无H:盘路径,有则将其作为一个节点加入树视图。3.安全功能设计有关安全的功能有:1)用户和目录、文件权限权限规则:权限级别05,只有用户权限高于等于目录或文件权限级别,才可以对其进行操作,否则一概不行。
7、用户权限设置:设立了三个账户身份,分别为admin、general、guest,代表管理员,一般用户,访客。Admin身份权限设为5,最高;general设置为3;guest为1。用户登录系统时,通过密码来区分其身份,从而确定其权限等级。文件或目录权限设置:文件或目录新建后权限默认为1,之后可以由权限高于1的用户设置修改,05。2)文件内容加密解密加密技术采用BASE64加密技术。原理为将三个字节转化成四个字节。3*8=4*6,每六位构成新的字节,高两位填0,变为加密内容。3)审计记录在文件操作成功后添加语句,输出操作的用户信息和操作目标,操作类型到Audit.txt文件作为审计记录。2.2总
8、体流程图第3章 详细设计3.1界面详细和文件操作功能设计1. 文件目录区(树视图控件)CTreeCtrl m_ctrlTree;void InitDriverTree(CTreeCtrl* m_ctrlTree);void InsertNode(CTreeCtrl* m_ctrlTree, CString szPath, HTREEITEM hNode);void InsertNodeU(CTreeCtrl* m_ctrlTree, CString szPath, HTREEITEM hNode);2.文本编辑区:进行txt文件查看和修改;void CFileSystemDlg:EditFil
9、e()HTREEITEM hSel = m_ctrlTree.GetSelectedItem();CatalogPath catalog;CString strFolderPath;CString path = catalog.GetItemPath(&m_ctrlTree, hSel);strFolderPath = catalog.GetPath(hSel, &m_ctrlTree);CStdioFile stdfile;CString strText;CString strLine;stdfile.Open(strFolderPath, CFile:modeReadWri
10、te);while (stdfile.ReadString(strLine)strText += strLine;strText += "rn" GetDlgItem(IDC_FILEEDIT)->SetWindowText(strText);GetDlgItem(IDC_FILEEDIT)->GetWindowText(Buf);stdfile.Close();对修改的内容进行保存:void CFileSystemDlg:Savefile()HTREEITEM hSel = m_ctrlTree.GetSelectedItem();CatalogPath ca
11、talog;CString strFolderPath;CString path = catalog.GetItemPath(&m_ctrlTree, hSel);else strFolderPath = catalog.GetPath(hSel, &m_ctrlTree);CStdioFile stdfile;CString strText;CString strLine;stdfile.Open(strFolderPath, CFile:modeCreate | CFile:modeWrite);GetDlgItem(IDC_FILEEDIT)->GetWindowT
12、ext(Buf);stdfile.WriteString(Buf);stdfile.Close();3. 用户区用户登录void CFileSystemDlg:Login()CString AdminName;login.DoModal();AdminName=login.adminName;while (1)for (int i = 0; i < 3; i+)if (Apare(AdminName,passwd)AfxMessageBox("登陆成功");AccountOn = Accounti;GetDlgItem(IDC_OnName)-&
13、gt;SetWindowText(AdminName); GetDlgItem(IDC_NEWCATA)->EnableWindow(true);GetDlgItem(IDC_DELCATA)->EnableWindow(true);GetDlgItem(IDC_NEWFILE)->EnableWindow(true);GetDlgItem(IDC_DELFILE)->EnableWindow(true);GetDlgItem(IDC_LOOK)->EnableWindow(true);GetDlgItem(IDC_PASTE)->EnableWindow(
14、true);GetDlgItem(IDC_COPY)->EnableWindow(true);GetDlgItem(IDC_LOGOUT)->EnableWindow(true);GetDlgItem(IDC_SAVE)->EnableWindow(true);GetDlgItem(IDC_OTHER)->EnableWindow(true);GetDlgItem(IDC_OTHEROUT)->EnableWindow(true);GetDlgItem(IDC_ENCODE)->EnableWindow(true);GetDlgItem(IDC_DECODE
15、)->EnableWindow(true);GetDlgItem(IDC_CHANGE)->EnableWindow(true);GetDlgItem(IDC_LOGIN)->EnableWindow(false);AfxMessageBox("密码错误");break;CString strFolderPath = "F:FileSystemRoot" + AdminName + ""HTREEITEM hSel = m_ctrlTree.GetRootItem();if (!PathIsDirectory(str
16、FolderPath)CreateDirectory(strFolderPath, NULL);m_ctrlTree.InsertItem(AdminName, hSel);用户注销void CFileSystemDlg:LogOut()AccountOn = Account();GetDlgItem(IDC_OnName)->SetWindowText("无");GetDlgItem(IDC_NEWCATA)->EnableWindow(false);GetDlgItem(IDC_DELCATA)->EnableWindow(false);GetDlgI
17、tem(IDC_NEWFILE)->EnableWindow(false);GetDlgItem(IDC_DELFILE)->EnableWindow(false);GetDlgItem(IDC_LOOK)->EnableWindow(false);GetDlgItem(IDC_PASTE)->EnableWindow(false); GetDlgItem(IDC_COPY)->EnableWindow(false);GetDlgItem(IDC_LOGOUT)->EnableWindow(false);GetDlgItem(IDC_SAVE)->En
18、ableWindow(false);GetDlgItem(IDC_OTHER)->EnableWindow(false);GetDlgItem(IDC_OTHEROUT)->EnableWindow(false);GetDlgItem(IDC_ENCODE)->EnableWindow(false);GetDlgItem(IDC_DECODE)->EnableWindow(false);GetDlgItem(IDC_CHANGE)->EnableWindow(false);GetDlgItem(IDC_LOGIN)->EnableWindow(true);A
19、fxMessageBox("已注销");GetDlgItem(IDC_LOGIN)->EnableWindow(true);这一系列代码的作用是设置各按钮是否可用,当登陆成功时,各功能才开放,按钮可用;当注销和登陆失败时,各功能拒绝用户使用。显示登录人:GetDlgItem(IDC_OnName)->SetWindowText(AdminName); 获取登录人的账户名显示到控件OnName上,4. 文件操作区关于新建和删除新建和删除的关键在于获取目标路径,否则只能单纯删除和新建树中的结点。通过网上查阅资料得知了一种方法,通过三个函数。BOOL AddParen
20、tFolder(CString nParentFolder10, CString nParent);CString AllCString(CString nParentFolder10);CString GetItemPath(CTreeCtrl* pCtrl, HTREEITEM hItem);在源文件中专门建立了一个类,实现路径获得功能:GetPathFun.cpp查看和修改同文本编辑区。3.2 安全功能设计1. 权限初始化三类账户身份和它们所拥有的权限void CFileSystemDlg:CreateAccount()/管理员用户Account1 = Account("adm
21、in", 5, "admin");/一般用户Account2 = Account("general", 3,"123456" );/游客Account3 = Account("guest",1,"guest");文件权限通过ACL表来查询目录或文件的权限等级,ACL表储存在文件ACL.txt中。可以通过ACL函数修改目录和文件权限。void CFileSystemDlg:ACL()using namespace std; ofstream ofs;ofs.open("F:Fi
22、leSystemACL.txt" , ios:out);CString write, level;for (int i = 0; i < number; i+)write = FileNamei;level.Format(_T("%d"), FileLeveli); write += "n"write += level;write += "n"ofs << write;读取文件的等级:int CFileSystemDlg:Getlevel(CString filename)char* pszFileName
23、 = "F:FileSystemACL.txt"CStdioFile myFile;myFile.Open(pszFileName, CFile:modeRead);myFile.ToBegin();CString str1;for (int i = 0; i <= number; i+) if (str1=filename)myFile.ReadString(str1);level = (int)(myFile.ReadString(str1);continue;myFile.Close();return level;权限控制:在每个功能函数前,调用Getlevel
24、()获取文件或者目录权限,与用户权限比对,无权则AfxMessageBox("权限不足无法操作");2. 加密解密此模块主要由组员孙奥完成,原理我有所了解。关于BASE64加密技术:所谓Base64,就是说选出64个字符-小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)-作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。具体来说,转换方式可以分为四步。第一步,将每三个字节作为一组,一共是24个二进制位。第二步,将这24个二进制位分为四组,每
25、个组有6个二进制位。第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。第四步,根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。单词MAN 转换成base64编码举例:Text contentManASCII7797110Bit pattern010011010110000101101110Index1922546Base64-EncodedTWFu3. 审计记录在功能模块成功时,加入一串输出代码,如登录过程和删除文件过程加入: using std:ofstream; ofstream ofs; ofs.open("F:FileSystemAudit
26、.txt", ios:out | ios:app); CString write = AccountOn.getName(); write += " " write += "登录" ofs << write<<endl;using std:ofstream;ofstream ofs;ofs.open("F:FileSystemAudit.txt", ios:out | ios:app);CString write = AccountOn.getName();write += ' 'wr
27、ite += strFolderPath;write += ' 'write += "删除文件"ofs << write<<endl;就会在指定位置出现操作的记录:第4章 用户手册1.打开文件系统若不进行登录则只有用户登录按钮可用。2. 用户登录三种账户身份,根据用户所知道的密码确定他的身份,登录后会有审计记录,这里所用身份为admin。登录后各功能按钮恢复可用3. 新建目录“文件”,并在“文件”中新建文件“安全.txt”4. 对“安全.txt”进行查看编辑加密解密5. 对“安全.txt”进行权限修改6. 切换用户guest对“安全.
28、txt”进行删除尝试7. 查看审计记录第5章 总结5.1完成的情况本次课程设计,总的来说,完成情况还可以,基本实现了要求。采用C+编程语言,使用MFC框架工具,设计类似于Windows的窗口界面,开发了一个多用户安全的文件系统。实现了对文本文件及目录的管理,包括对文件系统(包括文件和目录)读、写、创建、删除、打开、关闭、命名等操作;实现了对不同的文件和目录能设置权限,对不同用户也设置权限,通过用户身份的不同区分每个用户的权限等级,最后根据用户和文件的权限来判定用户是否能进行文件系统的操作。文件可以加密存储有审计记录基本满足了需求,但仍然存在很多问题和不足,需要进一步优化和改进。只能对文本文件进
29、行读写,并不支持对多种类型文件的创建和读写等操作关于界面中的复制粘贴文件功能没有完善好,无法使用。用户权限是静态的,取决于他所掌握的账号身份,如何授予和回收一个用户的符合他身份的账户存在问题。文件加密比较简单,加密后的base64编码,复制到网络上的base64解码器可以轻松获得原信息。审计记录未达到审计日志的标准,审计简单,未在记录中加入时间,无法知晓进行操作的时间,且审计记录缺乏保护,知道文件位置便可随意更改查看。外部设备U盘的读取存在问题,这部分功能并没有实现完整。系统还不够友好,存在许多未解决的BUG会导致系统中断,如:对目录进行查看操作,在没有外部设备情况下点击弹出,对目录进行删除文件操作等等。5.2可以改进的地方增强系统的友好性,对每一种操作实现异常处理,提示错误信息或正确操作方法。将审计记录的操作写为一个类,在每个需要审计记录的操作下引用这个类的函数,而不是在功能函数下简单加入大量重复代码,可以增强代码可读性,更加规范。增加一个时间类,获取系统时间并加入到操作的审计记录中,真正实现“日志”。5.3心得体会本次课程设计对于我和我们组来说是颇有难度的。首先,要求使用c或c+编写就是一个挑战。虽然我们已经修完C+的课程,但距离使用C+设计一个有界面的文件系统还有不少距离。还记得大一结束的C+课程设计是“学生成绩管理系统”,这样一个简单的课程设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GB 11215-1989核辐射环境质量评价一般规定》(2025版)深度解析
- 中专护理教学课件
- 合伙开设物流公司协议书模板
- 供应商合同供货协议范本
- 科研仪器租赁合同
- 商用空间装修保障合同
- 三方债权债务承接合同
- 肇庆市实验中学高三生物三四五高效课堂教学设计:杂交实验一相关练习
- 山东省德州市宁津县南环小学2024-2025学年数学五年级第二学期期末达标检测试题含答案
- 自愿收养合同书
- 北师大版数学五年级(下册)长方体(二) 练习四
- DB35T 2082-2022 人民防空疏散基地建设基本要求
- 2023年中国少女发育内衣行业发展白皮书
- 再生铝商业计划书
- 江苏省苏州市2022-2023学年二年级下学期语文期中调研试卷(含答案)
- 江苏省期末试题汇编-04-认识图形(二)(选择题经典常考题)-小学一年级数学下册(苏教版)
- 人力资源用工风险与防范一本通
- 用友ERPU8生产制造管理
- 产品生命周期管理培训
- 《品质管理人员培训》课件
- 2023年福建省三明市中考二模数学试卷(原卷版)
评论
0/150
提交评论