“为何选择网络安全而非更持久的事业?”
这篇文章源于一位朋友在Facebook上的提问(我稍作转述):“为什么你把时间花在安全上,而不是用你的脑力去做更持久的事情?”。我试图回答,结果写了一篇很长的回复。另一位朋友鼓励我将回复重新发布给更广泛的受众。以下是一个稍作编辑和扩展的版本。它比我平时的博客文章要粗糙得多,更个人化,有点意识流。对此表示歉意。
为什么我选择网络安全而非更持久的事情?
关于什么是“持久”的预测非常困难 :-)。我认为,除了日常的漏洞利用之外,在理解漏洞利用方面还有持久的工作要做(因为机器和自动机不会消失,编程错误也不会),我真诚地希望我有机会做这项工作。
我尝试过密码学/学术界,发现它比安全更容易受政治趋势/时尚的影响,更少盲目以结果为导向——这让我非常失望。当所有攻击的理论复杂度都是2^96时,验证和复制结果变得困难,客观真理受到影响(见下文)。
接下来,我将陈述一些我非常喜欢计算机安全社区的地方。我没有立即意识到这一点——相反,我是在多年参与其他社区后学到的。
- 原创思想家。我曾经开玩笑说,安全作为一个领域不糟糕的原因不到两打,我 personally 认识其中许多人。现在,两打是胡说八道,但真实的是,在所有的噪音和炒作中,我遇到了许多非常有趣、非传统、且具有深刻洞察力的思想家,他们背景各异。他们稀少且分散,但如果没有安全,我不会遇到他们,我很感激遇到他们。许多漏洞利用需要相当大的创造力,以及非显而易见/创造性的解决问题的方式;它们有时像一个好笑话/魔术:有一个意想不到的转折,让你难以置信地笑出来。
- 对非 conformism 和多样教育背景的容忍。很少有其他行业,高中未毕业的人与拥有研究生学位的人混在一起,平等辩论。尽管存在所有问题和偏见,我成长的那部分社区不关心性别、肤色或父母收入——每个人都是黑屏上的绿色文字。
- 智力诚实。在讨论攻击时,有“客观真理”——你可以确定攻击是否有效,检查可重复性很容易。这在许多其他学科中是不成立的,“真理”成为社会共识的问题——即使在纯数学中,证明应该是绝对的。拥有客观真理对于防止一个学科退化为经院哲学非常有帮助。
许多其他可能更“持久”的领域没有这三点的奢侈。还要注意,我对安全社区的 visibility 非常 skewed:
我对安全社区的 skewed 观点
经常听到关于社区的负面事情——它是精英主义的,充满姿态,或对经验较少的人刻薄/贬低。这不是我经历的社区——这种差异让我困惑了一段时间。
首先,每个人总是对我很好。我不确定为什么是这样,但我在这个行业遇到的唯一不友好是在泄露的电子邮件池中。这让我很难注意到人们对新人刻薄和精英主义——听到人们互相 shit 让我难过。
人们并不总是对我好——像任何一群青少年一样,1990年代的IRC通常不是一个友好的地方,#cracking 会因为你问一个问题而踢 ban 你。我在一个名为 #cracking4newbies 的频道找到了某种家——一个非常欢迎的环境,致力于共同学习。这对我很好:我可以问问题,要么得到答案,要么得到文档链接。#cracking 的一些成员不再活跃,由于历史原因在频道中持有地位,#cracking4newbies 则充满了渴望和活跃的年轻人。
我 somehow 设法避免了很多姿态和地位游戏,并且在某种 bizarre 的运气中,一直 managed 到今天。我花时间的安全社区中的人 genuinely 对技术挑战感兴趣, genuinely 好奇,通常不关心姿态部分。姿态可能在行业会议上发生,但我 tend 不注意——技术上有趣的演讲倾向于 substance-over-style,其余部分对我来说与破碎内容检查设备的大广告一样 relevant。
我想通过这一节说的是:我不知道我是如何设法避免体验安全社区的坏方面的。其中一些是运气,一些是本能。关于安全社区,有很多事情让我烦恼(但那是另一篇文章 :-),但在我的日常生活中,我不 experience 太多。如果你在安全领域,觉得社区是精英主义或贬低学习的人,我希望你成功找到我遇到的(许多)人,他们乐于分享、解释,并 just 共同 nerding out on something。随时联系。
关于构建与破坏
我经常听到这样的话:“我退出安全,构建而不是破坏东西让我更快乐”。这是一种正常情绪——但对我来说,安全从来不是“仅仅”破坏东西。工具总是 inadequate,工作流程可怕地劳动密集型,问题总是在最低抽象级别上处理, missing the forest for the trees。
在我的逆向工程课程中,我总是鼓励人们成为工具构建者。今天的大部分安全工作类似于用筷子挖沟。投资设计和构建铲子。也许在我有生之年我们甚至会得到一台推土机。缓慢但肯定地,行业正在朝这个方向变化:Microsoft 正在商业化 SAGE,没有代码审计员比运行 AFL 的计算机农场更高效(尽管更深入)——但开发人员可用的工具质量与数量与安全审查可用的工具之间的差距仍然巨大。
当我可以循环 through 构建/破坏阶段时,我最喜欢我的工作:尝试破坏 something,注意到工具多么疯狂地糟糕,循环 through 工具开发迭代,返回破坏等。
我意识到这不是每个人的路径,但我不认为安全是“总是只是关于破坏”。最持久的人会对筷子挖沟感到无聊。投资工具。成为更好的开发者让你成为更好的黑客。也许你喜欢构建多于破坏,我不能 fault 你 for that。
我的朋友 Sören 恰好是我认识的最好的 C++ 开发者之一。当我们在本科数学课上第一次见面时,我向他描述了我为生的工作(阅读代码寻找细微错误),他说“这听起来像是有史以来最糟糕的工作之一”。他是一个构建者,我对他只有钦佩和尊重——从构建者的角度来看,他的评估是正确的。
我仍然喜欢寻找细微错误。转述另一个我非常尊重的人:“几百年后,人们仍然在莎士比亚中寻找新东西”。
使用安全作为广泛学习的借口
我曾经读到“密码学像聚焦透镜一样聚集了许多非常不同的数学领域”。安全与计算机科学也是如此。安全发生在层与层之间的边界上,我使用在安全中工作作为借口学习尽可能多的层:低级汇编,形式验证的高级内容,甚至电气工程问题及其对安全的影响。
人们经常谈论“全栈工程师”;安全允许我漫游计算机科学中的全栈抽象而不感到内疚。所有层都与安全相关,所有层本身都很有趣,每层都有自己有趣的怪癖。
总结
鉴于这篇博客文章的长度,很明显我多次问自己“为什么我做这个”的问题。我也经常考虑 devote 注意力到其他事情。谁知道,我35岁,所以我有大约30年的专业活动 ahead of me——这可能足够在一两个其他领域失败 before 返回给祖父安全主题演讲。:-)
但现在,我 actually 享受手脏和多年来第一次思考堆布局。
发布时间:2016年10月1日上午12:25
作者:halvar.flake