写在前面:
这是一位业界前辈对CISSP知识点的提炼,融合了个人长期的信息安全工作经验,并引入了一些新的概念。阅读本文需要一定的信息安全基础,因为涉及术语较多,无法一一在这篇文章中加以阐释,所以看不懂的地方直接略过就好。
信息安全涉及的概念、术语、理论、方法、措施非常庞杂,不仅涉及信息科技几乎所有领域,也涉及大量管理活动,如果能把握信息安全的关键思维(所谓思维就是一些概念、观念、理念、意识、理论),就容易对信息安全管理建立起一个全景式的理解,在这些思维的辅助下,再充实相关知识,就容易对信息安全领域新出现技术和事物有一个相对清晰的理解和定位。笔者总结了多年从事信息安全工作的一些经验,提炼出这9大思维,希望能给读者带来一点启发。
本文列出的9种思维分别是:CIA思维、深度防御思维、可控思维、自上而下思维、成本收益思维、有效性思维、道德法规思维、全局思维、不信任思维。
这些思维并不都在一个层次上,从抽象层次可分为顶层、战略层、战术层,从领域上可以分为技术层、管理层、意识层。
我将这9种思维按照其内涵做了一个定位,见下图。
下面详述一下这9大思维。
一、CIA思维
几乎任何安全问题都可以被高度抽象到CIA——也即机密性、完整性、可用性上,不想让别人知道的归入机密性,不想让别人改动的归入完整性,不想让别人影响服务提供的归入可用性。仔细想来,这三个特性,真是高度抽象而又几乎无所不包,屡屡让我赞叹不已。后人有试图再加上几个“某某性”的,大多属于狗尾续貂,或者根本不在一个层次上的(比如可控性,不可否认性等等)。
机密性、完整性、可用性,对于熟悉unix类操作系统的,可以很容易联想到文件的权限管理上,也即rwx。
在unix的思维里,一切都是文件,那么对操作系统内一切资源的权限管理也就都落到了rwx上。r就是保护文件的机密性,w保护完整性,x在一定程度上保护可用性(有权限的人能接受服务,没有权限的人无法享用服务)。当然,rwx只是CIA在unix类操作系统中一个缩影和实例。
机密性如何实现?从朴素的角度考虑,大的方法无外乎几种:
1、不记录,不留任何书面记录、电子记录,只留在脑海里,而且在言谈举止上,不露痕迹,不让人观察出来你知道此机密信息。
2、锁起来,不管是物理性还是技术性的锁,实现对访问者的访问控制。
3、藏起来,只让授权者知道在哪里,其他人不知道在哪里,隐写术也可以归到此类中。
4、加密,使用编码(code)或者密码(cipher)的方式,让别人看不懂。
5、管起来,使用行政管理手段,严格保密要求,控制知悉范围,如有违反予以惩罚。
完整性(Integrity)的概念比较有趣,它的内涵非常丰富,最简单的理解就是,如果没有授权,对一个东西的任何部分进行任何添加、减少、更改,都是破坏了其完整性。值得注意的是,误操作往往破坏完整性,如误删文件、错改配置等,一旦破坏了完整性,就非常有可能破坏可用性。
完整性还有一个不太被人注意的含义,就是数据的真实性,也即数据本身要反映真实世界,这往往容易被人忽视。
正如完整性的英文单词integrity本身有“诚实”含义一样,从业务层面看,如果一个数据在进入系统时就已经不真实的话,那么,从那时起,系统的完整性就已经被破坏。所以,“不可否认性”可以看作是完整性的一个内容,也即数据进入系统时,系统的完整性保障就已经确保其不可能是被人冒名替代的。
在更宽泛的语境下,完整性还可以用在做人上,a man of integrity,是说一个人言行一致,诚实、不虚伪,不做作,他的外在表现和他的内心一致,他遵从自己的道德观念而不是说一套做一套,此时,可以把Integrity简单译为正直,这事实上是对一个信息安全从业者的道德要求。
更宽泛地引申一下,一个人靠不靠谱,能不能给人带来安全感,也可以通过CIA三性来考察一下。看他是否能保守秘密,是否诚实正直,是否可用,哈哈。
对于可用性,相对比较好理解,系统瘫了,系统明显变慢,这些都是可用性出了问题,凡是你的服务在可获取性上不尽人意的时候,就是可用性已被破坏的时候,有的时候,这可能不是安全问题,而是一个架构和性能问题,但在广义上,服务出了问题,都属于生产安全问题。
现在考虑一个例子,有人在你的键盘内或者系统内安装了keylogger,那么他影响了什么?
他通过破坏完整性的方式,试图破坏你的机密性。
二、深度防御思维
深度防御,也被称为纵深防御,是信息安全最重要的一条金科玉律,有了这个思维,可以把庞杂繁复的安全问题在各个层次击破,思考问题时,不至于混沌一团或者顾此失彼。
从大的层面看,深度防御可以分为物理层、技术层、管理层三个层次,其中物理层位于最外侧,可以是大门、围墙、门禁、警卫、摄像头、传感器、警报、锁等防护手段,技术层则包括认证、授权、加密、监控、隔离、限制、恢复、备份等手段,在物理防护和技术防护仍然触及不到的地方,通过管理手段来防护,比如规章制度、管理要求、安全教育、应急演练等等。
深度防御应该是双向的,你不仅要防御从外至内的攻击,也要防御从内至外的数据泄漏。比如自内向外的网络连接往往控制较弱,导致很多攻击手段使用反向连接或是隐蔽通道来规避防火墙;对于物理场所出入,有的策略是进入时认证,离开时不做限制,有的则是无论出入都需要认证(比如都要通过闸道);如果你非常重视可能的数据泄漏,就需要建立起自内而外的深度防御,比如在终端层面防止U盘拷出、使用虚拟桌面、数据漂白、终端DLP、网络DLP、邮件DLP等等,在管理层面,采用文件外发审批、外出携带文件的保密要求、出国前保密谈话等等。
下面就深度防御在物理层、技术层和管理层上,稍微再细分一下:
1、物理层。在物理层,最外层是照明,整个周边都被清楚照亮,灯光区域内,有栅栏或墙,特定控制点有出入口,这些地方有门、旋转门、mantrap,有安保人员,还可以有狗。在进入内部区域后,仍然有层层关卡,每个关口都要求鉴别和认证,最敏感的资源和系统位于建筑物的中央,只有最高特权的人可以访问。
对物理层面的防护本身又可分为物理层、技术层和管理层,物理层有可视性、CPTED等安全考虑和措施;技术层措施包括电子门禁、物理入侵检测、CCTV、报警系统等;管理层面会有场地管理、人员管理、应急演练等措施。
2、技术层。技术层可以有很多种分法,最常见的分类法是从网络、主机(服务器)、终端、应用、数据等方面分类,每个类别都可以再细分处理。
仅从网络层面看,在OSI模型7个层次或TCP / IP模型4个层次上,都可以采取相应的安全措施,比如物理层的防窃听、链路层的防地址欺骗、网络层的IPsec、传输层的TLS等等,应用层如DNS、SMTP、NTP、FTP等基本应用,也有其特定的增强CIA防护能力的方案。
网络不仅仅可以从纵向的层次区分,还可以按照其物理分布来划分,从外至内看,DMZ区可以有防火墙、VPN、WAF、IDS、APT防护、蜜罐等防控措施,在内网区域,有层层防火墙和网络分区,有VLAN隔离、网络准入、网络DLP、内网蜜罐、SIEM、虚拟桌面等等内容,在内网的核心区域,保存着重要业务的数据库。
凡是涉及到软件的部分,都可从代码层、服务层和业务层来划分,代码层是最基础又是最积重难返的,对应的安全方法有安全编码规范、代码走查、代码扫描、代码审计等等;服务层,有认证、授权、日志、加密、hash、签名等等技术措施;最高层是业务层,可以做更多的安全措施,会根据用户的行为和特征做相应的安全防范,比如提取大额资金时,会要求更高级的认证,用户行为出现异常时,可以立刻采取措施关闭其权限。
3、管理层。管理层的安全措施,从组织、规划、制度上进行分类会比较容易操作一些。
管理,在本质上,是对管理范畴内的资源单元(包括人)进行组织,定义各单元该做什么事、如何做事、如何合作、如何优化,并采取措施使其运转起来。
对于信息安全管理来说:
从组织上,要建立起安全组织架构、要配备人员、明确职责关系、命令体系和协调机制;
从规划上,要明确信息安全方针、目标、愿景、策略,要制定规划,明确3~5年内要开展的工作,要制定年度计划,并注重跟踪落实;
从制度上,需要定义一系列工作的规章和流程,如安全需求管理、漏洞管理、应急管理、事件管理、变更管理、版本管理、配置管理等领域的基本要求和操作细则。
深度防御的最深层,是人的思想。
人一旦失陷,很多防御措施都会失效。所以在管理上,要给予人以相当程度的重视,本质上是要防范和规避人性的缺陷。
为防范因人的疏忽而导致的误操作,会采用变更管理,方案审核,双人复核等措施;
为防范人的懒惰,会采用考勤、巡检、抽查、督办、审计等措施;
为防范人的贪婪,会采用最小特权、职责分离、多人控制、知识分离、特权管理等手段;
为发现或威慑可能的作案,会采用岗位轮换、强制休假、离任审计等手段;
为防范人的“傻白甜”:诸如“对他人的基本信任”、“不够细心,忽略差异”、“遵从命令”、“以为别人知道很多”、“好心帮助人”、“害怕受训斥”等这些容易被攻击者利用的弱点,需要对他们进行不断的培训、教育、宣传、警示。这其中最见效的工作就是信息安全意识培训。(文末提供我当年所做信息安全意识培训PPT的下载)。
关于信息安全意识培训,最重要的内容是提高警惕性,尤其是提高对社工类型攻击的识别和防范能力。经过多年的教育,人们在安全形势方面已经普遍建立起意识,大多数人已经不是小白(你即便把安全形势描绘地再耸人听闻也吓不到他们了),但是普遍缺乏具备可操作性的实用技能。人们最想听的是如何方便的管理口令,尤其是管理多个网站的用户名和口令。
管理的最后一招是问责,对所有因不履行流程、不尽职、甚至是故意违反制度,尤其是引起不良后果的情况,都要问责。
“动员千遍,不如问责一次”。问责是惩戒,更是警示,所有的处罚都应在需要警示的范围内公开通报,在安全意识培训中,如果含有本单位这方面内容,会给观众带来极好的警示作用。
三、可控思维
可控思维属于防御战术层面,主要概念有:可视、隐藏、隔离。
从信息安全防御的角度看,可控意味着能预防、能发现、能处理,绝大多数信息安全从业者,整天操心和忙碌的就是这些事。
下面主要介绍可视、隐藏、隔离这三个概念。
1、如要可控,首先要可视,因为敌我双方都讲究“让对方在明处,让自己在暗处”,“你无法保护你看不到的东西”。
可视是基本的安全要求,在各个层面都是如此。
从物理层面讲,CPTED在这方面有很多研究,比如在建筑物旁边设置桌椅,鼓励人们坐下来,妨碍犯罪活动;停车场车库内的楼梯间和电梯使用玻璃窗,让人们在这种可见性强的环境中感到更加安全;故宫前三殿的广场里面没有树木,一个重要目的是防止攻击者隐藏在树后。
从技术层面讲,你的资产要可视,网络要可视,日志要可视,行为要可视,入侵要可视,要让一切就都在监控之下。如果不可视,服务器上有木马你不知道,木马如何被植入你也不知道,木马都干了些啥事你也不知道。
从管理层面讲,安全管理人员会希望有一个大屏,可以持续监视关键性能指标和风险指标,比如受攻击情况、事件数、漏洞数等等;对于高层管理者,更常见的形式是仪表盘,或曰驾驶舱,虽然他们平时几乎不会去看。
2、隐藏是可视的反面。目的是让敌方看到尽可能少的东西,通过种种隐藏手段,让他们无从下手。
比如,建筑物里存在敌方无法得知的秘密通道和密室;重要的文档只以纸质件存在,不以电子件存在;系统内权限不同的用户,能看到的内容不同;系统向外部只提供服务接口,其他内部细节一律对外不可见;采用存储加密、传输加密、数据填充,让真实的数据隐藏在“乱码”之中;采用隐藏式水印,让自己可以根据一些点状物跟踪信息,让对方不可琢磨。
攻击者也会使用隐藏的手段,比如攻击成功后都会加密要传输回去的内容;将恶意代码隐藏在系统中较为隐蔽的地方,或者起一个具有迷惑性的名字;使用隐蔽通道传递信息,巧妙到完全超出专业人员的想象;使用隐写术,将信息夹带在看似普通的图片、音乐或其他文件中。
当然仅仅靠隐藏是不够的,比如你的密室一旦被人发现,就会进入,再如你的“维护钩子”(一个隐藏的URL)通常迟早会被发现,比较好的做法是在隐藏的基础上仍然有深度防御。比如密室被发现,密室仍然有锁,密室里的保险柜,也仍然有多重密码,锁和密码,就是物理层面的认证和授权。
3、隔离是最常用的控制措施,主要是通过区域划分,将客体限制(confine)在一定的界限(bound)之内。隔离在多个层面都可以展开,比如物理层可以使用围墙和栅栏等,网络层可以使用防火墙,云平台使用相互隔离的虚拟机,操作系统层可以使用进程间的隔离,CPU层可以使用多环设计,应用层和数据库层面也都可以使用多种隔离技术,将不同的用户限制在不同的活动范围内。
四、自上而下思维
这个世界上,大多数事物都是自下而上发展的,但信息安全管理这个事,还真是得自上而下。
本质原因在于,相比较业务而言,信息安全更多是保障因素。
从业务角度,人们更倾向于信息共享,一旦信息流通受阻,人们就会想出各种办法绕过去。只有在出现信息安全事件导致利益受损时,人们才会对信息安全重视起来。
这里需要注意的是,相较于管理人员和运维人员,开发人员往往更缺乏安全思维,原因在于开发人员的首要任务是实现功能性需求,在非功能性需求中,则首要关注速度性能,他们也会关注易用性(包括程序员自己的易用性,所有的维护钩子都是开发人员安装的后门)、可用性,但主动关心安全性的真是罕见(主打安全牌的产品除外)。
所以要推动信息安全,必须要建立强烈的意识和强制的措施,这都需要自上而下。
一个中大型组织,必须要设立专门部门和专人对信息安全管理负责,否则就会出现各行其是、缺乏规划、缺乏统筹、缺乏调度等问题,会出现无人管理地带。
安全是影响整个组织的活动,在各部门就具体问题产生冲突和推诿时,最终要有领导出面拍板和推进,所以组织内通常需要建立至少2个层次的安全协调机制,比如在组织顶层和科技部门都要有专门的领导负责,以实现跨部门跨团队的决策、调度和协调。
自上而下思维还体现在系统建设和安全措施的“同步规划、同步建设、同步使用”上,也即在项目一开始,就要有顶层设计考虑安全,而不是事后再补。同样地,SDL也是自上而下思维的体现,安全要贯穿系统开发过程始终,在需求、设计、编码、测试、维护等全过程予以强制性融入,这种事,是不能靠自觉自发的。
五、全局思维
人在思考问题时如果能考虑到全局,其结论就会相对明智。
做信息安全的人,如果能有业务视角,如果能注重人,就会对组织作出贡献,而不是作出阻碍。
高度不够的人容易犯本位主义的毛病,体现为过分强调信息安全,觉得信息安全就是最大的事、最重要的事,信息安全可以一票否决。
事实上,在任何一个组织,都是业务最为重要,信息安全在本质上属于业务保障范畴,安全管理者一定要明确自己的定位,明白信息安全的核心是保障业务,是保障业务的CIA三要素。
这涉及到信息安全工作的价值问题,安全工作的价值是保障业务发展,防范业务损失。
即便你是一家信息安全公司,专门生产销售信息安全产品(这是业务),公司本身的信息安全管理工作只是从属地位。
在此思维下,在和业务发生矛盾的时候,尤其是用户体验方面,就更能顾全大局,清楚自己的定位,不是强调安全,也不是增添各种障碍,而是提示可能的风险,提出巧妙的解决方案,这考验的是人的变通能力。
一个僵化刻板的安全管理者,会导致很多项目无疾而终,比如对于移动办公,如果非要考虑各种概率极小的可能攻击,又是防录屏,又是防拍摄,增加各种安全防范措施,最终会导致项目失败。
优秀的安全工作者应该明白,易用性和安全性并不是天然的矛盾,安全性最终应该体现出它的易用性。
全局思维体还现在融合性思维上,如果安全做得好,最终和业务一定是一种融合状态,也即各种安全机制是内嵌在业务的各个流程中,而非一个独立的存在:产品的使用者会在不知不觉中感受甚至感受不到安全的存在,但产品在事实上却提供了安全性;在制度层面,除了几个特定领域,安全制度不应该是一套独立成体系的制度,而是将各种安全要求融合在相应的业务制度中;在组织上,不是一定要成立一个独立的事件监控和响应团队,而应该在现有的运行体系框架下,在出现事件时,由一线监测单元报告给总体调度单元(人数不多,相对精简),由各个领域团队在总体调度下各司其职做出响应。
站在更高位置,安全要把人的利益放在首位,尤其是把人的生命安全放在首要位置。比如当火灾导致电力故障时,安全门自动解锁还是继续锁住?如果公司认为资产比人的价值高,就会锁住(fail-secure),如果公司认为人比资产重要,就会让安全门处于解锁状态(fail-open),当然,绝大多数公司都会选择后者。
对人的重视,还体现在对个人隐私的保护上,如果你要在单位监视个人的通信内容,需要有个人同意(比如在合同签署时、在强制portal的用户认可中),要有明确的提示,提示在使用单位网络时,单位会对所有可能内容进行监控,理论上,除非配合执法,要尽量避免这种监视,如果要做,也至少要保证这种监控行为不会违背任何法律法规。
六、成本收益思维
这是一个经济层面的思维。
信息安全风险管理的思维,很大程度上都是在考虑成本和收益。
做任何事都涉及到成本与收益,人总是去做预期收益大于预期成本的事,这是人的天性。
成本收益思维的典型应用为:分类保护。
分类保护的要义是:优先保护那些最重要的资产,给最重要的东西予以最多层的保护。
一般来说,分类是从机密性和可用性考虑的,机密性分类考虑的是信息泄漏对组织、社会、国家带来多大的影响上,可用性则主要考虑停止服务可能带来的影响。
结合机密性和可用性,通常会将信息或信息系统划分为3~4个等级,原因很简单,分类如果过多,在记忆、归类、管理、维护上,带来的复杂度和难度都会显著提高,但相应的必要性却不明显,这本身也是个成本效益问题,划分为5个等级显然不如划分为3个等级更有实效。
安全措施的目的是减少预期损失,而谈到预期,就离不开概率,某个威胁的预期损失为:概率*损失,如果该威胁发生的概率为每年万分之一,该威胁导致的资产损失可能为1000万元,那么预期损失就是1000元。如果采取安全措施的每年成本大于1000元,就没有必要采取措施,这还是在安全措施能够完全(而不是部分)保护资产的情况下计算的。
不过,通常如此小概率的都是诸如地震、海啸之类的,黑客入侵发生的概率在现阶段几乎都是1了,为防入侵所花的钱基本上都是划算的。
成本效益思维体现在各个方面,比如,日志和备份保存多长时间合适?如果保存十几年甚至二十年,其人工成本、介质成本、保管成本、物理空间成本都会成为问题,出现安全事件后,是否真的需要使用所有这些日志和备份?对绝大多数单位而言,保存这么长时间都是没有必要的。
密码学中有很多体现成本效益思维的实例,目的是让敌方成本很高,而我方成本很低,如加密、hash、签名的成本都很低,但解密、hash碰撞、伪造签名的成本都很高。再比如hashcash,最初它被发明出来主要是用于增加垃圾邮件发送的成本,到后来却在加密货币上大获成功。
七、不信任思维
经常听说“安全的本质就是信任问题”,如何理解?
原因很简单,如果你信任一个人,就不会对他做各种认证和检查,如果你信任网络,就不会在网络上放置各种安全设备。但网络世界的实践表明,如果你真的信任,那么你可能会输得底掉。
早期软件开发以及网络协议的设计,对外界往往有较多的信任,精力主要集中在功能实现上,觉得不会有那么“无聊”的人会去干那么“无聊”的事,然而,的确会有相当“无聊”的人,在各种动机下,展示了让设计者瞠目结舌的高超技术,并获得了魔术般的成功,如缓冲区溢出、TCP劫持、dns欺骗、sql注入等等,由于其构造精妙,往往令人拍案叫绝。
不仅来自网络的外部人员不可信任,内部人员也不能完全信任,且不说他们可能一时冲动、利欲熏心、潜伏已久、发泄怨恨、神使鬼差,他们更有可能是记忆混乱、粗心大意、心不在焉、手抖敲错,如果不加以防范,出事是迟早的事。
所以说,安全的本质是我们不信任。
虽然越来越多的网站已经全站HTTPS,但企业内网最常见的情况仍然是HTTP,这是基于对内网信任的结果。随着攻击的工具化和世俗化,内网环境事实上已经越来越不可信,除了内网HTTPS,企业还会在内部采取多种安全措施,如终端安全、DLP、内网监控、日志审计、内网蜜罐、安全检查等,一是防范内部人员作案,二是防范在单位内部工作的外部人员,如合作人员、外包人员等等,三是防范已经漫游到内网的黑客。
在不信任思维下,所有人都被视为潜在的攻击者,所有访问,不论来自企业外部,还是来自企业内部,都可能是合法用户,也可能是攻击者。对任何人/设备/系统的默认都只能是不信任,可以对所有访问采用同等的安全措施,也可以基于数据和算法(信任模型)计算其信任度或信誉度,然后采取不同的认证和授权,达到安全性和易用性的平衡。那些信誉度不够的访问,需要花费更多的成本通过访问,信誉度好的访问,则更容易通过认证和授权。
基于此,原先着力于网络边界