1. 信息系统是由计算机硬件、网络和通讯设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统:OA、MIS、电子文件中心、地理信息系统、网站信息管理系统。 2. 网络信息系统是脆弱的:①网络的开放性②组成网络通信系统和信息系统的自身缺陷③黑客及病毒等恶意程序的攻击。
3. 信息系统安全的基本需求:①保密性②完整性③可用性④可控性⑤不可否认性
4. 信息系统安全保障体系的建设,从不同角度出发可能会有不同的原则,也可以提出若干多项原则来,但既然是保障体系的建设,我们应该可以从总体的宏观角度来提出建设的原则:(1)个性化原则。(2)保证应用利于发展的原则。(3)动态性的原则。(4)适度风险的原则。 5. 信息安全等级保护:①信息资源分类分级保护制度②系统安全功能分级保护制度③安全产品使用分级管理制度④事件分级响应与处置制度⑤分级监管制度⑥信息安全等级保护原则⑦保护重点⑧安全等级保护制度运行五个关键控制环节⑨信息系统安全集中控制管理体系⑽系统主要目标的安全管理⑾互连互通、信息共享,以利发展。
第二章 物理安全
1. 物理安全:信息系统安全的前提:即保护计算机设备、设施免遭自然灾害和环境事故(如电磁污染等)以及人为操作失误及计算机犯罪行为导致的破坏。
2. 人为的对物理安全的威胁包括:偷窃、废物搜寻、间谍活动。 3. 物理安全包括三个方面:环境安全、设备安全、媒体安全。
4. 计算机系统的安全与外界环境有密切的关系,用户无法改变系统器件、工艺、材料等因素,但能决定工作环境。条件包括:工作场地、运行条件、人为影响、自然影响。
5. 信息泄漏的两种表现形式:从网络进入的攻击所造成的信息泄漏;电磁袭击所造成的电磁泄漏。
6. 电磁泄漏的危害:危害计算机周围的人体健康;对周围电子设备形成电磁干扰;导致信息泄密,造成重大损失。两种泄漏方式:辐射泄漏、传导泄漏。抑制信息泄漏的技术途径有2种:电子隐蔽(干扰、调频);物理抑制(包容、抑源)。
7. 计算机的简易防泄漏措施:选择低辐射设备;距离防护;在电缆的两端套上铁氧体磁环;选用合适的电缆(最好是光缆)。
8. 磁盘信息清除技术:直流消磁法和交流消磁法。 9. 防止无线传输信号泄密的技术:跳频、干扰、加密。
10. 有线传输主要的窃密方法有:搭线窃听、串音泄密、 载波辐射。
第三章 操作系统安全(第一讲) 1. 概念:①客体(Object):规定需要保护的资源,又称作目标(target)②主体(Subject):发起者(Initiator),是一个主动的实体,规定可以访问该资源的实体,(通常指用户或代表用户执行的程序)③授权(Authorization):规定可对该资源执行的动作(例如读、写、执行或拒绝访问)④保护状态:所有保护状态的集合可以用一个三元组表示(S,O,A);保护状态的转换:HRU模型。
2 操作系统的安全需求:①安全策略:对于认证的主体和客体,系统必须有一个规则集用于决定一个特定的主体是否可以访问一个具体的客体②标记:给客体一个能够有效反映它的安全级别的标记③鉴别:存储信息的每一次访问都应受到控制,即只有授权的用户才能访问这些信息④责任:系统要保护审计数据不受破坏,以确保违背安全的事件在发生后可被探测出来⑤保证:一个计算机系统应该能够具有可以被评估的各种软硬件机制,应提供充分保证系统实现上述四种与安全有关的需求⑥连续保护:实现这些基本需求的可信机制必须能不断地提供保护以防止入侵和未经授权的篡改。
3. 操作系统安全防护的一般方法:①操作系统隔离控制安全措施:隔离、时间隔离、逻辑隔离和加密隔离②操作系统访问控制安全措施:自主访问控制、强制访问控制、基于角色的访问控制、域和类型执行的访问控制。
4. 访问控制(Access Control):是针对越权使用资源的防御措施;目标:防止对任何资源(如计算资源、通信资源或信息资源)进行未授权的访问。访问控制的作用:访问控制对机密性、完整性起直接的作用。 5. 访问控制经典模型和访问控制模型基本组成(如下图)
6. 访问控制策略和机制:①访问控制策略:访问控制策略在系统安全策略级上表示授权;是对访问如何控制,如何作出访问决定的高层指南②访问控制机制:是访问控制策略的软硬件低层实现。
7. 访问控制的类型: ①自主访问控制, 基于身份的访问控制IBAC ②强制访问控制基于规则的访问控制RBAC ③基于角色的访问控制。
8. 访问控制的一般实现机制和方法:①一般实现机制:基于访问控制属性(访问控制表/矩阵);基于用户和资源分级(多级访问控制)②常见实现方法:访问控制表ACLs;访问能力表;授权关系表。 9. 访问控制矩阵:主体集合S、客体集合O、访问操作集合A。 10. 访问许可:等机型、有主型、自由型。
11. 将主体和客体分级,根据主体和客体的级别标记来决定访问模式。如,绝密级,机密级,秘密级,无密级。其访问控制关系分为:上读/下写 (完整性) 、下读/上写 (机密性)——通过安全标签实现单向信息流通模式。 12. 安全分级与安全级别:①可信计算机标准评价准则(橙皮书) :对于安全级别的划分(四类七级 ):D、C1、C2、B1、B2、B3 和A1 ②安全级别:绝密(Top Secret)、秘密( Secret )、机密( Confidential )、无密级( Unclassified )、并且UC<=C<=S<=TS。 13. 安全标签:①安全标签是限制在目标上的一组安全属性信息项:在访问控制中,一个安全标签隶属于一个用户、一个目标、一个访问请求或传输中的一个访问控制信息②最通常的用途是支持多级访问控制策略:在处理一个访问请求时,目标环境比较请求上的标签和目标上的标签,应用策略规则(如Bell Lapadula规则)决定是允许还是拒绝访问。
14. 安全等级支配:安全等级(L,C)支配(L‘,C’),当且仅当L‘ <= L,并且C’包含于C 记做(L,C)dom(L‘,C’)或者(L‘,C’) <= (L,C 作业:1.比较下列敏感标签的安全等级:TOP SECRET [VENUS ALPHA] 和 SECRET [VENUS ALPHA] 、TOP SECRET [VENUS] 和SECRET [ALPHA]。
答:TOP SECRET [VENUS ALPHA] >= SECRET [VENUS ALPHA] TOP SECRET [VENUS]>= SECRET [ALPHA]
2 Alice能读写文件x,能读文件y,能执行文件z,Bob能读文件x,能读写文件y但不能访问z,请绘制出相关的ACL,CL。
第三章 操作系统安全(第二讲)
1. 计算机系统大体上可以分为三个部分:硬件、系统软件和应用软件。硬件是所有软件运行的物质基础。操作系统(简称OS)则是最重要的系统软件,是管理计算机系统资源、控制程序执行的系统软件。操作系统是计算机硬件资源的管理器,其管理功能主要包括处理机管理、存储管理和设备管理等。
2. 操作系统的主要目标:①管理系统资源②提高系统效率③方便用户使用④增强机器功能⑤构筑开放环境。
3. 操作系统的核心任务:管理计算机系统中的资源。从资源管理的角度来看,作为资源管理器的操作系统对计算机硬件资源的管理主要体现在以下三个方面: ① 处理器管理 ② 存储器管理 ③ 设备管理。 4. 存储管理的任务:(1)存储分配(2)存储共享(3)存储保护(4)存储扩充 5. 存储管理主要解决存储器的分配与回收,存储器地址变换,存储器扩充,存储器共享与保护等问题。 内容包括:① 分区式存储管理:固定(大小)分区和动态分区 ② 交换技术和分页技术。(根据程序的局部性原理): 交换过程由换入和换出两个过程组成。优点是增加了并发运行的进程数目。缺点是换入和换出操作增加了处理机的时间开销;分页技术则是一种非常重要的存储管理策略:虚拟存储器(简称虚存)。
6. 虚拟存储器: 是一个容量非常大的主存储器的逻辑模型,不是实际的物理主存储器。特点:采用“主存+外存”层次结构,以透明的方式给用户提供了一个比实际主存空间大得多的程序地址空间。主存+外存层次的地址变换映射方法和替换策略,也是基于程序局部性原理。
7. 三种虚拟存储方式:段式管理(虚拟地址: 由“段号+段内地址”组成)、页式管理、段页式管理。(《操作系统》
中已学)
段式管理:优点: 段的逻辑独立性使它易于编译、管理、修改和保护, 也便于多道程序共享;某些类型的段具有动态可变长度, 允许自由调度,以便有效利用主存空间。
缺点: 因为段的长度各不相同,起点和终点不定,给主存空间分配带来麻烦,而且容易在段间留下许多空余的零碎存储空间,造成浪费。
8.页式管理:系统的基本信息传送单位是定长的页。页式虚拟存储系统中,虚拟空间分成若干页(称为逻辑页);
主存空间也按同样大小分成若干页(称为物理页)。 虚拟地址分为两个字段:高字段为逻辑页号,低字段为页内行地址。实存地址也分为:物理页号和页内行地址。
8. 【例题1】假设有三道程序(用户标志号为A,B,C),其基址寄存器内容分别为SA,SB,SC . 设: 在主存中,每道程序都有一张段表,A程序有4段,C程序有3段。每段应有一张页表,段表的每行就表示相应页表的起始位置,而页表内的每行即为相应的物理页号。请说明虚地址→实地址变换过程。
答:地址变换过程如下: ①根据基号C执行SC加1(段号)操作,得到段表相应行地址,其内容为页表的起始地址b。②执行b+2(页号),得到物理页号的地址,其内容即为物理页10。③物理页号与页内地址拼接即得物理地址。(注意:上述过程是假设程序的段、页都已调入主存(即:段表、页表中对应项的“有效位=1”)。若对应的段或页尚
未调入主存,则中断当前程序的操作,先进行调页和修改表目工作。)
9. 存储区域保护:在虚拟存储系统中,各用户的程序可能离散地分布于主存中,不能简单地用界限寄存器的方法来保护,通常采用页表保护、段表保护和键式保护方法。 (环保护)
10. 访问方式保护:对主存信息的使用可以有三种方式:读(R)、写(W)和执行(E),相应的访问方式保护就有R,W,E三种方式形成的逻辑组合。
第三章 操作系统安全(第三讲)
1. 现在应用最广泛的各类操作系统并不很安全,它们在安全性方面有很多漏洞。威胁的问题主要有以下几种:1.计算机病毒2.特洛伊木马3.隐蔽通道4.系统漏洞5.系统后门。 2. 操作系统安全性的设计原则与一般结构:(1)最小特权。 (2)机制的经济性。 (3)开放系统设计。 (4)完备的存取控制机制。(5)基于“允许”的设计原则。(6)权限分离。(7)避免信息流的潜在通道。(8)方便使用,提供友好的用户接口。
3. 操作系统的安全等级同计算机系统的安全等级。美国国防部把计算机系统的安全分为四等(A、B、C、D)八个级别,共27条评估准则。
4. 硬件安全机制:①存储保护②运行保护:防止在已标记为数据存储区的内存区域中执行代码③I/O保护:不仅要有效地实现任务隔离,而且还要有效地控制各任务的输入/输出,避免冲突。
5. 软件安全机制:1.用户管理的安全性2.访问控制3.可信通路4.安全审计5.最小特权管理。
6. windows2000/2003的认证机制:①身份认证(交互式登录、网络身份认证)②消息验证(消息身份验证、用户证书、外部证书、服务器身份验证)③数字签名(Windows 文件保护 、系统文件检查程序 、文件签名验证) 7. Windows2000/2003的审计机制:① 审核策略② 审核对象的设置③ 选择审核项的应用位置。 8. Windows2000/2003的加密机制:① 文件加密系统 ② 网络资料的安全性
9. Windows2000/2003的安全配置:① 安全策略配置② 文件保护③ 其它有利于提高系统安全性的设置
10. UNIX的安全审计:审计结果常写在系统的日志文件中,UNIX为保障系统的安全运行提供了丰富的日志文件,这些日志可分为以下3类:(1)连接时间日志,由多个程序执行(2)进程统计日志,由系统内核执行(3)错误日志,由syslogd执行。
11. 现有Linux的不足:文件系统没有保护机制、进程没有保护机制、系统管理没有保护机制、 root会滥用职权。 12. Linux的特点之一就是可以动态加载卸载内核模块,LIDS封闭了内核需要使用lids管理密码来切换系统状态。LIDS:保护防火墙和路由的规则、禁止嗅探、内核的检测端口扫描的功能。LIDS针对目前linux系统存在的几种突出问题
提供了可行的解决方案,尤其是在对控制root权限方面作了很大的努力。
第三章 操作系统安全(第四讲)
1. 审计:审计是对计算机信息系统的运行过程进行详细的监视、跟踪、审查、识别、记录,从中发现信息的不安全问题。安全审计跟踪机制的价值在于:经过事后的安全审计可以检测和调查安全漏洞。常用审计技术:静态分析系统技术、运行验证技术、运行结果仿真技术。
审计的安全目标
审查基于每个目标或每个用户的访问模式,并使用系统的保护机制 发现试图绕过保护机制的外部人员和内部人员 发现用户从低等级到高等级的访问权限转移 制止用户企图绕过系统保护机制的尝试
作为另一种机制确保记录并发现用户企图绕过保护的尝试,为损失控制提供足够的信息
2. 审计跟踪:静态分析系统技术、运行验证技术、运行结果仿真技术。 运行验证技术:保证系统控制逻辑正确,各类事务能够有效执行。日志处理技术:专家系统、模式识别、人工智能。Windows中的审计日志:安全参考监视器产生、事件查看器查看、只有系统管理员可以操作相应工具和策略。日志溢出:按需覆盖事件、覆盖过期时间、不覆盖事件。
3,。日志编程:1.建立Logger实例;2. 读取配置文件:获得了Logger的实例之后,接下来将配置Log4j使用环境;3. 插入日志信息。
第四章 数据库安全(第一讲)
1. 数据库(Database)是按数据结构来存储和管理数据的仓库:成为主流的: 关系型数据库。
2. 关系数据库,是建立在关系数据模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。目前主流的关系数据库有oracle、SQL、access、db2、sqlserver,sybase等。
3. 关系模式由五部分组成,即它是一个五元组:R(U, D, DOM, F):R:关系名;U:组成该关系的属性名集合;D:属性组U中属性所来自的域;DOM:属性向域的映象集合;F:属性间数据的依赖关系集合。关系模式R(U, D, DOM, F)简化为一个三元组:R(U, F)
4. 数据依赖:一个关系内部属性与属性之间的约束关系;现实世界属性间相互联系的抽象;数据内在的性质;语义的体现。
5. 【例题2】建立一个描述学校教务的数据库:学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程名(Cname)成绩(Score)。
答:单一的关系模式:Student ,U={ Sno, Sdept, Mname, Cname, Score }属性组U上的一组函数依赖F: F={ Sno → Sdept, Sdept → Mname, (Sno, Cname) → Score }。 6. 例题结论:Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起的;解决方法:通过分解关系模式来消除其中不合适的数据依赖。
7. 规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
8. 1NF的定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。 9.【例题3】在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。函数依赖: (S,J)→T,(S,T)→J,T→J;(S,J)和(S,T)都是候选码。 答:如右图所示:
10. 规范化小结:基本思想:逐步消除数据依赖中不合适的部分;实质:概念的单一化。目的:尽量消除插入、删除异常,修改复杂,数据冗余
第四章 数据库安全(第二讲)
1. 【例题4】请查询出s_emp表中所有的员工信息:SQL> SELECT * FROM s_emp
2. 【例题5】请查询出s_emp表中所有的员工的部门ID,工资: SQL> SELECT dept_id , salary FROM s_emp
3. 【例题6】请查询出s_emp表中所有的员工的年薪: SQL> SELECT salary*12 FROM s_emp 4. 【例题7】请查询出s_emp表中所有的员工的姓名:SQL> SELECT firname_name|| last_name “姓名”FROM s_emp 5. 【例题8】请查询出s_emp表中所有的员工的工资:
SQL> SELECT last_name, salary*commission_pct/100 “工资” FROM s_emp; 6. 【例题9】请查询出s_dept表的部门名称: SQL> SELECT DISTINCT name FROM s_dept;
7. 【例题10】请查询出s_emp表中所有的员工的部门ID及职称: SQL> SELECT DISTINCT dept_id, title FROM s_emp; 8. 【例题11】请查询出s_emp表中last_name为Smith的员工的信息: SELECT * FROM s_emp WHERE last_name = 'Smith';
9. 【例题12】请查询出s_emp表中部门ID为50并且工资大于1500的员工的信息: SELECT * FROM s_emp WHERE salary>1500 and dept_id=50; 10.【例题13】请查询出s_emp表中工资在1500到2000之间的员工信息:
SELECT * FROM s_emp WHERE salary between 1500 and 2000 ;
11【例题14】请查询出s_dept表中region_id为1,3的部门信息:SELECT * FROM s_dept WHERE region_id in (1,3) 12. 【例题15】请查询出s_emp表中姓中含有字母a的员工信息:SELECT * FROM s_emp WHERE last_name like '%a%' ; 13. 【例题16】请查询出s_emp表姓中第二个字母为a的员工信息: SELECT * FROM s_emp WHERE last_name like ‘_a%' ; 14. 【例题17】查询出s_emp表中非销售职位的员工信息: SELECT * FROM s_emp WHERE commission_pct is null ; 15. 【例题18】查询出s_emp表将部门ID为41的员工的工资按从高到低排列显示出来: SELECT * FROM s_emp WHERE dept_id=41 ORDER BY salary DESC ; 16. 【例题19】查询员工表中last_name为’Biri’的员工的last_name与部门名称:
SQL> SELECT e.last_name , d.name FROM s_emp e , s_dept d WHERE e.dept_id = d.id and e.last_name = ‘Biri’ ; 17. 【例题20】查询员工表中last_name为’Biri’的员工的last_name及其部门经理名称:
SQL>SELECT worker.last_name||'works for '||manager.last_name FROM s_emp worker, s_emp manager WHERE worker.manager_id = manager.id ;
18. 【例题21】查询s_emp表中所有员工的平均工资:SQL> SELECT avg(salary)FROM s_emp ; 19. 【例题22】查询s_emp表中各个部门员工的平均工资及部门名称:
SQL> SELECT e.dept_id, max(d.name),avg(e.salary) FROM s_emp e , s_dept d WHERE e.dept_id = d.id GROUP BY dept_id; 20.【例题23】查询s_emp表中31部门一共有多少员工:SQL> SELECT COUNT(*) FROM s_emp WHERE dept_id = 31 ; 21. 【例题24】查询s_emp表中销售人员的数量(提成率不为空的记录个数): SQL> SELECT COUNT(commission_pct) FROM s_emp;
22. 【例题25】查询s_emp表中各个部门员工的平均工资,工资总和及部门名称并按照工资总和排序:
SQL> SELECT e.dept_id, max(d.name),avg(e.salary),sum(salary) FROM s_emp e , s_dept d WHERE e.dept_id = d.id GROUP BY dept_id ORDER BY sum(salary);
23. 【例题26】查询s_emp表中除41部门以外的部门员工的平均工资,工资总和及部门名称并按照工资总和排序: SQL> SELECT e.dept_id, max(d.name),avg(e.salary),sum(salary) FROM s_emp e , s_dept d WHERE e.dept_id = d.id GROUP BY dept_id HAVING e.dept_id !=41 ORDER BY sum(salary) ;
24. 【例题27】求平均工资高于1500的部门的工资总和,最高工资,最低工资:
SQL> SELECT e.dept_id, max(d.name),avg(e.salary),sum(e.salary) FROM s_emp e , s_dept d WHERE e.dept_id = d.id GROUP BY dept_id HAVING avg(e.salary)>1500 ORDER BY avg (e.salary); 25. 【例题28】查询s_emp表中工资最低的员工的姓名: SQL> SELECT last_name FROM s_emp WHERE salary = (SELECT min(salary) FROM s_emp) ; 26. 【例题29】查询s_emp表中平均工资低于32部门的部门ID:SQL> SELECT dept_id,avg(salary) FROM s_emp GROUP BY dept_id HAVING avg(salary)<(SELECT avg(salary) FROM s_emp WHERE dept_id = 32) ORDER BY DEPT_ID;
27. 【例题30】查询s_emp表中平均工资低于32部门的部门ID及名称:SQL> SELECT dept_id,avg(salary),name= FROM s_emp,s_dept WHERE s_emp.dept_id = s_dept.id GROUP BY dept_id,name HAVING avg(salary)<(SELECT avg(salary) FROM s_emp WHERE dept_id = 32) ORDER BY DEPT_ID; 第四章 数据库安全(第三讲)
1. 根据数据库的特点,数据库的加密一般采用如下三种方式:1)库外加密;2)库内加密((1)记录(元组)加密、(2)域
(属性)加密);3)数据项加密。
第四章 数据库安全(第四讲)
1. 数据库安全性控制的常用方法:用户标识和鉴定、存取控制、视图、审计、密码存储。
2. 用户标识与鉴别:系统提供一定的方式让用户标识自己的名字和身份,系统进行核实,通过鉴定后才提供系统使用权。常用方法:口令、过程识别、上机密码卡、指纹、声音、照片等、回答问题。
3. 存取控制机制的组成:定义存取权限、 检查存取权限。常用存取控制方法:自主存取控制(Discretionary Access Control ,简称DAC)C2级、 灵活;强制存取控制(Mandatory Access Control,简称 MAC) B1级、严格。
4. SQL Server中权限的种类:1)对象权限:对表、视图、存储过程等对象的操作权(DML);2)语句权限:用数据定义语句(DDL)创建数据库或数据库中的对象的权限;3)隐含权限:预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限,隐含权限相当于内置权限,不再需要明确地授予这些权限。
5. GRANT(授权)语句的简明语法:GRANT <权限>[,<权限>]... ON <对象类型> <对象名>TO <用户>[,<用户>]...[WITH GRANT OPTION];
6. 【例题31】把查询Student表权限授给用户U1:GRANT SELECT ON TABLE Student TO U1; 7.【例题32】把对Student表和Course表的全部权限授予用户U2和U3:
GRANT ALL PRIVILIGES ON Student TO U2, U3 ; GRANT ALL PRIVILIGES ON Course TO U2, U3 8. 【例题33】把对表SC的查询权限授予所有用户:GRANT SELECT ON SC TO PUBLIC ; 9. 【例题34】把查询Student表和修改学生学号的权限授给用户U4:
GRANT SELECET ON TABLE Student to U4 ; GRANT UPDATE(Sno), SELECT ON Student TO U4 10. 【例题35】把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户: GRANT INSERT ON SC TO U5 WITH GRANT OPTION;
11. 【例题36】给用户 Mary 和 John 以及 Windows NT 组 Corporate\\Tom 授予创建数据库和表的语句权限: GRANT CREATE DATABASE, CREATE TABLE TO Mary, John, [Corporate\\Tom];
12. REVOKE(收回授权)语句的简明语法:REVOKE <权限>[,<权限>]... ON <对象类型> <对象名>FROM <用户>[,<用户>]... 13. 【例题37】把用户U4修改学生学号的权限收回: REVOKE UPDATE(Sno) ON Student FROM U4 ; 14. 【例题38】收回所有用户对表SC的查询权限:REVOKE SELECT ON SC FROM PUBLIC; 15. SQL Server的安全体系:登陆(login)、用户(user)、角色(role)、权限。
16 【例题39】新建登录,名称为jerry,默认数据库为student,密码设为password . sp_addlogin ‘jerry’, ‘password’,’student’
17. 【例题40】把jerry的密码改为tom :sp_password ' password ', ' tom ', ' jerry ' ; 18. 【例题41】删除登陆账户user1 :sp_droplogin ' user1 ' ;
19. 【例题42】在数据库student中,为登陆帐户jerry添加用户,取名仍为jerry。 USE student EXEC sp_grantdbaccess 'jerry'
20. 【例题43】 删除数据库student中的用户jerry:USE student EXEC sp_revokedbaccess 'jerry'; 21. 【例题44】为数据库student建角色‘记分员’USE student EXEC sp_addrole '记分员'
22. 【例题45】指定jerry为记分员USE student EXEC sp_addrolemember '记分员', ‘jerry'
23. 【例题46】指定jerry为student数据库的属主USE student EXEC sp_addrolemember ‘db_owner', ‘jerry‘
24. 强制存取控制方法(MAC):它不是用户能直接感知或进行控制的。适用于对数据有严格而固定密级分类的部门。定义存取权限(用户负责)1)存取权限:存取权限由两个要素组成:数据对象(如DB/Table/视图/列等)、操作类型(如select/update/delete等);2)定义方法:GRANT/REVOKE。
25. 强制存取控制(MAC)是指系统为保证更高程度的安全性,按照TDI/TCSEC标准中安全策略的要求,所采取的强制存取检查手段。MAC不是用户能直接感知或进行控制的。
26. 敏感度标记:对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label);敏感度标记分成若干级别:绝密(Top Secret)、机密(Secret)、可信(Confidential)、公开(Public)。
27. 强制存取控制规则:当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取必须遵循下面两条规则:(不上读,不下写)
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体; (2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。
软件安全 第1讲
一、软件安全概念
1.概念:出现软件故障现象的原因是软件存在漏洞。“任何软件,不论它看起来是多么安全,其中都隐藏漏洞”。
软件安全的目的是尽可能消除软件漏洞,确保软件在恶意攻击下仍然正常运行。 2.安全的需求
用户花费了很大的代价来解决信息安全风险,希望能够: 保护业务不会被黑客破坏”;限制责任和义务,满足法规和标准;避免对企业的品牌和信誉造成破坏 3.软件安全问题加剧的三个趋势
1)互联性:多数计算机与Internet相连;多数软件系统互联于Internet。2)可扩展性:通过接受更新或者扩展件使系统升级;3)复杂性:代码行数增加、网络式、分布式
二、漏洞
1)所有的软件都存在潜伏的漏洞;2)安全必须经过证明;3)软件安全漏洞可分为两大类:设计漏洞、实现漏洞
1.设计漏洞示例:Microsoft Bob是作为Windows ME和Windows 98的辅助程序而设计的,其中包含一个设置系统密码的工具。当用户试着输了三次(不正确)密码时,Bob将弹出如下的信息:“我想你忘记了你的密码,请输入一个新的密码。”然后,就允许用户修改密码,即使不知道老密码。 2.常见的安全设计问题
密码技术使用的败笔:创建自己的密码技术;选用了不当的密码技术;依赖隐蔽式安全;编写到程序中的密钥;错误的处理私密信息
对用户及其许可权限进行跟踪:会话管理薄弱或缺失;身份鉴别薄弱或缺失;授权薄弱或缺失 有缺陷的输入验证:未在安全上下文环境中执行验证;验证例程不集中;不安全的组件边界
薄弱的结构性安全:大的攻击面;在过高权限级别上运行进程;没有纵深防御;失效时处理不安全 其他:代码和数据混在一起;错将信任寄予外部环境;不安全的默认值;未作审计日志 3.实现漏洞实例
1)2001年的红色代码(Code Red)蠕虫利用Microsoft的IIS Web服务器的软件缺陷。2)字符串变量是Unicode字符类型的(每个字符占用两个字节),在计算缓冲区的时候应该是偏移量为2,但IIS在计算缓冲区大小的时候却按照偏移量为1错误的计算缓冲区。3)导致在14个小时内,就有359000台机器感染了红色代码蠕虫。 4.几种常见的致命安全漏洞
4.1缓冲区溢出 一个缓冲区溢出例子:
char buf*15+; char prefix*+=“http://”; char path*+=“upc.edu.cn”; strcpy(buf,prefix); strcat(buf,path,sizeof(path)); 1)当一个程序允许输入的数据大于已分配的缓冲区大小时,缓冲区溢出就会发生。2)有些语言具有直接访问应用程序内存的能力,如果未能处理好用户的数据就会造成缓冲区溢出。C和C++是受缓冲区溢出影响的两种最常见的编程语言。3)缓冲区溢出造成的后果小到系统崩溃,大到攻击者获取应用程序的完全控制权。4)1988年,第一个Internet蠕虫—Morris蠕虫就是对finger服务器攻击,造成缓冲区溢出,几乎导致Internet瘫痪。 4.2SQL注入
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面 访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报
http://www.xxx.com/showdetail.asp?id=49 http://www.xxx.com/showdetail.asp?id=49’
Microsoft JET Database Engine 错误 '80040e14' 字符串的语法错误 在查询表达式 'ID=49'' 中。 /showdetail.asp,行8 (a.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。 b.程序没有判断客户端提交的数据是否符合程序要求。 c.该SQL语句所查询的表中有一名为ID的字段。)
Microsoft Jet 是微软针对文件型数据库所发展的数据库引擎(Database Engine)
http://www.xxx.com/showdetail.asp?id=49;;and user>0 ,将nvarchar值 ”abc” 转 换数据类型为 int 的列时发生语法错误 4.3跨站脚本
跨站脚本(XSS,Cross-site Scripting)漏洞是一类专门针对Web应用程序的漏洞,它会使得产生漏洞的Web服务器绑定的用户数据(通常保存在cookie中)被泄露给恶意的第三方。
所谓“跨站”是指;当一个客户端访问了可正常提供服务但是有漏洞的Web服务器后,cookie从此客户端传递给了攻击者控制的站点。 任何用于构建网站的编程语言或者技术都可能受到影响。 4.4其他致命安全漏洞
格式化字符串、整数溢出、命令注入、未能处理错误信息、未能保护好网络流量、使用Magic UPL及隐藏表单字段、未能正确使用SSL和TLS、使用基于弱口令的系统、未能安全的存储和保存数据、信息泄露、不恰当的文件访问、清新网络域名解析、竞争条件、未认证的密钥交换、密码学强度随机数、不良可用性 8.解决软件安全的方法
应用风险管理、软件安全的接触点(最优化方法)、知识
三、风险管理框架
“安全就是风险管理”。
1.风险就是在项目过程中有可能发生的某些意外事情。例如:缺少对开发工具的培训。 2.风险管理的关键:随着软件项目的展开,不断的确定和追踪风险。
3.RMF的基本思想:随时间变化,对软件安全进行确定、评级、追踪和理解。 4.Cigital的风险管理框架(RMF)
代码审核:
所有的软件项目有一个共同的工件—源代码。
大量的安全问题都是由可以在代码中发现的简单缺陷引起的,例如缓冲区溢出漏洞与SQL注入漏洞。
代码审核就是为了查找和修复存在于源代码中的缺陷。 代码审核可以手工审核或者使用静态分析工具进行审核。 静态分析工具审核速度快,并不需要操作人员具有丰富的安全专业知识。
5.25个最危险的编程错误
(1)组件间不安全的交互:这些缺陷与数据在单独的组件、模块、程序、进程、线程或系统之间不安全发送和接受方法有关。CWE-20:不适当的输入验证 ;CWE-116:不正确的编码或输出转义; CWE-89:SQL查询结构保护失败(又名“ SQL注入”) ;CWE-79:网页结构保护失败(又名“跨站脚本攻击”) ;CWE-78:操作系统命令结构保护失败;CWE-319:明文传输的敏感信息; CWE-352:伪造跨站请求(CSRF); CWE-362:竞争条件 ;CWE-209:错误消息的信息泄漏;
(2)危险的资源管理:此类缺陷与软件没有妥善管理创造、使用、转让或取消重要的系统资源有关。
CWE-119:对内存缓冲区边界操作限制失败 ;CWE-642:外部控制的临界状态数据;CWE-73:外部控制的文件名或路径 ;CWE-426:不可信的搜索路径; CWE-94:代码生成控制失败(又名“代码注入” ) ;CWE-494:下载的代码
未进行完整性检查 ;CWE-404:资源关闭或释放不正确; CWE-665:不正确的初始化; CWE-682:不正确的运算(如出现整数溢出等错误)
(3)可穿透的防范措施:这一类缺点与防御技术的经常误用、滥用,或彻底忽略有关。CWE-285:不正确的访问控制(授权) ;CWE-327:使用一个被攻破的或危险的加密算法 ;CWE-259:硬编码的密码 ;CWE-732:对关键资源的使用权限不安全的分配 ;CWE-330:使用不够有效的随机值 ;CWE-250:给予没有必要的权限;CWE-602:服务器端的安全由客户端实施 6.Fortify
Fortify SCA是发现软件安全漏洞隐患最全面和分析最完整的产品。它使用特有的成熟的五大软件安全分析引擎、最全面最广泛的软件安全代码规则集和fortify公司特有的X-Tier Dataflow™ analysis技术去检测软件安全问题。
Fortify专门的分析器:数据流分析器、语义分析器、控制流分析器、配置流分析器、结构分析器 7.静态分析工具FindBugs
有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。FindBugs 的 缺陷清单及说明。Findbugs eclipse插件使用指南
8.其他源代码分析工具 Coverity 、Ounce Labs 、Secure software
9.体系结构风险分析
50%的软件安全问题是有设计瑕疵引起的。因此需要对设计和说明书进行审核分析。设计人员、架构人员和分析人员应该用文档清晰的记录各种前提假设,并确定可能的攻击。安全分析人员揭示体系结构瑕疵,对它们评级,并开始进行降低风险的活动。 10.微软:STRIDE攻击模型:Spoofing identity(欺骗)、Tampering with data (篡改)、Repudiation (抵赖)、Information disclosure (信息泄露)、Denial of service (拒绝服务)、Elevation of privilege (特权提升) 11.49种攻击模式
使客户端不可见;把写入专用OS资源的程序作为目标;利用用户提供的配置文件运行提高权限的命令;利用配置文件的搜索路径;直接访问可执行文件;在脚本内嵌入脚本;充分利用不可执行文件中的可执行代码;参数注入;命令分隔符;多个解析器和双重换码;把用户提供的变量传递给文件系统调用;后缀NULL终止符;后缀、NULL终止符和反斜线;在相对路径间来回移动;客户端控制的环境变量;用户提供的全局变量;会话ID、资源ID和保密委托;模拟波段内的切换信号;攻击模式片段:操作终端设备;简单的脚本注入;在非脚本元素种嵌入脚本;HTTP头中的XSS;HTTP查询字符串;用户控制的文件名;将本地文件名传入到参数为URL的函数中;电子邮件头中的元字符;文件系统函数注入,基于内容;客户端注入,缓冲区溢出;导致Web服务器错误分类;前导幽灵字符的交替编码;在交替编码中使用斜线;在交替编码种使用转义斜线;Unicode编码;UTF-8编码;URL编码;可替换的IP地址;斜线和URL编码组合在一起;Web日志记录;使二进制资源文件溢出;使变量和标记溢出;使符号连接溢出;MIME转换;HTTP Cookie;通过缓冲区溢出来过滤错误;用环境变量来使缓冲区溢出;在API调用中的缓冲区溢出;本地命令行工具中的缓冲区溢出;参数扩展;Syslog()中的字符串格式溢出。 12.Microsoft的威胁建模 软件安全最大的原因就在于软件使用输入 (2)外部数据流:网络I/O;远程过程调用(RFC);外部系统查询;文件I/O;注册表;命名管道,互斥、共享内存,每一个操作系统对象;Windows消息;其他的操作系统调用 (3)威胁建模:识别威胁路径;识别威胁;识别漏洞;将漏洞分级/排定优先级
1)识别威胁路径:识别最高风险领域,并
确定相应的保护措施;确定用户访问类别;基于数据流图进行威胁分析;构造威胁路径表
2)识别威胁:对于每一条威胁路径,需要逐一理清与处理相关的每一种威胁。
高风险活动: 数据解析、文件访问、数据库访问;生成子进程、身份鉴别、授权;同步或会话管理、处理私密数据;网络访问。
例如:IM用户注册数据可能是畸形的,这会引起“账号管理”进程发生处理错误。该错误可能导致:损坏用户信息;远程执行代码;注册进程拒绝服务;接受来自匿名用户的数据并将其传递给SQL数据库。
3)识别漏洞:清楚了高风险组件所面临的威胁之后,下一步就是找出可能存在于这些组件中的实际漏洞。如果设计人员未能构建一些安全特性来缓解威胁,威胁就会变成一种漏洞。漏洞搜寻:详细的安全设计审查、安全代码审查、安全测试
4)将漏洞分级/排定优先级:使用DREAD模型适用于分出威胁的严重程度级别的一种有效技术。DREAD代表:潜在的破坏(Damage potential)再现性(Reproducibility)可利用性(Exploitability)受影响的用户(Affected users)可发现性(Discoverability) 13.软件渗透测试
为保证软件应用程序实现其商业功能需求,通常在软件生命周期运行一系列的动态功能测。传统的测试着重强调特性和功能,但安全并不是一种或一组特性,所以动态功能测试不适合直接用于安全测试。安全测试的核心就是使用白帽和黑帽的概念和方法:保证软件的安全特性像宣传的那样有效,并且保证有意的攻击也不能轻易的危及系统的安全
渗透测试是一种“反向测试”,即安全测试人员直接和深入的探测安全风险以确定系统在遭受攻击时的表现。 渗透测试需要以攻击者的角度来思考问题,属于典型的黑盒测试。渗透测试就是利用所有的手段进行测试,发现和挖掘系统中存在的漏洞,然后撰写渗透测试报告,将其提供给客户;客户根据渗透人员提供的渗透测试报 告对系统存在漏洞和问题的地方进行修复和修补。渗透测试最适合于发掘配置问题和其他对软件安全影响较大的环境因素。 工具:1)基于网站的渗透---功能:网站漏洞扫描、cookie注入等。工具:IBM Rational AppScan、Php Bug Scanner 。2)基于系统的渗---功能:系统端口或漏洞扫描。工具:nmap、X-Scan、溯雪 。3)基于数据库的渗---功能:SQL注入、数据库弱口令扫。工具:DSQLTools 、mysqlweak 。4)缓冲区溢出漏洞利用工具---功能:导致系统缓冲区溢。工具:sql2 、aspcode 14.基于风险的安全测试
风险分析,特别是在设计级中,可以帮助我们确定潜在的设计级安全问题和它们的影响。一旦风险被确定并进行了评级,就有助于指导软件安全测试。 15.滥用案例
软件开发人员倾向于根据系统在一切条件满足的情况下的表现来描述软件需求,这将导致以正确的使用为前提而描述系统的规范行为。如果系统会被有意滥用,为了开发出安全、可靠的软件,就必须设法预测异常行为。 例如:对于一个工资支付系统,可能有这样的用例“系统允许HR管理部门的用户查看和修改所有员工的工资”、“系统只允许基本用户查看自己的工资”。但是对于潜在攻击者,可能会试图获取工资支付系统中的特别权限,以删除所有欺诈交易的证据;或者攻击者设法将工资支付推迟几天以挪用由推迟产生的利息。因此,为开发安全的软件,需要像坏攻击者一样思考问题。 15.1滥用案例 如何创建
提出一些假设,说明可能出现的问题。仔细考虑负面和意外的事件。向攻击者一样地考虑问题。攻击者:企图使软件以某种不可预料的方式运行,以从中获益。攻击时经常探测的地方:边界条件、边缘、系统之间的通信,以及系统前提假设。聪明的攻击者经常设法破坏建造系统的前提假设。滥用案例的目标之一:软件应该如何对非法使用做出反应。(78ppt建造误用案例的简单过程图) 16软件安全与安全操作相结合
需求:滥用案例;设计:商业风险分析;设计:体系结构风险分析;测试计划:安全测试;实现:代码审核;系统测试:渗透测试;实际部署系统:配置和操作
四、安全开发生命周期
1.可信赖计算安全开发生命周期 Microsoft 的SD3+C原则
Secure by Design, Secure by Default, Secure in Deployment and Communication 设计安全:在架构、设计和实现软件时,应使它在运行时能保护自身及其处理的信息,并能抵御攻击。 默认安全:在现实世界中,软件达不到绝对安全,所以设计者应
假定其存在安全缺陷。 部署安全:软件应该随附工具和指导以帮助最终用户和/或管理员安全地使用它。 通信:软件开发者应为产品漏洞的发现做好准备并坦诚负责地与最终用户和/或管理员进行通信,以帮助他们采取保护措施。
2.谁来实施?
Microsoft是假定公司或软件开发组织中存在一个中央安全小组,该小组致力于推动最佳安全做法的制订与改进和流程优化,为整个组织提供专家意见,并在软件发布前对其进行审核(最终安全审核或 FSR)。 Microsoft 的经验是在软件设计和开发过程中必须经常与安全小组进行互动,并必须与其共享敏感的技术和商业信息。 3.软件安全人人有责
开发人员必须实施安全工程,保证建造的系统是可防御的而非布满漏洞。软件操作人员必须继续架构合理的网络,保护它们并维持它们的运行。管理员必须理解现代系统的分布式本质,并开始实施最低特权原则。用户必须认识到软件是可以安全的,所以可以与软件供应商合作,共享软件的价值。还必须认识到,在任何设计中用户都是最后的防御阵地。软件经理主管人员必须认识到,在安全设计和安全分析上尽早投资会有助于提高用户对他们的产品的信任程度。
软件安全 第2讲web安全
一、web的安全问题
WEB已经成为Internet上最重要的应用。 WEB的安全性问题的原因。 HTTP协议的安全性是非常脆弱的; 服务实现上的复杂性系统的配置和管理趋于复杂化 ,导致许多的安全隐患;WEB最终用户常常是未经训练或不了解系统安全细节的用户
1.WEB安全威胁 ——威胁的位置
(1)对WEB服务器的攻击;(2)对WEB浏览器的攻击;计算机系统安全来保障(3)对浏览器与服务器间通信流量的攻击。网络安全协议来保障
2.WEB安全威胁 ——威胁的后果
(1)信息完整性的攻击:试图修改用户数据;利用特洛伊木马攻击客户浏览器;修改传输中的报文通信量 (2)对信息保密性的攻击:网络窃听数据信息;网络窃取网络配置信息 (3)拒绝服务攻击:目标阻止受攻击者访问特定资源;目的是合法用户使用网络资源 (4)对身份认证攻击:假冒合法用户获取服务权限;假冒服务器欺骗用户 3.保证web应用安全
(1)首先需要保证服务器系统和客户工作站系统安全,系统安全是整个应用安全保障的基础。(2)在此基础上,Web应用的安全性实现主要依赖于应用协议的安全性和网络通信的安全性。(3)应用协议安全性问题在协议的设计和实现中体现。(4)网络通信的安全性需要一些安全通信协议和机制来保护网络中的通信流量。(5)安全通信协议是附加在TCP/IP协议栈中的一系列安全机制。 3.1.TCP/IP协议的安全机制(右图) 3.2.网络层——IP 安全性(IPSec)
使用IPSec的优点在于对于最终用户和应用程序来说,这层安全机制是透
明的,而且能够提供一种通用的解决方法,他不影响应用的具体实现和修改。IPSec可以保证通过IP层的数据的安全性,同时它还具有过滤功能,只有符合条件信息流才能通过。 3.3应用层——S/MIME,PGP,SET,Kerberos
与应用有关的安全服务直接嵌入到特定的应用程序中。支持特定的应用程序专门定制特定的安全服务。如电子安全交易(SET)
3.4 SSL协议: Secure Socket Layer,是Netscape提出的。
设计目标:在TCP基础上提供一种可靠的端到端的安全服务,其服务
对象一般是WEB应用。 传输层的安全协议。SSL的 体系结构中包含两个协议子层,底层是SSL记录协议层,高层是SSL握手协议层。 SSL的两个重要概念:
1、SSL连接(connection):(1)一个连接是一个提供一种合适类型服务的传输; (2)SSL的连接是点对点的关系;(3)连接是暂时的,每一个连接和一个会话关联。
2、SSL会话(session):(1)一个SSL会话是在客户与服务器之间的一个关联; (2)会话由Handshake Protocol创建。会话定义了一组可供多个连接共享的加密安全参数;(3)会话用以避免为每一个连接提供新的安全参数所需昂贵的谈判代价。 SSL的会话状态:
SSL中利用”会话状态”来表示通信双方通过握手协议协商确定一组安全参数集合。按照参数是否启用分为:(1)待决状态(pending state),它包含了当前握手协议协商好的压缩、加密和MAC的算法,以及加解密的密钥等参数。(2)当前操作状态(current operating state),它包含了当前SSL纪录层协议正在使用的压缩、加密和MAC的算法,以及加解密的密钥等参数。
SSL的会话状态的参数:
(1)会话标识符: 服务器选择的一个任意字节序列,用以标识一个活动的或可激活的会话状态。(2)对方的证书: 一个X.509.v3证书。可为空。(3)压缩算法: 加密前进行数据压缩的算法。(4)加密规约: 指明数据体加密的算法(无,或DES等)以及散列算法(如MD5或SHA-1)用以计算MAC。还包括其他参数,如散列长度。(5)主密值: 48位秘密,在client与server之间共享。(6)可重新开始的标志:一个标志,指明该会话是否能用于产生一个新连接。 SSL 记录协议:
SSL 记录协议为SSL连接提供两种服务:(1)保密性。利用握手协议所定义的共享密钥对SSL净荷(payload)加密;(2)完整性。利用握手协议所定义的共享的MAC密值来生成报文的鉴别码(MAC) SSL握手协议层:
握手协议(SSL Handshake Protocol)是SSL中最复杂的一个部分。 功能:使服务器和客户能够相互鉴别对方的身份,并且协商一系列安全参数。 安全参数包括:用于加密和MAC算法,以及用于在SSL记录中保护发送数据的加密密钥。
第一步:
第一步的图:
第二步:服务器发送自己的证书(certificate消息),如果它需要验证客户的身份,将发送certificate-request消息。服务器发送server-hello-done消息,表示握手的第一阶段已完成,服务器将等待客户的应答。 见下图:
第三步
第消息(或私钥作名,发送
图:
三步:如果收到certificate-request消息,客户端将发送certificateno-certificate消息)。如果客户发送certificate消息,将用自己的一数字签给服务器
(certificate-verify消息),以此证明自己是证书的真正拥有者。
(左图)
第四步:客户发送change-cipher-spec消息,后续信息都使用新的密码组规范进行操作,并用新的密码组规范发送finished消息。服务器发送自身的change-cipher-spec消息,然后拷贝未决状态密码组到当前密码组,并发送finished消息。此时,客户和服务器处于同步状态,完成握手过程,可以交换应用层的数据了。 (下一页)
安全电子交易 (SET)
Security Electronic Transaction。
是由世界上两大信用卡商Visa和Master Card于1997年5月联合制定的实现网上信用卡交易的模型和规范。
目的:解决用户、商家和银行之间通过信用卡支付的交易而设计的,以保证支付信息的机密和支付过程的完整。
SET规范,是一种为基于信用卡而进行的电子交易提供安全措施的规则;是一种能广泛应用于Internet上的安全电子付款协议。是一个安全协议的集合。
SET中的核心技术:公开密钥加密、数字签名、电子信封、电子安全证书等。
双向签名:
持卡用户需要将订购信息(OI)和支付信息(PI)一起发送给商家。但是实际上订购信息是发送给商家的,而支付信息是需要发送给银行系统的。为了向持卡用户提供更好的隐私保护,SET将OI和PI分离开来,由不同的机构处理。 简单地将OI和PI分离是不行的。这两个方面的信息也必须采用某种必要的方式连接起来,以解决可能出现的争端。 双向签名可以连接两个发送给不同接收者的消息报文 ,可以满足这种需求。见Internet的相关书籍知识
SSL与SET协议的比较:
1)事实上,SET和SSL除了都采用RSA公钥算法以外,二者在其他技术方面没有太多相似之处。而RSA在二者中也被用来实现不同的安全目标。2)SET协议比SSL协议复杂:因为SET不仅加密两个端点间的单个会话,它还非常详细而准确地反映了卡交易各方之间存在的各种关系。SET还定义了加密信息的格式和完成一笔卡支付交易过程中
各方传输信息的规则。事实上,SET远远不止是一个技术方面的协议,它还说明了每一方所持有的数字证书的合法含义,希望得到数字证书以及响应信息的各方应有的动作,与一笔交易紧密相关的责任分担。SET实现非常复杂,商家和银行都需要改造系统以实现互操作。另外SET协议需要认证中心的支持。3)SET是一个多方的报文协议,它定义了银行、商家、持卡人之间的必须的报文规范,与此同时SSL只是简单地在两方之间建立了一条安全连接。SSL是面向连接的,而SET允许各方之间的报文交换不是实时的。SET报文能够在银行内部网或者其他网络上传输,而SSL之上的卡支付系统只能与Web浏览器捆绑在一起。4)SSL相对不安全,实际上当初它并不是为支持电子商务而设计的。很多银行和电子商务解决方案提供商仍然在使用SSL来构建更多的安全支付系统,但是如果没有经裁剪的客户方软件的话,基于SSL的系统是不能到像SET这种专用银行卡支付协议所能达到的安全性的 前景比较:前景展望-SSL协议与SET协议之争类似于IP与ATM之争
1)IP协议的应用非常广泛,实现简单成本低廉,但服务质量(QoS)没有保证。ATM实现复杂,需要对现有的设备和应用进行改造,成本高昂,但对服务质量有保证。结果是ATM迟迟不能推出成熟的规范,IP设备迅速抢占市场。随着应用需求的增加和扩展,对服务质量要求的呼声也日益高涨。这时CISCO等厂商也提出IP上的QoS,并且通过扩展IP协议实现对QoS的支持。2)所以评价一种技术的前景,最重要的就是这种技术能不能在现有的条件下占有市场。至于这种技术是不是先进、是不是有好的扩展性等等相对来说处于次要地位。从已有的应用份额、实现成本、技术支持等影响市场占有率的最重要的因素来看,SSL协议已经占据了有利的形势。
SET协议不像SSL,它不受美国加密算法出口的限制,在世界各地都采用了128位密钥加密信用卡号。为了被允许不受这种限制,SSL不得不只把128位加密只用在加密商业信息上,而其他的如商品信息、发送地址之类的信息都除外。
WEB服务的系统安全问题:
包含服务器和浏览器两个方面。
安全性威胁可能包括:存放于WEB服务器文件系统上的私人或保密的文件被非法用户窃取;由远程用户发送给服务器的私人或保密信息被窃取。有关服务器主机的详细信息被泄漏,使攻击者有机会分析系统漏洞,并入侵系统;服务器存在允许外来者在服务器主机上执行命令的漏洞,使其有机会改动或破坏系统
软件安全——第4讲 UML
1.UML语言定义了五种类型,9种不同的图,把它们有机的结合
起来就可以描述系统的所有视图。
用例图(Use case diagram) 从用户角度描述系统功能,并指出各功能的操作者。
静态图(Static diagram),表示系统的静态结构。包括类图、对象图。
行为图(Behavior diagram),描述系统的动态模型和组成对象间的交互关系。包括状态图、活动图。
交互图(Interactive diagram), 描述对象间的交互关系。包括顺序图、合作图。
实现图( Implementation diagram ) 用于描述系统的物理实现。包括构件图、部件图。 2.UML的建模机制 UML有两套建模机制:静态建模机制和动态建模机制。 静态建模机制包括用例图(Use Case Diagram)、类图(Class Diagram)、对象图(Object Diagram)、包(Package)、组件图(Component Diagram)和配置图(Deployment Diagram)。
动态建模机制包括消息(Message)、状态图(State Diagram)、时序图(Sequence Diagram)、协作图(Collaboration Diagram)和活动图(Activity Diagram)。
3.UML结构事物:
类:类是具有相同属性、相同方法、相同语义和相同关系的
一组对象的集合。
接口:接口是指类或组件所提供的、可以完成特定功能的一组操作的集合,换句话说,接口描述了类或组件的对外的、可见的动作。
协作:协作描述了在一定的语境中一组对象以及实现某些行为的这些对象间的相互作用。
用例:用例定义了系统执行的一组操作,对特定的用户产生可以观察的结果。
活动类(主动类):活动类是对拥有线程并可发起控制活动的对象(往往称为主动对象)的抽象。从理解的角度上讲,我们应该如此的定义:一个被定义有\"主观能动性\"类为主动类;当然,在主动类的另一面,有其被动类,定义应该为:一个定义为被主动类操作的类为被动类。
组件(构件component)组件是物理上可替换的,实现了一个或多个接口的系统元素。系统中遵从一组接口且提供其实现的物理的、可替换的部分。对系统的物理方面建模时,它是一个重要的构造块。
节点:节点是运行时的物理对象,代表一个计算机的资源,通常至少有个存储空间和执行能力。节点可能具有用来辨别各种资源的构造型,如 CPU 、设备和内存等。节点可以包含对象和构件实例。
4.UML动作事物
交互(ineraction)是由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作。 在UML 中消息画成带箭头的直线,通常加上操作的名字。 状态机(state machine)。状态机是一个状态和转换的图,描述了类元实例对事件接收的响应。
何谓状态机?对象从初态向终态过度的过程中,响应一系列的事件而经历的状态,同时包括对该事件的响应。首先,它不是这个过程,但它描述这个过程,是该对象在这一系列过程中的行为。
那么何为转换:有个事件(发现没有家里钥匙),状态一(到楼下)转换到状态二(上楼),当然这个转换是对象(我)的行为。此时再提一下 初态和终态的概念:初态和终态并不针对转换,而是针对对象,该状态一(到楼下)不是初态,初态是到了下班时间;终态自然也不是状态二(上楼),而是回到 家。那么该转换的状态一是什么呢?是该转换的源状态(source state),状态二呢?是该转换目标状态(target state)。
5.UML分组事物 包的定义:用于把元素组织成组的通用机制。包主要是包含其他元素,如类、接口、构件、节点、协作、用例和图,当然也可以包含其他的包。 包在理解上和构件(component)有协同之处,构件是组成事物的元素,我们定义的包是一个构件的抽象化的概念,是把类元按照一定的规则分成组(也可以称为模块)。我原先的最初想法是package =component(s),后发现没有如此简单,package =component(s)+规则,这个规则不是条文,是构架在组件之上的思想抽象,而这个抽象恰恰是我们包的定义。 6.uml辅助事物
注释(note):即是UML模型的解释部分。在UML图中,一般表示为折起一角的矩形,告诉被注解对象的性质、特征、用途等
依赖(dependency) 一个元素(被依赖事物的提供者)的变化将影响到另一个元素(依赖事物的接收者),或向其(接收者)提供信息。在UML图中,依赖关系用一条带有箭头的虚线来表示 。 依赖的形式可能是多样的,这样我们就用依赖关系来表述它,针对不同的依赖的形式,依赖关系有不同的变体
关联(association):关联关系是一种结构化的关系,指一种对象和另一种对象有联系。给定关联的两个类,可
以从其中的一个类的对象访问到另一个类的相关对象。在UML
图中,关联关系用一条实线表示 。
依赖和关联区别:依赖和关联都是两个或多个相对独立的类之间的关系。当一个对象负责构造另一个对象的实例,或者依赖另一个
对象的服务时,这两个对象之间主要体现为依赖关系;当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。依赖关系表现在局部变量,方法的参数,以及对静态方法的调用;关联关系是使用实例变量来实现。
泛化(Generalization)是一个较广泛的元素和一个较特殊元素之间的类元关系。较特殊的元素完整地包含了较广泛元素,并含有更多的信息。较特殊的元素的实例可以用于任何使用较广泛的元素的地方。在UML图中,泛化关系用一条带有空心箭头的实线来表示 。
实现(Implementation):实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,其中接口只是行为的说明而不是结构或者实现。真正的实现由前一个模型元素来完成。在UML图中,实现关系一般用带有一条带有空心箭头的虚线来表示
7.用例图
用例图语义:表示处于同一个系统中参与者和用例之间的关系。
用例图表示:用例图是包括参与者、由系统边界(一个矩形)封闭的一组用例,参与者和用例之间的关联、用例间关系以及参与者的
泛化的图。用例图表示来自用例模型的元素。
类图的语义:类图是静态视图的图形表达方式,表示声明的(静态的模型元素),如类、类型及其他内容及相互关系。类图可以表示包的
视图,包含嵌套包的符号。类图包含一些具体的行为元素,如操作他们的动态特征是在其他图中表示的,如状态图和协作图。
表示法:类图是用图形方式表示的静态视图。通常,为了表示一个完整的静态视图,需要几个类图(类图这个时候要讲究关联性,如逻辑划分)。每个独立的类图需要说明基础模型中的划分,即是某些逻辑划分,如包是构成该图的自然边界。
对象图的语义:对象图显示某些时刻对象和对象之间的关系,比如对象是类的实体,那么对象就是将类图中的类换成该类的实体-对象,那么,这个图就是对象图。对象图和协作图相关,协作图显示处于语境中的对象模型(类元角色)。对象图的表示法:对于对象图无需提供单独的形式。类图中就包含了对象,所以只有对象而无类的类图就是一个\"对象图\"(和语义的描述一致)。然而,\"对象图\" 这一个术语仅仅在特定的环境下才很有用。对象图不显示系统的演化过程,他仅仅是对象的关系等的静态描述。
顺序图语义:以时间顺序显示对象的交互的图,实际上,它显示了参与交互对象的和所交换消息的顺序。也是以时间为次序的对象之间的通讯的集合。不同于协作图,顺序图仅仅时间关系,而非对象关系(准确地讲应该是对象的时间顺序关系)。顺序图表示方法:顺序图有两个方向,就是我们所说的两维,垂直方向代表时间,水平方向代表参与交换的对象(其实含有先后次序),无论水平或
垂直方向先后次序并没有规定, 谁先谁后都可以。知道操作系统机制的朋友都有一个概念-就是消息机制为驱动,自然其他的应用程序也差不多,顺序的关系就是消息方向,这个方向对参加交互的 对象也是有次序的,每次一个对象参与消息机制。
协作图语义:协作图表示角色间交互的视图,即,协作中实例及其链。与顺序图不同,协作图明确地表示了角色之间的关系。另一方面,协作图也不将时间作为单独的维来表 示,所以必须使用顺序号来判断消息的顺序以及
并行线程。顺序图和协作图表达的是类似的信息(使用不同的方法表达)。
状态图语义:显示一个状态机(包括简单状态、转换、嵌套组成状态)的图。这个视图包括状态机。关于状态机我建议你再回头看一下状态机的说明。状态图表示法:在状态机一段的说明时我们举例的就是一个状态图。参见原先述说状态时的状态图 活动图语义:活动图是状态机一个特例,在该状态机中所有的或大部分的状态都处于活动状态或动作状态,所有或大部分的转换由源状态中活动的完成所触发。活动图表示一个程序或工作流。工作流是被活动图所建模的过程的例子。活动图通常出现在设计的前期,即在所有实现决定前出现,特别是在对象被指定执行所有 的活动前,其状态代表活动的执行,就象一个计算机或真实世界不间断的操作,而转换由状态内活动的完成来触发(若有约束条件,可能有几个可能不同的出口)。活动图是强调计算过程中顺序的和并发步骤的状态机。活动图的表示法:活动图是状态机的一种,但是几种简单表示法(也可认为是几个分支)也适用于活动图,如:活动状态、分支、合并、泳道、对象流状态、状态、延迟事件等。
构件图语义:构件图表明软件之间的依赖关系,包括源代码构件、二进制代码构件和可执行代码构件。软件模块可以用一个构件来表示。有些构件存在于编译时,有些存在于链接时,有些存在于执行时,有些在多种场合存在。一个编译时构件只在编译时有意义。构件图只有描述符形式,没有实例形式。要表示构件实例,应使用部署图。构件图表示:构件图表示了构件类元,以及其中定义的类(或其他的类元)和构件间关系。构件类元还可以嵌套在其他构件类元之中,从而表示定义关系。
实施图的语义:实施图表示运行时过程节点、构件实例及其对象的配置的视图。构件表示代码单元在运行时的表现。运行时不存在的构件不出现在实施图中,而是在构件图表示。实施图含有用通信链相连的节点实例。节点实例包括运行时的实例,如构件实例和对象构件实例和对象还可以包含对象。模型可以表示实例及其接口之间的依赖关系,还可以表现节点或者其他容器之间实体移动。实施图表示法:实施图是节点符号与表示通讯关联的路径构成的网状图,节点符号可以包含构件实例。说明构件存在或运行于该节点上。构件符号可以包含对象,说明对象是构件 的一部分。构件之间用虚线箭头相连,说明一个构件使用了另一个构件的服务。必要时可以用构造型说明依赖关系。实施图类似于对象图,通常用于表示系统中的各个节点的实例。很少有实施图来定义节点的种类和节点之间的关系。
状态机的例子:
状态机说白了很简单,说一个最常见的例子,我们下班回家这件事,人(假如是我)就是一个对象,我们来考察一下几个状态:
1.到下班时间了,收拾东西准备回家(不考虑加班)。2.开始等电梯。3.到了楼下。(发现没带家里钥匙,上楼拿。)4.上楼。4.去公交等车。5.乘公共汽车去菜场。6.买菜7.回到家 那么事件呢?
1.下班时间到了(准备下班)。2.电梯到(上电梯)3.电梯到楼下(下电梯)3.发现没有家里钥匙(去拿钥匙)。4.自己要乘公共汽车到了(上车)。5.公共汽车到站(下车)。6.忽然想起家里没菜(去买菜)。
因篇幅问题不能全部显示,请点此查看更多更全内容