本篇文章记录的是 2024.11.16 CNSS 返校交流会时学弟学妹们提出的问题,作为 6+年网络安全从业者,从我个人的角度对这些问题给出回答,希望有助于还在犹豫的同学决策。
如果后续问题和前面问题差别不大,就不再重复相同的观点,因此推荐从上往下按顺序阅读。
目录
行业问题
1. 如何保持对网络安全的热爱
看到这个问题的第一直觉是:没有必要强制要求自己对某个行业热爱。
可能有不少同学不太清楚自己为什么选择网络安全这个行业,只是机缘巧合进入了这个领域,又遇到了阻力,然后产生了这样的疑问,即给自己找一个继续下去的动力。但从我经验来看,职业和兴趣一般不是绑定的:
- 一方面,喜欢某一行业往往是在深入了解之前,大多数人喜欢的是这一行业的高光时刻,而不是占据职业时间大部分的枯燥部分,就比如日站挖洞出来你旁观看着很兴奋,但这背后需要下苦功的时间被忽略了。当然,有些人会从中找到正反馈,即「学习-练习-尝试-收获-探索」。
- 另一方面,职业做的如何,与其说与兴趣相关不如说是天赋相关。要明确区分,你当前对行业的热情出自于自己某个爽点——比如你对世界隐秘的好奇、对掌握更多技术的优越感等等,还是出自于自己擅长爆发出这一方向的灵感——在别人还在苦苦思索的时候你能有灵感提供新的思路并验证。有时候我们会因为擅长而喜欢,这与行业无关。
保持热爱,往往源于该领域能激发特定情绪,因此,建议同学找到「最开始网络安全吸引自己的原因」,然后找到一条正反馈的方式加强它。
关于这些原因,简单给出如下几种思路:
- 对神秘的好奇:揭开未知、比别人知道的多、更了解世界的安全感
- 对技术的炫耀:能用更高效/技术的手段解决问题、得到荣誉/赞誉/地位/优越感
- 对薪资的追求:知道或追求某高薪岗位
- 对该领域的擅长:发现自己明显超出一般水平的天赋
最后,我想提醒大家,人的一生重要课题之一就是「找到天赋」,也就是找到自己出生的技能点到底点在哪里了,但这不代表你在没有天赋的行业就做不下去,毕竟在盖洛普上有的人倒 10 的特质评分都比别人第一的要高。即使从事了自己不那么喜欢的行业,或者不喜欢了,也不要紧。
2. 我想做研究,该从哪开始
我没有读研,读论文或者做研究都是我野路子进行的。
我认为研究分学术研究和应用研究:
- 学术研究更侧重提出和验证猜想,往往是发明性质的,使得人类在这一领域掌握更多的规律、工具。我认为这一方向更靠灵感和天才,背后要解决的问题往往是独创性的,更偏向数学,例如前些时间有证明 Dijkstra 具有普遍最优性。
- 应用研究更侧重将证明过的规律落地成对人类生产生活有意义的产品,使得社会生产力提高。我认为这一方向更杂一些,关系到工程学、人机交互、社会学等方向,其背后要解决的问题在跨领域中往往有类似的场景可循,例如这类采用污点分析识别漏洞的论文。
作为偏应用的学科,我估计纯粹学术研究的网络安全方向不多,一般都是行业或未来有所诉求再把问题丢到课题组中。相对学术的一般是偏向算法的,例如密码学。
如果学生打算从事研究而非就业,大概有如下几个起点可选:
- 从提问开始。可以通过广撒网找这一领域的论文看看有没有自己感兴趣的问题,或者自己提出一个问题然后尝试解决它。把自己提出问题、提出猜想、验证、评价整个过程记录下来,最好是能投个会议的 paper。
- 直接找课题组。在你学好基础知识的前提下,找一个课题组跟导师混,学习如何搜集资料、提出问题、解决问题。
如果打算走研究/学术路线,那建议至少读到博士,早做打算,最好保研直博、本科发篇 paper,在精力足够的情况下可以多刷论文多参加会议,如果精力不够至少要保证课程内容都吃透。吃透的意思不只是拿 90% 以上的分数,而是知其然也知道所以然,有人计网考试分挺高但是 RFC 一个都没看过,这种就不太适合研究(因为没有追溯「为什么」的精神)。
3. research 和业务有什么区别
可以简单这样理解:研究是命题作文、业务是开放式写作。
安全研究可以说是在科学体系下,使用行业通用规律和方法来保证提出的解决方案原理可行即可,有时候它是一种新方法,有时候是比其他方法更优,与你产生对抗的对象是未知的知识。
但安全之于业务来说,是职能团队,业务提出的问题往往是非常偏上层应用的,甚至是「只有这个业务」才会遇到。你需要分析问题、了解业务,然后设计多个方案择其优,再推动方案落地,最关键的是,你往往是有多个现成工具可用的,但是与你对抗的是人,他们与你有同等水平的知识储备,这就意味着与业务打交道难点在于「在现实中找到使用资源的最优解,而不是找到某个知识」。当然,也有极端情况就是业务所面临的问题是现有资源都无法解决的,需要提出新的工具——这就是业务推动研究了。
因此,两者相同的都是解决问题,但:
- 问题对象:「研究」的问题来源大多是被拆分的子课题;「业务」的问题一般是业务在实际运作过程中遇到的风险
- 方法:「研究」一般是学术工具链,具体地分析问题、提出猜想、验证猜想,与知识打交道;「业务」一般要先了解背景和资源限制,分析出多个问题,找到多种方案,与产品/应用/人打交道
- 评价标准:「研究」的评价标准是数学指标,检出误报数量等等;「业务」的评价指标是这一风险是否被规避了
- 难点:「研究」在于找到新方法,靠灵感居多;「业务」在于平衡技术方案与风险解决、业务发展、资源限制这些方面的冲突。
比如我举个例子,业务想要一种「任何人都看不出来的屏幕水印但用手机对屏幕拍照后可以追溯到是谁的屏幕」的技术,这命题在研究上可能压根就不会进入讨论会。
但两者在绝大多数情况下是相辅相承的,业务为研究提供资源,研究为业务提供预期稳定性。
4. 如何平衡课程的学习与网络安全方面上投入的精力,毕竟 CTF 方面的知识和课程基本不相关
我推荐的做法是,课程拿到过线的分数后剩余精力给网络安全。
先解释「过线」。即如果你的目标是毕业就好,那过线就是 60 分(我就是),如果你目标是保研/出国,那过线要求就会高一些,比如绩点 >3.5 之类。无论如何,作为学生,保证课业是基本的。
在这个情况下,如果你没有或只有很少精力给网络安全了,那我建议佛系一点——没有能力既要又要就早早选择清楚,不要本末倒置因小失大,毕竟天才一般都知道自己是天才,压根不会遇到这个问题。
5. CTF 的知识和实际业务环境有多大区别,打 CTF 是不是只是“在出题人精心暴露的漏洞里面填空”
国内的 CTF 有很强的作秀和政治色彩,虽然举办方也有,但有很多地方/机构/企业是为了宣传或政治任务搞 CTF。因此,CTF 作为入门去了解网络安全相关的知识是好的,但不建议纠结过度,毕竟比赛的首要目的是拿名次而不是学东西。
我认为一个合格的 CTF 选手是能区分题目质量的,一个优秀的题目,一般是脱胎于实战,将业务敏感信息减去,给出的类业务环境。比如早些年的 redis 提权、log4j、管理员越权等等,这些都是在企业中常常遇到的,但现在几乎没有业务会自己写几百行的防 SQL 注入脚本然后偏偏忘了过滤特定字符,这一般是 WAF 的工作——而一个正常的 WAF 可能会忘了处理/*/*/
这种,但不会忘记处理+
。更别提有些题目压根就是出题人臆想出来的了。
因此,优秀的 CTF 题目是会让你感觉到「哦原来还有这种玩法」的。
根据 CTF 出题水平的不同,不好说 CTF 与实际业务环境的区别有多大,但 CTF 即便是非常还原业务的场景了也是精简过的,毕竟真要把业务环境还原了那部署成本和敏感信息都过不了关。从我个人经验来估计,越偏多个小漏洞组合、越偏向逻辑漏洞(越权、配置不当)的,往往离业务环境越近;而一看到题目就知道考察什么漏洞,无非就是在与出题人的 filter、const 对抗这类题目,往往与业务关系不大。
所以,「区别」的核心思路是,你解题的时候有多大部分信息是来自题目内。真要对这个「区别」感兴趣,多刷 SRC,你会感受到信息收集的魅力的。
就业问题
1. 是读研出来找工作容易还是本科找工作容易,薪资待遇区别大吗(一般来说)
首先排除一些企业只招特定学历,这不在讨论范围内。根据我的估计,大部分情况下,本科、研究生是等价的。
容易与否,和薪资差异,更大程度来自「你 与 企业」之间的适配程度,这是最重要的。
对大部分企业来说,谈薪空间是不大的,因为在招人的时候已经划分好档次了,比如 B、A、S、SSP 之类,根据候选人适配结果不同会分配到不同 offer 等级,而这个等级要拿多少钱,一般是当前就业市场、对应企业与市场的关系决定的,只有极少数的情况下,候选人可以利用企业对这一岗位招人的紧迫性,通过其他企业的 offer 来提升 offer 等级。
因此,你会发现,即使水平差不多,在不同年份就是会拿到不同的薪资。比如特定年份几个大企业对 AI 人才的防御性招聘,宁可给高薪也不能让其他企业招到人。
而且,再过几年,研究生要比本科生还要多了——有很多人读研只是为了延缓就业,不见得与本科时有什么差别。
2. 如果我决定本科就业,应该提前准备哪些技能或经验
在招聘的时候,我会考察 3 个方面,简单列举下关注项:
- 网络安全专业方面:漏洞原理、工具原理、挖洞思路、问题研究、行业视野、理念方法、心态和好奇心、动机
- 计算机基础:算法数据结构、开发能力、计网计组、密码学、数据分析
- 基础素质:表达、逻辑、信息收集、职业规划、个人特质、跨行业关联、任务管理、冲突解决
对于本科校招来说,企业一般更关注成长性,即学习能力,而不是过分苛求本科生有哪些经验,要牢记:面试中讲述过去的经历都是为了证明你优秀而存在的,并不是你经历了这些就一定怎样,而是你在之中做了什么、学到了什么。
回到问题本身,如果很早就锚定了就业,有以下几个方向可以尝试:
- 多面试、多实习:建议大一结束的暑假就开始。基本上大学是最后一次利用先发优势的机会了,早一年准备就领先同龄人一大截。
- SRC、CTF、CVE、会议、paper、开源项目:可以直白告诉企业你水平的方式
最后,多找学长学姐沟通,认真看目标岗位的 JD,就业考察的是匹配而不是优秀。
3. 除了打比赛,还有什么有助于就业的建议
同上,可以参考上面我列出的关注项。另外:
- CTF 有足够的奖项就可以撤了,没必要在这个方向太卷。多找到自己的短板,一般你有 3 个第一名和 10 个第一名对企业来说没什么差别,但是你某个方面的短板(比如在应对复杂问题的时候毫无头绪,只会照本宣科)可能成为一票否决。
- 在找工作的时候,多面多总结,面试的同质化还是比较严重的,突击补短板也不难。
- 多内推甚至直接找到目标岗位招聘人员,不然在大池子容易被忽略
- 多深入理解自己学到的知识,知其然也知道其所以然
4. 毕业时如何向公司证明这些 CTF 比赛的价值
你要证明自己的价值而不是 CTF 比赛的价值,比赛奖项是让你和面试官有个聊天的话题。
5. 是否存在“门槛”,如果我不做研究生是否依然可以找到高薪 offer
行业来看,可以,看水平,详见上面问题 1、2、3。
对特定公司,看特定公司的当年招聘政策,但总体来说,研究生学历不足以让企业高看,反而你可以考虑研究生 3 年你产出了什么高价值内容能比得过只有 4 年经历的本科生。
我认为研究生最大的优势就是有 7 年经历可谈而本科生只有 4 年。
6. 就业除了 CTF 还需要积累什么经验
详见上面问题 1、2、3、5。
CTF 只是网络安全行业的小小一部分,打开你的搜索引擎搜索「network security skills」,比如What Skills Does a Network Security Engineer Need?。
7. 网安行业未来的方向在哪(哪里可以挣大钱)
定性地说,业务发展的方向就是网络安全未来的方向,安全是依赖于业务生存的(业务是泛指,即使是经济安全、政治安全也有对应的「业务」)。
因此,你需要了解业务发展热点在哪,例如 AI、智能驾驶、低空经济、Web3、数据安全 等等,这比较考验你信息收集和预判能力。
不存在确定性的结论说未来方向在哪,只要行业达到一定的规模,就会需要安全的支持,只是需要安全的子领域不同而已。
如果说哪里可以挣大钱——黑产?刑法?
不然我认为能让一般人挣大钱的方式只能赌——赌你是进入某新领域的第一批。比如 ChatGPT 火了之后引起的一波高薪招聘 AI 人员的热潮。
单纯就挣钱而言,选择比实力更重要,选对行业、时间、公司,能和同水平的其他人差几倍收入。
8. 简历到底要夸大还是谦虚地写
主观标准上有限夸大,事实内容上谦虚。
简历有两个作用,一是争取面试机会,二是让面试官跟你有个话题。
所以,为了争取面试机会,我确实不反对在一些内容上夸大,但这个夸大一定是可以解释的,比如你说熟练掌握 Python,那什么叫做熟练是完全主观的(虽然也会影响面试官对你的观感),因此这地方把了解写成熟练,虽然有所夸大,但可以解释的过去;但是,如果某项目中你只是写了几个正则,就千万别说负责了整个项目,在事实层面一旦被证伪会直接标记为不诚实。
当然,最好的方式是,你能找到一个恰当描述自己水平的方式,而不是沉浸在这些奇技淫巧上。比如你直接说 Python 写了多少 package、写了什么项目、收获多少 Star、有多少用户、实现了什么样的复杂功能,要比一句熟练掌握 Python 有效得多。
发展问题
1. 如果时光倒流重回学校,希望把哪些学科/技能/事情做好
-
第一个必然是数学。
我自认为是一个比较喜欢纠结底层原理的人,所以我把计算机科学这个专业放在了 1 选,而不是信息安全,然后把数学放在了 2 选。但是如果让我重新来的话,我更倾向于数学专业而不是计算机。
因为越工作就会发现,制约你思路跳跃性的是对基础知识的理解,比如「概率统计」「离散数学」「线性代数」等等。学好数学有助于理解网络安全的一切。
-
第二个是兴趣,包括心理咨询师、日语、摄影之类。
因为毕业之后,从精力和时间上都很难模仿学校这种系统化、长期化的学习,另外心理咨询师在 2017 年就停考,恰好错过。
所以越往后就越觉得大学的学习时间很难得,很多内容如果年轻的时候不学,以后更没有机会。
-
最后就是多看通识类的书,比如经济、政治、法学各方面。
有相当多的知识是越早知道越有用,不然会交学费。
最后反过来说,应该会减少与人无效社交的时间——绝大多数关系是你们恰好在这个空间下生活才存活的,离开了空间关系,很快就破裂没意义了,所谓的人脉也是建立在对等互利基础上的,刻意结交的意义不大。
2. 大佬们如何看待最近 AI 技术对安全行业的影响
2 个方面的影响。
- 从安全能力来讲,AI 是安全的业务方之一,安全会在 AI 的算法设计、训练数据、训练过程、运行环境、模型应用等各方面建设安全能力,比如会有 AI 安全方向研究语料污染、提示词保护等。不过前文也说到,这取决于 AI 发展的规模,一旦 AI 遇到瓶颈未来预期不足,AI 安全也会受限。就目前而言,大部分能力集中在训练阶段和 AIGC 应用方面,特别是伦理、合规、数据安全。
- 对安全从业者而言,AI 是工具。AI 可以替代一些重复的低端工作,比如运营过程中引入 AI 判别可以替代人工判别,能让复杂系统更好的与人解藕形成自动化。因此,从业人员会被迫提高从业要求,当别人会你不会,那你就有可能被淘汰;除了现成的工具外,一些人会自己建设模型,比如用 AI 发现新漏洞等等,业务使用 AI 也会迫使安全从业者去了解 AI。
因此,AI 在安全上逐渐发展为类似 Web 安全这样的子领域,你需要了解这一领域的基本原理、如何攻击(使用)、如何防御(规避风险),除了 AIGC 数据和合规安全已有草稿在审议,预计很快就有「AI 安全 SDK」、 「AI 模型安全最佳实践」等内容的出现,当然,前期是噱头,只有行业真的遇到风险才会推动安全子领域的成长。
收尾
实际上,我不认为网络安全是一个非常好的行业,其价值的体现往往依赖于研究对象或者服务的业务,它存活于人性的恶,靠冲突和破坏掌握声量,就如同那个笑话:安全做的好要你干嘛、安全没做好要你干嘛。
但作为一个技能,并且靠这个技能糊口,我是支持的,因为网络安全,或者说黑客这一领域,提供了太多获取信息、处理信息、发现问题、利用问题的能力,这些能力使得人无论在什么行业都有前瞻优势。
因此,对刚入行的新人,我希望大家能找到「自己选择这一行业的意义」,保持探索,保持危机感,在任何时刻不要想着做死在这一行。