分类 机器学习 下的文章

一年香:我把故事写在纸上

作者:404notfound@柳星,文字同步更新在个人微信公众号「404 Not F0und

前言

不知不觉,入职一年有余,几度提笔想写下过去一年的经历,却不知从何说起。阿里有一句土话:唯一不变的是变化。那么,我们就从变化说起。

变化分为两类,一类是基础通用能力,更多的是软技能,另一类是专业能力,也就是硬核科技。

软技能又可分为强化自己的和影响他人的两种,强化自己的是思维,结构化思维以终为始思维,影响他人的是能力,领导力影响力。专业能力主要是对安全的理解和安全智能化的探索和实践。

结构化思维

初次明确理解结构化思维这个词时,还是两三年前,现在重提,是因为又再次理解了这个词的含义。本文的写作思路就是按照结构化思维拆解的,变化分为两类,第一类包含两种,第一种又包含两个。以此类推,拆解到「不重」、「不漏」,兼顾全局完整性、互相独立、整体穷尽。

终局思维

终局思维是我从老板和同事们身上学到的很关键的一点。我老板有一句口头禅:你的目的是什么。刚开始的时候,有些不太适应,感觉这种语气有点冒犯的意思,后来慢慢的,才发现这是在促进不断思考,思考终点在哪里,为什么在那里。有了明确的终点,再结合结构化思维的拆解,就可以倒推需要哪些步骤和资源,剩下的就是水到渠成。这是一种终局思维的体现。另外,在部门表彰的时候,奖杯上就有“以终为始”等当时认为花里胡哨的词汇,现在想来,其中可能蕴含两种意思:过去已经取得的终,忘了它;对于未来要取得的终,从一开始就要认识它,瞄准它,吃掉它。这也是一种终局思维的体现。细细观察,发现工作和生活中很多都透露着以终为始的味道。

之前也听过“以终为始以终为始”这类词,但从来没有细细想过,导致很长时间对这类词不感冒,认为是大而空的口号罢了。现在,再一次理解了自己以前说过的一次话:说,是别人的,听,不算自己的,悟到,才是自己的。

并不是在一开始老板说“你的目的是什么”的时候,就意识到了终局思维方式的存在,也不是在看见奖杯上标语的时候,而是源于真正做事过程中的亲身经历。意识到、理解到、总结出一种方法论的最重要一环,不是听别人说,而是通过一次事件亲身实践临门一脚。这也许就解释了晋升流程中,用实际案例说明自身已达到下一层级标准的行为,不是你说你具备这种能力就具备这种能力,不是你说理解了以终为始就理解了以终为始,而是要拿出你自己的实际案例支撑。如果没有推导过程,直接说出结论,那可能会被认为是在说套话。

我触碰到“以终为始”说来也简单,刚开始按照结构化思维拆解攻击者画像项目,根据我仅有的知识面,拆解成了攻击源和攻击者,后来不断增加自身的输入不断实践,逐步细化,发现还可以拆解为攻击者身份、攻击者攻击工具、攻击者所用漏洞、攻击模式等等,这时候又了解到了美国威胁情报标准之一的STIX框架,对比一看,发现已经推导出了框架的70%了,那么这个框架很可能是我理解的攻击者画像的终局状态。

当然,如果一开始就明确告诉我STIX标准是要做的事的终局状态,对于项目进度可能会快一些,因为我只是个执行者,但对于个人成长,也许会慢很多理解到对于未来极其重要的以终为始的含义。

对于解决一个不确定性的问题,光靠结构化思维还远远不够,还需要大量的输入,让不确定性变成确定性,透过迷雾,看清问题的终局。

希望这些如果有幸作为同学们的输入,让成功经验被低成本复制,是我最大的快乐,这也是我花了这么多篇幅写终局思维的原因。

领导力

领导力我理解不是领导的能力,而是一种令众人信服的能力,可以是深不见底的专业能力,也可以是让人自发地追随你的人格魅力。第一次明确意识到领导力这东西的存在,是集团内部有一算法比赛,鼓励内部员工组队参加,老板让我来组织部门同学参与。我当时最真实的想法是:妄自菲薄,我一个低P怎么能组织带得动大家,于是乎就一个人冲了,显然取得的效果不好。后续随着老板的关切,及时认识到了问题所在,最后成绩差强人意。记忆最深的,是老板的一句话:Leader的由来是要Lead「带领」。事后反思,我就定了一条自我行为准则,让我来牵头的事情,不管是不是在现有专业领域内,不管参与方都是P几,充分思考、准备、安排上,对事不对人,当然也要讲究方式方法。

影响力

如果把影响力作为一种目标,那么达成目标的方式有两种:写和说。世上有两件事最难,一是把别人口袋里的钱放进自己的口袋,二是把自己脑袋里的思想灌进别人的脑袋。无论是写和说,本质上都是在做第二件事,向外表达自己的思想,进一步辐射,潜移默化影响到他人,辐射的范围越大,他人被感染越深,影响力越强。

得益于近几年持续的琢磨和断断续续的文字,从开始的想到哪说到哪,到看了很多书,模仿各种作家的写作风格,再到知行合一,回归自我,写自己的文字。谈不上多「会写」,但写字已然成了工作和生活的一部分。

此前认为,当所有思想数字化、文档化,那么「能说」将毫无意义,更何况说的效率可能像刘慈欣在短篇科幻小说《乡村教师》中构想的说的信息传输速率大约只有每秒1至10比特一样低。但是工作的沟通经历让我意识到「能说」非常重要。因而现在也在刻意练习说话的艺术,分场景有向上汇报、平级沟通、外部演讲、日常扯淡等。实践出真知,在说这方面会持续找机会加大样本输入,不断调优能说模型使得自己能说。

安全

从组织架构层面及其工作职责理清了基础安全、信息安全、业务安全、系统安全、风控等等名词代表的含义之间的关系。基础安全部为啥叫基础安全部?业务安全和信息安全、风控的权责?这些看似简单的问题刚入职我以为我就想明白了,后来发现又想明白了。

好的甲方安全的目标我理解有两个,第一是保护业务,给公司省钱,第二是衍生业务,给公司赚钱。

我们日常说的业务风控是直接保护业务,而系统安全、基础安全、信息安全等中有一部分是直接触达到业务影响到业务安全,另一部分是间接影响到业务安全。按手段划分,像越权这种场景就属于基础安全中的业务安全,入侵场景属于基础安全中的系统安全,洗钱场景属于业务风控;按目的和手段一起划分,资金安全看上去属于业务风控射程内,其实基于入侵的资金安全就属于基础安全范畴内。所以,其实基础安全和业务风控有交叉,交叉的部分正是用基础安全的手段达到影响业务安全的目的

好的的安全团队,还是要「evolution」,不断拓宽安全的现有边界,甚至向外输出能力、产品、服务。而不是「involution」,involution这个词很形象,in+volution,向里+涡旋=内卷。

安全智能化

经过近一年的安全智能化探索和实践,沉淀了一些实战经验和方法论,以此为基底,撰写「面向安全、数据、算法人员的安全智能化落地指南」,不断完善发布在Github仓库「AI-for-Security-Landing-Guide」

1.检查数据标签纯净度
garbage in, garbage out。
训练阶段,检查黑白样本标签纯净度。尽可能100%纯净。如果,黑中有白,预测阶段会误报,白中有黑,预测阶段会漏报。

2.黑样本分布多样性
训练阶段,检查黑样本标签分布多样性。原始数据来源和风险标签类型尽可能覆盖全面,因为会影响到预测阶段模型的泛化性。

3.避免黑样本浓度过低
训练阶段,检查黑白样本标签分布均衡性。建议黑白样本比例最低控制在1:100~1:1000。可以通过白样本的下采样抽样和黑样本的上采样控制浓度。

4.检查脏数据
脏数据,可能会导致后续数据和算法处理有效率和性能问题。比如sql长耗时、算法长耗时,训练准、预测不准等问题。因此,当出现预期外的问题时,排查脏数据。
如果是处理效率问题,尝试数据截断
如果是算法性能问题,遵循第一条守则检查数据标签

5.特征工程选型
统计特征。考虑时间+空间维度,比如过去90天内xx的统计特征,当天xx的统计特征。
如果数据体现出行为序列方面的规律,使用NLP处理特征化。

6.机器学习算法选型
在显性黑样本极少时,行为手法未知,风险类型不明,优先采用无监督算法发现事件,总结规律,写成规则。反之,优先采用有监督算法
聚类算法优先采用dbscan(参数敏感型),异常检测优先采用iforest,有监督算法优先采用lgb
dbscan落地安全的优劣势
优势:不需要输入类别数k;可以发现任意形状的聚类簇
劣势:聚类收敛时间可能较长;调参复杂,需要联合调参

7.机器学习算法调参
dbscan有2个核心参数,建议联合调参。
邻域的距离阈值eps
邻域的样本数阈值min_samples

8.训练过程和预测过程保持强一致性
训练过程中使用的特征提取方法,产出的产物如:模型、词嵌入向量词典,在预测过程中要对应使用训练过程中的成套方法和产物。 bad case:在预测过程中,使用了一次训练模型任务中的词嵌入向量词典,使用了另一次训练模型任务中的模型,导致预测发生意外,不符合预期。

安全未来

未来安全的对抗,必将是强知识的对抗,数据和算法的对抗,未来安全人员的需求,必将是拥有一超多强型技能的人才的天下,高综合素质+特殊技能。面向未来,我们能做的是保持学习,时刻进化着我们的脑模型。面向未来,团队能做的是:招人招人招人,给老板们招人

  • 组1:招逆向高手

  • 组2:招应用安全

  • 组3:招威胁对抗