2020总结与2021展望
郝伟, 2020/12/31

1 主要成果回顾

1.1 理论研究

理论研究主要涉及深度学习, 机器学习, 强化学习, 自然语言处理, 知识图谱 等,主要包括以下核心技术要点:
(以下链接均为原创内容,加粗表示推荐内容)

1.2 技术研究

在工程实现层面主要有以下研究内容:

1.3 工程应用

在通理论研究和实际的需求分析后,进行设计和并编写代码进行验证40余项,其中与公司产品直接相关的内容有23项,具体如下所示,由于代码比较多,只列出比较有代表性的几个验证代码和运行结果(直接点击表中的链接即可)。

F项目验证

在F项目中,提出算法,解决问题,优化模型,功能和性能模拟评估。
主要内容如下所示(以下项目均有代码,时间关系仅列表部分仅供参考)。

ID 日期 内容 语言 介绍
1 2020/04/11 多节点嵌套加密 Java 用于多节点的消息嵌套加密
2 2020/04/12 加密测试 Java 对称加密功能测试
3 2020/04/26 图像学习工具 C# 用于节点算法分析
4 2020/05/04 DH加密算法模拟验证 Java 用于密钥交换
5 2020/05/22 使用图片隐藏加密信息。 C# 用于消息隐藏
6 2020/05/27 基于超奇偶性的高速对称加密算法 Java/C# 可以达到3GB/S的加密速度,30倍于标准的AES算法。
7 2020/05/29 基于三角函数测试查表性能 Java 1)查表法提高速度几百倍;
2)三角函数在2pi以内会计算更快,因为不用考虑求余计算。
8 2020/06/04 模拟简单的KAD算法 Java 模拟成功,用于组网算法
9 2020/06/07 节点路径搜索算法 Java 用于模拟组网算法
10 2020/06/07 字符串拼接测试速度 Java 用于提高字节加密的性能
11 2020/06/09 基于MD5的IP地址隐藏算法 Java 实现对IP隐藏的算法
12 2020/06/11 节点曝光度风险模拟 Java 可以使用公式计算资产的曝光度
13 2020/06/15 登陆验证算法验证 Java 节点登陆验证过程验证实验
14 2020/06/18 Tomcat字节流测试 Java 使用Tomcat进行字节流的操作。
15 2020/06/23 ECDS密钥交换验证 Java 测试ECDSA算法
16 2020/07/05 根据RSA算法的原理编写的算法。 Java 算法模拟验证
17 2020/07/20 使用Cmakefile编译第三方库 C++ 测试第三方库的调用编译测试
18 2020/08/21 F项目框架第3版 - 系统整体架构设计
19 2020/08/27 多线程资源共享性能问题。 C++ 每秒可以做到千万次进程切换。
20 2020/09/15 SSH免密钥登陆 bash 通过RSA密钥配置实现无密钥登陆服务器
21 2020/09/18 组网算法单机原型(C++实现) C++ 通过单机版C++代码演示组网算法
22 2020/10/12 一个线程会占用多少的内存?答:几百KB C++ 实验验证多线程程序中一个线程占用的内在大小
23 2020/10/13 双线程竞争资源产生的线程切换性能测试 C++ 验证双线程切换时的效率,结论是每秒百万次。
24 2020/10/15 GaspBerry嵌入式开发板测试报告 多语言 实验验证在GaspBerry中,默认自带的JDK/Python/gcc的运行情况。
25 2020/10/20 双线程竞争资源产生的线程切换性能测试 C++ 验证双线程切换时的效率,结论是每秒百万次。

灵洞:资产与漏洞风险算法

初步建立了一套能够用于资产与风险评估的算法,并且经过3次迭代优化,初步达到预期目标。未来计划对收集到的数据进行机器学习,通过算法实现对参数的优化调整。

主要是资产与漏洞评估算法

ID 日期 内容 语言 介绍
1 2020/04/14 资产与漏洞风险评估算法模块 Java 算法功能测试
2 2020/10/26 弱密码随机生成算法 Java 根据输入15个输入参数和生成个数,生成随机的弱密码。

灵刃:智能化渗透

通过基于强化学习的算法,实现对渗透过程的智能化控制,并能够动态响应控制变化。

ID 日期 内容 语言 介绍
1 2020/03/31 强化学习攻击演示 Python 基于强化学习的智能化测试
2 2020/06/10 强化学习攻击性能测试 Python 可以使用机器学习选择最优结果

其他

其他一些相关的模拟演示

ID 日期 内容 语言 介绍
1 2020/12/03 两台机器间数据通信的几种方法 Python 调研机器横向穿透的方法。
2 2020/12/27 设备名称与版本提取方案设计 Python 基于正则的信息提取方法。
3 2020/12/28 nmap抓取的数据的匹配方案设计 Python 基于距离计算的文本相似度计算方法。

1.4 工程管理文档

以下文档是为了F项目而编写,并保存在合肥研发中心的内部服务器的Confluence上。

ID 名称 分类 作者 介绍
201001 系统联调测试方案设计 方案设计 郝伟 联调方案设计的三个阶段和各阶段测试设计及安排等相关内容。
201002 F项目章程 项目管理 郝伟 项目章程,对项目各方面相关内容约定的基本文档。
201003 tomcat硬件资源占用测试 测试报告 郝伟 对tomcat占用CPU和内存资源的情况进行测试报告。
201004 关于非链路通信的的设计方案 方案设计 郝伟 对非链路设计的设计的相关内容。
201005 关于监控中心信息采集的约定和设计 方案设计 郝伟 对监控中心信息采集的数据格式和方式等的方案设计。
201006 上下层通信协议 方案设计 郝伟 对上下层的通信命令进行的详细设计。
201007 组网算法(C++版) 技术文档 郝伟 使用C++实现的单机版的组网算法的原型代码。
201008 自动化测试说明文档 方案设计 郝伟 从测试人员角度编写的对自动化测试的一些约定。
201009 一个线程会占用多少的内存?答:几百KB 测试报告 郝伟 对Windows和Linux的线程性能尤其是内存占用情况进行的测试。
201010 使用别名简介ssh和scp操作 技术文档 郝伟 介绍如何使用别名进行SSH和SCP的操作。
201011 SSH免密钥登陆 技术文档 郝伟 介绍在Linux系统下如何进行免密登陆。
201012 双线程竞争资源性能测试 测试报告 郝伟 使用C++测试双线程切换时的性能。
201013 网关接入注册节点认证流程 设计文档 郝伟,朱黎明 介绍开发人员、终端和网关三种认证的设计原理
201014 CLion远程开发配置 技术文档 郝伟 以图文的形式介绍如何配置CLion的远程开发配置过程。
201015 项目整体设计框架 设计文档 郝伟 整个系统的框架性设计说明文档。
201016 Confluence使用常见问题 技术文档 郝伟 介绍Confluence的一些使用中的常见问题。
201017 代码管理 项目管理 郝伟 F项目中代码管理的一些基本要求。
201018 文档编写基本要求 技术文档 郝伟 介绍技术文章编写时,内容和格式上的一些基本要求。
201019 公司服务器和相关服务启动流程 项目管理 郝伟 介绍公司服务器管理流程。
201020 项目输出程序清单及说明 设计文档 郝伟 对整个项目输出的程序和使用方法进行相关说明。
201021 问题记录列表 项目管理 郝伟 记录项目设计和开发中遇到的一些问题。
201022 如何使用CMake导入第三方开源库 技术文档 郝伟 以zlib演示如何在项目中添加第三方开源库。
201023 各节点存储数据定义 设计文档 郝伟 定义各节点存储的数据内容和格式。
201024 代码评审记录 项目管理 郝伟 对代码质量进行评审并记录评审结果。
201025 使用CMake建立可配置交叉编译框架 技术文档 郝伟 设计了一种可配置的指定库或预定义变量的交叉编译框架。
201026 在CLion项目中设置多个main函数入口 技术文档 郝伟 在CLion项目中添加多个main,从而方便测试。
201027 嵌入式Linux调研问题汇总 调研报告 郝伟 对嵌入式Linux系统的一些问题进行的调研。
201028 公司C++代码规范 V1.0 项目管理 郝伟 对C++代码进行规范性约束。
201029 新员工入职必读 项目管理 郝伟,吴建峰 向新员式介绍了公司和项目开发相关事宜。
201030 使用函数指针数组代替switch语句 技术文档 郝伟 介绍如何将过长且格式类似的switch语句进行大幅简化。
201031 网关接入四种情况说明 设计文档 郝伟 介绍网关在接入时的四种情况。
201032 GaspBerry嵌入式开发板测试报告 测试报告 郝伟 对GaspBerry嵌入式开发板进行简单的功能和性能测试。
201033 公司服务器数据备份管理办法 项目管理 郝伟 初步规定了一些数据备份管理办法。
201034 Git版本控制模型 项目管理 郝伟 定义了Git版本控制的方法。
201035 IP地址伪装设计 技术文档 郝伟 设计了一种用于将IP地址伪装成MD5的算法。

1.5 其他

2 主要问题与解决思路

2.1 研究方向

主要问题:方向是过于分散
改进计划:根据公司2021发展方向,精选几个方向进行主要钻研。

2.2 产品赋能

主要问题:与产品的结合程度不够高;
改进计划:所以以后要多去北京公司与马维士、李岩、刘加勇等人定期沟通,及时了解产品进展问题,及时将研究进展落实至产品中。

2.3 方案设计

主要问题:在宏观层面给出设计以后,精细化程度有待提高,
改进计划:通过与项目管理人员沟通,对任务和安排进一步细化,进一步提高质量控制水平

2.4 员工培训

主要问题:分享不足
改进计划:每月至少1场技术分享、经验分享和方法分享报告,以提高员工的技能水平。

2.5 沟通

主要问题:沟通程度不够充分
改进计划:从以下三方面的提高沟通效果

3 个人成长记录

3.1 人工智能理论研究基本入门

人工智能是非常广泛的一个领域,其理论研究具有三个难点:

所以自2019年底至今,经过一年的努力,基本达到了人工智能入门的程序,在自然语言处理、知识图谱和机器学习等方面,都有了一定的认识水平。

3.2 工程技术能力显著提高

通过对F项目、灵洞和灵刃项目的核心模块的参与,显著地提高了工程技术能力,同时反过来,工程上的应用又让理论上的理解得到更加深化推进。

3.3 人员沟通能力有效提高

从子公司成立开始,本人与其他人沟通大大增加了,如整个合肥团队的组建过程,F项目的进展过程,在公司的管理等,从过去的纯学术转为一定的管理者的角色,所以与人的沟通能力得到了一定的提高。

3.3 管理能力进一步提高

通过F项目的历练,管理能力得到了进一步提高,主要包括:

4 2021年发展规划

4.1 指导思想

  1. 加强与北京团队的沟通,增加现场沟通次数,并且每次来京前都有明确的工作目标;
  2. 研究以工程为导向,与马维士团队有清晰的任务分工,明确可量化的阶段性成果;
  3. 未来的研究方向以三个产品的技术赋能与项目落地为主要目标;
  4. 定期给员工进行技术培训和项目总结;
  5. 研究过程中尽量使用真实数据作为测试数据;
  6. 研究成果输出至工程是完全的黑盒模式,并辅助以文档说明和使用培训。

4.2 技术研究路线

4.2.1 自然语言处理与知识图谱

具体包括以下三个方面内容:

4.2.2 基于机器学习的智能化渗透

4.2.3 其他安全相关技术研究

4.3 其他

更多请参考本人2021年发展规划

5 关于从理论设计到工程落地的经验分享

以下内容都是在2020年几个项目中收获的。

5.1 主要难点

  1. 理论到工程应用绝对不可能一蹴而就
    从理论设计至工程应用,是这样的一定是一个困难的不断优化和改进的过程。
  2. 理论到实践的特殊性需要解决
    理论代表一般性解决方案设计问题;实践代表具体应用根据不同的业务场景具有各种特殊性。研究人员给出方案,而工程人员进行代码实现,但是实际上两者之间有一道明显的沟,难以解决。所以对于具体问题中的特殊性,就需要有人去解决。
  3. 踩坑的过程不可避免
    理论至实践的过程中存在很多坑,所以需要有一个摸索和排坑的过程。也就是说理论可以指向方向,但是在这个方向由于问题的特殊性造成的问题属于中间地带需要解决。
  4. 没有走过的路就没有捷径
    除非是有先人的经验,否则不存在所谓的捷径,如果有,那么一定是先暂时性的实现了一些功能,然后把要踩的坑补上。
  5. 2-8理论
    在项目初期可能用20%的时间可以完成了80%的功能,但是最后20%的功能往往需要80%的时间。

5.2 落地流程

根据以上的描述,理论到实现的过程是一个循序渐进不断优化的迭代过程。所以模型要不断打磨和优化,应该是这样的过程:

  1. 使用方给出需求设计方进行理解;
  2. 理论上设计模型+工程上代码实现
  3. 应用环节使用并发现问题
  4. 反馈给模型设计者
  5. 分析问题并对模型进行优化
  6. 工程上根据优化的模型进行代码改进
  7. 一切正常满足需求任务完成,否则回到第3步。

可以使用以下流程图来表示

graph LR S1[收到问题] S2[需求理解与分析] S3[方案设计与改进] S4[工程实现] S5[实践验证] S6[问题反馈] CK(满足要求) R[6.完成] S1 ==> S2 ==> S3 ==> S4 ==> S5 ==> CK ==是==> R CK ==否==> S6 ==n次迭代==> S3

根据不同的问题,n的值大小不同,比如有时候运气好,1次就成功了,也有极端的安全比如爱迪生在尝试了超过六千多次的实验后,终于发现了钨丝可以作为电灯材料。当然,不需要这么多次,利用计算机,只需要一定的时间编写了合适的算法,瞬间就可以进行千百万次的模拟计算,大大加快了这一过程。

5.3 人员责任划分

5.4 注意事项

根据5.2的模型,提出以下建议:

  1. 研究人员多与开发人中沟通,及时了解执行情况;
  2. 开发人员能够及时准确详实地反馈项目开发中的实际问题;
  3. 考虑到问题的特殊性,方案的推进一定要结合具体的实际情况;
  4. 无论是设计还是技术难点都要充分沟通把要点讲清楚。

沈总建议:
1、多来北京与团队共同合作,来前务必明确工作任务;
2、要有非常明确的分工,尤其是项目的阶段性成果;
3、未来的研究方向一定要三个产品的落地为目标;
4、定期培训总结;
5、只使用真实数据测试;

加勇建议:
1、技术输出实现完全黑盒模式+文档说明+培训;

6 总结

2020开局总体良好,在各方面基本实现0-1。2021继续努力,实现1-n的转变。

其他

关于合肥子公司名称

官方名称

安徽华云网安信息技术有限公司,常用名称:合肥研发中心,华云安子公司

主要职能

课题研究、技术调研、算法工程落地、实验验证等

组织架构

graph TD HYA[北京华云安信息技术有限公司]==>A A[安徽华云网安信息技术有限公司 = 合肥研发中心] B[郝伟 智能网络安全研究院] B1[算法工程师1名] B2[开发人员2名] B3[实习生2名] C[刘加瑞 F项目线] D[陈勇 XX线] A --> B B --> B1 B --> B2 B --> B3 A ==> C A ==>D

其中

沈总建议:
1、人员50%,薪资200%,再招3人的团队;
2、人才精英策略,杰出的博士和硕士研究生;