CENTRALSOUTHUNIVERSITY操作系统安全课程设计报告题目:文件系统的设计与开发学生姓名袁琨茗学号0909121922小组成员袁琨茗、孙奥专业班级信息安全1202班学院信息科学与工程指导教师何小贤设计时间2014年12月1第一章设计概述1.1前言市场的需求、人的安全意识、环境的诸多因素促使着我国的信息安全高速发展,信息安全经历了从传统的单一防护如防火墙到信息安全整体解决方案、从传统的老三样防火墙、入侵检测、杀毒软件到多元化的信息安全防护、从传统的外部网络防护到内网安全、主机安全等。操作系统安全是保障主机安全的一大关键。操作系统安全是整个计算机系统安全的重要基础,主要针对操作系统层面的安全进行剖析,是上层运行的重要保证。操作系统中文档安全是一个很重要的层次。文件安全的解决方案主要从客户端的身份认证管理、电子文档的手动/自动加密、电子文档的密级权限控制、日志审计等环节进行综合安全防护,构成多层次、全方位的文档终端安全管理体系。为提供安全的移动信息安全服务,为用户提供了强有力的文档信息安全支撑。此次课程设计将设计一个简单的安全文件系统,把它作为安全操作系统的缩影,来学习和体会权限、加密、审计等各种安全策略。目的是综合应用学生所学知识,建立安全系统的概念,理解和巩固操作系统基本理论、原理和方法,掌握安全操作系统开发的基本技能。1.2主要任务采用C或C++编程语言,开发一个多用户安全的文件系统。(1)能实现对多种不同文件及目录的管理,包括对文件系统(包括文件和目录)读、写、创建、删除、打开、关闭、命名等操作;(2)对不同的文件和目录能设置访问权限和操作权限;(3)对不同的用户也设置访问权限和操作权限;根据用户和文件的权限来进行文件系统的操作。(4)文件可以加密存储,可以进行一致性检测;(5)审计记录(6)能完成一种外部存储设备(如USB、移动硬盘)的空间动态添加到该文件系统中进行管理,存入该设备的文件是有权限用户。(7)采用类似于Windows的窗口界面。1.3需求分析1.要建立一个简单多用户文件系统,实现文件系统基本功能,要有窗口界面,所以采用C++MFC编程。2.文件系统要加入安全策略,具体为:用户、目录和文件设置权限;文件内容加密;建立操作审计记录。3.文件系统可以读取外部存储设备并进行管理。2第二章总体设计2.1软件结构和主要实现方法系统设计总体分为三个部分:1.界面设计1)采用VC++MFC来编写简单友好的操作界面。MFC是微软提供的一个类库用于在C++环境下编写应用程序的一个框架和引擎。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。界面需要建立一个MFC窗口,过程:①首先从CWinApp派生一个应用程序类,这里为CFileSystemApp。classCFileSystemApp:publicCWinApp{};②然后建立应用程序对象,这里为theApp。CFileSystemApptheApp;③产生一个自己需要的窗口,在InitInstance()里创建,初始化创建各种控件。2)窗口界面主要划分为四块区域:①文件目录区,通过树视图控件显示文件目录。②文本编辑区,编辑框控件,显示文本文件内容,进行查看修改等工作。③用户区,显示当前使用用户,包括用户登陆和注销功能按钮。④文件操作区,包括对文件的各种操作按钮。3)界面图:2.文件系统功能设计文件系统功能主要分为三类:1)多用户功能定义Account类,定义一个Account结构体,在程序中初始化多个用户,登陆时匹配用户输入密码和初始化用户的密码,实现多用户。①②③④32)文件的增删改查①文件和目录的创建删除在固定的磁盘路径中初始化目录,显示在树视图控件中。通过选择节点获取目录或文件的路径,进一步进行创建和删除。创建时弹出对话框获取目录或文件名字。②文件的查看修改对txt等文本文件进行查看修改,将文本内容读取进文本编辑框查看,修改后点击保存,将文本编辑框内容读取写入文件。3)外部设备U盘读取通过检测电脑中有无H:盘路径,有则将其作为一个节点加入树视图。43.安全功能设计有关安全的功能有:1)用户和目录、文件权限①权限规则:权限级别0~5,只有用户权限高于等于目录或文件权限级别,才可以对其进行操作,否则一概不行。②用户权限设置:设立了三个账户身份,分别为admin、general、guest,代表管理员,一般用户,访客。Admin身份权限设为5,最高;general设置为3;guest为1。用户登录系统时,通过密码来区分其身份,从而确定其权限等级。③文件或目录权限设置:文件或目录新建后权限默认为1,之后可以由权限高于1的用户设置修改,0~5。2)文件内容加密解密加密技术采用BASE64加密技术。原理为将三个字节转化成四个字节。3*8=4*6,每六位构成新的字节,高两位填0,变为加密内容。3)审计记录在文件操作成功后添加语句,输出操作的用户信息和操作目标,操作类型到Audit.txt文件作为审计记录。2.2总体流程图56第三章详细设计3.1界面详细和文件操作功能设计1.文件目录区(树视图控件)CTreeCtrlm_ctrlTree;voidInitDriverTree(CTreeCtrl*m_ctrlTree);voidInsertNode(CTreeCtrl*m_ctrlTree,CStringszPath,HTREEITEMhNode);voidInsertNodeU(CTreeCtrl*m_ctrlTree,CStringszPath,HTREEITEMhNode);2.文本编辑区:①进行txt文件查看和修改;voidCFileSystemDlg::EditFile(){HTREEITEMhSel=m_ctrlTree.GetSelectedItem();CatalogPathcatalog;CStringstrFolderPath;CStringpath=catalog.GetItemPath(&m_ctrlTree,hSel);strFolderPath=catalog.GetPath(hSel,&m_ctrlTree);CStdioFilestdfile;CStringstrText;CStringstrLine;stdfile.Open(strFolderPath,CFile::modeReadWrite);while(stdfile.ReadString(strLine)){strText+=strLine;strText+=\r\n;}GetDlgItem(IDC_FILEEDIT)-SetWindowText(strText);GetDlgItem(IDC_FILEEDIT)-GetWindowText(Buf);stdfile.Close();}②对修改的内容进行保存:voidCFileSystemDlg::Savefile(){7HTREEITEMhSel=m_ctrlTree.GetSelectedItem();CatalogPathcatalog;CStringstrFolderPath;CStringpath=catalog.GetItemPath(&m_ctrlTree,hSel);elsestrFolderPath=catalog.GetPath(hSel,&m_ctrlTree);CStdioFilestdfile;CStringstrText;CStringstrLine;stdfile.Open(strFolderPath,CFile::modeCreate|CFile::modeWrite);GetDlgItem(IDC_FILEEDIT)-GetWindowText(Buf);stdfile.WriteString(Buf);stdfile.Close();}3.用户区①用户登录voidCFileSystemDlg::Login(){CStringAdminName;login.DoModal();AdminName=login.adminName;while(1){for(inti=0;i3;i++){if(Account[i].compare(AdminName,passwd)))){AfxMessageBox(登陆成功);AccountOn=Account[i];GetDlgItem(IDC_OnName)-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(true);GetDlgItem(IDC_COPY)-EnableWindow(true);8GetDlgItem(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)-EnableWindow(true);GetDlgItem(IDC_CHANGE)-EnableWindow(true);GetDlgItem(IDC_LOGIN)-EnableWindow(false);}}AfxMessageBox(密码错误);break;}CStringstrFolderPath=F:\\FileSystem\\Root+AdminName+\\;HTREEITEMhSel=m_ctrlTree.GetRootItem();if(!PathIsDirectory(strFolderPath)){CreateDirectory(strFolderPath,NULL);m_ctrlTree.InsertItem(AdminName,hSel);}}②用户注销voidCFileSystemDlg::LogOut(){AccountOn=Account();GetDlgItem(IDC_OnName)-SetWindowText(无);GetDlgItem(IDC_NEWCATA)-EnableWindow(false);GetDlgItem(IDC_DELCATA)-EnableWindow(false);GetDlgItem(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)-EnableWindow(false);GetDlgItem(IDC_OTHER)-EnableWindow(false);GetDlgItem(IDC_OTHEROUT)-EnableWindow(false);GetDlgItem(IDC_ENC