This commit is contained in:
yinkanglong
2020-09-10 15:55:41 +08:00
26 changed files with 1148 additions and 0 deletions

59
C++/CMake.md Normal file
View File

@@ -0,0 +1,59 @@
## Cmake的基本配置
### Cmake最低版本号要求
cmake_minimum_reqired(VERSION 2.8)
### 项目信息
project(Demo1)
### 指定生成目标
add_executable(Demo main.cc a.cc b.cc)
### 使用mmm变量保存
aux_source_directory(. mmm)
add_executable(Demo ${mmm})
### 添加子文件
add_subdirectory(math)
## Cmake添加静态链接库
```
CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
#指定项目名称
PROJECT(HELLO)
#将hello.cpp 赋值给SOURCE 变量
SET(SOURCE ${PROJECT_SOURCE_DIR}/src/hello.cpp)
#指定头文件目录
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
#指定链接库文件目录
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)
#将hello.cpp生成可执行文件hello
ADD_EXECUTABLE(hello ${SOURCE})
#指定hello 链接库myprint
TARGET_LINK_LIBRARIES(hello myprint)
```
## Cmake使用动态链接库
```
#指定CMake编译最低要求版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
#给项目命名
PROJECT(MYPRINT)
#收集c/c++文件并赋值给变量SRC_LIST_CPP ${PROJECT_SOURCE_DIR}代表区当前项目录
FILE(GLOB SRC_LIST_CPP ${PROJECT_SOURCE_DIR}/src/*.cpp)
FILE(GLOB SRC_LIST_C ${PROJECT_SOURCE_DIR}/src/*.c)
#指定头文件目录
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
#指定生成库文件的目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#去变量SRC_LIST_CPP 与SRC_LIST_C 指定生成libmyprint 动态库 默认生成静态库 SHARED指定生成库类型为动态库
ADD_LIBRARY(myprint SHARED ${SRC_LIST_CPP} ${SRC_LIST_C})
```
设置变量set file aux_source_directory
指定目录include_directories link_directories
生成文件 add_executable add_library
链接库 target_link_libraries

View File

@@ -0,0 +1,25 @@
## 研究方向
* 情报威胁----定义系统的应用场景,包括输入输出。
* 联邦学习----定义系统的算法,包括各种处理细节。
-------------------------
## 总体规划
* 第一阶段:通过情报威胁相关论文和资料,定义应用场景(由蒋师兄完成)
* 第二阶段:学习统计学、机器学习和联邦学习的基础知识、论文和资料
* 第三阶段:复现联邦学习论文,搭建联邦学习的框架,实现机器学习过程。
* 第四阶段:对联邦学习框架的细节进行研究,改善应用场景下的联邦学习过程。例如:提升安全性;增强分布式计算能力等。
----------------------------
## 技术范式
WEB服务端//Django
联邦学习系统//python、分布式机器学习模型
威胁情报数据库//mysql数据库nosql数据库

View File

@@ -0,0 +1,100 @@
## 时间安排
上午:完成供应链金融的调查报告
下午:阅读完成 已导入:威胁情报相关的内容
晚上:阅读完成 已导入:联邦学习相关内容
## 供应链金融调查报告
### 场景描述
银行围绕核心企业,管理上下游中小企业的资金流和物流,并把单个企业的不可控风险转变为供应链企业整体的可控风险,通过立体获取各类信息,将风险控制在最低的金融服务。
供应链金融Supply Chain FinanceSCF是商业银行信贷业务的一个专业领域银行层面也是企业尤其是中小企业的一种融资渠道企业层面
* 产业链运营能力:供应链金融以产业供应链运营管理为基础,产业供应链运营管理水平高低、现有产业供应链数字化程度高低、未来数字化的难易程度和成本的高低都会对该产业的供应链金融产生重要影响,是供应链金融发展的基础环境。
* 广泛的金融服务:供应链金融的目的旨在优化整个产业的现金流,让利益各方以较低的成本实现更高效的生产运营,因此,供应链金融不仅仅是目前我们在实务中最常见的融资借贷服务,还应该包括更广义的金融服务和服务组合。
* 对产业链上的单位诉求进行分析。金融活动的开展是针对产业供应链的具体业务进行的,不同产业不同环节的具体业务以及不同类型的参与主体都会对金融服务产生不同的痛点和价值诉求。
优势:提升产业链整体的竞争力。整个产业链场景的数字化,能够应用人工智能等新的科技手段。
### 可行性
* 从科研的角度来说:研究集中在金融领域。整体上,集中在金融模式的研究比较多。细节上可能会用到网络安全领域的基础知识,但是整个大型软件服务的开发,与科研项目结合不紧密。主要研究集中在金融模式的研究,很少有计算机与网络领域的研究。大部分论文都是金融模型。
* 从工作量的角度来说:需要专业的开发公司,我们更擅长小型科研验证软件的开发,不具备开发大型企业级软件的能力,包括市场调研、企业对接。
* 企业级应用开发javaEE javaSpring。主要是业务逻辑的开发。但需要涉及到企业的上中下游需要开发一套核心系统和面向多个应用方的子系统。如果以实际应用为目标可能需要10~15人的开发团队半年以上的开发。企业级开发逻辑复杂需要考虑实际应用中的各种问题需要金融领域的人员给出详细的业务流程需要专业的系统设计和反复的技术验证。工作量庞大需要专门的开发团队和公司需要进行市场调研与主要的服务公司进行接口对接。
* 供应链过长:对供应链上下游多个单位的需求分析与交流,可能涉及大量的工作。定义每一个环节的软件应用场景和软件需求。原材料生产商、供应商、核心企业及其分公司、经销商、终端用户。涉及到采购、研发、制造、仓储、营销等各个环节。
* 供应链整合能力:由于供应链金融平台需要为所有产业链成员提供信息和集成服务,因此需要了解产业链成员的业务结构、业务特征、业务流程和业务风险,包括但不限于整个供应链的技术研发、物资采购、产品生产、分销物流、各类服务的分布状况、相互之间的关联和联动特点,从而进一步掌握具体业务环节的资金流动特性,各利益主体的诉求和痛点。这是帮助各类产业链成员相关业务有效数字化的前提。
* 时间成本和金钱成本过高。首先是否将关键业务节点信息真实有效的反应到了平台数据层面;其次实现这一数字化的成本,包括时间成本和金钱成本是否可以控制在经济可行的范围内。必须依托与专业公司,这不仅仅是软件的开发,更是整个行业的整合,可能涉及到市场经营部门、开发部门等多个部门的联动。
* 单点提升可行性。我们可以在现有的供应链金融平台上,提出自己的改进措施,提升网络安全防御能力,或者对数字化内容进行智能化分析。
* 解决方案设计能力。首先与平台的场景解构能力相关,深入理解产业供应链业务、流程和资金流动特点;再者,这需要平台本身或者能够整合的资源方,具备丰富的金融服务产品体系,才能为企业客户提供多样化选择的可能性。
### 一个架构
![](供应链金融.jpg)
### 可行性报告内容
* 目录 1
* 第1章 项目总论 6
* §1.1 项目背景 6
* §1.2 可行性研究结论 7
* §1.3 主要技术经济指标表 9
* §1.4 存在问题及建议 9
* 第2章 项目背景和发展概况 10
* §2.1 项目提出的背景 10
* §2.2 项目发展概况 10
* §2.3 投资的必要性 11
* 第3章 市场分析与建设规模 12
* §3.1 市场调查 12
* §3.2 市场预测 13
* §3.3 市场推销战略 14
* §3.4 产品方案和建设规模 15
* §3.5 产品销售收入预测 16
* 第4章 建设条件与厂址选择 17
* §4.1 资源和原材料 17
* §4.2 建设地区的选择 18
* §4.3 厂址选择 20
* 第5章 工厂技术方案 22
* §5.1 项目组成 22
* §5.2 生产技术方案 22
* §5.3 总平面布置和运输 24
* §5.4 土建工程 25
* §5.5 其他工程 26
* 第6章 环境保护与劳动安全 27
* §6.1 建设地区的环境现状 27
* §6.2 项目主要污染源和污染物 28
* §6.3 项目拟采用的环境保护标准 28
* §6.4 治理环境的方案 29
* §6.5 环境监测制度的建议 29
* §6.6 环境保护投资估算 29
* §6.7 环境影响评论结论 29
* §6.8 劳动保护与安全卫生 29
* 第7章 企业组织和劳动定员 31
* §7.1 企业组织 31
* §7.2 劳动定员和人员培训 31
* 第8章 项目实施进度安排 33
* §8.1 项目实施的各阶段 33
* §8.2 项目实施进度表 35
* §8.3 项目实施费用 36
* 第9章 投资估算与资金筹措 37
* §9.1 项目总投资估算 37
* §9.2 资金筹措 39
* §9.3 投资使用计划 39
* 第10章 财务与敏感性分析 41
* §10.1 生产成本和销售收入估算 41
* §10.2 财务评价 42
* §10.3 国民经济评价 42
* §10.4 不确定性分析 42
* §10.5 社会效益和社会影响分析 43
* 第11章 可行性研究结论与建议 44
* §11.1 结论与建议 44
* 第12章 财务报表 45
* 第13章 附件 47

View File

@@ -0,0 +1,44 @@
当前的主要任务:
现在处在研究的第一和第二阶段。关于第一阶段联邦学习的应用场景,主要由蒋师兄完成。第二阶段,学习联邦学习关联的基础知识,为第三阶段机器学习算法的实现和框架的搭建做好准备。
看完相关的文章和博客。然后开始学习用两周时间学习完成基础知识。在学习基础知识的时候使用tensorflow框架进行算法的运行。
--------------
学习路线
### Python系列
python3
numpy-scipy-matplotlib
### 机器学习系列(视频教程)
> 需要了解机器学习的各种工具需要的进行补充。使用python3进行编程实践。这一部分是最关键的需要按照知乎的方法进行调整学习。入门课程->模型算法->编程实践
1. 吴恩达的课程一看。跟着做做笔记。
2. 统计学习方法一看。3Blue1Brown的视频看一看。跟着做做笔记。
3. 《机器学习西瓜书》一看。跟着做做笔记。林轩田《机器学习基石》《机器学习技法》。李宏毅的《机器学习视频教程》。《机器学习实战》。《机器学习100天》
4. tensorflow教程一看实现一遍之前的算法。
工具
* sklearn
* tensorflow
### 深度学习系列
吴恩达的神经网络五套课程看完。
各种神经网络。
### 联邦学习系列
> 尝试搭建小型的联邦学习框架。寻找网络教程,完成这一块,还有很多书。
tensorflow
fate
### 相关资料说明
* 吴恩达的机器学习
* 吴恩达的深度学习五套课程
* 西瓜书
### 选择
框架选择tensorflow和fate
研究方向:数据挖掘和文本处理(自然语言处理)

View File

@@ -0,0 +1,19 @@
# 桌面应用程序开发
## 技术范式
> 1. 选择合适的技术范式。√
> 2. 对技术细节进行学习了解
> 3. 寻找开源的模板代码搭建框架
> 4. 根据任务需求进行快速开发
### C++ QT开发
### Python PyQT开发
卡掉因为是C项目用python的qt反而多此一举。
### JAVA SWING开发
理由同上。可以用C++,与原生的代码结合较好。
### nodeJS Electron桌面开发
easy-window小程序。
> 显然我觉得HTML桌面应用程序开发是最简单的能够实现极其好看的界面。

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

View File

@@ -0,0 +1,329 @@
# 文献整理——漏洞利用
> 一周后主动与夏老师交流,对当前的研究方向的困惑,以及存在的问题,是否修改当前的研究方向。唉,感觉,过去的半年,从来没有把这种研究放在心上,导致自己现在已经落后太多了,可能关键就在与研究方向的确定。
> 其实想跟夏老师说明,自己并不想做漏洞利用,漏洞信息挖掘?数据采集?方面的还可以。群体智能与态势感知。对方向的迷惑才是最难的。
> 基于群体智能的漏洞挖掘技术,能否成为一个很好的切入点呢?
读懂论文-----技术实现-----补充基础知识
## 1 Linux 内核漏洞利用生成关键技术研究
### 关键名词(不太理解的基础知识)
* SMAP超级用户模式访问保护
* 栈迁移
* 汇编指令mov、pop、let
* 程序编译执行的内存空间bss、data、code、heap、stack
* nmap、nessus。网络扫描工具和评估系统漏洞的工具
* gcc编译器、gdb调试器以及nasm汇编器
* 栈金丝雀
* 模糊测试
* 符号执行
* 模型检测
* 污点分析
### 背景
* 漏洞 (vulnerability)是可以用来违反系统安全策略的缺陷或错误。
* 产生的原因C/C++ 缺乏安全性检查->越界指针、悬空指针->内存破坏漏洞
* 常见的漏洞类型:**栈缓冲区溢出 (stackbufferoverflow)、类型混淆 (typeconfusion)、内存释放后使用 (use-after-free)、空指针引用(nullpointerdereference)、使用未初始化变量(use-before-initialization)、内存信息泄露(information disclosure) 等类型。**
* 分类:用户态程序漏洞利用、操作系统内核漏洞利用
* 作用:内核漏洞安全风险评估;提升系统安全防御能力;完善漏洞利用的理论研究。
### 内核漏洞利用生成技术
* 奇异状态机:内存安全违例操作-> 正常执行状态->异常状态。
* 内核漏洞利用定义:在基于奇异状态 机的漏洞利用模型下,漏洞利用就是在异常状态空间中,寻找一条路径以实现特 定计算目标的过程。
* 内核漏洞利用的过程:
* 构造内核漏洞触发验证程序。创建可执行程序发起一系列系统调用并触发目标程序——Linux 内核中的漏洞
* 寻找漏洞利用原语。常见的漏洞利用原语种类包括**控制流劫持、内存非法写和信息泄露**等漏洞利用原语。触发内核漏洞后执行的程序。漏洞利用原语用于描述漏洞利用所需 的关键程序状态转换,因此漏洞利用原语有时也被简称为“可利用”(exploitable) 程序状态。从漏洞触发状态到漏洞可利用状态。
* 根据漏洞利用原语,生成漏洞利用。漏洞利用原语+漏洞触发的上下文(防御机制等)生成具体的漏洞利用方法。
* 面临的挑战:
* 缺乏内核漏洞利用生成所需的 “原料”— 漏洞利用原语。
* 缺乏漏洞利用原语进行“加工”的技术—即根据漏洞利用原语生成实际可用内核漏洞利用的技术(利用原语评估)。
* 现有内核漏洞利用的局限性
* 缺乏灵活变化漏洞触发上下文的能力
* 缺乏内核漏洞利用原语高效评估方法
* 突破绕过主流内核利用缓解机制的不足。
### 本文主要工作
![](/文献阅读/img/内核漏洞利用.jpg)
* 基于模糊测试的内核UAF漏洞触发方式多样化。
* 基于内核部分符号执行的利用原语发现与评估技术。将控制流劫持、内存非法写和内存泄露等利用原语定义为符号 执行需探索的特殊程序状态;
* 内核控制流劫持原语评估与缓解绕过技术。绕过主流Linux内核利用缓解机制能力不足、构建利用链 困难以及利用路径陷阱导致的内核崩溃等问题
### 研究现状
漏洞挖掘技术
* 静态漏洞挖掘技术
* 符号执行
* 模糊测试
* 内核模糊测试
* 多程序分析技术的融合(动静结合?)
常见内存破坏漏洞
* 堆栈溢出漏洞
* 释放重用漏洞
* 类型混淆漏洞
常见漏洞利用原语
* 控制流劫持。可以分为代码注入攻击和代码重用攻击。
* 数据写入
* 信息泄露
常见控制流劫持防御机制
* 控制流完整性检查
* 数据流完整性检查(地址空间随机化也是为了保护数据流完整性)
操作系统内核漏洞
* rootkit通过内核补丁获得内核权限。
* bootkit修改引导扇区。
* 内存破坏漏洞
自动化生成技术
* SEMFuZZ
### 基于模糊测试的内核UAF漏洞触发多样化
* 悬空指针出现与解引用之间形成时间窗口
* 进行堆喷
* 修改漏洞触发验证程序
3.2 给出了UAF漏洞触发验证程序的原理3.2.1给出了一个UAF漏洞实例程序。3.2.2指出了UAF漏洞过程中存在的问题和解决的办法。
### UAF漏洞触发路径
* op1 申请一个对象
* op2 指针指向对象
* op3 悬空指针生成
* op4 对悬空指针解引用
* op5 其他对悬空指针解引用
相关定义:
* UAF漏洞触发上下文op1~op4的四元组
* UAF漏洞触发的中间点op3和op4之间的过渡期。
相关现象:
* 内核对象有多重访问方式
* op4带来内核崩溃
* op4之后悬空指针消失
### 第四章: 基于内核部分符号执行的利用原语与评估技术
* 内存破坏检测器,程序插桩和动态翻译,寻找违反程序安全规则的状态。
* 漏洞 PoC 并使用 QEMU trace 插件或 intel-PT(processor tracing) 硬件特性等工具 记录 PoC 执行的路径,并采用符号跟踪技术 (symbolic tracing)1对路径进行模拟 重放并收集路径上的约束pathconstraints,又称pathpredicates使用启发式规 则发现路径重放过程中的违例程序状态。
具体介绍:利用基于 UAF 漏洞触发中间点的模糊测试技术获得 多样化的内核漏洞触发上下文,然后利用部分符号执行来探索不同漏洞触发上 下文中的漏洞利用原语,并进一步基于漏洞利用原语生成漏洞利用。
* 首先Fuze可以帮助安全分析人员自 动识别 UAF 漏洞利用相关的关键系统调用。
* 其次,它可以为安全分析人员自动 计算他需要堆喷射到漏洞对象区域的数据。
* 第三,它有助于安全分析人员查明需 要执行堆喷射和进行漏洞利用的时间范围。
* 最后,它为安全分析人员提供了绕过 部分内核利用缓解机制的能力。
### 实现方案
* QUEM虚拟系统+GDB调试获得执行状态快照
* 在符号执行过程中从漏洞的角度对UAF漏洞和堆溢出漏洞进行符号化假设即将UAF漏洞和堆溢出漏洞加入符号化过程。
* 漏洞利用原语发现:控制流劫持原语、内存非法写原语、内核内存泄露。
* 符号地址处理。绕过漏洞利用缓解机制。
* 利用原语评估。ret2usr,pivot2usr,cr4寄存器篡改
### 第五章:内核控制流劫持原语评估与缓解机制绕过技术
* 自动漏洞利用技术的工作流
* 利用原语发现
* 利用原语评估
* 漏洞利用存在的挑战
* 安全防御机制:编译器插桩、敏感数据保护、虚拟化程序管理、控制流完整性。
* 利用漏洞陷阱:意外终止利用。额外的约束条件、绕过陷阱约束。
* 不合适的漏洞利用原语。
* KEPLER单发漏洞利用链。图灵完备性。
* 增强控制流劫持原语。
* 绕过利用路径陷阱。
* 突破主流内核安全防御机制。
* KEPLER由五个工具函数代码片段组成利用链
* 输入输出通道函数
* 绽放工具函数
* 桥接工具函数
* KEPLER相关工具
* IDA SDK
* KVM QEMU
* angr
### 威胁模型与假设
* 内核安全防御机制的设定。SMEP、SMAP、KPTI、KASLR内核空间地址随机化金丝雀
* 可用的漏洞利用原语:漏洞触发验证程序、控制流劫持原语、受限的内存泄露原语
### 实例
* 内核漏洞触发验证程序和漏洞利用原语
### 通过实例中的内核漏洞触发验证程序实现漏洞利用面临的挑战
* Linux内核安全防御机制。很多原有的攻击方法无法生效。ret2user/ret2dir/cr4寄存器劫持
* 利用路径陷阱
### KEPLER设计概览
* 给出了工作模式图
* 设计需求突破安全防御机制、magic gadget、ROP漏洞、自动化漏洞生成
### KEPLER高层设计
* Kepler通过单发漏洞 利用链“single-shot”exploit将一个基于函数指针篡改的控制流劫持原语 CFHP 变成了基于栈溢出的控制流劫持原语 CFHP' 。
### KEPLER设计
原理
* 利用内核I/O函数打破了用户内核内存空间的隔离。
* 灵活复用内核中的原生代码,可以将单个控制流劫 持原语转化为栈溢出,并发起 ROP 攻击。
具体步骤
* 首先用copy_to_user()函数将内核栈的金丝 雀值拷贝到用户态然后用copy_from_user()函数将攻击载荷拷贝到内核栈上 并构造栈溢出。
* 可利用内核中大量 存在的绽放工具函数bloominggadget来增强对通用寄存器的控制并利用桥接工具函数bridging gadget来防止原漏洞利用路径上潜在的内核崩溃从而 提升利用链的稳定性。
栈泄露工具(为了泄露栈金丝雀)
* copy_to_user通过将参数原地址设置成内核的栈帧建立内核空间迁移到用户空间的信道。从而将内核栈金丝雀泄漏到用户空间
辅助函数()
* 执行一套寻找辅助函数的标准。
### KEPLER部分5.5的主要内容
* 构建栈溢出
* 栈溢出工具代码片段
* 快速返回路径
* 触发分页错误
* 泄露栈金丝雀
* 栈泄露工具代码片段
* 辅助函数
* 单发漏洞利用技术
* 绽放工具函数:获得更多的寄存器
* 桥接工具函数:获得更多的控制流劫持原语
* 移位工具函数:
通过构建FUZZ与KEPLER两个系统实现了漏洞利用。作者显然是网络安全方面非常厉害的博士生在各种比赛中有所表现还有很多论文。而且这里的漏洞利用对我来说是在网络安全中比较上层的部分知识如果自己真的要走漏洞利用的方向。就必须从基础的linux开始学习。
这对我来说,可能是非常巨大的挑战。
### 需要学习的内容
----
基础内容
* Linux系统编程开发linux的C、C++应用)
* Linux系统教程包括系统的工作原理
* Linux内核源代码github上的公开源码还有很多源码阅读的博客
* 汇编语言学习如何在Linux上运行汇编程序
----
安全相关的内容
* 网络安全技术
* 网络渗透技术
* kali linux工具使用
* 漏洞挖掘技术
----
相关论文
* 漏洞挖掘的论文(如何发现漏洞)
* 漏洞利用的论文(如何利用漏洞)
## 2 相关技术和名词了解
-------------
内核保护机制
### SMEP、SMAP
SMAP(Supervisor Mode Access Prevention管理模式访问保护)和SMEP(Supervisor Mode Execution Prevention管理模式执行保护)。禁止内核访问用户空间的数据和禁止内核执行用户空间的代码。arm里面叫PXN(Privilege Execute Never)和PAN(Privileged Access Never)
### 栈金丝雀
金丝雀是通过汇编来实现的。例如,由于 GCC 的 栈保护器 选项的原因使金丝雀能被用于任何可能有漏洞的函数上。函数序言加载一个魔法值到金丝雀的位置,并且在函数结语时确保这个值完好无损。如果这个值发生了变化,那就表示发生了一个缓冲区溢出(或者 bug这时程序通过 __stack_chk_fail 被终止运行。由于金丝雀处于栈的关键位置上,它使得栈缓冲区溢出的漏洞挖掘变得非常困难。
![](img/栈金丝雀.png)
### 数据流完整性检查
### 控制流完整性检查
--------------
漏洞利用方法
### ret2usr
在没有SMAP/SMEP的情况下把内核指针重定向到用户空间的漏洞利用方式被称为ret2usr。
### ret2dir
physmap是内核管理的一块非常大的连续的虚拟内存空间为了提高效率该空间地址和RAM地址直接映射。RAM相对physmap要小得多导致了任何一个RAM地址都可以在physmap中找到其对应的虚拟内存地址。另一方面我们知道用户空间的虚拟内存也会映射到RAM。这就存在两个虚拟内存地址(一个在physmap地址一个在用户空间地址)映射到同一个RAM地址的情况。也就是说我们在用户空间里创建的数据代码很有可能映射到physmap空间。基于这个理论在用户空间用mmap()把提权代码映射到内存然后再在physmap里找到其对应的副本修改EIP跳到副本执行就可以了。因为physmap本身就是在内核空间里所以SMAP/SMEP都不会发挥作用。这种漏洞利用方式叫ret2dir。
### pivot2usr
假设在执行指令call ,→ rax发现一个控制流劫持原语为了发起 pivot2usr 攻击,首先,他需要将 控制流程劫持到到栈迁移工具代码片段xchg eaxesp; ret。然后他需要 通过将寄存器 eax 的值设置为用户空间中的地址来将栈转移 (stack pivot) 到用 户空间伪造的栈。由于攻击者可以完全控制位于用户态的伪栈内容,因此他可以 使用伪栈以及 Linux 内核中的工具代码片段准备 ROP 攻击载荷。这种漏洞利用 方法不会直接执行驻留在用户空间中的指令,因此可以在不触发 SMEP保护的情 况下成功实现任意代码执行
### 控制流劫持
代码注入攻击和代码重用攻击:传统代码注入攻击利用目标程序的输入信道将实现恶意功能的 Shellcode 注 入程序内存空间中并通过控制流劫持漏洞执行。通过代码重用攻击,既避免了注入攻击代码又可保证攻击代码的可执行 性。
### 堆喷射
的数据喷射到内核中并占据漏洞对象释放前所处位置,从而相应地操 纵其内容。通过slidecode与shellcode配合实现执行用户代码的目的。
### ROP返回式导向编程
ROP 通过将一系列以返回 (ret) 指令结尾的代码片段 连缀起来执行任意代码。ROP的全称为Return-oriented programming返回导向编程这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御比如内存不可执行和代码签名等。栈溢出的控制点是ret处那么ROP的核心思想就是利用以ret结尾的指令序列把栈中的应该返回EIP的地址更改成我们需要的值从而控制程序的执行流程。
---------------
程序分析技术(漏洞挖掘方法)
### 符号执行
不执行程序使用符号值来代替具体变量,来模拟每个路径来产生每一个执行的可能性,将执行语句的结果整合成若干条数学表达式。
对某结果的数学表达式进行求解,就能获得到达该结果的路径。
将产生漏洞的条件设置为程序执行的结果,降低分析程序的难度。
### 污点分析
污点分析可以抽象成一个三元组<sources,sinks,sanitizers>的形式,其中,source 即污点源,代表直接引入不受信任的数据或者机密数据到系统中;sink即污点汇聚点,代表直接产生安全敏感操作(违反数据完整性)或者泄露隐私数据到外界(违反数据保密性);sanitizer即无害处理,代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害。
污点分析就是分析程序中由污点源引入的数据是否没有经过无害处理,而直接传播到污点汇聚点。如果经过无害化处理,没有到达污点汇聚点,说明系统是信息流安全的;否则,说明系统产生了隐私数据泄露或危险数据操作等安全问题。
### 模糊测试
模糊测试fuzzing技术通过不断随机生成输入并检测程序错误检测漏洞 。模糊测试是工业界最流行的漏洞发现技术,但模糊测试技术存在着路径覆 盖率低,难以穿透复杂校验等特点。对于模糊测试的研究围绕主要从提升测试 用例质量和提高检测漏洞能力方面展开。
### 程序插桩
程序插桩,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。
--------------
相关工具
### 漏洞检测工具、渗透测试工具、漏洞扫描工具
* 在分析技术集成与 平台建设方面,出现了 BAP[89]、BitBlaze[90]、angr[72]radare2[91] 等集成 了各类分析技术的二进制分析平台。
* NessusNessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件。
* nmapnmap 也是不少黑客爱用的工具 黑客会利用nmap来搜集目标电脑的网络设定从而计划攻击的方法。
* Veracode:Veracode提供一个基于云的应用程序安全测试平台。无需购买硬件无需安装软件使用客户马上就可以开始测试和补救应用程序另外Veracode提供自动化的静态和动态应用程序安全测试软件和补救服务。
* CAIN在口令破解上很有一套技术
* appscanappscan是IBM公司开发的用于扫描web应用的基础架构也是安全渗透行业扛把子的产品
* NiktoNikto是一款开源的GPL网页服务器扫描器它可以对网页服务器进行全面的多种扫描
* parosproxyparosproxy这是一个对Web应用程序的漏洞进行评估的代理程序
* WebScarabWebScarab记录它检测到的会话内容使用者可以通过多种形式来查看记录
* Webinspect惠普公司的安全渗透产品运行起来占用大量内存小家碧玉的就慎用了
* WhiskerWhisker是一款基于libwhisker的扫描器但是现在大家都趋向于使用Nikto它也是基于libwhisker的。
* BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具它采用自动测试和半自动测试的方式;
* Wikto:Wikto是一款基于C#编写的Web漏洞扫描工具;
* Acunetix Web Vulnerability Scanner简称AWVS是一款知名的网络漏洞扫描工具它通过网络爬虫测试你的网站安全检测流行安全漏洞
* N-StealthN-Stealth 是一款商业级的Web服务器安全扫描程序。
## 3 环境构建
...........

View File

@@ -0,0 +1,92 @@
# 文献整理——威胁情报共享课题说明
> 用来描述自己对问题的理解
## 1 威胁情报场景描述
### 应用场景
> 这也是实现基于威胁情报共享的协同防御实现方案。
* 美国——自动指示情报共享系统。
* 银联:虚假注册、批量绑卡、恶意刷单刷券等各种恶意行为会影响企业相关产品的日常运营和营销推广,而传统金融行业自身缺乏与互联网相关的安全数据,需要高质量的情报数据支持相关的风险防控工作。银联是典型多职场、多组织协同防御的结构,拥有较多安防设备且对攻击敏感,会有海量的告警信息,如何从海量告警信息中获取真实的攻击行为是一个大的挑战。同时来自外部的威胁情报数据无法完全支撑对于真实攻击的检测、阻断和溯源分析,攻击者对于外围资产实施跳跃式攻击时,也可能导致联动防御困难。
### 存在问题(现实问题)
* 共享与隐秘问题。情报共享的主体,因为安全理由不愿意暴露自身的情报状态。需要对协调共享与隐秘二者的矛盾关系。
* 情报特征描述问题。互联网领域的威胁个体没有固定特征。互联网安全领域面临的问题是我们去处理和应对的不是一个已知的人而是一个可以不断变化的ID。需要通过一条情报刻画一个危险的个体。然后通过机器学习的方式对危险个体进行学习。
* 动态变化问题。网络威胁的来源可以以很快改变和调整它的攻击方向与对象。在数字化形式下,新威胁与可能的攻击向量数不胜数。企业在检测和阻断威胁的有效性和之前相比已经差很多了。如果犯罪分子也可以得到类似我们这种共享威胁情报的话,他们就可以来判断什么样的行为容易被抓住,这样他们就可以及时调整策略。
* 虚假情报问题。攻击者可能伪造虚假情报,混淆情报的可信度,导致情报分析人员对发生的事件作出错误的反映。
### 解决思路(研究点)
* 针对安全性要求。分布式机器学习,分布式神经网络,联邦学习,匿名共享,提高机器学习的效率。
* 人脸识别的相关算法模糊身份认同而不是准确身份认同。行为特征匹配度而非真正的识别。模糊名册不针对身份ID而是匹配行为特征。更像一种行为模式识别威胁狩猎。需要通过一条情报刻画一个危险的个体。然后通过机器学习的方式对危险个体进行学习。输入一个个体的相关情报尽量多的输入器特征信息能够更加准确的判定其危险程度。
* 日志归一的算法(情报共享合并的算法)误报处理的算法。
* 数据传输同态加密技术(防止截获传输数据)
* 数据可信度评估(掺杂虚假的数据)
* 机器学习安全问题,对抗性攻击。数据中毒、模型规避、模型窃取、数据推理攻击。分布式机器学习安全性问题(防止通过机器学习的结果,还原出关键的情报,数据溯源安全问题)
* 刻画同一个个体的情报可能包含的元数据类型相差很多数据结构不一致。是否有一种基于nosql数据的机器学习方案。
* 网络威胁情报的内容包括可疑和恶意活动的详细信息以及元数据,也包含了攻击媒介,使用的方法,可以采取的遏制措施。但即使分享了信誉文件,它不包含任何个人身份信息。
* 通过各项网络特征刻画一个有威胁的情报主体。与人脸识别非常相似。所以可以通过过机器学习进行训练,识别当前的交互个体的威胁程度。给出一个威胁报告,这个报告是预测性的,分析性。这个算法应该具有很高的可靠性,用来识别不怀好意的个体。
* 感觉这个不太像威胁情报共享系统,而是更像威胁个体评估系统。威胁情报共享,应该更加侧重于共享的内容和共享的方式,共享的内容应该全部公开,而不是经过加工处理。这个系统更像是威胁情报共享与评估系统。
### 威胁情报库
* 威胁情报库的数据来源分为三方面,包括**内部情报、专业机构和行业联盟**。内部情报包括传统安全设备的拦截、后台SIEM等**安全分析系统的分析以及业务风控系统**的发现;专业机构会提供所处专业的多源情报,根据每家机构的专业特点进行互补,并在情报冲突时对数据进行研判;**行业联盟的威胁情报共享目前正在研究探索中**。内部情报、专业机构和行业联盟这三方面的数据聚合后,形成本地库,进行处理后,最终将数据结果反馈给最上层的应用层,推送给后台应用、防御设备或者人工调用。在综合考虑威胁情报库需求后,我们对国内相关厂商进行调研测试,最终选择北京微步在线科技有限公司旗下本地威胁情报管理平台作为银联威胁情报库的载体平台。
* 威胁情报库的建立,一方面能够协助我们及时**察觉黑客或恶意攻击者的各类战术、方法、行为模式**,掌握针对**支付场景的最新攻击动向,高效预防和处理各类网络风险安全事件**;另一方面高质量的情报数据能够为**风险防控提供有力支持**,实现对**外部网络异常访问行为的精确识别**。它对于防守方安全风控团队及时掌安全态势并做出正确响应具有重要价值。
### 威胁情报利用
网络威胁情报CTI技术是一种基于证明的安全系统可通过分析和共享与安全相关的数据来主动响应这些高级网络威胁。但是如果攻击者有意将恶意数据注入到系统中则通过创建和传播不正确的安全策略会严重损害CTI系统的性能。
CTI系统的核心是通过共享信息来最大化每个节点的威胁响应能力。这种方法可以对攻击类型和模式攻击者和攻击组进行概要分析从而预测潜在威胁并主动做出响应。网络威胁情报CTI系统是一种威胁分析和信息共享系统用于增进对网络威胁的了解并主动做出反应。CTI系统通过将与威胁相关的数据重新组织和分析为形式化的形式增强了对网络威胁的理解。
## 2 联邦学习
* 联邦学习作为分布式的机器学习范式,可以有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,能从技术上打破数据孤岛,实现AI协作。
## 附录:安全术语解析
### APT攻击
APT攻击即高级可持续威胁攻击,也称为定向威胁攻击,指某组织对特定对象展开的持续有效的攻击活动。这种攻击活动具有极强的隐蔽性和针对性,通常会运用受感染的各种介质、供应链和社会工程学等多种手段实施先进的、持久的且有效的威胁和攻击。
* (1)攻击者:拥有高水平专业知识和丰富资源的敌对方。
* (2)攻击目的:破坏某组织的关键设施,或阻碍某项任务的正常进行
* (3)攻击手段:利用多种攻击方式,通过在目标基础设施上建立并扩展立足点来获取信息。
* (4)攻击过程:在一个很长的时间段内潜伏并反复对目标进行攻击,同时适应安全系统的防御措施,通过保持高水平的交互来达到攻击目的。
主要特点:先进的攻击方法、隐蔽性好、持续性攻击、长期驻留目标系统。
### 女巫攻击(Sybil Attack)
是一种在线网路安全系统威胁,是指个人试图通过创建多个帐户身份、多个节点或电脑坐标从而控制网络。
### 情报共享规范
* CVE、CVSS
* CybOX。
Cyber Observable eXpression (CybOX) 规范定义了一个表征计算机可观察对象与网络动态和实体的方法。可观察对象包括文件HTTP会话X509证书系统配置项等。CybOX 规范提供了一套标准且支持扩展的语法用来描述所有我们可以从计算系统和操作上观察到的内容。在某些情况下可观察的对象可以作为判断威胁的指标比如Windows的RegistryKey。这种可观察对象由于具有某个特定值往往作为判断威胁存在与否的指标。IP地址也是一种可观察的对象通常作为判断恶意企图的指标。
* STIX。
Structured Threat Information eXpression (STIX) 提供了基于标准XML的语法描述威胁情报的细节和威胁内容的方法。STIX支持使用CybOX格式去描述大部分STIX语法本身就能描述的内容当然STIX还支持其他格式。标准化将使安全研究人员交换威胁情报的效率和准确率大大提升大大减少沟通中的误解还能自动化处理某些威胁情报。实践证明STIX规范可以描述威胁情报中多方面的特征包括威胁因素威胁活动安全事故等。它极大程度利用DHS规范来指定各个STIX实体中包含的数据项的格式。
* TAXII。
Trusted Automated eXchange of Indicator Information (TAXII) 提供安全的传输和威胁情报信息的交换。很多文章让人误以为TAXII只能传输TAXII格式的数据但实际上它支持多种格式传输数据。当前的通常做法是用TAXII来传输数据用STIX来作情报描述用CybOX的词汇。
TAXII在标准化服务和信息交换的条款中定义了交换协议可以支持多种共享模型包括hub-and-spokepeer-to-peersubscription。
TAXII在提供了安全传输的同时还无需考虑拓朴结构、信任问题、授权管理等策略留给更高级别的协议和约定去考虑。
* Common Weakness Enumeration (CWE) 定义了通用软件设计与实现的弱点,安全漏洞往往是由这些弱点而来的。
* Common Attack Pattern Enumeration and Classification (CAPEC) 提供了一个与跨事件攻击相似的功能。
* Malware Attribute Enumeration and Characterization (MAEC) 可用于描述恶意软件的信息类似于CVE和漏洞之间的关系。
* Open Vulnerability Assessment Language (OVAL) 为评估漏洞范围和影响提供了一个框架。

View File

@@ -0,0 +1,140 @@
# 文献整理——威胁情报
> 文献阅读中的思考用这种注释的方式给出把。
## 1 李总的报告
### 情报自身的讨论
* 行为模式、行为指纹====>描绘潜在风险对象。黑客幻想。
* 静态情报识别:位置、函数、缓冲区等静态指纹。信息元之间不存在关联关系。
* 动态情报识别:行为日志、操作记录。信息元之间存在关联性,例如先后顺序,操作时间差等。
* 使用情报构件知识库。
### 情报共享方式的讨论
* 威胁情报共享,不是元数据层面的贡献,而是数据应用层面的共享。将共享的等级提升。
* 厂商之间共享数据存在隔阂,但是可以共享检测,在不共享数据的情况下,构建联合检测模型。
* 安全联盟用来防御APT攻击。OCAopen cybersecurity alliance联盟。MAPP微软anquan lianmeng
### 情报利用方向的讨论
* 入侵检测(威胁感知系统)----基于机器学习,综合利用情报处理问题。
* 学习最先进的攻击技术(识别最新攻击行为,用于入侵检测)
* IOC信息用来标识入侵对象。MD5文件等入侵留下的痕迹。预防和识别入侵。
* 将攻击行为与个体建立关联,《美国威胁报告》分析人的行为,追踪网络中国人的虚拟映像。
### 情报利用模型的讨论
* 钻石模型(通用模型,并没有什么特色。)
### 情报输入输出的讨论
* 情报系统的输入、情报分类:动态行为、静态属性
* 情报系统的输出:威胁报告。
> ### 对我来说的主要内容:
> * 情报利用方案。解决准确率问题
> * 分布式解决方案。解决数据共享问题
相关资料
* Yara规则
* GITHUB APT IOCgithub有很多人分享技术
* 火眼、猎鹰
* 思科发布公告称,其 IOS XR 软件 DVMRP 特征 中的一个新0day漏洞 CVE-2020-3566已遭在野利用尚未推出补丁CVSS评分8.6。该漏洞主要影响运营商级和数据中心的路由器。https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-iosxr-dvmrp-memexh-dSmpdvfz
## 2 网络安全之情报浅析
> 应该思考我们的主要工作是什么?
> * 是根据情报生成通过数据处理分析异常数据挖掘漏洞、APT入侵等信息
> * 是实现情报利用?(通过已有的情报对新的情报样本进行分析,分析其危险性,给出其威胁评估)
> * 是实现情报共享?(通过共享系统,将情报在孤立的个体之间传递,提供基于情报的服务)
### 数据与情报
* 数据是一条信息、事实或统计结果数据是用来描述某些事情的。在网络安全领域IP地址或域名是数据。如果没有任何额外的分析来提供上下文它们只是一个事实。
* 当我们收集并关联分析各种数据后,具备了为某种需求提供洞察能力,这时它们便成了情报
> 关于情报利用的周期的理解
> * 当前的情报利用流程:情报生成-->情报传播-->情报利用
> * 我们的情报利用流程:情报生成-->情报利用-->情报传播
### IOC
攻陷指标日志检测发现被攻陷的指标。在系统或网络日志中寻找某类特征数据来发现已被入侵的目标这类特征数据包括与C2服务器或恶意软件下载相关联的IP地址和域名、恶意文件的哈希值以及其他可以表明入侵的基于网络或主机的特征。
### 情报收集方法
* 人工情报:人工搜集的情报
* 信号情报:从电子信号中获取的情报。
* 公开情报
* 图像情报
* 测量与特征情报
* 地理和空间信息情报
> NoSQL非关系型数据库既然不同商家、不同类型的情报的字段存在巨大差异那么是否可以考虑使用非关系型数据库存储情报内容。
### 情报来源
* 数据泄露和事件响应活动中调查收集。
* 蜜罐,虚拟的设备和网络,用来捕获攻击流量。
* 论坛和网站。受限的论坛和聊天室。
* 军事术语。
> 情报关联系统。攻击底特律----黑衣人组织。等等,将所有的情报进行切片,然后使用情报之间的关联来描述情报本身。从而找出关联度最高的的东西,形成一张错综复杂的高纬度关联图。与警方办案的关系图非常相似。然后通过分析图形,确定当前的热点事件,找出线索。
> 受以上启发,突然想做一个连锁记忆的东西。建立连锁记忆知识库。使用百度或者谷歌作为连锁记忆引擎。
### 流程模型
* OODA模型Observe、Orient、Decide、Act。攻防双方遵循的基本决策方法。
* 情报周期模型:方向、收集、处理、分析、传播、反馈。
* 方向:确立情报打算解决的问题
* 收集:收集回答问题所需要的数据。
* 命名:避免对情报的命名冲突
* 处理:对数据进行格式化处理。建立大量数据的索引。
* 拓线:为一条信息提供额外的元数据。
* 过滤:处理掉没有用的数据。
* 优先级:已经收集到的数据需要进行排序。
* 可视化:为了方便认知,需要人员进行可视化。
* 分析:对数据进行特征化处理,分析其含义和影响。
* 传播情报以相关的受益者觉得有用的方式进行共享。果其目标是在技术系统如IDS或防火墙中实施则可能需要符合特定供应商的程序化格式。
* 反馈:对情报的价值进行评估,是否符合问题的方向。对情报做出成功或者失败的判定。
![](img/情报周期.jpg)
> 在文章中认为,通过自动化的方式对文本的操作,属于处理范畴,而不是分析过程。情报应该符合供应方的程序化格式。
### 有质量的情报
情报的质量主要包括:收集来源和分析手段。
* 收集日期:威胁情报具有时效性。
* 收集方法:收集方法越详细越好。
* 上下文:上下文内容有助于分析。
* 消除偏见:分析师带有个人偏见。
### 情报的级别
* 战术情报战术情报的一个例子是与新发现的漏洞利用有关的IOC特征。这些战术级IOC包括执行漏洞扫描探测的IP地址、域名托管的恶意软件漏洞攻击成功后植入以及利用和安装恶意软件过程中生成的各种基于主机的组件。在网络威胁情报CTI这通常包括IOC特征以及观测报告例如高细粒度的TTP描述对手如何部署特定的能力。战术情报使防御者能够直接对威胁作出反应。
* 作业情报在CTI中通常包括行动相关信息和高阶TTP内容。它还可能包括有关指定威胁组织的特点、能力和意图等信息。
* 战略情报在网络威胁情报CTI我们认为它可支持高级管理人员和董事会对风险评估、资源分配和组织战略做出正式决策。这些信息包括态势、威胁企业的动机和分类。比如需要制定新的安全策略或涉及安全架构的变动。
> * TTP说明在APT等 高级威胁 研究的领域,时常可以在各组织发布的 APT 报告中看到一个专业术语 TTP TTP及其中的三要素战术Tactics、技术Techniques和过程Procedures是描述高级威胁组织及其攻击的重要指标。
### 置信级别
* 比如需要制定新的安全策略或涉及安全架构的变动。
* 源可靠性描述的一个常见方法是《FM 2-22.3》美军人工情报收集操作手册中记录的“Admiralty Code”或“NATO System”。这里包括两个维度。首先根据先前的信息来评估源的可靠性范围从A可靠到E不可靠。第二个维度评估信息内容本身的可靠程度从1确认到5不可能
## 3 基于区块链的反Sybil网络威胁情报共享框架
### 场景描述
* 网络威胁情报CTI技术是一种基于证明的安全系统可通过分析和共享与安全相关的数据来主动响应这些高级网络威胁。
* 提出了一种基于区块链的CTI框架提高对数据源和内容的信心并可以快速检测和消除不准确的数据以抵御Sybil攻击。
* 技术背景5G、lot、数据分析技术
* 安全手段:防火墙、入侵检测/防御系统IDS/IPS、安全信息和事件管理SIEM系统

View File

@@ -0,0 +1,261 @@
# 文献整理——联邦学习
## 1 联邦学习——破解智能医疗数据安全隐私难题
### 问题提出(背景)
* 医学领域存在的不可能三角,数据共享与隐私保护冲突。单一组织缺乏足够可用样本用于人工智能算法的训练。
* 法律对隐私保护的据他障碍。
* HIPAA
* GDPR
* CCPA
* 中华人民共和国网络安全法等
* 国内外公司数据泄露事件频发,受到处罚。
### 智能医疗数据训练平台
![](img/智能医疗数据训练平台.jpg)
可以借鉴这个平台的架构
### 联邦学习优势
* 多方参与、多方获益
* 数据不动、保护隐私
* 性能无损
* 数据量充足
### 联邦学习的分类
* 横向联邦学习:横向联邦学习适用于联邦学习的参与方的数据有重叠的数据特征,即数据特征在参与方之间是对齐的,参与方数据样本不同。
![](img/横向联邦学习.jpg)
* 纵向联邦学习:纵向联邦学习 适用于联邦学习参与方的训练数据有重叠的数据样本,即参与方之间的数据样本对齐的,但数据特征上不同。
![](img/纵向联邦学习.jpg)
* 联邦迁移学习,通过联邦学习和迁移学习,解决两个数据集的用户 ( U1, U2, … ) 与用户特征重叠 ( X1, X2, … ) 部分都比较小的问题。
## 2 只看这一篇就够:快速了解联邦学习技术及应用实践
> 给出了联邦学习算法层面的研究,可以在日后详细了解一下。
### 问题提出(背景)
* AI落地存在的困哪
* 数据质量差
* 缺乏数据标签
* 数据分散隔离
* 国内数据监管法律体系不断完善
* 国家关于数据的法律条例是趋向于严格化的,同时趋向于全面化,每个细分领域都纷纷出台了相应的条例和条款。
* 基于联邦学习的技术生态
* 数据隔离,不泄露到外部。
* 参与者地位对等
* 无损,效率接近集中式机器学习
* 共同获益,参与者共同获益
### 相关技术
> 还需要深入探究机器学习部分的算法
* 联邦学习的应用场景
* 满足用户隐私保护、数据安全和政府法规的前提下,进行跨组织的数据合作。
* 同态加密技术
* 通过 RSA 和 Hash 的机制,保证双方最终只用到交集部分,且差集部分不向对方泄露。
* 采用同态加密技术,这个过程中,各方的原始数据,以及数据加密态都没有被传输。交互部分,双方通过损失中间结果,用同态加密的机制进行交互,
* 基于隐私保护的动态ID匹配技术
* 同态加密技术在机器学习上的应用。对 loss function 和梯度进行多项式展开,来满足加法操作。这样就可以把同态加密的技术应用在 loss function 和梯度中。
* 联邦特征工程
* SecureBoost
### 应用方案
* 保险个性化定价
* 小微企业信贷风险管理
* 联邦学习视觉应用
* 基于联邦学习的企业风控模型
* 互联网零售,联合客户价值建模
* 互联网监管,联合反洗钱建模
### 联邦学习开源平台Fate
* Fate的特点
* 支持多种主流算法:为机器学习、深度学习、迁移学习提供高性能联邦学习机制。
* 支持多种多方安全计算协议:同态加密、秘密共享、哈希散列等。
* 友好的跨域交互信息管理方案,解决了联邦学习信息安全审计难的问题。
* 面临的挑战
* 一站式建模过程的联邦化
* MPC 协议下分布式算法 ( on WAN ) 易理解和易维护
* 跨站点数据传输安全性和可管理性,如何让交互部分是可以被管理和被审计的。
* 异构基础架构自适应,联邦学习可能会运行在 CPU、GPU 和端上,如何让上层不受底层的变化而变化。
* FATE的架构
* EggRoll分布式计算和存储的抽象
* Federated Network跨域跨站点通信的抽象
* FATE FederatedML联邦学习算法模块包含了目前联邦学习所有的算法功能
* FATE-Flow | FATE-Board完成一站式联邦建模的管理和调度以及整个过程的可视化
* FATE-Serving联邦学习在线推理模块。
![](img/FATE架构.jpg)
* 建模流程
* 从联邦统计->联邦特征工程->联邦模型训练,当上线部署的时候会有联邦在线推理模块,底层则会采用多方安全计算协议去支持上层各种联邦算法。
![](img/FATE建模.jpg)
* 核心功能:
* 联邦在线模型服务FATE-servering
* 联邦建模pipeline和可视化Fate-flow和fate-board
* 联邦学习算法的功能组件fate-federalML
* 分布式计算和存储抽象egg-roll
* 跨站点网络通信抽象federal-network
egg-roll提供了底层的分布式的计算和存储算子。MPC-Protocol提供了网络通信的安全协议。Numerical-operator提供了数学算子。ML-operator提供了机器学习算子。Algorithm提供了机器学习算法。实现了从下到上的框架。用户可以重写扩展某一个层来实现自己的算法。
> 这里的egg-roll提供的是单个参与者本地的分布式计算方案。并不是通过网络连接的多个参与者的共同计算方案。
* 部署架构
* 每一方都是差不多的,是一个对称的结构,通过 EggRoll实现分布式计算和存储通过 Federation Service 和外部交互。
![](img/FATE部署架构.jpg)
### FATE 应用
![](img/FATE联合建模.jpg)
### FATE 开发流程
1. 选择一个机器学习算法,设计多方安全计算协议。
2. 定义多方交互的数据变量
3. 构建算法执行工作流
4. 基于Egg-roll API和Federal API实现算法工作流中的各个组件。
> 给出的联邦学习最为关联的学科:
> 三个方向进一步学习:机器学习及统计学知识,密码学及其他安全领域知识,分布式计算及大数据处理知识。
> 对于联邦学习的框架FATE为主如果看懂了机器学习也可以采用TesorflowFederal尝试一下。
## 3 联邦学习入门笔记
### 分类
* 横向联邦学习
* 纵向联邦学习
* 迁移联邦学习
### 典型过程
* 客户端选择。选择满足条件的客户端。
* 传播。下载模型权重和训练程序。
* 客户端计算。在本地计算对应的模型更新,完成本地训练。
* 聚合。服务器手机设备更新。包括多重技术应用:用于增强隐私的安全聚合技术、通信效率与数据压缩。
* 更新模型。在本地更新共享模型。
### 联邦学习的挑战
1. 非独立同分布的数据
2. 有限通信带宽
3. 不可靠和有限的设备
## 4 联邦学习的现状和开放性问题
> 本文明确的东西。联邦学习并不是一个技术,而是一组技术的合称,方便对一系列类似的目标进行定义。联邦学习面对很多挑战,也具有很多研究方向。
> * 定义(解决问题的手段)
> * 挑战(需要解决的问题)
> * 研究方向(需要处理的细节)
> * 相关领域(分布式优化,加密,安全性,差分隐私,公平性,压缩感知,系统,信息论,统计甚至更多)
### 定义和挑战
* 学习任务是通过由中央服务器协调的设备的松散联邦来解决的。
* 通信带宽有限
* 不平衡且非IID独立同分布的数据
* 分布式优化,加密,安全性,差分隐私,公平性,压缩感知,系统,信息论,统计甚至更多
### 分类
* cross-device着重于移动和边缘设备应用程序而引入联邦学习
* cross-silo只涉及少量相对可靠的客户端的应用程序例如多个组织合作训练一个模型。
### 定义
联邦学习是一种由多个实体(客户端)在中央服务器或服务提供商的协调下协作解决机器学习问题的机器学习设置。每个客户的原始数据都存储在本地,并且不会交换或转移;取而代之的是使用旨在及时信息聚合的局部更新来实现学习目标。
### 工具和框架
* TensorFlow Federated[38]Federated AI Technology Enabler[34]PySyft [342]Leaf [35]PaddleFL [36]和Clara Training Framework [33]
> 应该描述清楚涉及到的主要内容。
## 5 综述:《联邦学习:概念与应用》
### 概念
精度损失维持在一定范围内的分布式机器学习模型。给出了数学上的定义。
### 隐私
* 安全多方计算SMC零知识传递复杂的计算协议可以自行设计计算协议
* 差分隐私,对数据模糊化,但仍旧会传递数据。
* 同态加密,交换模型参数,保护用户数据。
* 参数交换同样会泄露重要的数据信息,通过模型参数,还原数据特征。可能会允许插入后门来对模型进行攻击,导致数据中毒。协作学习的不同方会受到推理攻击。
* 研究人员还开始考虑将区块链作为促进联邦学习的平台。 在[34]中研究人员考虑了区块链联邦学习BlockFL架构该架构通过利用区块链来交换和验证移动设备的本地学习模型更新。 他们考虑了最佳的块生成,网络可扩展性和健壮性问题。
### 分类
* 水平
* Step 1: 参与者在本地计算训练梯度,使用加密[51],差分隐私[58]或秘密共享[9]技术掩盖梯度的选择,并将掩蔽的结果发送到服务器;
* Step 2: 服务器执行安全聚合,而无需了解有关任何参与的信息;
* Step 3: 服务器将汇总结果发回给参与者;
* Step 4: 参与者使用解密的渐变更新各自的模型。
* 安全分析如果使用SMC [9]或同态加密[51]完成梯度聚合,则上述架构被证明可以保护数据免受半诚实服务器的泄漏。 但是它可能会受到恶意参与者在协作学习过程中训练生成对抗网络GAN的另一种安全模型的攻击[29]。
* 垂直
* 步骤1合作者C创建加密对将公钥发送给A和B;
* 步骤2A和B加密并交换中间结果以进行梯度和损耗计算
* 步骤3A和B分别计算加密的梯度并添加额外的掩码B也计算加密的损失 A和B向C发送加密后的值
* 步骤4C解密并将解密的梯度和损失发送回A和B A和B取消遮盖渐变相应地更新模型参数。
* 迁移
### 相关工作
* 隐私保护。
* 分布式机器学习
* 边缘计算
* 联合数据库
### 应用实例
* 智能零售
* 多方数据库查询——金融领域
* 智能医疗保健
### 数据联盟Data alliance allocate benefit on the blockchain
* 联邦学习更像是企业合作的商业模式。
* 联邦学习可以借助区块链技术的共识机制制定公平的利润分配规则。
## 6 联邦学习 Federated Learning
## 7 联邦学习:从分布式机器学习说起
### 定义
联邦学习Federated Learning实际上是一种加密的分布式机器学习技术参与各方可以在不披露底层数据和底层数据的加密混淆形态的前提下共建模型。它可以实现各个企业的自有数据不出本地而是通过加密机制下的参数交换方式即在不违反数据隐私法规的情况下建立一个虚拟的共有模型。在这样一个机制下参与各方的身份和地位相同成功实现了“共同富裕”的目标。
### 问题
* 个人隐私保护
* 打破数据孤岛
### 线性回归与分布式机器学习
* 线性回归函数
* 损失函数定义
* 同步梯度下降
* 异步梯度下降
### 分布式机器学习与联邦学习比较
* 通信代价远高于计算代价
* 数据是NO-IID
* 数据不均衡性

View File

@@ -0,0 +1,72 @@
# 文献阅读——联邦学习鲁棒性
> * 上一篇文献阅读主要解决了如何构建联邦学习模型
> * 这一篇文献阅读主要解决联邦学习模型中的问题。包括:
> * 模型的鲁棒性问题。(恶意攻击和破坏)
> * 非独立同分布数据提高准确性、有效性和训练速度
> * 数据的隐私保护和安全问题。(隐私保护)
> * 去中心化的联邦学习与模型共享。(在完全对称的联邦学习中的激励机制。)
> * 区块链联邦学习,通过区块链交换和验证设备。
## 1 模型攻击:鲁棒性联邦学习研究的最新进展
[参考文献](https://zhuanlan.zhihu.com/p/145657763)
### 问题提出
* 机器学习受到各种对抗攻击。包括数据和模型更新过程中的中毒、模型规避、模型窃取、对用户的私人训练数据进行数据推理攻击。
* 可以分为两大类
* 定向攻击对特定类型的样本准确性丢失。后门攻击Backdoor Attacks在主要任务中保持较好的性能在次要任务中表现较差的性能。
* 非定向攻击:破坏模型整体准确性
* 模型攻击:被攻击的客户端改变本地模型的更新,从而改变全局模型。
* 数据攻击:以改变所有训练样本中的一个子集,从而改变全局模型。
### 解决方案
* 安全聚合协议 (Secure AggregationSecAgg):确保服务器无法检查每个用户的更新。
## 2 How To Backdoor Federated Learning——机器之心
[参考文献](https://zhuanlan.zhihu.com/p/145657763)
### 联邦学习模型
$$
L^i-第i轮本地训练模型\\
G^i-第i轮联邦训练模型\\
l-损失函数 \\
epoch-训练集合\\
batch-数据集合\\
\eta-单次学习率\\
m-随机选择的参与者\\
$$
![](img/联邦学习伪代码.jpg)
![](img/联邦学习伪代码2.jpg)
### 联邦学习攻击概述
* 攻击者:控制了一个或者几个参与者,包括本地数据和本地训练过程。
* 攻击目标:攻击者希望通过联邦学习得到一个联合模型,该模型在其主任务和攻击者选择的后门子任务上都能实现高准确度,并且在攻击后的多轮攻击后,在后门子任务上保持高准确度。
* 语义后门:修改样本的数据特征。
* 基线攻击:在每个训练批次中尽量包括正确标记的输入和后门输入的混合,以帮助模型学习识别二者的差异。但中央服务器的聚合操作抵消了后门模型的大部分贡献,
* 模型替换攻击:对后门模型的权重进行放大,抵消原来的模型。
* 改善持久性并规避异常检查。
## 3 Can You Really Backdoor Federated Learning?
[参考文献](https://zhuanlan.zhihu.com/p/145657763)
----
## 4 Local Model Poisoning Attacks to Byzantine-Robust Federated Learning
[参考文献](https://zhuanlan.zhihu.com/p/145657763)
----
## 5 Federated Variance-Reduced Stochastic Gradient Descent with Robustness to Byzantine Attacks
[参考文献](https://zhuanlan.zhihu.com/p/145657763)
----
## 6 怎么通过梯度信息还原训练数据?
[参考文献](https://zhuanlan.zhihu.com/p/184981032)
# 文献阅读——联邦学习隐私安全性
# 文献阅读——联邦学习效率问题

View File

@@ -0,0 +1,7 @@
# 文献阅读——联邦学习相关论文
> 之前一直在读中文的博客,接下来,应该自己去下载一些相关的重要的论文,去阅读理解。这应该是在自己学习完成机器学习之后,准备开始实现联邦学习之前。

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB