数据驱动安全:数据安全分析、可视化和仪表盘(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-19 02:43:49

点击下载

作者:(美)雅克布(Jacobs,J.),(美)鲁迪斯(Rudis,B)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数据驱动安全:数据安全分析、可视化和仪表盘

数据驱动安全:数据安全分析、可视化和仪表盘试读:

前言

旅行很危险,弗罗多。一旦你出了门上了路,如果不专心看路,谁知道你会被带到哪里去。——比尔博·巴金斯,《指环王》

近几年,网络安全在全球范围内成为了大众和专业领域的核心关注点。数据外泄的情况每天都在发生,聪明的对手把目标直指消费者、商业公司、政府,他们技巧熟练而且不怕被发现或者无视将会出现的后果。这些事件有它发生的背景,现今包含商业和关键基础设施的主干网的系统网络和应用,变得越来越复杂,臃肿得难以掌控。

凭借肉眼观察的直觉和所谓“最佳”实践的安全防护措施已经不足以保护我们。安全“巫师”的时代已经过去,采用成熟的工具和技术、进入革命性的数据驱动安全的时代已经到来。

本书综述以及技术要点

本书的目的是带你遨游安全数据科学的世界。让我们先看一眼图1所展示的用本书每一章的关键词构成的这块云。这朵云涉及大量的信息,通过这朵云你或许可以从繁杂的信息中挑选出少量的有用信息,然而,这就像不用磁铁在一个大草垛中找出一颗钉子。图 1图 2

如果正确地使用了合适的分析工具,你将能区分出图中最重要的内容(见图2)。

本书不仅专注于用Python和R语言作为基础的数据分析工具,同时介绍了如何设计和创建现代风格的静态可视化以及使用HTML5、CSS和JavaScript的交互式可视化工作,还提供了相应的知识背景和现代NoSQL数据库的安全用例。

本书是如何组织的

本书的组织,不像令人狼吞虎咽的自助餐,却有点儿像各有特色的精致点心:每章都有不同的组织脉络。恰如“点心”一词的含义,每章包含安全数据科学中的一个基本主题,并且提供了大量的值得深入学习研究的知识点。

第1章展示了此次学习之旅的基础知识点,提供了一些数据驱动实践与其他学科的交叉实例,同时描绘了安全数据科学工作者需要掌握的技能的总体概览。

第2、3、4章分别涉及一些软件工具、技术知识、使用技巧,这些是每一个安全数据科学工作者都应该掌握的。你将接触到AlienVault的IP信誉库(是能公开获取的最全面的恶意节点资源之一)以及对ZeuS和ZeroAccess僵尸网络产生一个宏观的认识。我们在第2、3章介绍Python用于分析的一面,本书的其他部分将以R语言为主进行统计分析。与其他传统的有关R语言的介绍(或者一般统计类著作)不同,我们将用安全领域中的数据贯穿全书,以此来帮助信息安全专业人员建立起尽可能实用的技术概念。

第5章介绍一些创建图表的技术以及一些核心的统计学概念,同时为安全数据领域的门外汉提供了一两小节的入门知识。

第6章深入到有关可视化展示(数据可视化)的一些基础性生物学知识和认知科学知识,甚至向你展示如何让数据活灵活现起来。

第7章提供如何分析和可视化安全漏洞的基础知识,在本章,你将有机会接触到安全事件的真实数据。

第8章涵盖现代数据库的概念,包含传统数据库部署的新技巧,还有一系列NoSQL解决方案以及工具。本章将有助于回答“我们在自己的网络上看到这个IP了吗?”这样的问题。

第9章将带你进入到令人激动而又真实的机器学习领域。你将学到一些机器学习的核心概念,探索机器学习的实现技术,以及如何通过算法找到一些靠直觉无法发现的数据。

第10章及第11章会提供一些实用的建议和技巧来创建有效的可视化产品,让该产品能与你的客户有效沟通甚至(极有可能)打动他们。你可以使用很多工具,从Excel到艺术工具和库,并且能够将你所学应用于安全领域之外。可视化技术通过给安全仪表盘(可能多数的读者对此比较熟悉)进行改头换面,让这些信息展示得更加丰富有形。

最后,在第12章,我们将为你呈现如何将所学的知识应用到实际环境,包括个人层面以及企业层面的应用环境。

谁应该读这本书

我们写这本书是因为我们全身心投入到数据领域中工作,并相信如果我们能够花费时间去理解如何提出正确的问题,做出准确和可重复的数据分析,使用令人信服的方法去关联结果,我们就能为推进和提高网络安全做出富有成效的贡献。

如果读者有安全领域的经验,以及掌握基本的代码和脚本编写技能,就能从本书大大受益。熟悉Python的读者可以跳过第2章的相关介绍以及快速略过第3章的大部分内容。我们重点介绍和关注R语言,它在现代数据分析领域是门出色的语言,你可以通过书里列举的R语言相关例子和代码来提高自己的水平。假如你是一个编程菜鸟,第2、3、4章能给你非常大的帮助。

我们重视统计学以及机器学习的知识,因此在许多章节里都有涉及,我们不建议读者跳过此部分内容。然而你可以在读完本书前忽略第9章(主要讨论机器学习),它不会影响你阅读的连贯性。

如果你熟悉数据库,你只需看一下第8章的用例,便可在安全领域尝试使用现代特殊的数据库进行操作。

不像许多讨论仪表盘的书,第10章需要掌握的仅仅是Microsoft Excel或者Openoffice Cal,对于在组织中使用的工具和限制我们不做任何假设。如果你对构建交互的可视化工具没有需求,第11章的内容可以作为今后的延展阅读。

简单地说,我们的书不仅面向信息技术人员、信息安全专家、学生、咨询顾问,任何人只要有兴趣探索如何分析数据,使之更好地能被人理解,来确保网络安全,都能从本书中找到答案。

工具列表

下列工具如果是用于练习,均是免费的:

·R语言项目:(http://www.r-project.org/),大部分示例用R语言开发,包含了许多社区的开发包,比如ggplot2。

·RStudio:(http://www.rstudio.com/),能帮助你快速掌握并运行示例代码的R语言开发套件。

·Python:(http://www.python.org/),包含了一些例子,以及很多重要的包,如pandas(http://pandas.pydata.org/),使之成为一个强力的开发平台。

·Sublime Text(http://www.sublimetext.com/),这是另外一款强大的文本编辑器,对于处理HTML、CSS、JavaScript的代码尤其方便。

·D3.js(http://d3js.org),参照它并快速翻阅第11章开头部分,能帮助你提高对此章节示例的掌握速度。

·Git(http://git-scm.com/),你需要安装它去获取本书中提到的许多数据,所以现在就安装它,以节省时间。

·MongoDB(http://www.mongodb.org/),MongoDB在第8章中使用,所以请先提前做好准备。

·Redis(http://redis.io/),这也是第8章某些示例所需的。

·Tableau Public(http://www.tableausoftware.com/),如果你想对第11章的调查数据做更多工作,这个软件是个不错的选择。

此外本书所有的代码、示例、原始数据均可从本书合作网站(http://www.wiley.com/go/datadrivensercurity)获取。

我们建议你使用Linux或Mac OS,但是所有的示例均能在主流的Windows上运行。

相关网络资源

如上述所说,你可以从本书合作网站(http://www.wiley.com/go/datadrivensercurity)获取所有源代码、示例中使用的数据文件,以及相关的帮助文档(比如Microsoft Excel文档)。

开启本书之旅

你已经大体了解了本书的构成,我们希望本书能带给你新的视野和发现,并且通过对书中原理的掌握,使你有信心提高自己对于安全的视角。

致谢

虽然本书封面上只有我们的姓名,但是本书代表了很多人做的大量的工作。首先要给我们的技术编辑Russell Thomas十二分的感谢,他对细节的一丝不苟的态度,让我们避免了一些令人尴尬的错误,让本书变得更好。感谢Symantec公司、AlienVault公司、Stephen Patton和David Severski,感谢他们为本项目做的准备工作以及共享的数据。感谢Wade Baker的激情,感谢Chris Porter的接洽,感谢Verizon的RISK团队的工作以及他们在VERIS对社区做出的贡献。感谢在Wiley遇到的好心人们,特别是Carol Long、Kevin Kent和Kezia Endsley,他们帮助打造了这本书,并且鼓励我们,让我们的工作不断推进。

同时也感谢那些回复邮件、讨论思路以及提供反馈的人们。最后,感谢那些围绕R语言、Python、数据可视化、数据安全的富有活力的社区,希望我们能够继续让这些社区之间加强交流、逐渐融合。

Jay Jacobs

首先要感谢我的父母。父亲对学习的热诚和去尝试任何事情的自信心极大地感染了我,母亲则给了我坚定不移的支持,甚至当我盲目探索时也是如此,感谢母亲给我提供了良好的生长学习环境。我也想感谢我的妻子Ally,她既是我最好的朋友、最严格的批评家,也是最忠实的粉丝。如果没有她的爱和支持鼓励,这个任务是不可能完成的。最后,感谢孩子们的耐心等待,现在我有时间和你们玩那个游戏了。

Bob Rudis

感谢我可爱的妻子Mary和三个在家的孩子Victoria、Jarrod和lan。很多的周末时光,我都没有陪伴在他们身边,如果没有他们对我的爱、支持和巨大的耐心,这本书是不可能完成的。

感谢Alexandre Pinto、Thomas Nudd和Bill Pelletier,感谢你们恰逢其时的(也许你们自己没有意识到)充满鼓励和热情的消息。特别要感谢一些开源社区、可再生研究和开放数据运动,他们在幕后提供了本书用到的大多数工具、实践。同时也感谢Josh Corman为本书起了出色的书名。

最后,以一个菜谱向朋友们表示感谢。

炸玉棋拌青酱(Pan Fried Gnocchi with Basil Pesto):

·2杯(约250ml)新鲜马赛罗勒(basil)

·1/2杯罗马新鲜干酪

·1/2杯+2汤匙特级初榨橄榄油

·1/4杯松仁

·4瓣大蒜

·喜马拉雅海盐,胡椒粉若干

·1磅玉棋(新鲜或真空密封的,如果是新鲜的玉棋应该略干)

打碎搅拌(按序添加):松仁、大蒜、罗勒、奶酪,缓缓向拌匀的原料中倒入1/2杯橄榄油并持续搅拌直至呈糊状,再按口味添加些许盐和胡椒粉。之后放置在一边作为青酱。

使用厚底锅并开大火加热,倒入剩余橄榄油。油热后加入玉棋,不要使玉棋在锅中挤在一起或相互叠压。约3至4分钟,待玉棋的一面变为棕色并有些卷曲后将其翻转至另一面待2至3分钟后盛出,拌上青酱,加上saba鱼丝,就可以端上桌了。这些量足够3至4人食用。作者介绍

Jay Jacobs在IT以及信息安全领域拥有超过15年的经验,主要致力于密码学、风险学以及数据分析方面的研究。作为Versizon RISK团队的一名高级数据分析师,他参与编纂年度《Data Breach Investigation Report》,并投入大量精力进行安全相关数据的分析与可视化。Jay也是Society of Information Risk Analysts的创立人之一,现在是该组织董事会的成员。他是一名活跃的博客纂稿人与演讲者,他还是Risk Science播客的主持人并且曾经是2014 Metricon安全指标/分析大会的联席主席。可以通过@jayjacobs在推特上找到他。他拥有美国康卡迪亚大学科技管理的学士学位以及美国宾夕法尼亚州立大学的应用统计学毕业证书。

Bob Rudis拥有超过20年的利用数据来帮助维护全球财富100强企业的经验。作为Liberty Mutual Insurance的企业信息安全及IT风险管理部门的主管,他负责协调与管理Advanced Cyber Security Center的多部门大范围安全分析计划。Bob是一名高级推特撰写人(@hrbrmster)、活跃的博主(rud.is)、作家、演讲者以及开源社区的投稿人(github.com/hrbrmstr)。他当前正任职于Society of Information Risk Analysts(SIRA)的董事会,是SANS Securing The Human方案的编委,同时,还是2014年Metricon安全指标/分析会议的联合主席。他拥有斯克兰顿大学的学士学位。

技术编辑

Russell Thomas是一名Zions Bancorporation的安全数据科学家,还是一名乔治梅森大学社会计算科学的在读博士研究生。他拥有在计算机行业超过30年的技术、管理以及咨询方面的经验。Thomas先生是Securitymetrics.org的长期社区会员和Society of Information Risk Analysts(SIRA)的创始成员之一。他的博客是:http://exploringpossibilityspace.blogspot.com/,他的推特是@MrMeritology。  第1章通向数据驱动安全的旅程

让我们陷入困境的不是我们不知道的事情,而是我们知道的事情并非想象的那样。——Bilbo Baggins,19世纪的幽默作家

不可否认,几乎本书的所有章节都是围绕在数据分析和可视化这些主题上的,但是本书并不仅仅是关于数据分析和可视化的。能够有效地分析数据和产生富有意义的可视化结果只是解决最终问题的一个方法。数据分析和可视化的目的应该是从中获得新的观点,发现一些数据之间新的关系,或者发现一些新的信息,而不是(呃,或者很少)仅仅为了纯粹的乐趣。简而言之,本书是让你通过数据分析和可视化来学习的,让你了解到你的信息系统是如何运行的,更重要的是,当系统出现故障时,你能知道故障是怎么产生以及如何修复它。

网络空间实在是太宽泛,包罗万象,它已经发展得异常复杂,远超人类直觉能感知到的。只有通过数据分析科学来检验和支撑人的直觉观点,我们才能维护和保护如今日益庞大和复杂的基础设施系统。我们并不是主张让计算机算法完全取代人类的作用,而是用计算机算法来武装人。这样,人们能了解得更多,从而更好地完成这些工作。数据中包含了有用的信息,这样你才能更好地从信息中学习。

本书坚持使用真实的数据,你可能在工作中遇到过这些数据类型。相对于在数据中发现有用的信息,本书更注重发现的过程,而不仅仅是结果。基于这个宗旨,本书的示例偏向于知识介绍和简单示范,而不是炫酷。本书的目标是教会你用新的方法去关注和学习数据。学习这些知识的目的在于提高你的技术水平,而不在于得出那些结论。1.1 数据分析简史

想要领略数据分析统计和可视化的魅力,一个最好的方法就是回顾这些方法崭露头角的历史。下面的例子生动地展示了使用这些方法前后的对比图,演示了新技术带来的巨大好处。1.1.1 19世纪的数据分析

20世纪之前,对数据的使用和统计仍然是相对落后的。数据分析虽然早在18世纪就取得了长足的发展,但是彼时大多数科学研究只是用一些基本的描述性统计方法来证明一些假说的正确性。无力从繁杂的数据(几乎所有的真实数据都会有多多少少的噪声)中得出明确的结论,导致了大量的科学辩论聚焦于对数据的看法,而不是数据[1]本身。19世纪,两个医学教授就霍乱的病源展开了一场激烈的辩论,这种细菌感染在当时往往是致命的。

1849年,伦敦霍乱爆发,状况极其惨烈,仅仅一年,就夺走了超过14000人的生命。人们当时并不了解霍乱的病源,两个医学教授提出了两个相互竞争的理论。其中,William Farr,一位公认的、受人尊敬的流行病学家,坚持认为霍乱是由分解不卫生的物质产生的空气污染引起的(官方称为瘴气理论)。而另一位也十分成功的(不如William Farr出名)流行病学家John Snow则提出,霍乱的传播是因为食用了被“特种动物病毒”(早于细菌和病菌的发现)污染的水。两位学者就此辩论了多年。

Farr在1852年发表了“1848-1849英国霍乱死亡率报告”《Report on Mortality of Cholera in England 1948-49》,他在报告中提供了一张采集于伦敦38个区的数据表,里边包含了8个可能的解释性变量。在这篇文章中,Farr提供了一些相对简单的(在今天看来)统计数据,并且在霍乱死亡数和地区平均海拔之间建立了关系(海拔越低的地区有更多的人死亡)。虽然在Farr收集的8个因素中,有一个是霍乱死亡数和饮用水源之间的关系,但是他断定霍乱与海拔的关系比水源更有意义。Farr的理论具有一定的数据支持和逻辑性,并且被他的同行所接受,在当时被奉若真理。

而John Snow则是公开质疑Farr的理论,并且不遗余力地证明自己的观点。据说他甚至在1854年霍乱大爆发期间挨家挨户地走访伦敦Soho区,收集相关的数据信息。也正是通过这场大爆发的霍乱以及他收集的数据,Snow整理制作了一张至今闻名的图,见图1-1。在这张手绘的Soho地区地图中,Snow在有过霍乱死亡报告的地方做了一些细小的标记。在这个图上叠放一张Broad Street饮用水泵(附近市民会来此获取饮用水)的位置分布图,就能看出标记的点明显地在水泵位置周围增多。有了这个分布图并在Snow坚持不懈的请求下,伦敦终于同意将Soho区处理饮用水的水泵拆除,不久,流行的霍乱在该区消退。然而这些效果也没能够说服那些针对Snow的批评家。一直到Snow 1858年去世以后,霍乱的病源还在争论不休。图1-1 霍乱影响地区的手绘图

这些对霍乱病源的争论使用了包括数据和可视化等技术(远在有计算机出现之前),但是争论双方谁也没能够说服对方。在2003年,英国的统计学家通过使用现代的统计方法去计算Farr在1852年公布的数据,对他和Snow之间的这场争论做了重新检验。他们发现,Farr用来证明霍乱源于空气传播的数据恰恰证明了Snow的观点。他们甚至推测,如果Farr可以用现代的统计学方法处理他收集的数据,Farr肯定会改变自己的观点。幸运的是,读者是能够接触到这些现代的统计方法的。

[1] 情节可以拍一部好莱坞电影了,具体参见http:/snowthemovie.com.1.1.2 20世纪的数据分析

就在Farr和Snow关于霍乱的争论之前的几年,伦敦北部Rothamsted一个农业研究所开始进行实验,研究肥料对作物产量的影响。研究人员花费了数十年进行实验并且收集记录了各类实验数据,如作物产量、土壤的测量数据以及天气因素等。他们遵循了一种现代日志记录方法,十分用心地收集和存储了这些数据,但是仍然无法获取到这些数据的全部价值。直到1919年,他们雇用一个年轻有为的统计学家Ronald Aylmer Fisher,希望Fisher通透地分析这些超过70年的数据,来帮助研究所理解这些数据。Fisher接受了这个充满挑战性的任务,很快地扎入到这些混乱的数据里,并且,他发现很难将肥料对作物的影响与其他因素隔离开,比如天气因素或者土壤质量。Fisher在这项挑战性的工作中的发现不仅仅改变了统计学领域,而且改变了20世纪几乎所有的科学领域。

Fisher的发现(对统计学具有革命性贡献的发现之一)是,如果一个实验设计得当,那么不同因素对实验结果的影响不仅可以隔离,也可以分别测量计算。Fisher恰当地设计了这个实验,从而可以将天气因素、土壤质量以及其他影响实验的因素隔离开,和不同的肥料混合物的效果做对比。他的这项工作不仅仅用于农业研究,Fisher在Rothamsted发明的实验方法同样被广泛应用于今天,从医疗到考古挖掘等几乎一切行业。Fisher以及他同事们的工作对20世纪的科学发展起到了革命性的作用。在18世纪,统计学家只是简单地收集数据,然后得出这些统计数据来支持自己的观点。而今,他们有了相应的工具,可以用来设计完善的实验,也可以使用相应的技术来模拟实验因素怎样影响他们的实验和结果。

当前,科学领域包含了统计模型,很多的统计和科学教育聚焦在开发和测试统计模型以及这些模型背后的假设。几乎所有的统计学问题都以“统计模型是怎样的?”为开始,并且以可以使用这个模型来描述问题甚至预测相应结果为结束。这代表着科学研究方法的一个巨大飞跃,现在已经可以完成一些以前根本不可能做的研究。如果没有计算机,恐怕科学研究还停留在考虑怎样让这些技术变成现实,但是目前已十分普及的计算机为数据分析开辟了一个新的领域,这个领域在之前是不可能的和深不可测的。1.1.3 21世纪的数据分析

Farr和Fisher的事件能够反映之前的数据分析的几个发展阶段,可是却很难仅用单个的人物或者事件来反映当今的数据分析的发展历程。首先令人难忘的是统计学家John Tukey,1962年他就在文章中提到数据分析科学应该不同于统计学(即使数据分析会用到统计学)。他说,比起数学内容,数据分析必须包含更多的科学内容(能说“数据科学”的概念从此诞生么?)。Tukey不仅仅是一位成功的统计学家,还为统计学贡献了无数的规程和技术,他还是将可视化技术应用于描述和探索数据的早期支持者。你会在本章的后续部分继续接触一些Tukey(图克)的工作成果。

让我们跳到2001年Leo Breiman写的一篇论文,他是专注于机器学习算法(在第9章讨论)的统计学家。在论文中他描述了数据分析的新文化,即不要注重定义模拟自然的数据模型,而要注重源于自然的算法模型。这种新文化的演变发展源于计算机科学与工程的发展,与传统统计学有极大的不同(甚至毫无交叉点)。信息时代产生了大量复杂的和充满噪声的数据,同时这些实际的疑难问题也催生了新的分析方法。Breiman在论文中概述的富有革命性的想法是,模型应该由他们的预测准确度来验证,而不是用传统的统计测试来验证(尽管传统测试也不是毫无用处)。

根据文字表面的意思,你可能将“预测准确度”测试理解为收集今天的数据并确定它如何预测明天的世界,可它却并非如此。这个想法是将今天的数据分为两组,用一组数据来生成(或训练)一个算法,然后用另一组数据去验证(或测试)这个算法的预测准确度。为了提高这个分析方法的效果,我们可以把数据分成不同的训练集、测试集,进行生成和验证,多次重复这个过程。尽管这个分析方法还不适用于小的数据集,但是却在现代的大数据集中表现十分优良。

当前信息时代的数据分析和过去Rothamsted的农业领域中数据分析有几个主要的区别。首先,数据样本大小有极大的差距。“经典”统计技术极大地受限于当时计算机的处理能力(在过去,“计算机”就是雇佣来成天做“计算”的人力),用较小的样本集来生成和训练出算法模型是不实际的。而在现代环境中,数据记录了跨越成千上万种系统生成的上百万的数据变量,巨大的样本量已经成为常态,并非个例。

其次,在许多应用环境和行业中,一个设计得当的实验是几乎不可能的(如果不是完全不可能)。你不可能把网络分为对照组和测试组,你也不能通过仅仅保护一个关键应用的一部分来测试Web应用防火墙的效果。这些环境限制带来的一个后果就是数据具有更高的信噪比。机器学习技术(以及和数据挖掘相关领域的技术)与现代数据的挑战都在共同发展。

最后,在21世纪,数据统计知识只是有助于成功的数据分析的众多技术之一。考虑到这点,下一节会花些时间介绍支持良好的数据分析的各种技能和特性。1.2 获取数据分析技能

我们知道数据科学有一种天然的吸引力,每个人都希望获得安全数据分析的奥秘。尽管到目前为止我们一直都专注于数据分析的概念,但要创造每个人都寻找的那种奥秘需要的不仅仅是分析技能,而是需要将可视化技术与统计和数据分析相结合,再利用计算能力和领域(信息安全)知识。所有这一切都不是源于产品或工具,而是自己的技能和能力。

在开始讨论这些技能前,我们要讨论几个从数据分析师身上看到的基本的人格特质:好奇心和沟通。数据工作有时会有点像考古挖掘,花费大量时间,使用小型工具,希望去发现那些甚至是极小的见解。数据分析也是如此,智慧之珠都深藏在数据中,等待被翘首以盼的观众发现。那些充满了惊奇感和好奇感、花费在整理及准备数据的大量时间并不会让人难以忍受,相反,那段时间是令人兴奋、值得花费的。因为存在那一刻,即当你能够在一个原本黑暗的房间里打开一盏灯,当你可以描述一些现象或解释一些模式,当这一切变得值得。这就是你追求的。如果你知道去哪里找,就能发现那些隐藏在众目睽睽之下的惊喜时刻。

一旦你打开了灯,你要带别人进入发现之屋;否则,你只是建造了一个没有人住的房子。只是指着你的工作,说:“看!”是不够的。你要退一步来思考能够传达你的发现的最好方式。系统和分析的复杂性导致很难以每个人都理解的方式来传达你的发现结果。很多时候,它需要结合文字、数字和图片来传达数据的洞察力。即使是这样,有些人也什么都没有理解,而有些人则会理解过多。但是,仍然有必要将这种复杂性浓缩到段落、表格或图片中。

要描述一个优秀安全数据分析师所需技能的详尽清单需整本书,本章只简述数据科学家从事信息安全数据分析所应具备的技能/领域:

·领域专业知识,设置和维持一个分析目的。

·数据管理,能够准备、存储和维护数据。

·编程技能,将数据连接到分析的纽带。

·统计学,从数据中学习。

·可视化,与结果有效沟通。

我们可能很容易将这些技能中的任意一个标注成最重要的,但在现实中,整体大于各部分之和,即每一种技能都对安全数据科学来说举足轻重。1.2.1 领域专业知识

一个数据科学家需要领域专业知识的事实应当是不言而喻的,也似乎是显而易见的,但只有在考虑更高的目标时,进行数据分析才有意义。你关于信息安全的经验将引导分析方向,提供数据的来龙去脉,并帮助将含义应用于结果。换言之,领域专业知识将有益于开始、中间和所有数据分析工作的终点。

为什么专业知识不应该成为拦路虎

我们很可能在这里白费口舌。如果你正在读这本书,那很可能你拥有领域专业知识并看到了信息安全领域中使用数据驱动方法的价值。因此,与其花精力讨论的数据分析领域的专业知识的优势,不如介绍一些你可能会遇到的专家(或持怀疑态度的领导)对数据分析工作的反对意见。

人比模型更聪明。有一些人认为,人总是会胜过算法(或统计数据,或模型),并且还有一些事实可以证明。比如教一个机器去抓住飞球是非常具有挑战性的。就像Kahneman和Klein在2009年的论文《Conditions for Intuitive Expertise:a Failure to Disagree》中指出,但是,决定何时人们的表现将优于算法在很大程度上依赖于任务的环境。如果环境是复杂的,并且反馈是延迟或不明确的,算法一般会胜过人类的判断。所以,问题就变成了,信息系统的安全性有多复杂,以及反馈有多清晰?当你更改或添加安全控制时,你收到多少关于它实际保护信息资产情况的回报?

结果是信息安全发生在一个非常复杂的环境下,但是,这并不意味着你把所有的鸡蛋都放在算法篮子里。意思是,你应该对任何纯粹靠人为判断的方法持怀疑态度,你应该设法加强和支持专家的意见。这不是将算法与人为判断进行比较,设立一个非此即彼的选择是不明智的,应比较纯粹的人为判断与结合了算法及数据分析的人为判断。你不想删除人的因素,但你应该对未经数据证实的观点持怀疑意见。在一个复杂的环境中,人的直觉和数据分析相结合,将产生最佳效果,并创造学习和稳固基础设施的最佳机会。

它仅仅是数据造假。这显示了对数据统计以及数据分析的普遍不信任环境,因为数据统计分析经常出于一些见不得人的动机被滥用以及误用(在某些情况下数据完全是捏造的)。在某种程度上,这种不信任是基于社会工程师极易获取的集体常识。即便如此,由于我们的目的是从数据中学习,我们就处于不一样的出发点。我们坐在一堆堆隐含很多信息和特征的数据面前,我们要去发现这些信息和特征。如果因为数据统计曾经被滥用我们就不使用数据分析,就如同因为汽车偶尔被用于接送服务而不再开车一样可笑。我们要习惯于将数据统计加入到我们的信息安全工具箱内。

并不是说数据分析是万无一失的,即便有时候数据分析产生了错误的结果,也许是因为错误的数据收集,或由欠专业的分析师操作,或源于处理过程中的错误,或仅仅是因为使用Excel(这种情况确也无法避免)。但是,将专业知识和具体数据相结合,就能够有效减少错误的发生。再次强调一下,减少错误的关键在于将数据分析和专业知识进行结合。

数据分析不是制造火箭的科学,这个说法有两个含义。第一个含义是,不管我们尝试解决什么问题,我们都可以用常识去解决它。这个观点可以追溯到我们在上文提出的“人比模型更聪明”,并且会议桌上的一群人不依赖数据分析就解决一个复杂的问题。但正如我们讨论到的,却也有必要在会议上为数据分析提供一席之地,因为有数据分析总比没有好。

上边这个说法的第二个含义就是,数据分析过于复杂且花费巨大(时间、金钱、资源)。这样的观点是完全错误的,这可能更担心在实际操作中会带来令人不爽的改变,而不是真正担心数据分析所花费的时间。数据分析的很多工具都是开源的(如果某些组织不愿意开源,那也会有大量的商业解决方案可以选择),而唯一需要付出的仅仅是花时间学习本书提到的一些数据分析的基本技术和方法。实际上,如果能够正确地将工具和经验进行结合的话,数据分析可以进行得非常迅速,甚至可以实时完成。

我们没有数据。另一种形式的反对意见提出,我们没有精确数据(这在风险分析中更为普遍)。反对数据的人认为“非完美数据即是毫无价值的”,并阻挠开展设计良好的实验。这个观点是虚假且害人的,如果我们只是等待着完美的数据,那么我们将会永远只是等待,并且漏掉了很多从数据中学习的机会。驳斥这个反对意见最重要的核心论点是,我们并不需要完美数据。我们仅仅需要可以从已有的混杂数据中学习的方法。正如Douglas Hubbard于2010年在其著作《How to Measure Anything》中提到的,“事实上,相比于预期,我们经常具有更多的数据,我们只需要更少的数据,并且可以更容易地通过观察从数据中获得更多的数据”。所以,一般来说,用于安全分析的数据是绝对存在的,通常情况是,它们正等着被收集起来呢。我们能对粗略的数据加适当的改动、收集,然后准确地分析数据。现代的数据分析方法已经解决了如何处理具有噪声的、不完备数据的问题。

我们会坠入黑暗。这是我们考虑的最后一个观点了。这个观点并不是那么强烈地反对数据分析,仅仅算一个障碍而已。当你在会议上被视为某个领域的专家时,大家就希望你能给出问题的解答,而当会议的问题不清晰、不确定的时候,就会产生冲突。数据分析恰恰要求适当的自我认知和人性,以便为自以为是的疑虑留有余地。即便你自信地宣称密码是满足一定复杂度若干位字符,但你永远不知道可用性和安全性之间的平衡点。人的信心是需要用人性平衡的,可以根据新的证据知识来更新一个人的观念。数据分析中的这个障碍并不主要局限于分析师,其他涉及分析的领域专家也同样面临自身的人性问题。毕竟并不是每个人都愿意听到“他的世界不是平的”。1.2.2 编程技能

不管我们如何将数据科学描绘成对知识、真相的极具魅力的追寻过程,正如我们所提到的,数据科学也会有一些杂乱。这只是一种保守的说法,和数据打交道具有超出想象的大量的不确定性和混乱,不幸的是,这些混乱经常早早地出现在我们尝试收集和准备数据的时候。这些过程是很多数据统计的课程从来没有为学生们准备的,教授直接拿出准备好的相当整洁漂亮的数据集,可以直接导入到数据分析工具内。而一旦学生们离开温暖的课堂时,他们将会立即意识到世界是不规则的,充满了混乱的,而数据(以及后续的分析过程)则是这个混乱世界的真实反映。

在数据科学中有一个冰冷、惨痛的教训:获取到的数据具有大量的不同的格式、状态和参差不齐的质量。数据可能嵌入在非结构化或半结构化的日志文件中,或许需要从网络站点去搜刮,更有甚者,数据来源于极其复杂令人心烦的数据格式,如XML。但是,我们也需要找到方法来收集、整理数据,将其调整到能支持深入分析的数据格式。虽然这些工作可以凭借极大的耐心、文本编辑器、明智地用暑期实习生来完成,但是长远看来,编写程序脚本来完成,可以提供更多的功能性和灵活性和高效性。学习基本的编程技能也会为数据处理提供更多的可能性。这样可以随意接受不同格式的数据并将其转换为最适合分析软件使用的任意数据格式。即便现在能获取到很多称手的数据格式转换工具,它们也无法预见和适合我们将遇到的每种情况。要做到真正高效地处理数据,需要我们去适应数据,而非相反。256位的AES密钥强度是128位密钥的两倍吗?

因为256位AES密钥长度是128位的两倍,因此对256位AES密钥很自然的猜想是前者的安全性是后者的两倍。由于所谓的“加倍的安全”,我们身边的信息安全人员要求一些项目使用256位密钥。既然如此,我们就来看看这里边的数学原理吧。第一点,正如我们说到的“位”,虽然256位确实是128位的两倍长,但是256位密钥实际上也只128多了2倍的密钥数。我们来打破书本常规并试试回答一个简单地问题:如果你能获取到世界上最快的超级计算机,那么能你破译多少128位的AES密钥呢?

目前(截止到本书撰写的时间)世界上最快的超级计算机是中国15的“天河-2号”,它能够每秒进行大约34千万亿次(34×10次浮点运算)。我们假设其能够一次运算产生一个密钥,再一次运算来验证这个密钥(这个假设是荒谬且保守的),我们每秒能够测试验证惊人的153817×10个密钥。但是128位密钥具有3.4×10个不同的密钥,意味着用超级计算机整整破解一年后,也只是仅仅探索了密钥空间的百分之–131.6×10。即便让这超级计算机运行1000年,我们也仅仅是搜寻了密钥空间的百分之0.0000000000016(而且耗费了巨量的电力资源)。

我们简化一下这个问题,暴力破解128位AES密钥的可能性已经如此微小,以至于可以认为是0了。我们可以在这里很专业地说,将128128位密钥提升到256位是将破解的可能性从超级无穷小变成2倍的超级无穷小。

任意的现代编程语言都支持基本的数据操作,但是一些如Python、R等脚本语言似乎在数据分析中比Java、C等编译语言更加常用。即便如此,编程语言其实是无关紧要的,最终的分析结果(以及一个愉快的分析师)比选一门“最好”的语言更重要,能花费最少的精力来完成分析工作就是最好的语言。我们清理、转换数据格式使用的语言一般在Python(pandas)以及R语言之间来回选择(或者有些怀旧的人会选取Perl语言),然后再用R语言或者Python来做数据分析、可视化的工作。学习一些Web相关的语言,如HTML、CSS以及JavaScript有助于创建基于Web的交互式可视化,正如我们将在第11章看到的,但是在数据准备和分析的过程中通常不涉及Web语言。

在本章中有个值得一提的工具:“网关工具”,其介于文本工具和编程之间,也就是电子表格(如微软的Excel或者OpenOffice的Calc)。电子表格可让非程序员做出一些神奇的东西,能快速地得到一些产出结果。尽管电子表格面临一系列的挑战和缺点,但它们也确实具有一些好处。如果处理的数据量不是很大很复杂,以及处理的任务不如“决定世界经济未来走向”重要的话,Excel可能是解决问题的最适合工具。我们强烈推荐选用Excel作为临时的解决方案,其能很好地快速处理一次性任务。但是如果你有一个需要重复分析的任务或者反复使用的模型的话,最好用某种结构化编程语言来处理。

作为一种数据清理工具,使用电子表格初看起来是一个不错的解决办法(尤其是对一些熟悉这方面技能的人来讲),但是电子表格是事件驱动的,意味着它们需要通过点击、打字、拖拽来工作。如果想用来转换一行数据,你就不得不点击表格,选中该行数据,然后再转换数据。这适合一些小的数据集或者快速的任务,但是相信我,你将会(比预期的还频繁)不得不回溯原始数据然后重新清理它。某一天,也许你有一些新的日志文件需要处理,也许你会意识到应该再从原始数据中提取另外的数据关系,也许(累得喘息)你在数据清理过程中发现了一个错误。也许不止一次地,某个点、某个处理细节会导致你重新回溯原始数据,然后重复数据清理以及转换的过程,利用电子表格的话,意味着你需要更多的无数次点击。然而,写一个脚本来运行的话,就可以很轻易、灵活以及一致地执行数据清理过程。电子表格的限制

在2013年1月16日,摩根大通向股东发表题为《有关摩根大通有限公司2012 CIO损失的管理工作报告》(Report of JPMorgan Chase&Co.Management Task Force Regarding 2012 CIO Losses)的报告(在附录B可见完整引用),在报告中,他们调查了在交易中损失的60亿美元。他们对执行故障做了详细审查,并将电子表格作为推波助澜的一个因素。“在审查过程中,额外的操作性问题变得明显。例如,通过一系列的Excel电子表格来操作的模型中,人们必须手动通过粘贴/复制(复制到另外的表格)来操作。”他们发现了一个对电子表格的巨大挑战:在数据计算过程中如何保证数据的一致性和完整性。“我们手动上传的数据缺乏质量控制,以电子表格为基础的数据计算缺乏足够的控制,以及充满了公式、代码频繁变更。”他们接着将电子表格数据模型标记为“错误”以及“难以扩展”。和任何[1]复杂的系统打交道的时候,大量的故障导致数据的灾难,我们很难将电子表格产生的“错误数据”指认为导致损失的主要原因,但是可以肯定的是,其中有它的作用。

在数据准备好进行分析之后,如果会编程的话你就会感到得心应手。很多我们在此提到的编程语言都内置了数据分析的特性。例如,统计学家专门出于数据分析的目的开发了R语言。Python及其扩展包NumPy、SciPy以及pandas,提供了丰富可比较的数据分析环境。但是,仅仅准备和分析数据是不够的,我们还需要表达分析的结果,其中最有效的方法之一就是数据可视化(这个主题占据了本书的好几个章节)。同样,Excel也可以产生一些图表,修改一些Excel的默认设置,就可以得到好的可视化效果。但是在我们看来,复杂的详尽的数据可视化都是通过编程产生,Python和R语言都有一些功能丰富的工具来产生以及探索数据可视化。在很多实例中,你也可以在同一个脚本中结合所有的步骤和函数,可以写一个脚本来抓取原始数据、操作和清理数据、分析数据,然后再对分析结果可视化。

[1] 请参考Richard Cook的《How Complex Systems Fail》,其中包含了有关这一主题的一些简短而有趣讨论:http://www.ctlab.org/documents/How%20Complex%20Systems%20Fail.pdf1.2.3 数据管理

如果某种技能可以推迟学习,那就是数据管理,但你也仅仅将其短时间推迟。在信息安全(或者大多数其他行业)中,数据将会快速成倍地增加。如果你不学习怎么管理它,它不断扩大会影响工作的效率和效果。正如我们提到的,你可以利用电子表格来处理简单的分析任务。你需要尽快摆脱这个阶段,使用编程语言来解析数据,处理简单格式的数据文件,例如逗号分隔数值(CSV)格式。到了这一步,你可能会看到一些将数据迁移到数据库中的好处,但是目前不是必需的。

随着数据仓库的增长,你会到达一个数据复杂性或者数量级的临界点,将数据迁移到一个更健壮的数据管理解决方案势在必行。这里存在一个误解,将昔日大型的关系型数据库留给量级最大的项目,这个观念是不好的。将在第8章讨论的大多数数据库系统都可以安装到个人电脑上,这样可使数据分析更加有效,更具可扩展性。一旦你的数据管理技能变得得心应手,就连小的项目也会受益于此。我们已经安装了一个本地数据库,并且就连小的一次性项目的数据也一并导入了。

每当讨论到数据管理技能时,我们很自然地就会想到数据库,你期望有足够的知识来安装一个关系型数据库或者NoSQL数据库,以便导入数据,并用来做数据分析。但是,数据管理可不止数据库的使用,前者还包括如何控制数据的质量和保证数据的完整性。你需要保证处理的数据没有被无意识地修改或损坏。经常性地检测数据质量和完整性无伤大雅,特别是针对长期的数据分析任务。它有点像软件开发过程中的单元测试过程,将应用中可测试的最小片的功能代码和整体代码隔离,并检测这小片代码是否如预期一样。在导入新数据或者做了数据转换之后,你需要做一些自动的数据完整性检查,特别是数据分析有了一定的效果,能进行定期的度量或者可用作控制的指标的时候。

最后,我们是关注信息安全的,如果我们没有谈到一点儿数据安全的话,就是我们的疏忽了。首先我们回头看看上边的内容,我们似乎重复强调了一些特点:一些出色的人员被他们的激情驱使决心要生成一个优雅的解决方案,但是系统安全并不是他们主要关注的问题,满足功能需求才是主要的关注点。举个例子,当UNIX平台系统最开始被开发出来的时候,其本意是为用户提供共享的平台(同时也是封闭的平台)。其结果是大多数的认证和权限校验只是防止系统受到程[1]序中无意识的错误产生的危害,而并没有防止恶意的用户。这里的观点是,一般“新生的”技术会特别强调功能性,而不是那么关注安全性。

由于当前来势汹汹的数据革命的快节奏推动,我们肯定要更多地强调功能性,而不是安全性。一些新的数据管理平台如Hadoop以及NoSQL,最开始都是被设计用来解决数据问题,而不能满足很多企业的安全策略和合规性需求(虽然他们学习起来很快),而结果就是,分布式计算平台面临着不同的安全挑战。现在UNIX的认证和安全特性比早期好太多了,他们通常不对安装较多的关系型数据库的安全性和功能特性进行比较,我们也不会在这个问题上关注太多。但是,不管选择什么数据管理平台,千万别假想其已经考虑了安全问题。

[1] 更专注于功能性以及防止错误,而不是停止滥用,这方面的一个例子是早期的认系统会在一个明码文本文件中存储用户密码。作为讨论,请参阅[Morris and Thompson,1979](参考附录B中的完整引用)。1.2.4 统计学

或许我们在这里有些偏向,但是捡拾起一些统计学知识几乎会改变你生活的每个方面。它不仅会改变你看待以及学习周围世界的方法,而且会使你自身变得更加有趣,甚至可能在身边的人们眼中更具魅力。严肃地说,虽然统计学(在这里我们把它作为一项技能进行讨论)是一个宽泛的主题,是很难喝到水的深水井。我们使用术语去描述逐渐演变的统计技术与方法集合,这些技术与方法现在已经演变成了(还在持续演变)尝试从数据中学习的状态。这些技能不但包括经典的统计学,还包括像数据挖掘以及机器学习这样的新技术。非常幸运的是,你可以从相当杰出的一代代人们的成功与失败中学到很多内容,这些人处理的数据和我们的数据非常相似,即使他们的计算器只是笔和纸,而我们使用的是电子电路。不管你对于统计与数据分析工具的个人观点如何,有大量证据表明,当统计学用于信息安全领域后,其影响力波及其他几乎所有科学领域。

除了显而易见的“从数据中学习”的方法之外,有一些更加深入的理由去集中提高你的统计技能。

·尽管数据从不说谎,被它欺骗却很容易。作为具有启发式思维的生命,我们拥有从周围世界中提出模式及含义的能力。这种发现隐蔽的联系及模式的能力通常很有益处,人们每天都会使用这种能力。然而需要注意的是,这种技能也可能会误导你,你可能会认为你看见了根本不存在的模式及联系。对统计的良好理解会使你更深层次地认识到这点,它的一些策略会使得这样的错误结论数量达到最低。

·尽管我们刚说过数据从不说谎,但是生成及收集数据的方法会产生欺骗性的结论。比如询问我们身边人们的看法会导致错误地肯定自身的观点,因为我们很自然地和志同道合的人聚集在一起,且想法趋同一致。数据本身可能并不具有欺骗性,但是它却容易导致人们联想到一些不相符的含义,就如1936年大选投票中的预测故事一样(请看下文“数据产生欺骗”)。

统计学并不仅是工具的集合,它是具有自己工具集的工具箱的集合。你可以从描述性统计开始,描述性统计将数据简化为描述数据某些方面的数字。举例来说,你可以通过计算均值、模、中位数以得到数据的中心,也可以通过标准差来描述数据的分散程度,可以使用偏斜度解释数据的对称性,也可以使用峰态描述峰宽。然而不管什么时候,只要你简化数据,都会在一定程度上失去数据的细节,这时候,可视化方法可以提供很好的服务。你使用可视化方法创建一段表述或者信息,这段信息包含并传达每个数据点,没有简化。我们将这种类型的可视化看作“描述性可视化”,因为它仅仅简单地描述数据。

除了过于简化的挑战之外,描述性统计局限于仅能描述你所收集到的数据。扫描少数几个系统然后计算漏洞的平均数,宣称统计数值描述了环境中的所有系统,这样的做法是不对的。推理统计可以帮助

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载