信息安全专业已经成为计算机相关专业中一个非常突出的独特分支。国内很多大学都已经建立了信息安全专业或专业方向。那么,信息安全专业毕业的学生有前途吗?应当怎么教?应当怎么学?
作为一名在信息安全企业中从业超过十五年的老人儿,接触过不少从高校毕业的本科毕业生、硕士毕业生、博士们。个人的总体感受:目前信息安全专业本科毕业生和硕士毕业生并不特别抢手;而在本硕期间搞网络和编程设计的好手特别受欢迎;在博士期间搞安全研究的会很受欢迎,但绝对不要只沉迷在密码学的公式中。直白地说,就是有真本事的人会受到欢迎。
我以前曾经说过一句很极端的话:“安全没有自己的技术”。“网络安全”靠的是“网络”技术、“系统安全”靠的是“操作系统”技术、“应用安全”靠的是“应用软件开发”技术;也许,只有密码技术好像才算是信息安全领域独有的技术。 再有一句话:“安全是一种思维方式”,比如,风险管理、博弈、逆向等等都是一种安全专属思维方式。这种安全思维方式与“某某技术”结合就成为了“某某安全技术”。那么,到底安全有没有自己的特色技术?有没有独特的方法和思维?如果有,应该如何教育和培养,如何能够让信息安全专业人才具有这样的技能?
当前信息安全专业方向本科教学的路线分析
在大学的信息安全专业培养目标中,常常会有这样的描述:“??要求学生:掌握现代化信息安全的基本理论和基本方法;具备研究和开发信息安全系统和产品的基本能力;??”。那么什么是信息安全的基本理论、基本方法?什么是构建信息安全系统的基本能力?大学的教授们能讲出来吗?企业中被称为专家的高人们能说得清楚吗?这并不容易,但是我们有责任讲清楚。
如果我们对比计算机科学与技术专业、计算机软件专业、网络工程专业、信息安全专业的课程体系。很难区别出这些专业之间有什么根本性差别,在课程体系设计和实验实践安排上确实非常雷同。
一个典型的大学信息安全专业相关的本科课程体系大致可描述为:
1. 公共基础课:数学、物理、工学基础、英语、体育、政治等;
2. 学科基础课:电路与电子技术课程、计算机科学概论、专业数学课(离散数学、计算方法)、系统课(数字逻辑、计算机组成与体系结构、操作系统、计算机网络、计算机安全)、程序设计课(汇编语言程序设计、数据结构、编译原理、数据库、软件工程);
3. 专业领域课:密码类课(信息安全数学基础、密码学、PKI 原理与技术)、网络防御与对抗。
4. 实验实践环节:信息安全课程设计。
这样的课程体系很难体现信息安全学科的独特性。信息安全学科的实质内涵和信息安全应用的实用实践都体现得不够充分。
从学科基础课的安排和实践看,这样的课程体系延续了旧有体系的通病:在学习基础课的时候,不知道为什么学?不知道怎么和专业有机结合?比如,网络工程专业的学生,在学离散数学中图论的时候,并不知道“图论是网络静态结构的基础理论”;再比如,信息安全专业的学生,在学操作系统时,没有反向思考如何入侵和防御;在学编译原理时,不知道需要同步探索“注入攻击”;学习软件工程时,不知道要同时养成“安全开发生命周期”的良好习惯。
从专业领域课的安排看,密码类的课程容易让学生感到枯燥难懂,而难于把握其基于密码算法、安全协议、逻辑关联和信任体系的结构性安全实质;网络攻防课程则主要介绍一些浮于表面的安全产品功能性和应用性介绍(如防火墙、入侵检测、防病毒等等),而这类产品在实际市场和使用环境中已经快速变化很多代了。
从实验实践环节的安排看:很多学校都遇到了一个很大的尴尬,就是网络攻防实践课“不会上、不好上、不敢上”。不会上,就是我们能够教学生的攻防方法和技术很可能已经过时了;不好上,学生在网络上自己搜索学到的凤羽龙爪,很可能就让老师不知如何对付;不敢上,在实验环节教给学生如何攻击系统,会给老师、学校、学生自己带来意想不到的麻烦,甚至法律纠纷。如果拿医学教学来做比喻,网络攻防课就如同是医学院在教学生怎么杀人,这就麻烦大了。
信息安全用人机构需要什么样的人才
如果我们再跳跃到学科专业教学的出口处看看。简单划分一下,本科教学阶段过后,信息安全专业方向毕业生大概会有的几个走向:
1. 成为安全科研型人才Researcher:在院校读硕士甚至博士继续进修(个别人或可进入企业研究院从事专门研究);
2. 成为安全专业型人才Practitioner:进入安全企业从事安全产品开发、安全服务实施等;或者进入IT应用机构从事安全建设和应用;或者进入相关主管或第三方机构从事安全治理和第三方活动;
3. 转向其他IT 方向;
4. 转向非IT 方向。
本文主要讨论的是如何培养第二类“安全专业型人才”,同时也为第一类“安全科研型人才”发展打基础。从用人机构的角度,总结一个安全人才能力表。展现出需要哪些不同类型的信息安全专业人士,并且罗列出来他们的哪些能力会被特别看重。
在安全人才能力表中,将能力分为A、B、C 三类:
A类能力就是分析能力Analyzing。分析可以将观察、情报、了解、理解等类似语义都涵盖在内。分析可能是攻击者对于被攻击对象的分析,也可能是防御者对被保护者的分析和对攻击者的分析。
B类能力就是拆构能力Breaking。所谓拆构,就是破坏、攻击。所谓攻击可以是攻击者对被保护目标的攻击,也可以是防御者对于攻击者行为的破坏和阻断。
拆构是一个更强调攻防执行阶段的动态活动。
C 类能力就是建构能力Constructing。建构常常指在实际攻防交锋发生之前的预设部署。不管是攻击体系还是防御体系,都有一个预先筹备部署的相对静态阶段。
在A、B、C三类能力中,分析能力是基础。拆构的前提是对拆构对象的了解,建构的前提是对于建构资源和环境的了解以及对于拆构场景的预判。这就如同在医学中,诊断是所有后续治疗手段的前提,保健预防当然也要基于诊断展开。
安全人才能力表中的这些能力,在当前的大学教育中基本上没有特别针对性的培养措施。而这些能力要么靠学生自己自学,要么靠企业在招聘后的培训和锻炼。这样教育缺口就导致了很多信息安全专业的毕业生被认为能力不实用,不如学网络和做编程的人。
本科教育专家们一定要深入研究用人机构对相关专业人才的细粒度能力频谱需求;同时,用人机构的行业协会和权威专家们也要有高度责任感去认真地影响教育机构,引导本领域后续人才的培养。
信息安全分析如同医学中的解剖学
我们把安全人才能力表中出现的A 类分析能力罗列一下:系统结构分析、( 二进制) 代码分析、被攻目标系统和体系的分析和了解、分析代码安全性、分析程序的设计安全性、业务安全需求分析、系统安全需求分析、宏观态势感知和分析、安全监控和事件发现、产业分析、行业和领域态势分析。
所谓分析都是对某种对象的深入观察。而分析对象可以分类为:
1. 数据体(静态数据体、数据流、程序体、密文等)
2. 结构(网络结构、体系结构、信任结构等)
3. 过程(流的思维、协议等)
4. 人或人集合体(动机、能力、习惯等)
如果把一个IT 系统比喻为人体,数据体和结构的安全分析认识,就如同医学中的解剖。是基础中的基础!而对于IT 过程和系统中人的分析认识,就如同神经医学、精神医学和心理学中的诊断活动。
由于有了解剖学的存在,让现代西方医学有了根基。同样,中医的基础同样是诊断。这些解剖、分析诊断技能再加上治病的目的和手段,让医学彻底区别于生物学而成为一个独立的大学科。同样,有了IT 系统的深度分析能力,再加上系统拆构和建构能力,将让信息安全学科清晰地区别于其他计算机和IT 相关学科。也让信息安全产业更加清晰地意识到自己到底需要哪些专业人才。
换一种直白的说法:“对于数据和结构的安全分析认识,是信息安全学科的基本理论和基本方法的根基。”
我们想象一下医学院的毕业生:是希望培养很多能够操作CT 设备或验血设备的操作人员呢,还是那些能够对于人体解剖结构了然于胸的西医大夫呢?我们是希望招聘很多能够照方抓药的中药店伙计,还是那些能够通过望闻问切明断病症的中医新人呢?
如果从用人机构的角度看,一个大学本科毕业生,如果能够熟练地做数据体分析,那么很可能就能够直接进入到病毒分析、恶意代码样本分析、网络流监控分析等核心专业岗位;如果能够敏锐地对一个中型网络的网络结构进行深入分析,那么很可能就能直接担负前线技术的高级安全咨询和安全工程设计的责任。
如何设置和安排信息安全学科的解剖学课程
如果我们看看医学院中一个典型的临床医学专业课程体系设计,会发现“人体解剖学”课程一般都安排在大学第一年。而各大学的信息安全专业课普遍安排在三年级以后;在大学一年级的计算机专业基础课都很少,一般只有“高级程序设计语言”。
笔者主张一定要在大学一年级为信息安全专业的学生安排两门信息安全专业领域课,并调整一门计算机专业基础课:
举办一门专业领域必修讲座《信息安全思维》:采用4~6 课时的讲座形式,最好邀请产业界专家和学校教授各讲一半。课程主要内容是:信息安全产业和学术领域概述、信息安全的独特思维模式和独特技术介绍、其他专业基础课程的安全视角提示。而《信息安全思维》讲座应当在大学四年的每个学年中都安排一场,针对每个学年的课程安排,引导学生如何从安全视角去审视。
开设一门专业领域必修课《信息安全分析基础》:在大学一年级第二学期,安排30~40 学时的课程+ 实验。课程主要内容是:介绍安全分析基本思想、IT 系统结构基本分析和认识(结构分析)、Web 访问数据分析(数据体分析)等。在后续的高年级中,再逐步安排《信息安全分析》的高级课程,涉猎不同领域和形态的安全分析。
调整一门专业基础课程《高级程序设计语言》的辅导课:这门课程可能会和其他计算机相关专业的学生共同上大课。而对这门课的辅导课时和实验课时中,要增加安全视角的讲解和讨论。将程序漏洞和安全开发生命周期等基本概念和思想融合进去。这样信息安全专业的学生在学习程序设计的一开始就同时兼具正向设计思维和逆向破解思维。
这样的课程体系改变,就是要在四年中一直抓住这三条线索:第一,每学年都举办由大师和专家讲授的《信息安全思维》讲座系列;第二,每学年不断升级的《信息安全分析》课程系列;第三,对每年讲授的其他专业课程的辅以安全视角指导。
当然,以《信息安全分析》为基础和轴心展开的课程体系设计,并不是要彻底抛弃原有的课程和体系,而是做出具有安全专业特色的调整。比如“PKI 和密码学课程”,也许不要从密码理论入手,而是按照密码对抗的发展脉络讲解。沿着密码分析、密码破解、密码设计等形成的ABC 三能力展开,可以让学生不仅知其然,而且知其所以然。
这样的课程体系改变,将大大缓解和解决了前面分析得出的当前课程体系的问题:
各个基础课与信息安全专业的关系,会在《信息安全思维》讲座和专业课程辅导中让学生了解;
学生能够通过每年不断更新的《信息安全思维》讲座了解和跟进最新的技术和产业变化;
学生不需从枯燥的密码学开始接触信息安全,而是从活生生的攻防对抗中感受真实的信息安全;
可以回避对于网络攻防实践课程讲授的尴尬。大学课程中教授给学生的不是如何杀死一个系统,而是如何解剖一个系统。
想象一下,一群系统性地学习了四年《信息安全分析》课程、系统性地跟踪了四年信息安全产业动态、不断修炼了四年信息安全思维的毕业生们,会彻底改变信息安全专业毕业生的能力结构和层次。
信息安全教育须要产学紧密协同
从来没有开过解剖学课程的医学院怎么才能开设起来这门如此关键的基础课呢?
当我们放眼看看国内的医学院,会发现所有的医学院都与大医院有极度密切的关系。
那么在大学的计算机学院中开设《信息安全分析》这样的IT 系统解剖课怎么能够脱离信息安全企业和信息安全大用户呢?大学信息安全专业教育体系的发展必须走产学紧密互动的道路。虽然信息安全的从业资格认证没有从医资质那么严苛(所有执业医师必须是医学院正规毕业和实习合格者),这样的“医学院+医院的一体化模式”却很值得借鉴。
而且这种产学互动,不是一个公司与一个院校的个体互动,而是“群群互动模式”。所谓的群群互动就是信息安全产业群体(企业群体和用户群体)和信息安全专业教育群体(大学学院群体)这两个群体的协同互动。在这样的互动中,新的教材、课程大纲、实验和实验环境、教师培养、实训基地就会逐步成熟起来。
在信息安全专业教育体系的调整变革中,要遵循教育的规律,不适宜做颠覆性革命。课程的改进、课程体系的调整要循序渐进。而这个变革的第一步就是从信息安全专业的解剖学课程《信息安全分析基础》开始。
我们期望通过稳扎稳打的循序渐进式调整变革,通过产业界和教育界的群群互动,用5~10 年的时间最终真正实现信息安全专业教育的根本变革和高层次建设。这样的改变一定会改变整个信息安全产业的人力资源结构,进而为整个信息安全产业跨越式发展准备足够多的高素质工程人才、研究人才、管理人才。这样的未来非常值得我们期待,并值得为之共同努力!