目录
问答题考点:
1.简单替换密码加解密
2.DES算法的原理:
编辑3.RSA算法的全过程:
4.基于公开密钥的数字签名方案
5.单项散列函数的特点:
6.简述信息的完整性、可用性、保密性
7.简述数字水印的主要特征
8.论述公开密钥算法的典型特点
9.论述对称加密体制
10.论述公开密钥体制
11.简述什么是数字证书?X.509数字证书包含哪些内容?
12.论述网络攻击的一般步骤
13.论述计算机病毒程序的一般构成
14.论述杀毒软件的一般构成
15.在软件系统中,要安全的保护用户的密码,应该采取哪些措施?
16.设计软件保护的一般性建议
17.什么是区块链技术?它有哪些特点?
18.什么是社会工程学攻击?常见的攻击手段有哪些?
19.请论述常见的软件安全问题
20.请论述在软件开发的各阶段需要考虑的安全问题
21.请论述Web应用系统的安全功能设计方案
问答题考点:
1.简单替换密码加解密
见习题。教材P57页习题4、5、6、7;
1).代替密码
代替密码又称替换密码,就是按照一定要求,将明文中的每个字符替换成另一个字符,明文中字符的位置保持不变,但其本身改变了。如移位密码、单表置换密码、多表置换密码。
凯撒密码
据说这是因为凯撒是率先使用加密函数的古代将领之一。凯撒密码是一种单表置换密码,密文字母表是由正常顺序的明文字母表循环左移3个字母得到的,如图所示。加密过程
可表示为: Ci=E(Mi)=(Mi+3) mod 26,这里的密钥为3。如将字母A换作字母D,将字母B换作字母E。
2).换位密码
换位密码改变明文中字母的位置﹐但明文中的字母不变。也就是明文中的字母保持不变﹐但顺序被打乱了。例如可以将明文the变换成het。
2.DES算法的原理:
DES算法描述:
DES是分组加密算法,它以64位(二进制)为一组,对称数据加密,64位明文输入,64位密文输出。密钥长度为56位,但密钥通常表示为64位,并分为8组,每组第8位作为奇偶校验位,以确保密钥的正确性,这样对用户来说每组密钥仍是56位。
利用密钥,通过传统的换位、替换和异或等变换,实现二进制明文的加密与解密。
DES算法概要:
(1)对输入的明文从右到左按顺序每64位分为一组(不足64位时,在高位补零),并按组进行加密或解密
(2)进行初始置换
(3)将置换后的明文分成左右两组,每组32位
(4)进行16轮相同的变换,包括密钥变换,每轮变换如图2.5所示
(5)将变换后的左右两部分合并在一起
(6)逆初始变换,输出64位密文。
3.RSA算法的全过程:
(1)选择密钥
①选择两个不同的素数p,q
②计算公开模数r=p*q
③计算欧拉函数φ(r)=(p-1)*(q-1)
④选一个与φ(r)互质的量k,即保证gcd(φ(r),k)=1时,选择k,可以令sk=k或pk=k
(2)加密
(3)解密
举例说明:
4.基于公开密钥的数字签名方案
设用户Alice要发送一个经过数字签名的明文M给用户Bob,数字签名的一般过程如下∶
(1)Alice用信息摘要函数 hash 从M抽取信息摘要M';(2) Alice用自己的私人密钥对M'加密﹐得到签名文本s ,即Alice在M上签了名﹔
(3)Alice用Bob 的公开密钥对S加密得到S';
(4)Alice将S'和M发送给Bob ;
(5) Bob收到S'和M后﹐用自己的私人密钥对S'解密﹐还原出s ;
(6) Bob 用Alice的公开密钥对S解密﹐还原出信息摘要M';
(7) Bob用相同信息摘要函数从M抽取信息摘要M”;
(8) Bob比较M'与M”,当M'与M”相同时,可以断定Alice在M上签名。
5.单项散列函数的特点:
(1)hash函数能从任意长度的M中产生固定长度的散列值h
(2)已知M时,利用h(M)很容易计算出h
(3)已知M时,要想通过同一个h(M)计算处不同的h 是很困难的
(4)已知h时,要想从h(M)计算处不同的M 是很困难的
(5)已知M时,要找出另一信息M’,使h(M)=h(m’)是很困难的。
6.简述信息的完整性、可用性、保密性
(1)完整性:保护计算机系统内软件和数据不被偶然或人为蓄意破坏、篡改、伪造等
(2)可用性:在用户授权的情况下,无论什么时候只要客户需要,信息必须是可用的和可访问的,信息系统不能拒绝服务
(3)保密性:信息必须按照拥有者的要求保持一定的秘密性。
7.简述数字水印的主要特征
1).鲁棒性。是指水印信息能够抵抗应用过程中的各种破坏程度。比如对信息的传输、压缩、滤波、几何变换等处理后,数字水印不会被破坏,仍能从数字信息中提取出水印信息。
2).水印容量。是指在数字信息中加入的水印数量。水印容量和鲁棒性之间是相互矛盾的,水印容量的增加会带来鲁棒性的下降,对不可见性也有影响,鲁棒性不好就会导致检测结果的不可靠。
3).安全性。是指加入水印和检测水印的方法对没有授权的第三方应是绝对保密的,而且不可轻易破解。数字水印系统一般使用一个或多个密钥来确保水印安全。
4).自恢复性。是指数字水印在原始数据经过较大的破坏或变换后,仍能从原数据中恢复出隐藏的水印。
5).不可见性。不可见性对可感知的数字水印来说,是指数字信息加入水印后不会改变其感知效果,即看不到数字水印的存在,这是数字水印最基本的特点。
8.论述公开密钥算法的典型特点
(1)在公开密钥算法中有一对密钥分别为公钥和私钥
(2)进行加密和解密时使用不同的加密密钥和解密密钥,且加密密钥和解密密钥不能户型推导出来或者很难
(3)公开密钥和私密密钥必须配对使用
(4)公开密钥算法的安全性是依赖于某个数学问题很难解决的基础上的。
9.论述对称加密体制
(1)在对称算法体制中,如果有N个成员﹐就需要N(N-1 )/2个密钥,这巨大的密钥量给密钥的分配和安全管理带来了困难。
(2)在对称算法体制中,知道了加密过程可以很容易推导出解密过程,知道了加密密钥就等于知道了解密密钥,可以用简单的方法随机产生密钥。
(3 )多数对称算法不是建立在严格意义的数学问题上,而是基于多种“规则"和可“选择"假设上。
(4)用对称算法传送信息时,通信双方在开始通信之前必须约定使用同一密钥,这就带来密钥在传递过程中的安全问题,所以必须建立受保护的通道来传递密钥。
(5)对称算法不能提供法律证据,不具备数字签名功能。
( 6 )对称算法加密速度快,这也是对称算法唯一的重要优点,通常用对称算法加密大量的明文。
10.论述公开密钥体制
( 1 )在公开密钥体制中,每个成员都有一对密钥( pk . sk )。如果有N个成员﹐只需要2N个密钥﹐需要的密钥少,密钥的分配和安全管理相对要容易一些。
(2)知道加密过程不能推导出解密过程﹐不能从pk推导出sk ,或从sk推导出pk。或者说如果能推导出来也是很难的﹐要花很长的时间和代价。
( 3)容易用数学语言描述﹐算法的安全性建立在已知数学问题求解困难的假设上。
(4)需要一个有效的计算方法求解一对密钥pk 、 sk ,以确保不能从pk 、 sk中相互推导。
( 5 )用公开密钥算法传送信息时,无需在通信双方传递密钥。也就不需要建立受保护的信息通道。这是公开密钥算法最大的优势﹐使得数字签名和数字认证成为可能。公开密钥算法有着更广阔的应用范围。
( 6)就目前来看,公开密钥算法加密的速度要比对称算法慢的多。一般只用公开密钥算法加密安全要求高、信息量不大的信息。
11.简述什么是数字证书?X.509数字证书包含哪些内容?
数字证书是有权威机构CA发行的一种权威性的电子文档,是网络环境中的一种身份证,用于证明某一用户的身份及公开密钥的合法性;
包含版本号、序列号、签名算法标识符、认证机构、有效期、主体、主体公开密钥信息、CA的数字签名、可选项等。
12.论述网络攻击的一般步骤
隐藏攻击源-信息收集-掌握系统控制权-实施攻击-安装后门-隐藏攻击痕迹。
13.论述计算机病毒程序的一般构成
(1)安装模块:病毒程序必须通过自身实现自启动并安装到计算机系统中;
(2)传染模块:传染控制部分、传染判断部分、传染操作部分;
(3)破坏模块:激发控制、破坏操作。
14.论述杀毒软件的一般构成
用户界面模块、
病毒数据库、
病毒扫描引擎(文件解析模块,病毒扫描模块,特征码加载模块)、
文件实时监控模块、
进程实时监控模块。
15.在软件系统中,要安全的保护用户的密码,应该采取哪些措施?
(1)用户:增大口令空间,选用无规则的口令,多个口令,用工具生成口令
(2)网站:登录时间限制,限制登录次数,尽量减少会话透露的信息,增加认证的信息量
16.设计软件保护的一般性建议
软件发行前对可执行程序进行加壳;
自己写的程序中嵌入反跟踪代码;
增加对软件自身的完整性检查;
检测到软件破解企图时,不要立即给用户提示信息;
不过于依赖众所周知的函数来获取系统时间;
给软件保护加入一定随机性;
将注册码、安装时间记录到多个不同地方;
采用一机一码。
17.什么是区块链技术?它有哪些特点?
区块链:
是一种特殊的去中心化分布式数据库,集分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
特点:去中心化交易,信息不可篡改,完全匿名
18.什么是社会工程学攻击?常见的攻击手段有哪些?
1).社会工程学攻击,是一种利用"社会工程学" 来实施的网络攻击行为。
社会工程学是一种利用人的弱点如人的本能反应、好奇心、信任、贪便宜等弱点进行诸如欺骗、伤害等危害手段,获取自身利益的手法。
2).常见攻击手段:
1.环境渗透
对特定的环境进行渗透,是社会工程学为了获得所需的情报或敏感信息经常采用的手段之一。社会工程学攻击者通过观察目标对电子邮件的响应速度、重视程度以及可能提供的相关资料,比如一个人的姓名、生日、ID电话号码、管理员的IP地址、邮箱等,通过这些收集信息来判断目标的网络构架或系统密码的大致内容,从而获取情报。
2.引诱
网上冲浪经常碰到中奖、免费赠送等内容的邮件或网页,诱惑用户进入该页面运行下载程序,或要求填写账户和口令以便“验证”身份,利用人们疏于防范的心理引诱用户,这通常是黑客早已设好的圈套。
3.伪装
目前流行的网络钓鱼事件以及更早以前的求职信病毒、圣诞节贺卡,都是利用电子邮件和伪造的Web站点来进行诈骗活动的。有调查显示,在所有接触诈骗信息的用户中,有高达5%的人都会对这些骗局做出响应。
4.说服
说服是对信息安全危害较大的一种社会工程学攻击方法,它要求目标内部人员与攻击者达成某种一致,为攻击提供各种便利条件。个人的说服力是一种使某人配合或顺从攻击者意图的有力手段,特别地,当目标的利益与攻击者的利益没有冲突,甚至与攻击者的利益一致时,这种手段就会非常有效。如果目标内部人员已经心存不满甚至有了报复的念头,那么配和就很容易达成,他甚至会成为攻击者的助手,帮助攻击者获得意想不到的情报或数据。
5.恐吓
社会工程学师常常利用人们对安全、漏洞、病毒、木马、黑客等内容的敏感性,以权威机构的身份出现,散布安全警告、系统风险之类的信息,使用危言耸听的伎俩恐吓欺骗计算机用户,并声称如果不按照他们的要求去做,会造成非常严重的危害或损失。
6.恭维
高明的黑客精通心理学、人际关系学、行为学等社会工程学方面的知识与技能,善于利用人类的本能反应、好奇心、盲目信任、贪婪等人性弱点设置陷阱,实施欺骗,控制他人意志为己服务。 他们通常十分友善,很讲究说话的艺术,知道如何借助机会均等去迎合人,投其所好,使多数人会友善地做出回应,乐意与他们继续合作。
7.反向社会工程学
反向社会工程学是指攻击者通过技术或者非技术的手段给网络或者计算机应用制造“问题”,使其公司员工深信,诱使工作人员或网络管理人员透露或者泄漏攻击者需要获取的信息。这种方法比较隐蔽,很难发现,危害特别大,不容易防范。
19.请论述常见的软件安全问题
1)系统软件安全问题
系统软件是指面向硬件或者开发者所设立的软件,是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统。有代表性的系统软件有操作系统和数据库系统。操作系统是计算机系统的控制和管理中心,常见的操作系统有Windows,Linux,UNIX,Mac OS等。数据库系统是由数据库及其管理软件组成的系统,代表性的数据管理系统有Oracle ,MySQL等。绝大多数系统和应用漏洞源于在软件开发的需求分析,总体设计和代码编制等过程中引入的缺陷。
近几年兴起的“破壳”(Shellshock)漏洞是系统软件安全问题的一个典型实例。这是一种典型的脚本注入漏洞,由于基于Bash 的常用远程服务在输入过滤中没有严格限制边界,也没有作出参数合法化判断,攻击者可在Linux等服务器操作系统上远程执行任意命令。并且因为类UNIX系统是众多网络设备的底层操作系统,特别是Bash广泛地分布和存在于设备中,所以此漏洞的危害范围很大,涉及网络设备,网络安全设备、云计算和大一数据中心等。
2)应用软件安全问题
应用软件(application software)是和系统软件相对应的,是为满足用户不同领域、不同问题的应用需求而开发的软件,包括办公软件、多媒体软件和分析软件等。任何一种软件系统都存在脆弱性,应用软件漏洞可以看作编程语言的局限性。例如,一些程序如果接收到异常或者超长的数据和参数就会导致缓冲区溢出,这是因为很多软件在设计时忽略或者很少考虑安全性问题,且大多数开发人员缺乏安全培训或没有安全编程经验。常见的应用软件漏洞有SQI注入,跨站脚本攻击(XSS)漏洞、跨站请求伪造(CSRF)漏洞和爬虫盗链等。
近些年热门的P2P金融网站系统就是一个典型例子。随着互联网金融产业的兴盛很多互联网企业通过购买通用软件模板或自主开发的方式建立P2P网贷平台。由于金融网站开发普遍存在着安全技术力量不足的状况﹐网站系统中经常包含XSS漏洞,CSRF漏洞、平行越权漏洞﹑任意用户密码重置漏洞等开发漏洞。攻击者可以利用这些漏洞攻击网站后台,使得 P2P平台遭遇系统瘫痪、数据被恶意泄露或篡改,资金被洗劫等安全问题。
3)第三方代码安全问题
为了加快软件开发的速度,大多数开发人员会使用第三方代码库帮助自己方便,快捷地实现想要的功能,例如拼写检查程序或图表制作工具。然而长期使用这样的第三方代码存在很大的安全隐患。如果某个库文件存在漏洞,且在程序开发设计阶段,开发者又忽略了第三方库代码的漏洞审查,那么所有使用了该库文件的软件程序都将面临安全威胁。这种漏洞大多属于突发性威胁,爆发速度快,波及范围广,值得高度关注。例如,OpenSSL中出现的心脏滴血漏洞(Heartbleed)、 GNU Bash中出现的破壳漏洞(Shellshock)都属于这种漏洞。
OpenSSL是安全套接层密码库,同时还是一个第三方开放源代码软件包,Apache使用它加密HTTPs,OpenSSH使用它加密SSH,很多涉及资金交易的平台(如支付网站)也用它作为加密工具。2014年,OpenSSL中的心脏滴血安全漏洞被首次曝光,利用这个漏洞,攻击者不仅可以破解加密的信息,而且可以从内存中提取随机数据,即攻击者可以利用这个漏洞直接窃取目标用户的密码、私人密钥和其他敏感用户数据。由于大量软件都使用了存在漏洞的OpenSSL代码库,尤其是 HTTPS网站(大多采用OpenSSL来实现对SSL协议的支持),致使国内外众多大型网站和厂商都受到严重影响。直到今天,很多_设备上的OpenSSL漏洞仍然没有被修复。
4)新技术安全问题
在工业生产领域,随着计算机技术,通信技术,控制技术的发展和信息化与工业化的深度融合,传统的工业控制系统(Industrial Control System,ICS)逐渐向网络化方向转变,ICS面临的信息安全形势日益严峻。例如,著名的“网络超级武器”Stuxnet病毒有针对性地对伊朗布什尔核电站进行入侵,严重影响核反应堆的安全运营。
在日常生活中,智能手表、智能电视﹑智能冰箱.智能洗衣机乃至智能电饭煲等越来越多的新设备接入互联网,万物互联的时代已经开启,这些新型网络中的软件安全问题尤为引人关注。以车联网为例,德国安全专家发现宝马诸多车型的“联网驾驶”数字服务系统在安全性方面有瑕疵,攻击者可利用其中的漏洞在数分钟内以远程无线方式侵入车辆内部并解除车锁。其主要原因是汽车控制系统在验证解锁信号时只是向宝马服务器发送了一个简单的HTTP Get请求,并没有在传输过程使用SSL或 TLS加密,致使攻击者可以轻松截获传输信息。
20.请论述在软件开发的各阶段需要考虑的安全问题
(1)在需求分析阶段,大多数程序设计人员过多关注需要实现的功能,而忽视了安全需求,需求评审缺少安全方面的审计介入,安全目标不够明确。
(2〉在设计阶段,认证问题﹑授权问题、关键数据保护措施不够完善,身份认证和会话管理设置不当,第三方组件不安全等软件设计导致的漏洞层出不穷。例如,如果开发人员使用明文保存密码,就可能使得攻击者轻易获取用户的隐私信息,进而造成用户权益受损。CSRF ,Direct Object Reference等漏洞也属于软件设计缺陷。
(3)在开发阶段,安全编码规范的制定﹑周期性检测,差距分析,修复跟踪等方面都较易出现漏洞,例如SQL注入,XSS漏洞等,这会使得敏感信息易被泄露,攻击者可利用漏洞信息攻击服务器,盗取用户隐私信息,给企业和用户都造成严重损失。
(4)在测试阶段,许多测试人员只关注软件的功能、性能和稳定性检测,而忽视源代码缺陷测试,黑盒测试,业务性安全测试和第三方组件安全评审等在安全开发中至关重要的测试步骤。
(5)在部署阶段,缺少配置安全评审,系统的额外服务﹑端口安全,服务器默认用户、默认用例、权限过高的默认账户等方面都有可能造成软件缺陷。例如,默认口令会使得攻击者更容易获取管理员密码,从而入侵服务器,获取大量用户信息。
(6)在运维阶段,软件水平是否完好无损,SDK是否出现安全问题,软件本身是否出现安全问题,第三方组件是否产生安全漏洞,都是运维人员需要经常考虑的安全问题。
21.请论述Web应用系统的安全功能设计方案
本方案参照国家电网公司企业标准《信息系统应用安全第⒉部分:安全设计》(Q/GDW1929.2—2013)和《信息安全技术信息系统安全等级保护基本要求》(CB/T 22239-2008),介绍一个基本Web 应用系统应用安全设计内容。
一个基本Web应用系统通常可以划分为终端用户、网络、主机系统、应用程序和数据这5个层次。终端用户是请求系统的访问主体,包括终端设备或访问用户等;网络层为信息系统提供基础网络访问能力,包含边界、网络设备等元素;主机系统层为应用软件与数据的承载系统;应用程序层提供信息系统的业务逻辑控制,为用户提供各种服务,包含应用功能模块、接口等元素;数据层是整个信息系统的核心,提供业务数据和日志记录的存储。信息系统在安全防护设计过程中应从这5个层面进行针对性的安全设计。
终端安全防护是对信息内网和信息外网的桌面办公计算机终端,以及接入信息内、外网的各种业务终端进行安全防护。根据终端类型,将终端分为办公计算机终端、移动作业终端和信息采集类终端3类,应针对具体终端的类型、应用环境及通信方式等制定适宜的终端防护措施。
用户终端安全设计可以参照以下标准的要求。
●《计算机信息系统安全保护等级划分准则》(GB 17859—1999 )。
●《信息安全技术信息系统安全等级保护基本要求》(GB/T 22239——2008 )。
●《国家电网公司管理信息系统安全防护技术要求》(Q/GDW 1594—2014)。
●《国家电网公司应用软件通用安全要求》(Q/GDW 597——2011)。
●《国家电网公司信息系统安全设计框架技术规范》(Q/GDW 11347—--2014)。
●《国家电网公司信息系统应用安全系列标准第⒉部分:安全设计》(Q/GDW 1929.2—2013)。
●《军用软件安全性分析指南》(GJB/Z142——2004)。
●《信息安全技术应用软件系统通用安全技术要求》(GB/T 28452—2012).
网络安全设计和主机安全设计都可以参照以上标准的要求。本方案主要介绍应用安全设计和数据安全设计。
1.应用安全设计
(1)应用安全功能设计
1)身份认证。要求如下。
①应采用合适的身份认证方式,等级保护三级及以上系统应至少采用两种认证方式。认证方式如下。
●用户名、口令认证。
●—次性口令、动态口令认证。
●证书认证。
②应设计密码的存储和传输安全策略。
●禁止明文传输用户登录信息及身份凭证。
●禁止在数据库或文件系统中明文存储用户密码。
●禁止在 Cookie中保存用户密码。
●应在数据库中存储用户密码的哈希值,在生成哈希值的过程中加入随机值。
③应设计密码使用安全策略,包括密码长度、复杂度和更换周期等。
④宜设计图形验证码,增强身份认证安全。
⑤应设计统一错误提示.避免认证错误提示泄露信息。
⑥应设计账号锁定功能,限制连续失败登录。
⑦应通过加密和安全的通信通道来保护验证凭证,并限制验证凭证的时效。
⑧应禁止同一账号同时多个地址在线。
2)授权。要求如下。
应设计资源访问控制方案,验证用户访问权限。
●根据系统访问控制策略对受限资源实施访问控制,防止用户访问未授权的功能和数据。
●未经授权的用户试图访问受限资源时,系统应提示用户登录或拒绝访问。
②应限制用户对系统级资源的访问,系统级资源包括文件、文件夹、注册表项、ActiveDirectory对象、数据库对象和事件日志等。
③应设计后台管理控制方案,如采用黑/白名单方式对访问的来源IP地址进行限制。④应设计在服务器端实现访问控制,不能仅在客户端实现访问控制。
⑤应设计统一的访问控制机制。
⑥应进行预防功能滥用设计,如避免大量并发 HTTP请求。
⑦应限制启动进程的权限,不得使用包括Administrator ,root、sa、sysman和Supervisor等特权用户运行应用程序或连接到网站服务器、数据库或中间件。
⑧授权粒度尽可能小,可根据应用程序的角色和功能分类。
3)输入和输出验证。要求如下。
①应对所有来源不在可信范围之内的输人数据进行验证,包括以下几种。
●HTTP请求消息的全部字段,包括GET 数据、POST 数据、Cookie和 Header数据等。
●不可信来源的文件、第三方接口数据和数据库数据等。
②应设计多种输入验证的方法,包括以下几种。
●检查数据是否符合期望的类型、是否符合期望的长度、是否符合期望的数值范围。检查数据是否包含特殊字符,如:<、>."、、 % 、( 、)、&、+、l 、 l'、l"等。
●应使用正则表达式进行白名单检查。
③服务器端和客户端都应进行输入验证,防止注入类等攻击。
④应对输入内容进行规范化处理后再进行验证,如文件路径、URL地址等。
⑤应当从服务器端提取关键参数,禁止使用客户端输入的数据。
⑥根据输出目标的不同,应对输出数据进行相应的格式化处理:向客户端写回数据时,对用户输入的数据进行HTML编码和URL编码检查,过滤特殊字符(包括HTML关键字,以及&、 lrln、两个ln等字符)。
⑦应禁止将与业务无关的信息返回给用户。
4)配置管理。要求如下。
①确保配置存储的安全:
●避免在Web目录中使用配置文件,防止可能出现的服务器配置漏洞导致配置文件被下载。
●避免以纯文本形式存储重要配置,如数据库连接字符串或账户凭据。
通过加密确保配置的安全,并限制对包含加密数据的注册表项、文件或表的访问权限。
确保对配置文件的修改、删除和访问等权限的变更都验证授权并且详细记录。
●避免授权账户具备更改自身配置信息的权限。
②应使用最小特权进程和服务账户。
③应确保管理界面的安全。
●配置管理功能只能由经过授权的操作员和管理员访问,在管理界面上实施强身份验证,如使用证书。如果有可能,应限制或避免使用远程管理,并要求管理员在本地登录。
●如果需要支持远程管理,应使用加密通道,如SSL或 VPN技术。
④应避免应用程序调用底层系统资源。
⑤应单独分配管理特权。
5)会话管理。要求如下。
①登录成功后应建立新的会话。
●在用户认证成功后,应为用户创建新的会话并释放原有会话,创建的会话凭证应满足随机性和长度要求,以避免被攻击者猜测。
●会话应与IP地址绑定,降低会话被盗用的风险。
②应确保会话数据的存储安全。
●用户登录成功后所生成的会话数据应存储在服务器端,并确保会话数据不被非法访问。
●更新会话数据时,应对数据进行严格的输入验证,避免会话数据被非法篡改。
③应确保会话数据的传输安全。
●用户登录信息及身份凭证应加密后进行传输。如采用Cookie携带会话凭证,必须合理
设置Cookie的Secure、Domain、Path和 Expires等属性。
●应禁止通过HTTP GET方式传输会话凭证,禁止设置过于宽泛的Domain属性。
④应及时终止会话。
●当用户登录成功并成功创建会话后,应在信息系统的各个页面提供用户退出功能。·退出时应及时注销服务器端的会话数据。
●当处于登录状态的用户直接关闭浏览器时,应提示用户执行安全退出或者自动为用户完成退出过程。
⑤应设计合理的会话存活时间,超时后应销毁会话,并清除会话的信息。⑥应设计避免跨站请求伪造。
●在涉及关键业务操作的页面,应为当前页面生成一次性随机令牌,作为主会话凭证的补充。
●在执行关键业务前,应检查用户提交的一次性随机令牌。
⑦采取加密措施来保护数据安全时,除使用SSL/TSL加密传输信道外,针对加密技术,应满足以下设计要求。
●应采用经国家密码管理局批准的商密算法,并确保密钥长度能提供足够的安全强度。
●应确保密钥的安全。
6)参数操作。操作参数攻击是一种更改在客户端和Web应用程序之间发送的参数数据的攻击,包括查询字符串、窗体字段、Cookie和HTTP头。主要的操作参数威胁包括操作查询字符串、操作窗体字段、操作 Cookie和操作 HTTP头。设计如下。
①应避免使用包含敏感数据或者影响服务器安全逻辑的查询字符串参数。
②应使用会话标识符来标识客户端,并将敏感项存储在服务器上的会话存储区中。③应使用HTTP POST来代替GET提交窗体,避免使用隐藏窗体。
④应加密查询字符串参数。
⑤不要信任HTTP头信息。⑥确保用户没有绕过检查。
⑦应验证从客户端发送的所有数据。
7)异常管理。异常信息一般包含针对开发和维护人员调试使用的系统信息,这些信息将增加攻击者发现潜在缺陷并进行攻击的机会。要求如下。
①应使用结构化异常处理机制。
②应使用通用错误信息。
●程序发生异常时,应向外部服务或应用程序的用户发送通用的信息或重定向到特定应用网页。
●应向客户端返回一般性错误消息。
③程序发生异常时,应终止当前业务,并对当前业务进行回滚操作。
④通信双方中的一方在一段时间内未作反应,另一方应自动结束回话。
⑤程序发生异常时,应在日志中记录详细的错误消息。
8)审核与日志。用户访问信息系统时,应对登录行为、业务操作及系统运行状态进行记录与保存,保证操作过程可追溯、可审计,确保业务日志数据的安全。设计如下。
①应明确审计日志格式,可采用以下格式。
●Syslog 方式:Syslog 方式需要给出Syslog 的组成结构。
●Snmp方式:Snmp方式需要同时提供MIB信息。
②日志记录事件应包含以下事件。
●审计功能的启动和关闭。
●信息系统的启动和停止。·配置变化。
●访问控制信息,如由于超出尝试次数的限制而引起的拒绝登录。用户权限的变更。
●用户密码的变更。
●用户试图执行角色中没有明确授权的功能。
●用户账户的创建、注销、锁定和解锁。
●用户对数据的异常操作事件,包括:不成功的存取数据尝试、数据标志或标识被强制覆盖或修改、对只读数据的强制修改、来自非授权用户的数据操作,以及特别权限用户的活动。
③审计日志应包含以下内容。
·用户ID或引起这个事件的处理程序ID。·事件的日期、时间(时间戳)。
事件类型。
事件内容。·事件是否成功。
●请求的来源(例如请求的IP地址)。
④审计日志应禁止包含以下内容(如必须包含,应做模糊化处理)。
·用户敏感信息(如密码信息等)。
·用户完整交易信息。
·用户的隐私信息(如银行卡信息、密码信息和身份信息等)。
⑤宜加强业务安全审计。
⑥应防止业务日志欺骗。
⑦应保证业务日志安全存储与访问。
●禁止将业务日志保存到Web目录下。
应对业务日志记录进行数字签名来实现防篡改。日志保存期限应与系统应用等级相匹配。
(2)应用交互安全设计
应用交互是指不同信息系统之间互联时的数据交互。信息系统交互应通过接口方式进行,应避免采用非接口方式。
1)明确交互系统。
①应确定所有和本系统交互的其他系统。②应确定交互的数据类型和采用的传输方式。2)_接口方式安全设计。
①系统互联应仅通过接口设备(前置机、接口机、通信服务器或应用服务器等设备)进行,不能直接访问核心数据库。
②接口设备上的应用宜只包含实现系统互联所必需的业务功能,不包含业务系统的所有功能。
③其他系统访问本系统设备宜进行接口认证。
④各种收发数据、消息的日志都应予以保存,以备审计与核对。
2.数据安全设计
针对安全需求中的数据安全保护需求,.应从数据的机密性保护、完整性保护和可用性保护3个层面分别进行安全设计。
(1)机密性要求
1)数据传输应确保保密性。
应使用加密技术对传输的敏感信息进行机密性保护。
宜使用安全的传输协议(如 HTTPS、SFTP等加密传输协议)来传输文件。·宜通过加密和数据签名等方式保障客户端和服务器端通信的安全性。
2)数据使用应确保保密性。
●数据的使用应进行检错和校验操作,临时数据使用后需进行销毁处理。
·文件的使用过程中需避免产生临时文件,如果存在临时文件,宜对临时文件做加密处理,临时文件使用后应及时销毁。
3)数据删除应确保保密性。
●敏感数据销毁应不可恢复。数据删除宜经过访问控制。
(2)完整性要求
1)数据传输应确保完整性。
宜使用密钥的密码机制(如MAC、签名值)或使用硬件设备(加密机、加密卡或IC卡/USB KEY)对传输数据完整性进行保护,完整性校验值附在业务数据之后。
2)数据使用应确保完整性。应通过系统业务交易完整性机制来保证处理数据的完整性,一般通过调用系统自带功能实现。步骤包括:业务开始、数据准备、数据提交和交易回退(提交失败时)。
3)敏感数据的使用应在应用程序中进行检错和校验操作,保证原始数据的正确性和完整性。
(3)可用性要求
1)数据采集应确保可用性,验证的方式包括数据格式验证、数据长度验证和数据类型验证等。
2)数据传输应确保可用性。
·敏感数据或可用性要求高的数据在传输时禁止采用UDP协议,应采用TCP协议传输。·应具备断线重传,确保其可用性。
3))数据处理应确保可用性:数据在转换过程中,应采用通用的标准格式。
4)数据使用应确保可用性,验证的方式包括数据格式验证、数据长度验证和数据类型——验证等。