精华内容
下载资源
问答
  • 赞赏 & 联系方式 & 个人闲话 【实验名称】敏感信息搜集密码心理分析 【实验目的】 1.理解社会工程学的概念,掌握获取敏感信息的方法 2.提高自我信息保护的意识和方法 3.理解密码心理学的概念、...

    赞赏码 & 联系方式 & 个人闲话

    【实验名称】敏感信息搜集与密码心理分析

     

    【实验目的】

    1.理解社会工程学的概念,掌握获取敏感信息的方法

    2.提高自我信息保护的意识和方法

    3.理解密码心理学的概念、密码特征分析

    4.掌握黑客猜解密码的切入方法、如何提高密码强壮性

     

    【实验原理】

    社会工程学(Social Engineering),一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段,取得自身利益的手法。它并不能等同于一般的欺骗手法,社会工程学尤其复杂,即使自认为最警惕最小心的人,一样可能会被高明的社会工程学手段损害利益。

    密码心理学就是从用户的心理入手,分析对方心理,从而更快的破解出密码。掌握好密码心理学可以缩短破解时间,快速获得用户信息。

    密码本身的保密性是来源于其随机性,整个密码的被猜中概率(P)是多个密码特征概率的乘积,只有所有密码特征概率(Pi|i=1,2,3,……n)都处在一个较低的水平上时,整个密码才是安全的。可以用公式表达成:

    P(c)=P1×P2×P3×……×Pn

    我们可以看出,当特征数量增多时(即n比较大),密码的安全性也较高。

     

    【实验内容】

    敏感信息搜集

    由于对实验环境的限制,本实验不能进行实验步骤上的设计,故举出一个通过在互联网上使用信息搜集的方法来获取某人敏感信息的过程。

    开始进行信息搜集,具体过程如下:

    (1)查看并分析目标个人资料,参见下图:

    图1-1-1

    可以获取有可利用价值的信息包括:

                                                                                                   表1-1-1

    可能具有利用价值的信息

    性别

    生日

    6月21日

    血型

    B型

    生肖

    星座

    双子座

    省份

    山东

    城市

    泰安

    (2)访问其QQ空间,除照片外,并未发现有价值信息,参见下图:

    图1-1-2

     

    (3)查看其留言板现实中朋友,参见下图:

    图1-1-3

     

                                                                                                表1-1-2

    可能具有利用价值的信息

    真实朋友

    王建

    (4)访问王建的qq空间,发现王建的头像照片,参见下图:

    图1-1-4

     

    (5)使用校内网的搜索,配合推测的“王建”个人信息,搜索此人,见下图:

    图1-1-5

     

    (6)在所有搜索结果中,配合4中已确定的王建的相貌,排除其他同名者,最终确定王建校内网账号,参见下图:

    图1-1-6

     

    (7)通过校内网中王建的好友信息,配合目标qq空间中的照片,确定其真实姓名及资料,参见下图:

    图1-1-7

     

                                                                                                   表1-1-3

    可能具有利用价值的信息

    目标姓名

    张磊

    目标学校

    鲁东大学

     

    (8)通过已获得目标的真实姓名和所在学校,通过google搜索查询,可得到如下结果:

    图1-1-8

     

    (9)进入网页,分析详细信息,获得目标的中学信息及毕业年份,参见下图:

    图1-1-9

     

    (10)我们继续使用google,使用其姓名、大学、中学信息进行信息搜集,甚至发现了此人更多的敏感信息,参见下图:

    图1-1-10

     

    图1-1-11

     

    图1-1-12

     

    (11)请将搜集到目标的个人信息填入下表:

                                                                                                  表1-1-4

    可能具有利用价值的信息

    姓名

    张磊

    性别

    手机号码

    13515455767

    邮箱

    leileiaideni@126.com

    生日

    6月21日

    血型

    B型

    生肖

    星座

    双子座

    省份

    山东

    城市

    泰安

    大学名称

    鲁东大学

    大学入学年份

    2006年

    大学院系

    交通学院

    大学班级

    机械本0603班

    中学名称

    山东省泰安一中

    中学班级

    03级8班

    中学毕业年份

    2006年

     

    思考题:举出保护个人敏感信息的方法(最少三点)。

    1、对敏感数据做单向变换后再保存。系统不直接保存敏感数据,只作匹配用。

    2、利于新型加密技术处理数据,比如同态加密技术。

    3、对个人数据进行分类,确定个人信息数据等级,比如:一般信息,重要信息,关键信息。

    4、用户应该有控制自身个人信息被访问和被利用的最高权限。

    5、用户应该保存私钥,且此私钥能被更换,如果更换私钥,与用户相关的敏感数据会一并改变。

     

    密码心理学攻击

    本实验设置了host1、host2、host3、host4、host5、host6六个主机用户,此六个用户的用户密码是根据实验1|练习一所搜集到的用户敏感信息设置的,具体内容可参见表3-1-1。

                                                                                        表3-1-1  敏感信息

    可能具有利用价值的信息

    姓名

    张磊

    性别

    手机号码

    13515455767

    邮箱

    leileiaideni@126.com

    生日

    6月21

    血型

    B

    生肖

    星座

    双子座

    省份

    山东

    城市

    泰安

    大学名称

    鲁东大学

    大学入学年份

    2006

    大学院系

    机械学院

    大学班级

    0603班

    中学名称

    山东泰安第一中学

    中学班级

    03级8班

    中学毕业年份

    2006年

    根据表3-1-1中给出的相应信息,对新建的六个账户密码进行猜解。
     

    解密:

    根据题目给出的一些被攻击者的个人信息,我们有理由猜想其密码或密码中的一部分同其人名、邮箱、手机号、生日、入学年月等个人私密信息高度相关。所以我猜想可能会有以下的一些组合,并将其写入superdic.txt文件,作为密码字典。这里当然是一个不断尝试、猜解的过程。

    利用LC5软件,结合我们自己猜测出的密码字典和其本身带有的常见数字、字母组合,可以破解出这6个账户的密码。运行结果如下:

    最终的密码表如下:

                                                                                                表3-1-2

    账户

    密码

    host1

    ZHANGLEI

    host2

    19870621

    host3

    13515455767

    host4

    ZHANGLEI123

    host5

    ZL0621

    host6

    LEILEIAIDENI

     

    思考题:如何提高你的密码强壮性,以避免黑客利用密码心理学猜解你的密码?

    1、确保由数字,字母(大写和小写)字符以及特殊符号和类似字符组成的复杂密码

    2、定期更改密码

    3、使用先前未使用的新密码

     

    【小结或讨论】

    首先说敏感信息搜集实验。其实这不能算是一个真正的专业实验吧,更多的是想让我们意识到个人信息泄漏的情况,并结合实验二来告诉我们个人隐私泄露带来的严重后果。实验的时候我尝试这搜索自己的名字。本来觉得不会有什么有价值的信息的,搜索一番的结果却让我很是意外。我搜索到了自己的性别、生日、星座;在一个比赛介绍的网页上还看到了自己当时的合照;在初中的一份奖励名单上还能知道我的初中;在文库里的一份学生会信息表上,我甚至还看到了自己的手机号、QQ号等隐私信息。这些都让我大为诧异,自以为平时信息没有随便泄露,可是一搜索还能搜出来很多。原来不知不觉中我们就陷入了信息泄露的漩涡。

    密码心理分析实验简单来说就是利用目标的一些已知的个人信息来猜解其各个账户的密码。这个其实利用了大部分人的一个常见心理,就是利用自己的姓名、生日、电话、邮箱这种有明显的个人色彩的常用信息来作为密码,这也就给了不法分子可乘之机。在知道目标的一些隐私信息后,我们居然能很快破译出他的6个不同账户的密码,这给我们自己敲响了警钟。

     

    展开全文
  • 姓名: 王子榛 学号:20189206 上课教师:王志强 1.本学期讲座的学习总结 第七次课 —— 各组论文学习 第一组:在10秒内找到未知的恶意:在Google-Play规模上大规模审查新的威胁 背景内容 Android设备已经成为市场...

    20189206 2018-2019-2 《密码与安全新技术专题》 课程总结

    课程:《密码与安全新技术专题》

    班级: 1892

    姓名: 王子榛

    学号:20189206

    上课教师:王志强


    1.本学期讲座的学习总结

    第七次课 —— 各组论文学习

    第一组:在10秒内找到未知的恶意:在Google-Play规模上大规模审查新的威胁

    背景内容

    Android设备已经成为市场上的主流产品之一,也带来了一个充满活力的应用程序生态系统,经统计Android用户已经安装了数百万个应用程序,这种开放的应用开发环境不仅带来了各式各样的应用程序,同样,Android恶意软件也十分猖獗,常见的有伪装成一个有用的程序,通常通过重新打包合法的应用程序,肆虐,例如,拦截一个人的消息,偷窃,发送presmiumSMS消息等等。

    为了解决这种问题,论文针对应用程序审查,Google Play运营Bouncer,这是一种安全服务,可以静态扫描应用程序中的已知恶意代码,然后在Google云端的模拟环境中执行该操作,以检测隐藏的恶意行为。但现存问题是静态方法不适用于新威胁,而动态问题可以通过能够对测试环境进行指纹识别的应用程序来识别。

    实际上,绝大多数Android恶意软件都是重新打包的应用程序,经过观察结果也表明,恶意重新打包的应用程序是Android恶意软件的支柱。论文提出了一种新颖、高度可扩展的审查机制,用于在一个市场或跨市场上检测重新包装的Android恶意软件————MassVet,为了检查新的应用程序,MassVet针对整个市场对其进行了高效的DiffCom分析。

    检测范围

    1505758-20190616182309290-685755276.png

    MassVet

    1505758-20190616182316890-401666954.png

    MassVet首先处理所有的应用程序,包括用于查看结构的数据库和用于数据库的数据库。两个数据库都经过排序以支持二进制搜索,并用于审核提交到市场的新应用程序。考虑一个重新包装的AngryBird。一旦上载到市场,它首先在预处理阶段自动拆解成一个小型表示,从中可以识别其接口结构和方法。它们的功能(用于视图,用户界面,小部件和事件的类型,以及方法,控制流程和代码)通过计算映射到v核和m核分别是视图和控制流的几何中心。应用程序的v-cores首先用于通过二进制搜索查询数据库。一旦匹配满足,当存在具有类似的AngryBird用户界面结构的另一个应用程序时,将重新打包的应用程序与方法级别的市场上的应用程序进行比较以识别它们的差异。然后自动分析这些不同的方法(简称差异)以确保它们不是广告库并且确实是可疑的,如果是,则向市场报告。当没有任何东西2时,MassVet继续寻找方法数据库中的AngryBird的m核心。如果找到了类似的方法,我们的方法会尝试确认包含方法的app确实与提交的AngryBird无关,并且它不是合法的代码重用。在这种情况下,MassVet报告认为是令人感到满意的。所有这些步骤都是完全完全自动化,无需人工干预。

    v-core

    1505758-20190616182328484-1049489525.png

    特征提取,将UI结构建模为视图,这个视图是一个有向加权图,包括应用程序中的所有视图以及它们之间的导航关系。在这样的图上,每个节点都是一个视图,其活动小部件的数量作为其权重,并且连接节点的网络描述了由它们之间的关系。根据其类型的事件,边缘可以彼此区分,这样的视图可以有效的描述具有相当复杂的UI结构的APP。

    DiffCom分析

    1505758-20190616183649718-1935719442.png

    对于通过批量审查流程的应用程序,视图分析首先确定它是否与市场上已有的应用程序相关。 如果是这样,将进一步比较这两个应用程序,以确定其恶意软件分析的差异。 否则,将在方法级别针对整个市场检查应用程序,以尝试找到与其他应用程序共享的程序组件。 进一步检查差异和公共组件以删除公共代码重用(库,示例代码等)并收集其安全风险的证据。 这种“差异 - 共性”分析由DiffCom模块执行。 我们还提供了有效的代码相似性分析器的实体,并讨论了DiffCom的规避。

    m-core的构建

    为了准备审查,首先通过市场上的所有应用程序,并将其分解为方法。 删除公共库后,预处理模块分析其代码,计算各个方法(即mcores)的几何中心,然后在将结果存储到数据库之前对它们进行排序。 在审核过程中,如果发现提交的应用程序与另一个应用程序共享视图图形,则可以通过比较其个人方法的mcores来快速识别它们的差异。 在适用于执行步骤的过程中,它的方法用于在m-core数据库上进行二进制搜索,该数据库可以快速发现现有应用程序中包含的那些数据库。

    系统建设

    1505758-20190616183654729-1461715201.png

    • 系统引导和恶意软件检测

    为了引导我们的系统,市场首先需要使用我们的技术以高效的方式完成所有现有的应用程序。 这些应用程序的APK被反编译成smali(使用工具baksmali)来提取他们的视图和单个方法,它们分别进一步转换为v-cores和m-cores。 我们使用NetworkX来处理图形和找到循环。 然后在存储到它们各自的数据库之前对这些特征(即核心)进行分类和索引。

    • 扫描恶意内容

    一种简单的方法是通过二分查找逐个检查它们。 这将需要数千万步骤进行比较和分析。论文使用了一种有效的替代方案:一种简单的方法是通过二分查找逐个检查它们。 这将需要数千万步骤进行比较和分析。对m内核的检查要简单得多,不需要将一个应用程序与其他应用程序进行比较。 这是因为我们所关心的只是已经出现在个别等效组中的常用方法。 然后进一步分析这些方法以检测可疑方法。

    • 云支持

    为了支持对应用程序进行高性能审查,MassVet旨在在云上运行。整个审查过程的工作流程被转换为这样的拓扑:首先将提交的应用程序反汇编以提取视图和方法,然后根据白名单检查以删除合法的库和模板;然后,应用程序的v - 计算核心和m核心,并对v核心数据库进行二元搜索;根据研究结果,首先运行差异分析,然后进行交叉分析。每个操作都被分配到拓扑上的工作单元,并且与应用程序关联的所有数据都在单个流中。 Storm引擎旨在支持同时处理多个流,这使市场能够有效地审查大量提交。


    第二组论文:幽灵攻击:利用预测执行

    预测执行

    预测执行就是一些具有预测执行能力的新型处理器,可以预测即将执行的指令,采用预先计算的方法来加快整个处理流程,其设计理念就是加速大概率事件。(ps:在看深入理解计算机系统的时候,书上就有讲过,处理器会对判断语句提前进行预测以提高运行速度,如果预测与实际结果不同,就抛弃前面预测执行的结果)

    预测执行是高速处理器使用的一种技术,通过考虑可能的未来执行路径并提前地执行其中的指令来提高性能。例如,当程序的控制流程取决于物理内存中未缓存的值时,可能需要几百个时钟周期才能知道该值。除了通过空闲浪费这些周期之外,过程还会控制控制流的方向,保存其寄存器状态的检查点并且继续在推测的路径上推测性地执行该程序。当值从存储器中偶然到达时,处理器检查最初猜测的正确性。如果猜测错误,则处理器将寄存器状态恢复为存储的检查点并丢弃(不正确的)预测执行,如果猜测是正确的,则该部分代码已被执行过,不需要再次执行,因此带来了显著的性能增益。

    幽灵攻击

    熔断(Meltdown)和幽灵(Spectre)是CPU的两组严重漏洞,Meltdown漏洞影响几乎所有的Intel CPU和部分ARM CPU,而Spectre则影响所有的Intel CPU和AMD CPU。

    条件分支错误预测

    看如下一段代码:

    if (x < array1_size)
        y = array2[array1[x] * 256]

    攻击者首先选择使条件成立的x调用相关代码,训练分支预测期判断该判断语句为真,然后攻击者设置x值在array1_size之外。

    CPU在执行时,会猜测边界检查将为真,推测性地使用这个恶意的x读取array2的内容。读取array2使用恶意x将数据加载到依赖于array1 [x]的地址的高速缓存中。当处理器意识到这个if为假时,重现选择执行路径,但缓存状态的变化不会被恢复,并且可以被攻击者检测到以找到受害者的存储器的一个字节。 通过使用不同的x值重复,可以利用该构造来读取受害者的存储器。

    • 代码执行过程

    进入if判断语句后,首先从高速缓存查询有无array1_size的值,如果没有则从低速存储器查询。按照我们的设计,高速缓存一直被擦除所以没有array1_size的值,总要去低速缓存查询。查询到后,该判断为真,于是先后从高速缓存查询array1[x]和array2[array1[x]*256]的值,一般情况下是不会有的,于是从低速缓存加载到高速缓存。

    执行过几次之后,if判断连续为真,在下一次需要从低速缓存加载array1_size时,为了不造成时钟周期的浪费,CPU的预测执行开始工作,此时它有理由判断if条件为真,因为之前均为真(根据之前的结果进行推测),于是直接执行if为真的代码,也就是说此时即便x的值越界了,我们依然很有可能在高速缓存中查询到内存中array1[x]和array2[array1[x]*256]的值,当CPU发现预测错误时我们已经得到了需要的信息。

    执行流程

    1505758-20190616183708912-2082236352.png

    预测执行在提高CPU运行效率的同时也带来了安全隐患,它本身会导致CPU去执行程序本不该执行的代码,再加之操作系统和处理器没有对程序或者说低权限程序访问内存地址的范围作出很好的限制,高速缓存更是只能共用,这就导致本不该执行的代码执行后,还会把信息泄露给攻击者。


    第三组论文:你所有的GPS都属于我们:道路导航系统的隐形操控

    论文探讨了对道路导航系统隐身操纵攻击的可行性,目标是触发假转向导航,引导受害者达到错误的目的地而不被察觉。其主要想法是略微改变GPS的位置,以便假冒的导航路线与实际道路的形状相匹配并触发实际可能的指示。论文首先通过实施便携式GPS欺骗器并在真实汽车上进行测试来执行受控测量。然后论文设计一个搜索算法来实时计算GPS移位和受害者路线。

    GPS攻击步骤
    • GPS欺骗的两个关键步骤
      • 接管步骤:攻击者诱使受害者GPS接收器从合法信号迁移到欺骗信号(接管方式可以强制或者平滑)
        • 强制接管,欺骗着只是以高功率发送错误信号,导致受害者失去对卫星的跟踪并锁定更强的欺骗信号
        • 平滑接管,接管开始于与原始信号同步的信号,然后逐渐超过原始信号以引起迁移
      • 攻击者通过移动信号的到达时间或修改导航消息来操纵GPS接收器
    GPS欺骗器

    1505758-20190616183715681-982132061.png

    便携式GPS欺骗器来执行受控实验

    四个组件:HackRF One-based前端,Raspberry Pi,便携式电源和天线。整体机可以放在一个小盒子里如上图所示。

    GPS欺骗的可行性

    为了使攻击更加隐蔽,关键是要找到一条模仿真实道路形状的虚拟路线。这样,导航指令可以与物理世界保持一致。另一个因素是导航系统通常会显示第一人称视角,司机没有看到整个路线,而是关注当前路线和下一个转弯,这样会增加攻击者成功的机会。

    1505758-20190616183721371-284021300.png

    如上图所示,在依靠GPS导航时,受害者正在从P到D,假设攻击者接管受害者在A处的GPS接收器,攻击者创建错误的GPS信号以将GPS位置设置为附近的主机位置B,为了对应错误的位置漂移,导航系统将重新计算B和D之间的新路线。在物理道路上,受害者在A开始按照错误导航,最终达到不同的地方C。根据攻击目的,攻击者可以预先定义目标目的地C或者仅仅旨在转移受害者来自原始目的地D。

    遍历并生成欺骗路线的伪代码

    1505758-20190616183725877-1502542127.png

    真实驾驶测试

    论文在两种不同的路由上进行了测试:

    A行→D表示原始路径
    蓝线代表幽灵路线
    黑线代表受害者
    A是用户的实际位置
    B是对应的鬼位置
    C是用户的改道目的地
    D是原来的目的地

    1505758-20190616183731520-1395332001.png

    在第一种情况(图6a),攻击者设置鬼的位置到原来路线上的另一个地点。测试表明,这确实可以避免触发“重新计算”语音提示。这条路线花了九分钟,司机很成功。 完全改道到预定地点,距原目的地2.1公里。

    在第二种情况下(图6b),攻击者将鬼位置设置在原始路由之外,这将触发 一个“重新计算”语音提示。这一次,司机驾驶了五分钟,并被转向2.5公里以外。在这两种情况下,智能手机都被锁定在欺骗信号上,而没有掉一次。 假位置序列以10赫兹的更新频率平稳地输入手机。尽管在GoogleMaps中嵌入了标题和过滤器的潜在交叉,导航指示国家统计局被及时触发。


    第四组论文:With Great Training Comes Great Vulnerability: Practical Attacks against Transfer Learning

    迁移学习

    现在很多企业都在做深度学习,但是高质量模型的训练需要非常大的标记数据集,比如在视觉领域ImageNet模型的训练集包含了1400万个标记图像,但是小型公司没有条件训练这么大的数据集或者无法得到这么大的数据集。为了解决上述问题,普遍的解决方案就是迁移学习:一个小型公司借用大公司预训练好的模型来完成自己的任务。我们称大公司的模型为“教师模型“,小公司迁移教师模型并加入自己的小数据集进行训练,得到属于自己的高质量模型”学生模型”。

    1505758-20190616183737785-1291773869.png

    迁移学习过程

    学生模型通过复制教师模型的前N-1层来初始化,并增加了一层全连接用于分类,之后使用自己的数据集对学生模型进行训练,训练过程中,前K层是被冻结的,即它们的权重是固定的,只有最后N-K层的权重才会被更新。前K层之所以在训练期间要被冻结,是因为这些层的输出已经代表了学生任务中的有意义的特征,学生模型可以直接使用这些特征,冻结它们可以降低训练成本和减少所需的训练数据集。

    1505758-20190616201522050-1968875378.png

    迁移学习方法分类

    根据训练过程中被冻结的层数k,可以把迁移学习分为以下3中方法:

    • 深层特征提取器 学生任务与教师任务非常相似,需要训练成本最小
    • 中层特征提取器 允许更新更多层,有助于学生为自己的任务进行更多的优化
    • 全模型微调 学生任务和教师任务存在显著差异,所有层都需要微调
    迁移学习方法安全性问题

    但迁移学习并不十分安全,因为迁移学习缺乏多样性,用户只能从很少的教师模型中进行选择,同一个教师模型可能被很多个公司迁移,攻击者如果知道了教师模型就可以攻击它的所有学生模型。

    迁移学习的攻击方法

    现有的针对机器学习算法的对抗性攻击主要有:白盒攻击和黑盒攻击

    由于当前模型的默认访问方式是:教师模型被深度学习服务平台公开;学生模型离线训练且不公开。因为论文提出的攻击方式是对教师模型白盒攻击,对学生模型黑盒攻击。攻击者知道教师模型的内部结构以及所有权重,但不知道学生模型的所有权值和训练数据集

    1505758-20190616183751107-23139410.png

    本文中的攻击方法:模拟神经元输出

    1505758-20190616183755416-304086916.png

    攻击目标:把source图猫误识别为target图狗
    攻击思路:首先将target图狗输入到教师模型中,捕获target图在教师模型第K层的输出向量。之后对source图加入扰动,使得加过扰动的source图(即对抗样本)在输入教师模型后,在第K层产生非常相似的输出向量。由于前馈网络每一层只观察它的前一层,所以如果我们的对抗样本在第K层的输出向量可以完美匹配到target图的相应的输出向量,那么无论第K层之后的层的权值如何变化,它都会被误分类到和target图相同的标签。

    计算扰动

    论文中求解一个有约束的最优化问题来计算扰动。

    • 目标:模拟隐藏层第K层的输出向量。
    • 约束:扰动不易被人眼察觉。

    1505758-20190616183800557-2078584346.png

    DSSIM

    1505758-20190616183805619-1080655979.png

    攻击方式:目标攻击/非目标攻击

    目标攻击:将source image x_s 误分类成target s_t所属标签

    非目标攻击:将source image x_s误分类成任意其他的source image所属标签

    影响攻击效果的因素
    • 扰动预算P
      • P的选择将会直接关系到攻击的隐蔽性。P越小攻击成功率越低
    • 距离度量方法
    • 迁移学习方法
    防御方法

    论文还提出了3种针对本文攻击的防御方法,其中最可行的是修改学生模型,更新层权值,确定一个新的局部最优值,在提供相当的或者更好的分类效果的前提下扩大它和教师模型之间的差异。这又是一个求解有约束的最优化问题,约束是对于每个训练集中的x,让教师模型第K层的输出向量和学生模型第K层的输出向量之间的欧氏距离大于一个阈值,在这个前提下,让预测结果和真实结果的交叉熵损失最小。

    1505758-20190616183830306-684188514.png


    第五组论文:SafeInit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities

    背景知识

    未初始化值的使用仍然是C / C ++代码中的常见错误。这不仅导致未定义的和通常不期望的行为,而且还导致信息泄露和其他安全漏洞。我们都知道C/C++中的局部变量,在未初始化的情况下,初值为随机值。

    以C++中局部变量的初始化和未初始化为例:

    编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化的,叫弱符号。连接器在连接目标文件的时候,如果遇到两个重名符号,会有以下处理规则:

    1. 如果有多个重名的强符号,则报错。
    2. 如果有一个强符号,多个弱符号,则以强符号为准。
    3. 如果没有强符号,但有多个重名的弱符号,则任选一个弱符号。

    LLVM框架

    1505758-20190616183820759-1527999820.png

    在理解LLVM时,我们可以认为它包括了一个狭义的LLVM和一个广义的LLVM。广义的LLVM其实就是指整个LLVM编译器架构,包括了前端、后端、优化器、众多的库函数以及很多的模块;而狭义的LLVM其实就是聚焦于编译器后端功能(代码生成、代码优化等)的一系列模块和库。

    Clang是一个C++编写、基于LLVM的C/C++/Objective-C/Objective-C++编译器。Clang是一个高度模块化开发的轻量级编译器,它的编译速度快、占用内存小、非常方便进行二次开发。

    上图是LLVM和Clang的关系:Clang其实大致上可以对应到编译器的前端,主要处理一些和具体机器无关的针对语言的分析操作;编译器的优化器部分和后端部分其实就是我们之前谈到的LLVM后端(狭义的LLVM);而整体的Compiler架构就是LLVM架构。

    论文实现成果

    由于C/C++不会像C#或JAVA语言,确保变量的有限分配,要求在所有可能执行的路径上对它们进行初始化。所以,C/C++代码可能容易受到未初始化的攻击读取。同时C/C++编译器可以在利用读取未初始化的内存是“未定义行为”时引入新的漏洞。

    在本文中,提出了一种全面而实用的解决方案,通过调整工具链(什么是工具链)来确保所有栈和堆分配始终初始化,从而减轻通用程序中的这些错误。 SafeInit在编译器级别实现。

    本文实现了:

    • 提出了safeinit,一种基于编译器的解决方案,结合强化分配器,确保堆和栈上的初始化来自动减轻未初始化值读取。
    • 提出的优化可以将解决方案的开销降到最低水平(< 5%)并可以在现代编译器中实现
    • 基于clang和LLVM的SafeInit原型实现,并表明它可以应用于大多数真实的C / C ++应用程序而无需任何额外的手动工作。
    • CPU-intensive 、 I/O intensive (server) applications 和 Linux kernel测试验证了现实世界的漏洞确实被缓解
    现存威胁
    敏感数据泄露

    由于未初始化数据而导致信息泄露的最明显危险是直接敏感数据的泄露。

    • 数据生命周期持续时间长于预期,可能会产生许多无意的数据副本。
    • 不是所有情况下编译器可以提供memset优化调用,如果数据不再有效并且因此在该点之后不再使用,编译器可以通过调用memset来优化这些调用。但是如果之后的数据还有效,禁止编译器优化的替代函数(例如memset_s和explicit_bzero)并不是普遍可用的。
    • 未初始化数据的使用受到不可信输入的影响,必须考虑各种潜在的攻击媒介,这种不同的攻击面意味着应该认真对待所有未初始化的数据漏洞。
    绕过安全防御

    现代软件防御依赖于敏感元数据的保密性,同时,未初始化的值提供了指针公开的丰富资源。

    例如地址空间布局随机化之类的防御一般取决于指针的保密性,并且由于通常仅仅随机化一个及基地址来完成,因此攻击者仅需要获取单个指针以完全抵消保护。这样的指针可以是代码,堆栈或堆指针,并且这些指针通常存储在栈和堆上,因此未初始化的值错误提供了阻止这种信息隐藏所需的指针公开的丰富源。

    软件开发

    未初始化数据导致的其他漏洞允许攻击者直接劫持控制流。常见的软件开发的错误是:无法在遇到错误时在执行路径上初始化变量或缓冲区。

    检测工具

    有些工具试图在开发过程中检测未初始化变量,而不是试图减轻未初始化的值错误,允许它们由程序员手动校正。有些工具试图在开发过程中检测它们,而不是试图减轻未初始化的值错误,允许它们由程序员手动校正。更重要的是,编译器警告和检测工具只报告问题,而不是解决问题。 这可能会导致错误和危险的错误。

    堆栈变量

    函数堆栈帧:在堆栈中为当前正在运行的函数分配的区域、传入的参数。返回地址以及函数所用的内部存储单元都存储在堆栈帧中。

    函数堆栈帧包含局部变量的副本,或具有被忽略的局部变量,同时还包含其他局部变量和编译器生成的临时变量的溢出副本,以及函数参数,帧指针和返回地址。 鉴于堆栈内存的不断重用,这些帧提供了丰富的敏感数据源。

    现代编译器使用复杂的算法进行寄存器和堆栈帧分配,这种方式减少了内存使用并改善了缓存局部性,但意味着即使在函数调用之前/之后清除寄存器和堆栈帧也不足以避免所有潜在的未初始化变量。

    未定义行为

    当C / C ++程序无法遵循该语言强加的规则时,会发生未定义的行为。在我们讨论的环境中,未定义行为是指在代码读取未初始化的堆栈变量或者是未初始化的堆分配。

    为了实现最大数量的优化,特别是在可能从模板和宏扩展的代码中,并最终被大部分丢弃为无法访问,现代编译器转换利用了大规模的未定义的行为。这样的转换可以将未定义的值(以及因此也未初始化的值)解释为使得优化更方便的任何值,即使这使得程序逻辑不一致。

    safeinit的工作方式

    1505758-20190616183844243-766378251.png

    上图是利用额外的编译器传递,从而增加了必要的初始化

    种简单的初始化方法会导致过多的运行开销,而我们系统的一个重要元素是专门的强化分配器。 在许多情况下,通过利用额外的信息并结合我们的编译器工具,可以避免初始化问题。

    可以看到编译器在获得C/C++文件后,编译器前端将源文件转换为中间语言(IR),通过初始化、代码优化结合现存编译器的优化器,之后通过无效数据消除、强化分配器最后获得二进制文件。Safeinit在整个过程中所添加的就是 初始化全部变量、优化以及强化分配器,来避免或缓解未初始化值。

    环境未定义变量的几种方式
    • 初始化
      • SafeInit在首次使用之前初始化所有局部变量,作为新分配变量的作用域处理。SafeInit通过修改编译器编译代码的中间表示(IR),在每个变量进入作用域后进行初始化(例如内置memset)。
    • 强化分配器
      • SafeInit的强化分配器可确保在返回应用程序之前将所有新分配的内存清零。我们通过修改现代高性能堆分配器tcmalloc来实现我们的强化分配器。同时还修改了LLVM,以便在启用SafeInit时将来自新分配的内存的读取视为返回零而不是undef。
    • 优化器
      • 目的:可在提高效率和非侵入性的同时提高SafeInit的性能。优化器的主要目标是更改现有编译器中可用的其他标准优化,以消除任何不必要的初始化。
      • 存储下沉:存储到本地的变量应尽可能接近它的用途。

      1505758-20190616183851370-1067750845.png

    • 无效存储消除
      • “无效存储消除”(DSE)优化,它可以删除总是被另一个存储覆盖而不被读取的存储。
        • 堆清除:所有堆分配都保证初始化为零,如果有存储到新分配堆内存中的零值都会被删除
        • 非恒定长度存储清除:为了删除动态堆栈分配和堆分配的不必要初始化
        • 交叉块DSE:可以跨多个基本块执行无效存储消除
        • 只写缓冲区:通过指定该缓冲区只用来存储而不是删除,就可以将该缓冲区删除。
    实施方法
    • 初始化
      • LLVM中的局部变量是使用alloca指令定义的; 我们的pass通过在每条指令之后添加对LLVM memset内部的调用来执行初始化。可以保证清除整个分配,并在适当的时候转换为存储指令。
    • 强化分配器
      • 通过修改现代高性能堆分配器tcmalloc来实现我们的强化分配器。 只需清除在分配器返回指针之前,所有其他堆分配为零。还修改了LLVM,以便在启用SafeInit时将来自新分配的内存的读取视为返回零而不是undef。 如上所述,这对于避免未定义值的不可预测后果至关重要。
    • 优化
      • 通过添加一个新的内部函数“initialized”来实现初始化检测优化,该函数具有与memset相同的存储杀死副作用,但是被代码生成忽略。 通过扩展诸如LLVM的循环习语检测之类的组件来生成这种新的内在函数,其中无法用memset替换代码,我们允许其他现有的优化传递利用这些信息而无需单独修改它们。
    • 无效存储消除
      • 我们通过扩展现有的LLVM代码实现了上述其他优化,尽可能减少我们的更改。 我们对只写缓冲区的实现使用了D18714中的补丁(自合并以来),它为writeonly属性添加了基本框架。
    评估
    • SPEC CPU2006
      使用LTO和-O3在SPEC CPU2006中构建了所有C / C ++基准测试。 我们使用参考数据集提供3次运行中值的开销图。

    1505758-20190616183859554-444294607.png

    1505758-20190616183903577-493046651.png

    表I提供了每个基准测试的allocas数量(表示局部变量的数量,偶尔的参数副本或动态分配)的详细信息。 该表还提供了(剥离的)二进制大小; 在许多情况下,初始化的影响对最终的二进制大小没有任何影响,并且在最坏的情况下它是最小的。#INITS是现有编译器优化之后剩余的大量初始化数量,并且我们的优化器已经分别运行。

    1505758-20190616183907282-341779791.png

    • linux
      使用我们的工具链构建了最新的LLVM Linux内核树。 我们定制了构建系统,以允许使用LTO,重新启用内置clang函数,并修改gold链接器以解决我们在符号排序时遇到的一些LTO代码生成问题。

    由于Linux内核执行自己的内存管理,因此它不会与用户空间强化分配器链接; 我们的自动加固仅保护局部变量。

    下表提供了使用内核微基准测试工具LMbench的典型系统调用的延迟和带宽选择。 我们运行了每个基准测试10次,每次运行的预热时间很短,迭代次数很多(100次),并提供中位数结果。 TCP连接是localhost,其他参数是默认LMbench脚本使用的参数。

    1505758-20190616183912404-288951908.png

    • 安全
      为了验证SafeInit是否按预期工作,不仅考虑了各种现实漏洞,例如下表中的漏洞,还创建了一套单独的测试用例。 我们手动检查了为相关代码生成的bitcode和机器代码,并使用我们上面描述的检测系统运行我们的测试套件。 我们还用valgrind来验证我们的硬化; 例如,我们确认当使用SafeInit强化OpenSSL 0.8.9a时,来自valgrind的所有未初始化的值警告都会消失。

    1505758-20190616183916629-1738138240.png

    结论

    本文通过在clang/LLVM编译器架构上,通过修改代码,实现了safeinit原型,在编译C/C++源代码时,传递一个标记即可使用safeinit实现优化编译,缓解未定义变量。使用了强化分配器的safeinit可以进一步优化代码的同时,保证所有需要初始化的变量进行初始化,删除多余初始化代码进行优化,这样既保证缓解了未定义变量漏洞的威胁,同时与其他现有方法相比,提升了性能。


    第六组论文:操纵机器学习:回归学习的中毒攻击与对策

    背景

    在本文中,作者对线性回归模型进行了第一次中毒攻击的系统研究及其对策。在中毒攻击中,攻击者故意影响训练数据以操纵预测模型的结果。作者提出了一个专门为线性回归设计的理论基础优化框架,并展示了它在一系列数据集和模型上的有效性。随着越来越多具有巨大社会影响的应用程序依赖于机器学习来实现自动化决策,已经出现了一些关于机器学习算法引入的潜在漏洞的担忧。复杂的攻击者有强烈的动机来操纵机器学习算法生成的结果和模型来实现他们的目标。

    在此考虑设置中毒攻击,其中攻击者在训练过程中注入少量损坏的点。此类中毒攻击已经在蠕虫签名生成被实际证明,垃圾邮件过滤器,DoS攻击检测,PDF恶意软件分类 ,手写体数字识别 ,和情绪分析。

    系统架构

    1505758-20190616183922754-1949161734.png

    上图中,分为三个阶段

    • 理想世界
      • 学习过程包括执行数据清理和标准化的数据预处理阶段,之后可以表示训练数据。
    • 测试阶段
      • 模型在预处理后应用于新数据,并使用在训练中学习的回归模型生成数值预测值。
    • 对抗性世界
      • 在中毒攻击中,攻击者在训练回归模型之前将中毒点注入训练集。
    攻击方法

    由于这些攻击最初是在分类问题的背景下提出的,因此攻击样本的类标签被任意初始化,然后在优化过程中保持固定(回想一下ÿ是分类中的分类变量)。正如作者将在本工作的其余部分中展示的那样,作者在此提出的对当前攻击推导的重大改进是同时优化每个中毒点的响应变量及其特征值。作者随后重点介绍了在基于梯度的优化过程中如何更新每个中毒样本的一些理论见解。这将导致作者在Sect中提出更快的攻击。它只利用数据的某些统计特性,并且只需要对目标模型进行最小的黑盒访问。

    基于优化的中毒攻击

    1505758-20190616183928064-918030585.png

    • 梯度计算 具有线搜索的标准梯度算法
    • 目标函数 总是使用MSE作为损失函数
    • 初始化策略 选择初始集Dp中毒点作为输入
    • 基线攻击 定义基线攻击为来自xiao等人的攻击
    • 响应变量优化 响应变量采用连续值而不是分类值
    • 理论见解 关于Eqs的双层优化的一些理论见解
    防御方法

    描述了针对中毒攻击的现有防御建议,并解释了为什么它们在训练数据中的对抗性腐败中可能无效。提出了一种名为TRIM的新方法,专门用于增强针对一系列中毒攻击的鲁棒性。

    • 现有防御算法
      • 噪音回归
        • 这些方法背后的主要思想是识别和删除数据集中的异常值
      • 对抗性攻击
        • 对抗弹性回归算法通常在强有力的数据和噪声分布假设下提供保证

    所有这些方法都具有可证明的鲁棒性保证,但它们所依赖的假设在实践中通常并不令人满意。

    TRIM算法

    1505758-20190616183934100-745015102.png

    • 修建损失函数 针对不同残差子集计算的修建损失函数
    • 迭代估计回归参数 同时训练每个迭代中具有最低残差的点的子集
    • 正则化线性回归 证明它们与一系列模型和真实世界数据集上的其他防御相比的有效性
    实验评估

    作者在四台32核Intel(R)Xeon(R)CPU E5-2440 v2 @ 1.90GHz机器上进行了实验。作者将基于优化的攻击实现并行化,以利用多核功能。作者使用标准的交叉验证方法将数据集分成1/3用于训练,1/3用于测试,1/3用于验证,并将结果报告为5次运行的平均值。作者使用两个主要指标来评估作者的算法:MSE用于攻击和防御的有效性,以及运行时间的成本。

    • 哪种优化策略对于中毒回归最有效?

      1505758-20190616183938775-1328264333.png

    • 优化和统计攻击如何在有效性和性能方面进行比较?

      1505758-20190616183943357-821186454.png

    • 在实际应用中中毒的潜在危害是什么?

      1505758-20190616183947682-1839586743.png

    • 作者的攻击的可转移性属性是什么?

      1505758-20190616183952650-711491081.png

    • 防御算法评估

      1505758-20190616183956625-1193440454.png

    • 防御结果
      • 作者发现以前的防御(RANSAC,Huber,Chen和RONI)对作者的中毒攻击不起作用。
      • 作者提出的防御措施TRIM与现有的防御措施相比,效果非常好并且显着改善了MSE。对于所有攻击,模型和数据集,TRIM 的MSE在未中毒的模型MSE的1%以内。在某些情况下,TRIM实现的MSE低于未中毒的模型(6.42%)
      • 作者测试的所有防御都运行得相当快。TRIM是最快的,在房价数据集上平均运行0.02秒。

    第六组论文:Convolutional Neural Networks for Sentence Classification(卷积神经网络用于句子分类)

    背景

    使用卷积神经网络对句子进行分类的原因:

    • 特征提取的高效性
      • 神经网络的出现不需要做大量的特征工作,可以直接把数据灌进去,让神经网络自己训练,自我“修正”,可得到一个较好的效果。
    • 数据格式的简易性
      • 传统机器学习分类问题中,,我们“灌”进去的数据是不能直接灌进去的,需要对数据进行一些处理,譬如量纲的归一化,格式的转化等等,不过在神经网络里我们不需要额外的对数据做过多的处理。
    • 参数数目的少量性
      • 对于一个基本的三层神经网络来说(输入-隐含-输出),我们只需要初始化时给每一个神经元上随机的赋予一个权重w和偏置项b,在训练过程中,这两个参数会不断的修正,调整到最优质,使模型的误差最小。尤其是在图像领域,用传统的神经网络并不合适。
    模型介绍

    1505758-20190616184003774-719022784.png

    • 输入矩阵
      • 句子长度
      • 每个字符的长度
    • 卷积过程
      • 文中使用了2种过滤器(卷积核),每种过滤器有三种高度(区域大小),即有6种卷积结构。每个卷积核的大小为filter_sizeembedding_size。
      • filter_size代表卷积核纵向上包含单词个数。
      • embedding_size就是词向量的维数。

      1505758-20190616184008945-87603374.png

    • 池化过程
      • 这篇文章使用MaxPooling的方法对Filter提取的特征进行降维操作,形成最终的特征。每个卷积的结果将变为一个特征值,最终生成一个特征向量。

      1505758-20190616184013420-1445013304.png

    • 全连接层
      • 要处理的问题:正面评价和负面评价
      • 全连接层
        • 把权重矩阵与输入向量相乘再加上偏置,实际上就是三层神经网络的隐层到输出层的映射。 y = w*z + b
      • 添加Dropout
        • 由于实验中所用的数据集相对较小,很容易就会发生过拟合现象,所以要引入Dropout来减少过拟合现象。
      • Softmax分类层
        • 可以应用Softmax函数来将原始分数转换为归一化概率,从而得到概率最大的输出,最终达到预测的目的。
        1505758-20190616184019286-532201318.png
    数据集

    1505758-20190616184024267-787266096.png

    文章中使用的数据集包括

    • MR:电影评论,每次评论一句话。分类包括检测积极/消极的评论。
    • SST-1:Stanford Perfection Treebank是MR的扩展,但提供了train/dev/test分割和细粒度标签(非常积极、积极、中立、消极、非常消极)。
    • SST-2:与SST-1相同,但删除中立评论。•Subj:主观性数据集,将句子分类为主观性或客观性两种。
    • TREC:数据集将问题分为6种类型(是否涉及人员、位置、数字信息)。
    • CR:客户对各种产品(相机、MP3等)的正面/负面评论。
    • MPQA:用于意见极性检测。
    实验结论
    model Variations

    本文实现的CNN模型及其变体在不同的数据集上和前人方法的比较:

    1505758-20190616184029122-1902455279.png

    • CNN-rand:所有的word vector都是随机初始化的,同时当做训练过程中优化的参数;
    • CNN-static:所有的word vector直接使用无监督学习即Google的word2vector工具得到的结果,并且是固定不变的;
    • CNN-non-static:所有的word vector直接使用无监督学习即Google的word2vector工具得到的结果,但是会在训练过程中被微调;
    • CNN-multichannel:CNN-static和CNN-non-static的混合版本,即两种类型的输入。
    结论
    • CNN-static优于CNN-rand,因为采用训练好的word2vector向量利用了更大规模的文本信息,提高acc;
    • CNN-non-static优于CNN-static,因为BP算法微调参数使得word2vector更加贴近于某一个具体的任务,提高acc;
    • CNN-multichannel在小规模数据集上的表现优于CNN-single。它体现的是一种折中思想,即既不希望微调参数后的word2vector距离原始值太远,但同时保留其一定的变化空间。

    第一次课 —— web安全与信息安全

    老师通过例子向我们介绍了web安全的重要性,同时介绍了常见的web漏洞以及隐私安全。

    信息化发展凸显的信息安全问题

    • 攻防技术非对称
      • 信息技术属于高科技技术,但大量自动化攻击工具的出现,使得入侵网络与信息系统的门槛降到极低
      • 国内外“肉鸡”的价格也不一样,发达国家相比发展中国家,价格更高
    • 攻防成本非对称
      • 攻防技术的非对称带来了攻防成本的非对称
      • 风险成本低
        • 网络攻击有很好的隐藏性,易于掩饰隐藏身份和位置
      • 对国家安全而言,攻防成本的非对称性具有特殊意义
    • 攻防主体非对称
      • 弱小一方与超级大国之间的实力得到了大大的弥补,个人拥有了挑战弱势群体的机会

    常见web漏洞

    1505758-20190616184054925-1297505827.png

    SQL注入

    由于程序中对用户输入检查不严格,用户可以提交一段数 据库查询代码,根据程序返回的结果,获得某些他想得知 的数据,这就是所谓的SQL Injection,即SQL注入。

    • 按提交字符类型可分为: 数字型 字符型 搜索型
    • 按HTTP提交方式可分为: GET、POST、Cookie javascript:alert(document.cookie="id="+escape("x"))
    • 按注入方式可分为: 盲注 、 union注入、 报错注入
    • 编码问题:宽字节注入(构造[`])
    XSS跨站脚本攻击

    恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

    XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。
    跨站脚本的重点不在‘跨站’上,而在于‘脚本’上。大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码。实际上是在目标网站的作用域下执行了这段js代码。

    分类

    • 反射型XSS
    • 存储型XSS
    CSRF跨站请求伪造

    CSRF(Cross-site request forgery)跨站请求伪造 。
    攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够 做的事情包括:以你名义发送邮件,发消息,盗取你的账号, 甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私 泄露以及财产安全。

    验证不充分之上传漏洞
    • 客户端检测(javascript扩展名检测)
      • 浏览器禁用JavaScript
    • 服务端检测(MIME类型检测)
      • 伪造Content-type: image/gif
    • 服务端检测(文件头检测)
      • 伪造文件头(GIF89a)
    • 服务端检测(目录路径检测)
      • %00截断
    • 服务端检测(文件扩展名检测)
      • ①白名单 ②黑名单
    解析漏洞

    解析漏洞就是web容器将其他格式的文件解析为可执行脚本语言,攻击者可以利用这个特征去执行一些攻击行为。

    • IIS 6.0解析漏洞
      • ①目录解析 /test.asp/test.jpg
      • ②文件解析 /test.asp;1.jpg
    • IIS6.0 默认的可执行文件除了asp还包含这三种
      • ①/test.asa
      • ②/test.cer
      • ③/test.cdx
    • Apache解析漏洞
      Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。
      • /test.php.xxx
      • /test.php.rar
    • Nginx解析漏洞
      • 影响版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
      • /test.jpg/1.php
      • /test.jpg%00.php
    第三方漏洞
    Struts2远程命令执行
    弱口令

    弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。
    弱口令指的是仅包含简单数字和字母的口令,例如“123”、 “abc”等,因为这样的口令很容易被别人破解,从而使用户的计 算机面临风险,因此不推荐用户使用。

    社会工程学

    机器学习与web漏洞

    • 鱼叉
      • AI可以通过从电子邮件中捕获元数据来检测网络钓鱼这些威胁,并不影响用户隐私。
    • 水坑式攻击
      • 机器学习可以通过分析诸如路径/目录遍历统计等数据来帮助机构对网络应 用程序服务进行基准测试。随着时间推移不断学习的算法可以识别出攻击者或恶意网站和应用程序的常见互动。
    • 内网漫游
      • 机器学习了解数据的语境,可以动态地提供正常通信数据的视图。有了对典型通信流的更好理解,算法可以完成变化点检测,以此监测潜在的威胁。
    • 隐蔽信道检测
      • 机器学习技术可以摄取并分析有关稀有领域的统计数据。有了这些信息,安全操作团队可以更轻松地让云端攻击者现形。
    • 注入攻击
      • 机构可以使用机器学习算法来构建数据库用户组的统计概况。算法学习了解了这些组如何访问企业中的各个应用程序,并学习发现这些访问模式中出现的异常。
    • 网页木马
      • 攻击者通过这些平台来瞄准购物者的个人信息。机器学习算法可以聚焦正常购物车行为的统计,然后帮助识别出不应该以这种频率发生的异常值或行为。
    • 凭证盗窃
      • 网站和应用程序可以跟踪位置和登录时间。机器学习技术可以跟踪这些模式以及包含这些模式的数据,以了解什么样的用户行为是正常的,哪些行为则代表了可能有害的活动。

    第二次课 —— 量子密码

    量子密码简介

    • 使用的密码体制:
      • 用公钥密码体制分发会话秘钥
      • 用对称密码体制加密数据
    • 量子密码
      • Shor算法:大数分解算法
        • 多项式时间内解决大数分解难题
        • 受影响密码体制:RSA等大多数公钥密码
      • qGrover算法:快速搜索算法
        • 可以加速搜索密钥
        • 受影响密码体制:DES,AES等对称密码
    • 计算能力对比:
      • 经典方法:运算时间随输入长度指数增长
      • 量子方法:运算时间按多项式增长
    • 量子密码

    结合 量子秘钥的不可窃听性和一次一密的不可破译性 实现 无条件安全的保密通信。

    量子密码采用的典型协议和基本模型

    BB84量子秘钥分配协议

    • 量子通信:采用BB84协议,传送量子态光子(量子密钥),运用一次一密的加密手段。为了实现量子通信,采用经典信道和量子信道同时使用的模式。
    • 经典信道:传送同步信号、对照数据等。

    1505758-20190616184126763-1082014465.png

    • 第一阶段:量子通信
      • Alice从四种偏振态中随机选择发送给Bob。

      • 接收者Bob接受信息发送方Alice传输的信息,并从两组测量基中随机选择一个对接收到的光子的偏振态进行测量。

    • 第二阶段:经典通信
      • 接收者Bob发送信息给信息发送方Alice并告知他自己在哪些量子比特位上使用了哪一个测量基。信息发送方Alice 在接收到Bob发送的消息之后,与本人发送时采用的基逐一比对并通知接收者Bob在哪些位置上选择的基是正确的。

      • 信息发送方Alice和接收者Bob丢掉测量基选择有分歧的部分并保存下来使用了同一测量基的粒子比特位,并从保存的信息中选取相同部分在经典信道中作对比。信道安全的情况下信息发送方Alice和接收者Bob的数据应当是没有分歧的。若存在窃听,则Alice和Bob的数据会出现不同的部分。

      • 如果没有窃听,双方将保留下来的剩余的位作为最终密钥。
      • 假如Eve进行窃听,根据物理学中的测不准原理等基本物理规律窃听者的窃听行为肯定会使Bob的QBER值发生变化,这时,通信双方通过误码率的分析就能发现窃听者是否存在。


    第三次课 —— 基于深度学习的密码分析与设计

    机器学习

    1505758-20190616184143849-1471193087.png

    机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。机器学习的研究人员也是试图从多个样本与标签配对来进行机器学习模型的求解(训练)。

    可以看到,机器学习是利用样本x,输入函数中,得到结果y,利用已有样本x y训练F(x) ,能够达到,输入一个不包含在样本集的x'可以得到正确的y',保证正确率能够保持在一个较高的水平,这就是我根据老师上的的理解,只是比较浅的理解,在以后的学习中继续加深我对机器学习的理解。

    机器学习与密码分析

    1505758-20190616184149802-73868789.png

    密码分析与机器学习之间有天然的相似性,在密码分析中,攻击者试图通过推算出密钥来破解密码系统。解密函数是从一个由密钥索引的已知函数空间(解空间)求解出。攻击者的目的是发现解密函数的精确解。如果攻击者能够获取多个获取密文与明文配对来进行密码分析,其与机器学习的概念相似:机器学习的研究人员也是试图从多个样本与标签配对来进行机器学习模型的求解(训练)。所以可以将二者进行结合,研究利用机器学习如何进行密码分析。

    深度学习

    深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。

    深度学习是属于机器学习中的一个分支,度学习技术掀起了人工智能研究与应用的新一轮浪潮,深度学习技术在多个方面取得了较大突破,其在人工智能系统中所占的比例日趋增大,已经应用于多项实际场景业务系统中。

    • 人工神经网络
      • 人工神经网络的内部是一个黑盒子,就像我们人类的大脑一样,我们不知道它内部的分析过程,我们不知道它是如何识别出人脸的,也不知道它是如何打败围棋世界冠军的。我们只是为它构造了一个躯壳而已。人工神经网络是受到人类大脑结构的启发而创造,下图是一个人工神经网络的构造图。
      • x是神经元的输入,w是对应的权重,影响着每个输入x的刺激强度,网络的结构越复杂,也就是深度神经网络,训练深度神经网络的过程就称为深度学习。

      1505758-20190616184200853-1135179873.png

    • 深度神经网络( DNN: Deep Neural Networks )也有许多类型,例如:
      • 卷积神经网络( CNN: Convolutional Neural
        Networks)
      • 循环神经网络( RNN: Recurrent Neural Networks)
      • 生成对抗网络( GAN: Generative Adversarial Networks)

    深度学习与密码分析

    深度学习与密码分析可以分为以下四类:

    • 基于卷积神经网络的侧信道攻击

    1505758-20190616184205903-516803670.png

    • 基于循环神经网络的明文破译

    1505758-20190616184211051-85282667.png

    • 基于生成对抗网络的口令破解

      • 通过测试集训练对抗网络判别口令的正确与错误,可以实现破解口令的功能。
      • 对抗网络

        生成式对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。

    • 基于深度神经网络的密码基元识别

    随着加密算法的复杂性以及秘钥长度的增加,明文破译的难度也随之增加,发展不如其他方面那么好,基于深度神经网络的密码基元可以识别出加密所使用的的算法。

    1505758-20190616184218082-1192174457.png

    深度学习与密码设计

    密码分析在深度学习领域的发展会随着量子技术的出现而阻碍,由于量子技术对于离散对数、整数分解的公钥密码体制将被快速攻破,意味着网络信息系统不再安全。“组件化可变密码算法设计与安全性评估”,“密文可编程数据安全存储与计算”,两大问题是解决现在密码技术收到威胁的方法。因此,设计更为安全的密码算法是如今更为重要的课题。

    对于新密码算法的设计需求将与日俱增,但目前人工设计密码算法耗时耗力,难以适应未来密码算法设计的需求,我们提出————让机器自动设计密码算法

    1505758-20190616184223362-2099161900.png


    第四次课 —— 信息隐藏

    隐写

    • LSB嵌入
      • 最简单且最普遍的隐写算法,采用最低有效位嵌入的算法(The Least Significant Bit, LSB)
      • 基本步骤

        1 将原始载体图像的空域像素值由十进制转换成二进制;

        2 用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;

      3 将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。

    1505758-20190616184234734-1743624737.png

    • 矩阵嵌入
      • 以最小的嵌入修改数目达到嵌入要传递消息的目的,可提高嵌入效率,即利用较少的嵌入修改嵌入同样数量的秘密消息。

    1505758-20190616184239216-68587379.png

    如上图所示,矩阵嵌入是在LSB嵌入的基础上对嵌入修改数目的减少,

    • 自适应隐写

    自适应隐写的特点在于不考虑载体的图像内容,同时在图片中属于随机嵌入消息。

    实现方法:嵌入失真函数+STCs编码

    根据构造的嵌入失真函数计算载体图像中元素发生更改所引起的失真,利用隐写编码控制密码信息的嵌入位置,在最小化图像总体嵌入失真的同时保证秘密信息的准确提取。

    - 空域自适应隐写
        - WOW (Wavelet Obtained Weights)
        - S-UNIWARD(Spatial UNIversal WAvelet Relative Distortion)
        - HILL (HIgh-pass, Low-pass, and Low-pass) 
    - JPEG域自适应隐写
        - UED(Uniform Embedding Distortion) 
            - SC-UED(Single Coefficient UED)
            - JC-UED(Joint Coefficients UED)
        - J-UNIWARD(JPEG UNIversal WAvelet Relative Distortion) 

    隐写分析

    高维特征
    • 高维隐写分析特征 高维隐写分析特征可以尽可能多地捕获隐写对图像统计特征的影响

    1505758-20190616184246798-944261088.png

    • 空域高维隐写分析特征
      • 34761维 SRM (残差图像+共生矩阵)
      • 12870维 PSRM (残差投影+直方图)
      • 8000维 DCTR
      • 12600维 PHARM
      • 17000维 GFR
      1505758-20190616184251585-155033394.png
    隐写选择信道

    选择信道高维隐写分析特征,以下是其发展历程:

    1505758-20190616184255912-445444213.png

    • tSRM 非全局提取特征,从代价较小的像素上提取SRM特征

    1505758-20190616184300480-563915267.png

    • maxSRM SRM在统计共生矩阵时,乘以该共生矩阵中对应像素的最大嵌入修改概率。
    • σSRM, σspamPSRM
      • 特征是从残差系数上提取的,嵌入修改概率是像素上的
      • 但是两者并不一一对应
      • 嵌入修改对残差图像系数的影响作为累加值
    • SCA-DCTR, SCA-PHARM, SCA-GFR
      • DCT域的嵌入修改对滤波图像的影响作为累加值

    人工智能在隐写分析上的应用

    • Li Bin的“Auto-Encoder”
    • Qian系列:系统地提出了“GNCNN”
    • XuNet系列
    • NiJQ最新:YeNet,新结构
    • XuGuanShuo:Res on J-UNIWARD

    第五次课 —— 区块链

    比特币

    比特币的交易方式

    每一位所有者(A)利用他的私钥对前一次交易T1和下一位所有者(B)的公钥(俗称:地址)签署一个随机散列的数字签名, A将此数据签名制作为交易单T2并将其(交易单T2)广播全网,电子货币就发送给了下一位所有者。
    【注意】前一次交易是指 这里比特币是如何到达现在这位用户手中的,前一份表单。

    特点:

    • 交易发起者的私钥:只为个人所知,他人无从知晓
    • 前一次交易:前一次交易说明了该次交易的货币的来源
    • 下一位所有者的公钥:即交易接收方的地址,次数据说明了当前交易的目标是谁
    • 数字签名:发起方将前一次交易数据和接收方公钥连接起来并对其求Hash值x,再利用自己的私钥对x加密,得到这份数字签名

    验证交易:

    • 利用交易T2中交易的发起方A的公钥对签名进行解密,得到整数x。
    • 将T1交易数据和B的公钥连接起来,用同样的Hash算法计算Hash值y。
    • 若x==y,说明:
      • 这笔交易确实是A本人发起的,因为只有A本人的私钥才可以生成此签名(A同时也无法否认自己曾签署了此份交易)。
      • 交易的目的方确实是B。
      • 发起方确实是打算把交易T1中A获得的货币发送给B。

    1505758-20190616184318454-1200310144.png

    比特币网络中,数据以文件的形式被永久记录,被称之为区块(Block)。

    区块链

    1505758-20190616184323725-2003232033.png

    许多的区块构成了区块链,Block之间以双向链表的方式链接起来,并且每个Block都会保存其上一个Block的Hash值,只有一个Block没有上一个节点,即创世Block。Block有很多份, 每个Block只记录比特币全网10分钟内的交易信息,每约10分钟产生一个新的Block。产生Block的过程,也被称为“挖矿”。

    区块链的核心技术
    • 分布式账本
      • 交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。
    • 非对称加密和授权技术
      • 存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
    • 共识机制
      • 所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。
      • 区块链的共识机制具备“少数服从多数”以及“人人平等”的特点
    • 智能合约
      • 智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。
    工作量证明

    工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。下图表示的是工作量证明的流程:

    1505758-20190616184329949-436317944.png

    51%攻击
    • 将手中的BTC充值各大交易所,然后卖掉,提现;或者也可以直接卖给某人或某一群人;
    • 运用手中的算力,从自己对外付款交易之前的区块开始,忽略自己所有对外的付款交易,重新构造后面的区块,利用算力优势与全网赛跑,当最终创建的区块长度超过原主分支区块,成为新的主分支,至此,攻击完成;

    第六次课 —— 漏洞挖掘与攻防技术

    常见的安全漏洞及漏洞挖掘技术

    1505758-20190616184345234-653743054.png

    • 手工测试
      • 定义:由测试人员手工分析和测试被测目标,发现漏洞的过程,是最原始的漏洞挖掘方法。
    • 补丁对比
      • 定义:补丁比对技术主要用于黑客或竞争对手找出软件发布者已修正但未尚公开的漏洞,是黑客利用漏洞前经常使用的技术手段。
    • 程序分析 (包含静态和动态程序分析)
      • 定义::是指在不运行计算机程序的条件下,通过词法分析、语法分析、语义分析、控制流分析、污点分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
    • 二进制审核
      • 定义:源代码不可得,通过逆向获取二进制代码,在二进制代码层次上进行安全评估
    • 模糊测试
      • 定义:通过向被测目标输入大量的畸形数据并监测其异常来发现漏洞

    程序分析

    • 基于静态分析的漏洞挖掘技术
      • 数据流分析:Foritify SCA、Coverity Pervent、FindBugs等
      • 污点分析:Pixy、TAJ
      • 符号执行:Clang、KLEE
      • 模型检测:BLAST、MAGIC、MOPS
    • 基于动态分析的漏洞挖掘技术
      • 插桩技术:插桩技术是指在保证被测程序逻辑完整性的基础上在程序的关键位置插入一些“桩”,即加入一些测试代码,然后执行插桩后的程序,通过“桩”的执行获取程序的控制流和数据流信息进而分析程序的异常行为
      • 工具:Android: Xposed

    漏洞挖掘技术进展

    1505758-20190616184353023-380626763.png

    从图中可以看到,主要应用场景在:二进制程序函数识别、函数相似性检测、测试输入生成、测试输入筛选、路径约束求解、漏洞程序筛选、源代码漏洞点预测。

    二进制程序函数识别

    二进制程序函数识别是二进制分析的基础,对于软件漏洞分析与修复,甚至恶意软件检测、协议逆向等都至关重要。由于二进制代码缺少高级语言程序中的信息,函数的识别往往比较困难,现有的反汇编分析工具具有识别正确率低的缺陷。

    1505758-20190616184357442-53156322.png

    测试用例生成

    在软件漏洞挖掘中,构造代码覆盖率高或脆弱性导向型的测试输入能提高漏洞挖掘的效率和针对性,利用机器学习知道生成更高质量的测试输入样本。Godefroid等首次把模糊测试中的高结构化样本生成问题转换成了NLP领域的文本生成问题。接下来不断提出了深度神经网络指导磨合测试输入样本。

    路径约束求解

    模糊测试,特别是代码覆盖率指导的模糊测试,侧重于筛选可以覆盖新路径的样本为种子文件,但对种子文件变异时并没有充分利用程序数据流等信息指导变异,这使得变异盲目低效,生成样本冗余。

    具备路径约束求解能力是符号执行比模糊测试等漏洞挖掘技术更先进的体现,也使得符号执行在理论上具备了系统性探索程序执行路径的能力。

    但约束求解也存在着路径爆炸,效率较低等问题。Chen等提出了Angora,采用污点追踪测试输入中影响条件分支的字节,然后使用梯度下降的方式对变异后生成的路径约束进行求解。


    2.感想和体会

    时间总是过得飞快,而本学期认真地说,这门课是让我获益最大的两门课之一,特别是每一次的讲座,不同的老师有自己不同的方向,邀请这些老师进行分享是一件非常有意义的事情,我们不了解的可以向老师请教,同时,也可以通过老师的分享,学习和了解在这个方向如何有效学习、最新的研究都涉及哪些方面等等。

    从这门课中,最令我受益匪浅的应该是顶会论文的学习,以往可能更多会关注中文论文,觉得英文论文自己也看不懂;而且,也学会了如何查找某一领域内的顶会论文,从这些大神的论文中,学习到的更多是逻辑思维,写论文的方式,层层递进的写作手法,可能有些内容或公式我看不太懂,但是有些研究成果真的十分新颖。

    现在很多技术都可以和密码学相结合,交叉学科才是未来发展的方向,综合应用自己所学知识,并不断探索新的领域,这门课也是在帮我们拓宽视野,拓宽思路,解决问题的方法并不是单一的,更重要的是关注解决问题的过程,就像前面每次课的总结博客,寻找问题的答案并解决的过程是一个令人快乐的过程,总结出来自己的收获才更有意义。

    这门课不仅仅是在和老师学习,同时也是在和同学们学习,特别是顶会论文复现的时候,我十分佩服各组同学的学习能力,能在短短几周内研究透顶会论文并复现,而且很多同学的PPT做的十分有逻辑,也是我日后要加强的方面。

    3.对本课程的建议和意见

    • 老师可以在以后的课程中,提前建群,和同学沟通了解同学们感兴趣的方向,充分利用这种沟通机制,及时了解同学们感兴趣的方向。
    • 顶会论文的学习和复现,希望老师可以早点布置下来,这样同学们也有机会充分寻找到自己感兴趣的论文,适合自己能力的论文等等。
    • 总体来说这门课程十分有意义,为以后的学习和工作打下了良好的基础,谢谢各位讲座的老师,谢谢王老师,各位老师辛苦了!

    致谢!(`・ω・´)ゞ(`・ω・´)ゞ

    转载于:https://www.cnblogs.com/zz-1226/p/11032426.html

    展开全文
  • 姓名: 郭开世 学号:20189221 上课教师:谢四江 上课日期:2019年5月7日 必修/选修: 选修 1.本次讲座的学习总结 讲座主题:漏洞挖掘及攻防技术 1.1 背景及意义 安全漏洞定义: 指信息系统在设计、实现或者运行...

    20189221 2018-2019-2 《密码与安全新技术专题》第六周作业

    课程:《密码与安全新技术专题》

    班级: 201892
    姓名: 郭开世
    学号:20189221
    上课教师:谢四江
    上课日期:2019年5月7日
    必修/选修: 选修

    1.本次讲座的学习总结

    讲座主题:漏洞挖掘及攻防技术

    1.1 背景及意义

    • 安全漏洞定义:

      指信息系统在设计、实现或者运行管理过程中存在的缺陷或不足,从而使攻击者能够在未授权的情况下利用这些缺陷破坏系统的安全策略。

    • 安全漏洞事件:
      • openssl (心脏出血);
      • bash:原因是未检查输入边界;
      • 脱裤门:主要包括天涯、CSDN、人人、多玩、cnbeta、QQ关系数据库、携程;
      • 棱镜门;

    1.2 常见漏洞挖掘技术

    • 手工测试——最古老:

      手工测试是由测试人员手工分析和测试被测目标,发现漏洞的过程,是最原始的漏洞挖掘方法。

      • 优点:能发挥人的主观能动性
      • 缺点:人无规律可循、不可大规模
    • 补丁对比:

      一种通过对比补丁之间的差异来挖掘漏洞的技术。

      • 优点:发现速度快
      • 缺点:已知漏洞

      补丁技术是实际漏洞挖掘中运用得十分普遍,对于定位漏洞的具体位置、寻找漏洞解决方式具有十分积极的现实意义。

    • 程序分析

      • 静态:在不运行程序的条件下,通过一系列分析的技术对代码进行扫描。
      • 动态:在运行计算机程序的条件下,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
      • 优点:覆盖率100%,自动化程度高
      • 缺点:容易有漏报和误报
      • 数据流分析:Fortify SCA、Coverity Prevent、FindBugs等
      • 污点分析:Pixy、TAJ(基于WALA)
      • 符号执行:Clang、KLEE
      • 模型检测:BLAST、MAGIC、MOPS
    • 二进制审核

      二进制审核是源代码不可得,通过逆向获取二进制代码,在二进制代码层次上进行安全评估

      • 优点:覆盖率高,自动化程度高
      • 缺点:逆向导致信息丢失,可能会引入逻辑错误。
    • 模糊测试

      模糊测试是通过向被测目标输入大量的畸形数据并检测异常来发现漏洞。

      • 优点:无须源码、误报低、自动化程度高
      • 缺点:覆盖率低

    1.3 漏洞挖掘示例

    • 路由器
      • 当远程向路由器的161端口发送大量畸形SNMP Get/Set请求报文时,Cisco路由器和华为路由器的进程Agent出现CPU使用率异常,分别为98%和100%。
      • 当远程发送SNMP空数据包时,Cisco路由器和华为路由器的CPU使用率出现异常,但远小于100%,发生“轻度拒绝服务”。
      • 当远程发送一个畸形ASN.1/BER编码(超长字符串)的SNMP数据包时,wireshark捕获并解析数据包,导致wireshark 1.4等多个版本栈溢出,导致空指针引用并崩溃。
      • 当向SNMP协议端口(161)远程发送一个使用“\x”等字符构造的畸形UDP数据包,科来网络分析系统7.2.1及以前版本均会因边界条件检查不严导致崩溃。
        1506284-20190515092155413-669353576.png
    • NFC漏洞挖掘

      • 目标选择:NFC手机系统和应用!

        从数据可以看出,NFC手机逐渐开始流行和推广。

        NFC(Near Field Communication)技术是一种近距离的双向高频无线通信技术,能够在移动终端、智能标签(Tag)等设备间进行非接触式数据交换。

        NFC技术具有通信距离短、一次只和一台设备连接(1V1)、硬件安全模块加密等特点,具有较好的保密性和安全性。
        1506284-20190515092213750-1169935640.png

      结果:
      1506284-20190515092222949-425281983.png

    1.4 攻防实例

    • 被动防御
      • 路由器
        1506284-20190515092313887-724950866.png

        • 过滤特殊字符,eg. 科来网络分析系统对\x的处理;
        • 限制特定端口的传输速率;
        • 阻塞SNMP请求的端口;
        • 折中:编写ACL
      • NFC
        1506284-20190515092316595-2062926204.png

        • 协议解析:检查长度字段、数值范围、格式化字符串、特殊字符等;
        • 设计缺陷:修改设计逻辑,例如,蓝牙、wifi、屏幕亮度等;
        • 被动防御:滞后性
    • 主动防御
      • 针对路由器和软件
      • 成熟产品
      • 入侵检测(Snort/OSSEC HIDS/BASE/Sguil……)
      • 防火墙
      • 杀毒软件

    2.学习中遇到的问题及解决

    问题1:模糊测试

    问题1解决:

    模糊测试是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型。它充分利用了机器的能力:随机生成和发送数据;同时,也尝试将安全专家在安全性方面的经验引入进来。

    从执行过程来说,模糊测试的执行过程非常简单:

    • 测试工具通过随机或是半随机的方式生成大量数据;
    • 测试工具将生成的数据发送给被测试的系统(输入);
    • 测试工具检测被测系统的状态(如是否能够响应,响应是否正确等);
    • 根据被测系统的状态判断是否存在潜在的安全漏洞。

    模糊测试的框架有:

    • antiparser

      antiparser框架以python语言编写,是一个专门帮助模糊测试器创建随机数据的API。该工具可以跨平台,仅仅要求有python解释器就行。

      你可以在这个网站得到该框架的源码和一些文档:http://antiparser.sourceforge.net/

      说明:

      该框架很简单,且缺少一些自动化功能,文档较少。总的来说,他不适合做一些复杂的工作。

    • Dfuz

      该框架是Diego Bauche用C开发的,经常更新。该框架已经发现了很多漏洞。Dfuz是开源的,可以下载。但是该框架的源代码采用了一种严格的开原许可,未得到作者的允许不可以使用复制该框架的源代码。

      网站:http://www.genexx.org/dfuz/

      说明:

      该框架学习曲线比较平坦,开发效率比较高,Dfuz要求开发者完全使用框架的脚本语言来进行编程,没法利用成熟的语言发挥更大的威力。不过总的来说还是可以的。

    • SPIKE

      最广泛使用最知名的一个框架。使用C语言编写,提供了一系列允许快速和高效的开发网络协议模糊测试器的API。在SPIKE中,数据结构被分解表示成块,也叫SPIKE,这个块同时包含二进制数据和块大小。

      说明:

      SPIKE只有零星的文档,一些还是废弃的,但是我们可以找到很多工作样例。SPIKE缺乏对windows的支持。最大的贡献就是基于块的模糊测试方法。很多其他的模糊测试框架也采用了这样的方法。

    • Peach

      python编写的,是一个开源的框架。

      Peach体系结构允许研究者聚焦于一个个的特定的协议的子组件,然后组合起来创建完整的模糊测试器。这种方法可能不如基于块的开发速度,但是对代码的复用的支持比其他模糊测试工具好。

      说明:

      Peach处于活跃开发中,但是文档少,学习起来比较困难。

    • 通用目的模糊测试器(GPF)

      GPF可以产生无数个测试,无数个变异。(其他的根据规则不会是无数个),该框架主要的有点是可以用很低的成本建立并运行一个模糊测试器,通过GPF的多种模式对外提供功能。

    • Autodafe

      这个框架可以简单的描述成下一带的SPIKE,该框架能够对网络协议和文件格式进行模糊测试。他最吸引人的就是调试组件。

    问题2:NFC相关

    问题2解决:

    • NFC主要应用于:

      • 1、启动服务,将NFC用于“开启”另一种服务(例如为数据传输开启另一条通信链接);
      • 2、点到点,NFC可以用于实现两个装置之间的通信;
      • 3、付款和票务,将NFC搭建在新兴的智能票务和电子付款基础设施之上。

      因此可以在支付,身份识别,读Tag, 签到等多种场景下用到NFC,不仅仅只有公交卡的应用。

    • NFC卡和其他卡的区别?

      • NFC是在RFID的基础上发展而来,NFC从本质上与RFID没有太大区别,都是基于地理位置相近的两个物体之间的信号传输。
      • 但NFC与RFID还是有区别的,NFC技术增加了点对点通信功能,可以快速建立蓝牙设备之间的P2P(点对点)无线通信,NFC设备彼此寻找对方并建立通信连接。P2P通信的双方设备是对等的,而RFID通信的双方设备是主从关系。
      • ID卡它是身份识别卡的总称, ID 卡分接触型和非接触型(RF类型), 非接触类的无线RF类的又可称 RFID 卡, RFID 卡又有远距离的和近距离的。NFC 卡也就是近场卡,属于近距离卡。

    3.本次讲座的学习感悟、思考等

    真正进行漏洞挖掘需要具备的知识

    从事漏洞挖掘工作需要具备的知识是极其广泛的,并且随着时间在不断改变,也取决于你所研究的对象(web程序、桌面程序、嵌入式等等)。不过,万变不离其宗,所需要掌握的知识领域却总可以认为是确定的,我认为大致可以分为以下四个方面:

    1. 程序正向开发技术。这是一个开发者需要掌握的能力,包括编程语言、系统内部设计、设计模式、协议、框架等。拥有丰富编程经验与开发能力的人在漏洞挖掘过程中往往比那些只对安全相关领域有所了解的人员对目标应用能有更深入的理解,从而有更高的产出。

    2. 攻防一体的理念。这些知识涵盖了从基本的安全原则到不断变换的漏洞形态及漏洞缓解措施。攻击和防御结合的理念,能够有效帮助研究者既能够发现漏洞,同时也能够快速给出有效的漏洞缓解措施和规避方法。

    3. 有效使用工具。能够高效的使用工具能够快速将思路转化为实践,这需要通过花时间去学习如何配置和使用工具,将其应用于自己的任务并构建自己的工作流程来不断积累经验。更进一步,需要深入掌握所使用工具的原理,以及如何对其进行二次开发,以使得其能够更加高效的应用于当前的工作实际。事实上,我认为面向过程的学习方法往往比面向工具的学习方法更加高效以及有价值,当自己发现一个在使用一个工具遇到瓶颈时,先不要退缩,尝试去改造它,或者通过自己动手实践去完成能够适应当前工作的工具,这往往能够帮助快速积累大量实践经验。帮助我们以后更加高效的去实践漏洞挖掘工作。

    4. 对目标应用的理解。最后,也是最重要的,作为一个漏洞挖掘人员,对自己研究的应用程序在安全性方面必须要比这个程序的开发者或维护者有更深的理解。这样你才能尽可能的发现这个程序中的漏洞并修复它。

    要学的还有很多,须日日精进,务求学有所成。

    4.漏洞挖掘研究现状

    A study on software vulnerability prediction model

    作者:P. K. Shamal; K. Rahamathulla; Ali Akbar

    投稿:2017 International Conference on Wireless Communications, Signal Processing and Networking (WiSPNET)

    年份:2017

    主题:本文介绍了两种类型的软件漏洞模型用于预测软件中的漏洞组件。

    许多软件系统,特别是Web应用程序在其生命周期中报告了漏洞问 因此,开发安全软件是软件工程的关键部分。软件是程序和相关数据的集合。因此,由于资源有限,无法对所有软件组件进行详细的漏洞检查。开发人员只需将检查重点放在易受攻击性上。因此,需要一种机制来检测软件中的易受攻击的文件。该解决方案是一种软件漏洞预测模型。软件漏洞预测模型将软件组件(如模块,文件等)分为两类; 脆弱而干净。因此,开发人员需要将他们的漏洞检查仅关注于易受攻击的类中的文件。

    软件漏洞预测模型基于机器学习。分类器经过训练,具有已知的漏洞及其功能。

    基于软件度量的预测模型中,不同的软件度量被用作软件漏洞的指示符。在基于文本分析的方法中,软件的源代码用作预测模型的输入。源代码转换为令牌和频率。

    基于软件度量的预测模型

    软件度量通过数值表示软件的特征。例如,软件的大小由代码行(LOC)或软件中定义的函数总数表示。在基于软件度量的软件度量预测模型中,这些软件度量被用作特征并被映射到相应软件组件的漏洞状态。许多软件度量标准是作为软件开发生命周期各个阶段的一部分创建的。因此,这些指标用于构建软件漏洞预测模型。

    软件漏洞预测模型:
    1506284-20190516105648043-338208655.gif

    软件度量标准:
    1506284-20190516105650905-729552515.gif

    基于软件度量的文本挖掘预测模型

    这是一种基于机器学习的方法,用于预测软件应用程序的哪些组件具有安全威胁。

    在此方法中,完成源代码的文本分析。每个组件都表示为源代码中的一组术语,即令牌,它在源代码中的出现次数。这些令牌及其计数用于构建预测模型。例如,Android应用程序包含许多Java文件作为软件组件。每个java文件都转换为一个标记集合和文件中每个标记的计数。用于将源代码转换为标记的方法使用分隔符。分隔符中包含数学和逻辑运算符,空格,Java标点字符。

    令牌转化:
    1506284-20190516105654841-127830419.gif

    结合软件度量和文本挖掘方法预测漏洞文件的新方法

    第一阶段六个基础分类器产生输出,在第二阶段由作曲家组合这些输出。存在不同的分类方案,针对不同的数据集和不同的方法给出不同的结果。因此,将这两种方法,软件度量和文本挖掘与不同的机器学习技术相结合。在这项工作中,作者为每种方法使用三个分类器,并使用组合器来组合这些分类器的输出。随机森林被用作作曲家。

    简单组合预测模型:
    1506284-20190516105658100-1316901612.gif

    Research of Industrial Control System Device Firmware Vulnerability Mining Technology Based on Taint Analysis

    作者:Yi Li; Xiaoman Liu; Huirong Tian; Cheng Luo

    投稿:2018 IEEE 9th International Conference on Software Engineering and Service Science (ICSESS)

    年份:2018

    主题:一种挖掘工业控制系统固件漏洞的新方法

    这篇论文个人认为比较有实用性

    针对固件漏洞挖掘研究和基于模糊测试的传统漏洞挖掘方法研究效率低下的问题,提出了一种挖掘工业控制系统固件漏洞的新方法。该方法基于污点分析技术,可以针对可能触发漏洞的变量构建测试用例,从而减少无效测试用例的数量,提高测试效率。实验结果表明,该方法可以减少约23%的测试用例,可以有效提高测试效率。

    随着工业信息化的发展,越来越多的传统网络技术应用于工业控制系统。一方面,这改善了工业生产,另一方面,它在ICS之前引入了许多安全问题。虽然工业企业在Stuxnet事件和乌克兰电力系统袭击事件后普遍提高了对ICS安全保护的关注程度,但近年来,与ICS相关的安全事件仍然无休止地出现。一家名为Business Advantage的市场研究咨询公司去年与来自21个国家的359家公司一起对卡巴斯基实验室进行了采访,结果显示其中54%的公司在一年内至少在其ICS中发生过一次安全事故。在这些公司面临的安全威胁中。大多数这些威胁利用ICS软件或硬件中的漏洞来实现其攻击目的。因此,及时发现和修复ICS中的漏洞成为ICS安全保护的重要手段之一。而自2016年以来,一个重要的安全趋势是终端设备暴露的安全问题日益严重,已成为攻击者的重要推动力。控制大量终端设备以在目标系统上执行加密货币挖掘或DDoS攻击的情况已经暴露。因此,如何探索ICS中可能存在的漏洞,切断攻击者的潜在攻击路径,进而防止工业控制设备成为攻击者的工具,已成为研究的热点。

    污点分析

    污点分析(也称为信息流跟踪技术)是一种实用的信息流分析技术,它通过在系统中标记敏感数据然后跟踪过程中标记数据的传播来检测系统安全问题[8]。

    污点分析可以抽象为三元组(源,汇,消毒剂),其中,源是污点的来源,这意味着不受信任或机密的数据被指示到系统中。接收器是接收点,表示直接生成安全敏感操作(违反数据完整性)或私有数据泄漏到外部(这违反了数据机密性)。消毒剂是无害的过程,这意味着数据传输不再通过数据加密或去除危险来损害软件系统的信息安全。污点分析是分析程序中污点源引入的数据是否可以直接传输到汇点而不会进行无害处理。如果不是,则系统在信息流方面是安全的; 否则,表示系统存在安全问题,如隐私数据泄露或危险数据操作。

    污点分析过程:
    1506284-20190516105705199-240169799.gif

    漏洞挖掘状态机中检测到的程序段中每个变量的状态转换图:

    1506284-20190516105708932-49608940.gif

    污点跟踪算法

    污点跟踪算法是循环过程。分析检测到的程序段的每个指令以确定它是否涉及污染变量的扩散以及它是否是敏感指令。详细步骤解释如下:

    1. 为检测到的程序段中的每个变量建立状态机,并将初始状态设置为正常状态。
    2. 从被检测程序段的第一条指令开始,分析当前运行位置的指令,取指令,判断其类型,指令功能,指令源操作数和指令目标操作数,为下一步判断做准备。然后转到步骤3。
    3. 判断该指令是否具有数据写入功能,或者是根据步骤2获得的指令功能和类型的跳转指令。如果不是,则前进一步,返回步骤2.如果该指令具有数据写入功能而不是跳转请执行步骤4.否则,请执行步骤5。
    4. 获取操作数,并判断目标操作数是否存在受污染数据的传播。也就是说,根据上述状态模型的定义判断目标操作数是否与受污染源相关。如果是,请将变量设置为污染状态,然后转到步骤6.否则,前进并返回步骤3。
    5. 如果指令是跳转指令,则判断跳转参数是否与受污染的数据有关。如果参数是从污染变量派生的,则前进一步然后转到步骤2.否则,跳转到目标指令并转到步骤2。
    6. 根据上述敏感指令的定义判断步骤4中的指令。如果是这样,请将与操作数关联的变量设置为不安全状态。同时,找到污点源并将相关字段的权重增加1.如果该指令是检测到的程序段的最后一条指令,则转到步骤7.否则,前进并转到步骤2。
    7. 将所有变量设置为正常状态和污染状态为安全状态。

    污点跟踪算法过程:
    1506284-20190516105716773-344104693.gif

    在相同数量的漏洞下,不同plc固件挖掘所需的测试用例数量的比较:

    1506284-20190516105733340-192300749.gif

    作为近年来研究的新方向,工业控制系统的安全性受到广泛关注。ICS的安全事件时有发生,并且开放漏洞的数量不断增加。但最近工业控制系统漏洞挖掘研究工作主要集中在控制协议和控制软件上,对工业控制设备固件漏洞挖掘的关注较少,大多数现有方法是通过随机构建测试用例来实现的,这种方法较差。挖掘效率,因而业界迫切需要一种工业控制设备固件的挖掘方法。本文提出了一种工业控制设备固件漏洞挖掘方法。此方法使用污点分析方法过滤可能在检测到的程序段中易受攻击的变量,并针对这些变量构建测试用例,以减少无效测试用例的数量并提高测试效率。实验结果表明,该方法可以平均节省大约四分之一的测试用例,并且可以在挖掘相同数量的漏洞时显着提高漏洞挖掘的效率。在未来的工作中,可以进一步优化生成漏洞测试用例的方法,以提高漏洞挖掘的效率。实验结果表明,该方法可以平均节省大约四分之一的测试用例,并且可以在挖掘相同数量的漏洞时显着提高漏洞挖掘的效率。在未来的工作中,可以进一步优化生成漏洞测试用例的方法,以提高漏洞挖掘的效率。实验结果表明,该方法可以平均节省大约四分之一的测试用例,并且可以在挖掘相同数量的漏洞时显着提高漏洞挖掘的效率。在未来的工作中,可以进一步优化生成漏洞测试用例的方法,以提高漏洞挖掘的效率。

    A Mining Approach to Obtain the Software VulnerabilityCharacteristics

    作者:Xiang Li; Jinfu Chen; Zhechao Lin; Lin Zhang; Zibin Wang; Minmin Zhou; Wanggen Xie

    投稿:2017 Fifth International Conference on Advanced Cloud and Big Data (CBD)

    年份:2017

    主题:一种分析和获取基于软件漏洞的数据挖掘技术的基本特征的漏洞挖掘算法

    作者首先使用数据挖掘技术和常见漏洞数据库提取和预处理软件漏洞。作者使用通用漏洞和暴露(CVE)数据库,通用弱点枚举(CWE)数据库,国家漏洞数据库(NVD)数据集来评估所提出的技术。实证结果表明,所提出的漏洞挖掘算法在漏洞挖掘过程中有显着的改进。

    一般漏洞挖掘框架

    1506284-20190516105738911-889792837.gif

    获得基本特征:一种新方法

    1. 涉及使用punct []函数从项目中删除标点符号和特殊字符(例如@ &%* /:?#。,!$)。
    2. 在这个阶段,删除了数据库中经常出现的所有停用词,例如(例如,此,,或,,am,it,on,at,how,with,that)。作者处理了空格,数字以及大小写,因为所有这些元素都不会影响漏洞挖掘过程的结果。
    3. 作者为三个漏洞数据库分配了术语权重,以确定软件漏洞文本指示符在数据库中出现的频率。

    在针对每种情况应用加权方案(tfidj)之后,基于每个文本指示符在数据库中的频率为每个文本指示符分配统计相关性评分函数,并且将最高得分作为在挖掘阶段中使用的最终指标。计算的术语总数计算为搜索数和t项的比率。

    软件漏洞特征的挖掘算法

    在本研究中,作者提出了一种漏洞挖掘算法,利用CWE,CVE和NVD数据库中存在的软件漏洞信息挖掘并获取软件漏洞的本质特征。该研究结果表明,与手动方法相比,用于提取软件漏洞基本特征的漏洞挖掘算法有显着改进。作者分析的最重要发现是,作者观察到,在所有三个项目中,召回率约为70%,精确度约为60%。这表明漏洞挖掘算法在检测基本和非必要漏洞方面有显着改进。这意味着本研究采用的方法可以有效地应用于提取和获取软件漏洞的基本特征。虽然作者使用了三个以不同格式存储软件漏洞的漏洞数据库,但作者的方法没有考虑用于存储这些漏洞的其他功能。将来,作者计划通过添加其他功能扩展研究范围,并挖掘从各种数据库中提取的基本漏洞之间的关联。这意味着本研究采用的方法可以有效地应用于提取和获取软件漏洞的基本特征。虽然作者使用了三个以不同格式存储软件漏洞的漏洞数据库,但作者的方法没有考虑用于存储这些漏洞的其他功能。将来,作者计划通过添加其他功能扩展研究范围,并挖掘从各种数据库中提取的基本漏洞之间的关联。这意味着本研究采用的方法可以有效地应用于提取和获取软件漏洞的基本特征。虽然作者使用了三个以不同格式存储软件漏洞的漏洞数据库,但作者的方法没有考虑用于存储这些漏洞的其他功能。将来,作者计划通过添加其他功能扩展研究范围,并挖掘从各种数据库中提取的基本漏洞之间的关联。

    Data mining for web vulnerability detection: A critical review

    作者:Duha A. Al-Darras; Ja'far Alqatawna

    投稿:2017 8th International Conference on Information Technology (ICIT)

    年份:2017

    主题:本文分析了如何使用数据挖掘技术来提高漏洞检测的质量。

    本首先讨论Web应用程序漏洞以及静态检测方法及其局限性。然后,本文探索数据挖掘技术及其改进漏洞检测的潜力,回顾和讨论了在文献中使用这些技术的结果。

    Web漏洞

    赛门铁克公司2015年安全报告统计数据显示,78%的网站至少有一个漏洞,其中15%的漏洞是关键漏洞[1]。2016年White-Hat报告的统计数据显示,每个站点的平均漏洞数量为23个,其中13个是严重漏洞。此外,它表明漏洞可以在很长一段时间内保持开放状态。严重漏洞的平均年龄为300天[5]。这些结果表明Web应用程序仍包含许多漏洞.
    1506284-20190516105909202-144450586.gif

    数据挖掘与用于检测代码中的漏洞的模式匹配

    最常用的漏洞检测方法之一是模式匹配。有两种类型可以检测注册的模式是漏洞,积极的安全模型和消极的安全模型。积极的安全模型注册了许多非易受攻击的Web代码模式,当新模式与任何已注册的模式不匹配时,它被归类为易受攻击的。相反,当新模式与任何已注册模式不匹配时,负安全模型会注册许多恶意Web代码模式,它被归类为非易受攻击。此模式仅限于预先注册的模式,这意味着它对恶意Web代码的更改不灵活。另一种方法使用数据挖掘算法来检测漏洞。该方法包含两个主要阶段:学习阶段和分类阶段。在学习阶段,提取特征并定义规则。在分类阶段,分类器根据特征向量将给定代码分类为易受攻击或不易受攻击。使用机器学习算法的一个优点是它可以利用更广泛的漏洞检测。

    数据挖掘和静态分析

    程序员经常使用静态分析技术来自动搜索和删除应用程序源代码中的漏洞。开发静态分析工具需要明确编码如何检测每个漏洞的知识,这是一个复杂的过程。

    Machine Learning in Vulnerability Databases

    作者:Zhechao Lin; Xiang Li; Xiaohui Kuang

    投稿:2017 10th International Symposium on Computational Intelligence and Design (ISCID)

    年份:2017

    主题:机器学习在漏洞数据库中的应用

    通过分析现有的开源漏洞数据库,本文作者提取相关属性并构建属性列表,然后利用机器学习技术挖掘属性列表,希望发现一些新颖,有趣,对研究者有价值的知识。本文作者仅在本文中的漏洞数据库中挖掘关联规则。通过这些关联规则,本文作者可以发现一些共同存在的漏洞属性,这可以进一步推断出漏洞的规律。

    当前领域中众所周知的开源漏洞数据库是美国国家漏洞数据库(NVD),其中包含所有CVE信息。CVE是用于安全信息共享的关键字,可帮助用户在单独的漏洞数据库和漏洞评估工具中共享数据。每个CVE由CVE编号(即CVE的名称),一些常见漏洞评分系统(CVSS)度量标准和参数组成,其中包含有关漏洞类型,严重性等的信息。此外,NVD还包含Common Weakness Enumeration(CWE)。CWE将弱点划分为不同的类别,例如跨站点脚本或操作系统命令注入,CWE有超过1,000个不同的条目。

    中国,有一个国家漏洞数据库:中国国家信息安全漏洞数据库(CNNVD)。CNNVD是中国信息技术安全评估中心的成员。旨在发现,传播和修复漏洞。CNNVD建立了一个全面的多层次数据收集渠道。它包含补丁,受影响的产品,安全事件和其他相关数据。

    数据库的来源

    在本文中,作者使用Common Weakness Enumeration(CWE)数据库[6]作为数据库的来源,CWE定义了软件设计和实现的共同弱点,并将弱点分类为类别。大约1000种弱点描述了从软件设计到实现的安全弱点。

    与CVE类似,每个CWE都有一个唯一的ID,不同的CWE对应不同的ID。CVE还包含CWE ID,表明可以在CWE中找到CVE中大量漏洞的原因。从CWE的角度来看,这是由于CWE中的一个或多个弱点,它在CVE中形成了漏洞。因此,CWE的重要性是显而易见的。

    出于不同的目的,CWE设计了两种观点:发展和研究。开发视图根据软件开发经常遇到的概念来组织弱点。研究视图是为了促进弱点研究而产生的,它包含弱点与脆弱性弱点的作用之间的相互依赖关系。以下是从CWE数据库中的弱点中选择的部分属性值

    数据预处理

    选择目标数据库后,挖掘工作无法立即启动,因为目标数据库的数据格式不适用于数据挖掘工具,因此需要将原始数据格式转换为适合挖掘工具的格式。此外,目标数据库包含大量数据,这不是我们所关心的,因此有必要消除数据库中的无关数据。最后,数据库中的一些数据不是标准化的,如果直接用于挖掘,很难获得高质量的结果,因此有必要对这些非标准数据进行标准化。简而言之,需要高质量的数据来获得高质量的采矿结果。本文中的数据预处理包括以下过程:

    • 数据恢复:数据库可以从CWE网站[6]下载,数据格式为xml。
    • 数据提取:获取CWE数据库信息后,分析弱点中包含的信息,并根据文件格式和编写规范提取所需的属性。
    • 数据清理:某些弱点可能在结果数据库中缺少某些属性值,因此需要将缺省数据添加到缺少的属性值。另外,对于相同的属性值,不同的弱点可能有不同的表达式,在CWE中,最常见的是同一个词,一个开头是大写,另一个不是,所以我们需要修改类似的不一致数据。最后,CWE中存在属性值错误,例如应该用于描述“语言名称”的属性值,该属性值用于描述需要修改此类数据的“语言类”。
    • 数据转换:这是数据格式的转换,因为数据挖掘工具有其特定的格式要求,因此有必要将原始xml格式转换为相应的数据格式。
    • 数据缩减:包括降维和数据压缩。降维基于数据提取,并进一步删除不相关的属性。数据压缩是为了消除一些不必要的数据项。

    构建特征空间

    除了诸如“引入时间”和“适用平台”之类的结构化数据之外,还存在一些没有诸如“描述”之类的结构的信息。我们可以使用scikit-learn工具[8]的Countvectorizer模块来提取常用单词和n-gram。

    n-gram是在文档中同时出现的字段元组。每个CWE描述可以形成文档,并且所有文档形成语料库。

    每个CWE描述都可以进行矢量化,并且根据哪个描述包含n-gram,可以将其转换为一组特征事件,这是利用文档中的信息的最简单方法。更高级的方法是使用自然语言处理算法。

    我们在本文中没有处理这部分非结构化信息,这是未来的工作。

    实验结果

    1. 每个实验的过程基本相同,首先使用数据预处理工具CWE_exact提取所需的属性值,并将其转换为数据挖掘格式,然后在Weka中使用FP-growth算法,将CWE_exact生成的文件挖掘到获得关联规则。

      使用FP-growth算法基于两个原因:FP-growth比Apriori快,而FP-growth消耗更少的内存。

    2. 根据不同弱点之间的层次关系,将所有弱点抽象为最高级别的11种类型,并在此级别的粒度下,探讨CWE类型与内部属性之间的关系。

    “语言名称”和“引入时间”之间的关联规则:
    1506284-20190516105809773-329491463.gif

    “引入时间”和“后果范围”之间的关联规则:
    1506284-20190516105812158-223108733.gif

    弱点类型与“引入时间”之间的关联规则:

    1506284-20190516105816000-91524806.gif

    弱点类型与“后果范围”之间的关联规则;

    1506284-20190516105818182-1325825363.gif

    漏洞挖掘学习总结

    在之前查阅资料学习时,看到了一个很有意思的形容:

    从某个角度来讲,可以将漏洞挖掘工作比作玩迷宫游戏,不同的是,这个迷宫与平时所见的游戏中的迷宫略有不同:

    1. 无法立即看到它整体的外观

    2. 随着漏洞挖掘工作的深入,这个迷宫的形状逐渐扩大

    3. 攻击者将会拥有多个起点及终点,但是无法确定这些点具体在哪里

    4. 最终这个迷宫可能永远也无法100%的完整,但是却能够弄清楚A点至B点的一条完整路径

    具体一点的描述,可以将漏洞挖掘工作归结为三个步骤:

    1. 枚举程序入口点(例如:与程序交互的接口)

    2. 思考可能出现的不安全状态(即漏洞)

    3. 设法使用识别的入口点到达不安全状态

    即是说,在这个过程中,迷宫是研究的应用程序,地图是堆程序的理解程度,起点是的入口点(交互接口),终点为程序的不安全状态。

    所谓入口点,既可以是UI界面上直观可见的交互接口,也可以是非常模糊与透明的交互接口(例如IPC),以下是部分安全研究员较为感兴趣的关注点:

    1. 应用程序中比较古老的代码段,并且这一部分随着时间的推移并没有太大的变化。

    2. 应用程序中用于连接由不同开发团队或者开发者开发的程序模块的接口部分

    3. 应用程序中那些调试和测试的部分代码,这部分代码本应在形成Release版本时去除,但由于某些原因不小心遗留在程序中。

    4. C-S模式(带客户端和服务端)的应用中客户端及服务端调用API的差异部分(例如网页表单中的hide属性字段)

    5. 不受终端用户直接影响的内部请求(如IPC)

    认为从攻击面上来划分可以讲漏洞分为两大类,通用漏洞(General)和上下文漏洞(contextual)。通用型漏洞是指在对应用的业务逻辑不是非常熟悉的情况下能够找出的漏洞,例如一些RCE(远程代码执行)、SQLi(sql注入)、XSS(跨站)等。上下文漏洞是指需要在对应用的业务逻辑、认证方式等非常熟悉的情况下才能找到的漏洞,例如权限绕过等。

    在漏洞挖掘的过程中,首先会根据经验优先考虑研究测试那些

    首先假设攻击者的目标web应用是一个单页面应用(single-page-application SPA),攻击者已经获得合法验证去访问这个应用,但是攻击者没有任何关于服务端的源代码或者二进制文件。在这种情况下,当攻击者枚举入口点时,可以通过探寻该应用的不同功能来进一步了解其业务逻辑及功能,可以通过抓包分析看HTTP请求内容,也可以分析客户端的网页代码获取需要提交表单的列表,但是最终的限制还是攻击者无法具体知悉客户端和服务端调用的API之间的区别,不过通过以上方法,攻击者可以找到一些入口点,

    接着就是操作这些入口点,以试图达到攻击者预期的不安全状态。由于漏洞的形态很多,攻击者通常需要构建一个适用于该测试应用程序的业务功能漏洞的测试集,以求达到最高效的寻找漏洞。如果不那样做的话,攻击者就将会在一些无用的测试集上花费大量时间,并且看不到任何效果(举个例子,当后台的数据库为Postgresql时,攻击者用xp_cmdshell去测试,测试再多次都无济于事)。所以在构造测试集时,需对应用程序的逻辑有较深的理解。

    参考资料

    转载于:https://www.cnblogs.com/gdman/p/10867517.html

    展开全文
  • 姓名: 余超 学号:20189220 上课教师:谢四江 上课日期:2019年2月26日 必修/选修: 选修 1.本次讲座的学习总结 本次讲座主要学习了信息隐藏的定义,信息隐藏于密码的区别和联系,以及信息隐藏的最新研究前沿。 ...

    学号20189220 2018-2019-2 《密码与安全新技术专题》第四周作业

    课程:《密码与安全新技术专题》

    班级: 1892
    姓名: 余超
    学号:20189220
    上课教师:谢四江
    上课日期:2019年2月26日
    必修/选修: 选修

    1.本次讲座的学习总结

    本次讲座主要学习了信息隐藏的定义,信息隐藏于密码的区别和联系,以及信息隐藏的最新研究前沿。

    信息隐藏的研究背景

    1505483-20190409193543474-504626993.png
    目前网络安全管理普遍是“严防死堵,物理隔离”的思路,这是上个世纪的基于通道安全形成的管理思路,已经严重滞后于时代发展。网络世界的攻防是严重不对等的,网络安全的防护难度极大。举个例子:就如我们为了不让别人看到院子里的花,就需要修一堵墙,修墙的工作量非常大,但是在墙上打个小孔、或在墙外树一个梯子等是极其容易的,且手段多样。所以攻击相对很容易成功,防守却难度极大

    现在网络安全进入”你中有我,我中有你“的新常态,在这种状态下怎么保护自身的数据安全呢?高维数据在国内率先提出“关注疏通,疏治同步”的管理思路。网络安全所有的措施最终是为了保护什么呢?----是数据!单位的机密数据、企业的商业数据、个人的数据和隐私等。那能不能在传统的通道安全的基础上,把更多的关注重点放到数据本身上。

    先说目前数据安全与隐私保护的技术现状,目前传统的信息安全主要是围绕加密技术及体系完成的。首先加密技术是一种值得信赖的内容安全手段,能非常有效的解决数据安全问题,目前已经形成了完善的体系与管理办法。加密技术历史悠久,但是进入移动互联网、大数据时代,传统的加密技术暴露出不足,出现了bug,加密数据是异常数据,容易成为数据分析挖掘的重点目标!

    大家觉得第三方主要是对你加密的重要内容感兴趣!对于第三方来说,获取加密数据的主要目是通过这些异常数据聚焦到使用加密技术的人,然后通过大数据技术对目标人进行分析,找出社交关系、网络痕迹等,最后找到目标人的团队和组织。  其次关注的才是被加密的数据。对于安全/保密等重点行业用户来说,被关注和深度挖掘是“致命的”!

    有没有技术既能实现象5%的加密数据那样内容安全,又能实现象95%的普通数据那样不被关注呢?一种古老的新技术:信息隐写技术(信息隐藏技术)!”信息隐藏技术其实自古就有,如古代剃光头后写上军事机密,等长出头发后传递信息,接收时剃光头发看到机密。在计算机时代,信息伪装不仅要让人眼无法分辨,而且要实现对抗计算机视觉识别。比如:信息隐藏技术帮助用户把各种格式的重要数据,隐藏在普通的多媒体文件里(如图片、音视频、pdf等),用户通过本地存储或网络分享含有重要私密数据的普通多媒体文件来实现重要数据和个人隐私信息的存储或分享。而存储和分享这些普通的多媒体文件(如图片、音视频、pdf等)是几乎所有人都在做的普通行为,所以这种行为不容易被关注的。

    信息隐藏的基本原理

    1505483-20190409194109622-288773327.png
    信息隐藏是把一个有意义的信息隐藏在另一个称为公开载体(Cover) 的信息中得到隐蔽载体 S(Stego Cover),非法者不知道这个普通信息中是否隐藏了其他的信息,而且即使知道也难以提取或去除隐藏的信息。所用的载体可以是文本、图像、声音及视频等。为增加攻击的难度,也可以把加密与信息隐藏技术结合起来,即先对消息 M 加密得到密文消息 M',再把 M'隐藏到载体 C 中。这样攻击者要想获得消息,就首先要检测到消息的存在,并知道如何从隐蔽的载体 S 中提取 M'及如何对 M'解密以恢复消息 M。
    接!

    2.学习中遇到的问题及解决

    • 问题1:什么是数字水印,有什么特点?
      问题1解决方案:
      所谓数字水印技术,就是将特定的数字信息(如身份信息、序列号、文字或图像标志等)嵌入到图像、音频、视频或软件等各种数字产品中,以达到信息安全和版权保护等目的。数字水印是嵌在数字作品中的数字信号,水印的存在要以不破坏原始作品的欣赏价值和使用价值为原则。一般来说,数字水印应具有以下的基本特征:隐蔽性、安全性、鲁棒性、确定性。
          
    • 问题2:数字水印的工作原理?
      问题2解决方案:
      数字水印的原理一般包括两个方面:水印的嵌入和水印的提取(或检测)。
      数字水印嵌入过程
      1505483-20190409200335826-958509879.png

      数字水印提取过程
      1505483-20190409200348297-181836285.png

    3.本次讲座的学习感悟、思考等

    信息隐藏技术是一种横跨信号处理、数字通信、密码学、计算机网络等多学科的新兴技术,具有巨大的潜在应用市场,对它的研究具有重要的学术和经济价值。在信息隐藏中,T门认为数字水印代表了其发展方向,虽然它的技术要求更高,但是它的应用前景也更广。现在虽然已经有商业化的水印系统,但对水印的研究还远未成熟,许多问题如鲁棒性、真伪鉴别、版权证明、网络快速自动验证以及声频和视频水印等方面仍然还需要比较完美的解决方案。
      随着该技术的推广和应用的深入,一些其他领域的先进技术和算法也将被引入,从而完备和充实数据信息隐藏技术。例如在数字图像处理中的小波、分形理论;图像编码中的各种压缩算法;Pi视频编码技术等等。目前,使用密码加密仍是网络上主要的信息安全传输手段,信息隐藏技术在理论研究、技术成熟度和实用性方面都无法与之相比,但它潜在的价值是无法估量的,特别是在迫切需要解决的版权保护等方面,可以说是根本无法被代替的,相信其必将在未来的信息安全体系中发挥重要作用。同时,信息隐藏技术和力口密技术的结合,必将在信息安全领域得到广泛的应用。

    4.信息隐藏的最新研究现状

    信息隐藏方面的顶级期刊会议如下:
    1505483-20190410132901726-93318840.png

    信息隐藏国内外杰出的研究者:
    1505483-20190410132950696-1268895738.png

    • 第一篇
      1首先我找了一篇发布在IEEE Transactions on Information Forensics and Security ( Volume: 10 , Issue: 3 , March 2015 )上的论文“Segmentation-Based Image Copy-Move Forgery Detection Scheme”。
      2作者信息: Jian Li ; Xiaolong Li ; Bin Yang ; Xingming Sun
      3.在本文中,提出了一种方案来检测图像中的复制 - 移动伪造,主要是通过提取关键点进行比较。 与传统方法的主要区别在于,所提出的方案首先在关键点提取之前将测试图像分割成语义上独立的补丁。 结果,可以通过这些补丁之间的匹配来检测复制移动区域。 匹配过程包括两个阶段。 在第一阶段,我们找到可能包含复制 - 移动伪造区域的可疑修补对,并且我们粗略估计仿射变换矩阵。 在第二阶段,基于期望最大化的算法被设计用于改进估计的矩阵并确认复制移动伪造的存在。 实验结果通过与公共数据库中最先进的方案进行比较,证明了该方案的良好性能。
      CMFD框架的流程图
      我们知道,图像很少是漫无目的地伪造的。因此,复制移动区域应该具有一定的含义。有鉴于此,我们建议将测试图像分割成许多非重叠的贴片。然后可以通过匹配这些补丁来执行CMFD,只要粘贴目标和复制源区域不在同一个补丁中。
      1505483-20190409212545212-1478021147.png
      图像的切割
      为了将复制源区域与粘贴目标区域分开,应该将图像分割成小块,每个小块在语义上独立于其他块。 这项工作最好由具有丰富数字取证经验的专家完成。 然而,在我们的实施中,我们只考虑自动方法并将专家干扰方法留待将来工作。 在测试了四种着名的图像分割方法[31] - [32] [33] [34]后,观察到分割方法对CMFD的效率没有太大影响。 其中[32]和[34]中的方法由于其相对较低的复杂性而更有利。 在大多数情况下,可以使用个人计算机(3.3GHz CPU,4G RAM)在15秒内分割一个800×600的图像。 下图给出了[34]获得的图像分割的一个例子。
      1505483-20190409212909668-1271521585.png
      实验结果
      我们提出的CMFD方案与数据库MICC-F600上的两个现有技术[14],[28]进行了比较。 可以观察到,所提出的方案具有最低的假阴性率但是最高的假阳性率,这与基准数据库上的结果非常一致。 还计算了所有伪造图像在像素级的所提出方案的检测误差。 平均精度,召回率和F1值分别为0.86,0.88和0.87。 这些结果也证明了表II中我们的分段设置的有效性。下图显示了在背景中融合的CMF区域的测试图像上的检测结果。 可以观察到,所提出的方案检测到大多数CMF区域。
      1505483-20190409213313388-1406374215.png
      对具有在背景中融合的CMF区域的图像的检测结果。 第一列显示MICC-600的测试图像。 第二列显示了这些图像中CMF区域的基本事实。 第三列和第四列分别显示了我们提出的方案的检测结果和基于SIFT的方案[1]。 (a),(e),(i)和(m)原件。 (b),(f),(j)和(n)基本事实。 (c),(g),(k)和(o)提议。 (d),(h),(l)和(p)SIFT。

    • 第二篇
    1. 第二篇论文我找的是发布在IEEE Transactions on Information Forensics and Security ( Volume: 11 , Issue: 11 , Nov. 2016 )上的论文,论文的题目为Toward Efficient Multi-Keyword Fuzzy Search Over Encrypted Outsourced Data With Accuracy Improvement
      2作者信息:Zhihua Xia ; Xinhui Wang ; Liangao Zhang ; Zhan Qin ; Xingming Sun ; Kui Ren
      3随着图像在人们日常生活中的重要性日益增加,基于内容的图像检索(CBIR)得到了广泛的研究。与文本文档相比,图像消耗更多的存储空间。因此,其维护被认为是云存储外包的典型示例。出于隐私保护的目的,敏感图像(如医疗和个人图像)需要在外包之前进行加密,这使得明文域中的CBIR技术无法使用。在本文中,提出了一种支持CBIR而不是加密图像的方案,而不会将敏感信息泄露给云服务器。首先,提取特征向量以表示相应的图像。之后,预过滤表由局部敏感的散列构成,以提高搜索效率。此外,特征向量受到安全kNN算法的保护,图像像素由标准流密码加密。此外,考虑到授权查询用户可能非法复制并将检索到的图像分发给未经授权的人的情况,提出了一种基于水印的协议来阻止这种非法分发。在基于水印的协议中,在将图像发送给查询用户之前,云服务器将独特的水印直接嵌入到加密图像中。因此,当找到图像副本时,可以通过水印提取来跟踪分发图像的非法查询用户。安全性分析和实验表明了该方案的安全性和有效性。
      A.系统模型
      本文中的系统模型涉及四种不同类型的实体:图像所有者,图像用户,云服务器和水印认证机构(WCA),如图所示
      1505483-20190409214705303-70605720.png
      图像用户是从云服务器检索图像的授权用户。为了请求搜索,图像用户首先为查询图像生成陷门TD,然后将陷门TD及其身份提交给云服务器。在接收到结果图像之后,用户可以使用图像所有者共享的秘密密钥对它们进行解密。

    云服务器为映像所有者存储加密的映像集C和索引I,并处理来自映像用户的​​查询请求。此外,为了支持复制威慑,云服务器负责将水印嵌入到检索到的图像中。

    水印证书颁发机构(WCA)是一个值得信赖的机构,负责为授权查询用户生成水印,并通过水印提取算法执行仲裁。

    实验结果

    1070/5000
    MPEG-7是一种多媒体内容描述标准,它为多媒体数据描述提供了一套全面的描述符[34]。在本文中,使用了四个MPEG-7描述符:

    可伸缩颜色描述符(SCD)在色调饱和度值(HSV)颜色空间中定义。 SCD使用Haar变换编码来促进特征提取的可伸缩性。

    颜色结构描述符(CSD)旨在使用小的结构化窗口来识别局部颜色分布。为了确保互操作性,在色调 - 最小 - 最大 - 差异(HMMD)颜色空间中构造颜色结构直方图。

    颜色布局描述符(CLD)提供有关图像内空间颜色分布的信息。在将图像划分为64个块之后,基于离散余弦变换从这些块中的每个块中提取CLD描述符。

    边缘直方图描述符(EHD)捕获边缘的空间分布。即使底层纹理不均匀,边缘的分布也是图像匹配的良好纹理特征
    精度主要取决于视觉描述符的性能。 预过滤表的使用降低了检索精度。 CSD,CLD,EHD和SCD的平均下降率分别为15.04%,19.90%,13.93和18.59%。 为了提高搜索效率,这些精度损失被折衷。
    1505483-20190409215929699-147462857.png

    图13显示了JPEG压缩攻击下的平均提取精度。 结果平均来自1000张图像。 结果表明,较大的块大小可以实现较高的提取精度,而具有较高质量因子的JPEG压缩会导致较少的提取错误。 唯一的例外是张的算法,品质因数为70%。 这是因为大多数原始图像都是JPEG图像,质量因子为70%。 具有相同因子的再压缩导致对图像的较小影响。
    1505483-20190409220221537-2135006557.png

    • 第三篇
    1. 第三篇论文我找的是发布在IEEE Transactions on Information Forensics and Security ( Volume: 11 , Issue: 8 , Aug. 2016 )上的论文,论文题目为Face Spoofing Detection Using Colour Texture Analysis
      2作者信息:Zinelabidine Boulkenafet ; Jukka Komulainen ; Abdenour Hadid
    2. 在本文中,提出从颜色纹理分析的角度来解决面部反欺骗的问题。研究了不同的彩色图像表示(RGB,HSV和YCbCr)如何用于描述真实面部和假面部之间的颜色纹理的内在差异,以及它们是否提供互补表示。通过从不同颜色空间中的各个图像通道提取不同的局部描述符来研究不同面部颜色纹理表示的有效性。
      对三个最新且最具挑战性的欺骗数据库(CASIA FASD,重放攻击数据库和MSU MFSD)进行了大量实验,结果非常出色。在CASIA FASD和MSU MFSD上,基于在HSV和YCbCr颜色空间上计算的组合CoLBP和LPQ特征的所提出的面部颜色纹理表示优于现有技术,而在重放 - 攻击数据库上实现了非常有竞争力的结果。更重要的是,与文献中提出的大多数方法不同,所提出的方法能够在所有三个基准数据集中实现稳定的性能。此外,在我们的数据库间评估中,面部颜色纹理表示显示出有希望的泛化能力,因此表明颜色纹理在未知条件下似乎比其灰度对应物更稳定。
    • 第四篇
    1. 这是一篇发布在IEEE Transactions on Information Forensics and Security ( Volume: 13 , Issue: 4 , April 2018 )的论文,论文题目为Applications of Explicit Non-Linear Feature Maps in Steganalysis
    2. 作者信息如下:Vojtěch Holub ; Jessica Fridrich
      3.目前,考虑到已建立的实践要求将图像源的多个分割中的检测性能报告为训练和测试集并考虑在内,在数万个图像上训练具有高维丰富表示的核化支持向量机在计算上是不可行的。需要在有效负载和多个嵌入方案中显示性能。对于估计有效载荷大小的定量检测器(支持向量回归量),计算复杂度甚至更高,因为对超参数的搜索是三维的。为了应对这种复杂性,社区采用了更简单的机器学习范例,例如线性分类器和回归树。

      在本文中,我们描述了一种通过在训练低复杂度分类器/回归器之前转换特征来提高检测器性能的简单方法。该方法借鉴了文献中提出的近似半正定核的近似进展。该映射源自对称的Ali-Silvey距离(核)并使用Nyström近似估计。该方法通过分别为每个子模型学习变换来应用于丰富模型,以便保持较低的计算复杂度。需要一小组固定的覆盖特征来训练变换,这仅取决于少数覆盖特征而不依赖于隐写方案或嵌入的有效载荷。

      与集合分类器相结合,对于具有用于灰度图像的选择通道感知maxSRMd2特征的二元分类器以及用于彩色图像的隐写分析的Spatio-Color Rich模型,观察到2-4%的检测精度的一致增益。对于定量检测器(有效载荷回归器),以MSE估计测量的有效载荷大小估计的统计分布的减少的增益在线性回归器的范围为18-28%,对于回归树为8-17%。

      所提出的方法通过简单地保留较少的变换维度,自然有助于无监督降维。特别地,可以使富描述符紧凑10倍而不会丢失原始(未变换的)特征向量的检测性能。对于定量检测器,可以将特征压缩60%,同时进一步降低有效载荷估计的统计分布。这种降维可能对无监督的通用隐写分析探测器有用
    • 第五篇
    1. 这是一篇发布在** IEEE Transactions on Information Forensics and Security ( Volume: 11 , Issue: 2 , Feb. 2016 )上的论文,论文的题目为Content-Adaptive Steganography by Minimizing Statistical Detectability
      2.
      作者信息**:Vahid Sedighi ; Rémi Cogranne ; Jessica Fridrich
      3.自OutGuess推出以来,基于模型的隐写术已经存在了近十五年。我们的方法与众不同的是参数空间的维度,它允许我们捕获图像的非平稳特征,以及我们不会尝试保留模型而是最小化嵌入影响的事实。我们将图像噪声残差建模为具有变化方差的独立量化高斯变量序列。通过处理残差,除了采集噪声之外,我们设法在模型中包含依赖于内容的建模误差,这对隐写分析有很大影响。另一方面,独立性的假设和高斯分布的简单性允许我们为所选模型内的最强大的内容自适应LSB匹配检测器的功率导出闭合形式表达式。这使我们能够在隐写术设计和隐写分析方面获得以下新颖见解。

    首先,本文使用的方法设计隐写术,最大限度地降低最佳探测器的功率,而不是启发式组装失真。通过调整模型方差估计器的参数,本文的嵌入方案MiPOD可以与当今最先进的隐写方案的安全性相媲美。通过优化局部方差估计可能进一步改进。在这里,本文指出一个警告,即这种优化必然限于给定的图像源和经验检测器(分类器选择和特征空间)。

    其次,本文使用闭合形式表达式来理论检测,以揭示对作为分类器构建的经验检测器和在所选模型中作为最优导出的检测器之间的复杂相互作用的新基本洞察。特别是,当覆盖噪声模型被强加到具有简单内容的人工图像时,结果观察到在丰富的特征空间中构建为分类器的经验检测器与最佳检测器的检测性能紧密匹配,尽管它们具有极其不同的性质。然而,在实际图像源上,经验检测器相对于理论上最佳的检测器显然是次优的。我们将此归因于经验探测器难以处理自然图像的异质性。

    第三,本文还进行了实验,旨在根据Ker定义的给定风险水平估计安全有效载荷的大小。在这里,使用由量化传感器获取的原始图像的红色通道,该成像传感器被量化为仅经过增益和伽马调整的8位。因为这些图像紧跟我们的模型,所以一旦估计了方差,就可以从渐近似然比的偏转系数计算它们的安全有效载荷。这种估计与使用经验检测器(FLD分类器)确定的安全有效载荷形成对比,该经验检测器是在10,000个覆盖图像(和相应的隐秘图像)的数据库上训练的,该数据库通过对图像进行去噪并叠加从原始图像估计的10,000个多变量高斯噪声的实现而获得。对于具有简单内容的图像,两个估计看起来非常接近,而对于具有更复杂内容的图像,经验检测器由于其较低的检测能力而高估了有效载荷。
    4.实验结果:
    本文的数值结果分为以下几个主要部分。在描述了所有实验的共同核心之后,文本使用最先进特征集作为分类器的检测器,将MiPOD与现有技术在标准图像源上进行比较。
    1505483-20190410144832498-1889570274.png

    接下来,本文使用人工图像源,其中强制使用异方差覆盖噪声模型来显示渐近LRT的紧密度,并证明最佳检测器和经验检测器构建为具有丰富图像模型的分类器实现非常相似可检测性水平。
    1505483-20190410144852900-878801174.png

    1505483-20190410144908575-721271844.png

    然后,在真实图像的数据库中引入并研究了一种新的可检测性限制的发送器。
    1505483-20190410144925986-2066917796.png

    最后,通过对比从模型计算的安全有效载荷大小和使用经验检测器,我们发现了关于理论探测器和经验探测器之间相互作用的几个有趣且重要的事实。
    1505483-20190410145000557-1216956566.png

    总结

    近年来信息隐藏技术发展的很快,已经提出了各种各样的实现方法。信息隐藏技术的方法主要包括隐写术、数字水印、可视密码技术、潜信道、匿名通信。其中隐写术的研究成为了信息安全的焦点。因为每个Web站点都依赖多媒体,如音频、视频和图像。隐写术这项技术可以将秘密信息嵌入到数字媒介中而不损坏它的载体的质量。第三方既觉察不到秘密信息的存在,也不知道存在秘密信息。因此密钥、数字签名和私密信息都可以在开放的环境(如Internet或者内联网)中安全的传送。以Jessica Fridrich为代表的团队在高维隐写术上不断的取得突破。
    1505483-20190414095418277-903171390.png

    参考资料

    转载于:https://www.cnblogs.com/yuchao123/p/10679380.html

    展开全文
  • 来源 | InfoQ编译 |核子可乐、TinaOracle 的广告技术部门,因服务器处于不安全且未设置密码的状态,导致数据库中全球数十亿人的记录被泄露。 Oracle 于 2014 年...
  • 作为PHP程序员,特别是新手,对于互联网的险恶总是知道的太少,对于外部的入侵有很多时候是素手无策的,他们根本知道黑客是...关于Web应用程序安全性,必须认识到的第一件事是应该信任外部数据。外部数据(outsid
  • 由于安装MySQL完后,MySQL会自动提供一个带密码的root用户,为了安全起见给root设置密码: #mysqladmin -u root password 123 (123为密码,也可以写成:’123′或”123″) ; 设置密码后登入时
  • 【论文】网络安全与入门-ARP攻击

    千次阅读 2018-07-16 11:00:51
    网络安全与入门 班级:嵌入式1511 学号:15200141115 姓名:戚春阳 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,...
  • php安全篇值过滤用户输入的人参数

    千次阅读 2016-05-24 11:23:15
    关于Web应用程序安全性,必须认识到的第一件事是应该信任外部数据。外部数据(outside data) 包括不是由程序员在PHP代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST...
  • 日志中的用户隐私安全

    千次阅读 2020-01-16 10:49:49
    对于敏捷团队,安全卡应该提到比业务卡更高的优先级,同样需要放在backlog里面进行track,需要kick off、deskcheck,需要一个正经的流程或者仪式感强化成员的意识:安全卡和业务卡、Bug卡都是项目交付中的一等公民。...
  • 转一篇关于加密密码安全性的文章

    千次阅读 2016-12-19 13:19:15
    最近有个虚拟练习项目,涉及到系统安全保障的设计,于是对安全保障这块做了一些更深入的了解。发现了很多有趣的东西,开阔了眼界。中间查了一些资料,于是我打算重新整理,用更加循序渐进,大家都能懂的方式,说一说...
  • 这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来博友共勉,希望您们喜欢,一起进步。前文分享了Web渗透的第一步工作,涉及网站信息、域名信息、端口信息、敏感信息及指纹...
  • Apple Pay发展与安全

    千次阅读 2016-04-24 14:40:21
    这个是无线网络安全最后留的一份作业了。去知网弄了点论文,又百度了点资料,总结出来的一份文档。 年初,也就是二月份刚上线的时候,苹果支付那叫一个火啊,现在也怎么听人说了。但是三星和华为还有小米最近倒是...
  • WebApp 安全入门

    千次阅读 2019-06-25 23:30:14
    2018 网络安全事故频发,从数据泄露、信息窃取,到 DDOS 攻击、勒索病毒,不仅威胁的总数在增加,威胁...本次分享,葡萄城技术团队将从 WebApp 安全出发,带你了解更多意想不到的安全防护措施黑客攻击手段,助你...
  • 设计安全的账号系统的正确姿势
  • 离线在线:个人信息为社会所知,例如姓名、年龄或住址。/网络空间中的角色,在线身份应仅显示关于有限信息。 CIA三元组:机密性,完整性,可用性 软件安全漏洞分类:缓冲区溢出,未验证输入,竞争条件,访问控制...
  • spring整合应用安全框架Shiro

    千次阅读 2017-07-17 21:46:22
     Apache Shiro是一个强大易用的Java安全框架,它提供的主要功能有:  认证 -——用户身份识别,常被称为用户“登录”;  授权—— 访问控制; 密码加密——保护或隐藏数据防止被偷窥; 会话管理——每用户相关的...
  • 在4G技术已经普及的今天,无奈国内的电信运营商们把移动联网流量的价格抬的让人无法深爱,加之家庭用户和企业用户对于物理网络线缆的愈发嫌弃,WiFi技术的飞速发展给大家带来了另一种畅游网络的便捷。人们已经习惯于...
  • Django用户登录注册系统

    万次阅读 多人点赞 2018-06-04 10:00:05
    name必填,最长超过128个字符,并且唯一,也就是能有相同姓名; password必填,最长超过256个字符(实际可能需要这么长); email使用Django内置的邮箱类型,并且唯一; 性别使用了一个choice,只能选择男...
  • Web安全 -- 逻辑漏洞讲

    千次阅读 2018-07-10 14:36:34
    比如金融网站和互联网网站以及购物网站,挖掘逻辑漏洞方法完全一样。所以本篇算是冰山一角,给大家一个科普!常规漏洞漏洞逻辑漏洞是指由于程序逻辑严或逻辑太复杂,导致一些逻辑分支能够正常处理或处理错误,...
  • 规则 1:绝不要信任外部数据或输入关于 Web 应用程序安全性,必须认识到的第一件事是应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,...
  • 规则 1:绝不要信任外部数据或输入关于 Web 应用程序安全性,必须认识到的第一件事是应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,...
  • 爬虫前端安全

    千次阅读 2018-08-16 20:30:38
    搜索引擎使用网络爬虫抓取Web网页、文档甚至图片、音频、视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询; 传统网络爬虫从一个或若干个初始网页的URL(Universal Resource L...
  • 解析P2P金融的业务安全

    千次阅读 2015-10-19 15:28:28
    看了很多乙方同学们写的业务安全,总结下来,其出发点主要是在技术层面风险问题。另外捎带一些业务风险。今天我要谈的是甲方眼里的业务安全问题,甲方和乙方在业务安全的视野上会有一些区别和一些重合。在同一个问题...
  • 规则 1:绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,...
  • 代码审计[java安全编程]

    千次阅读 2018-11-28 16:28:55
    注入攻击的本质,是程序把用户输入的数据当做代码执行。这里有两个关键条件,第一是用户能够控制输入;第二是用户输入的数据被拼接到要执行的代码中从而被执行。sql注入漏洞则是程序将用户输入数据拼接到了sql语句中...
  • 信息安全发展的三个阶段:通信保密,信息安全,信息保障 Wind River的安全专家则针对IoT设备安全提出了如下建议: 安全启动 设备首次开机时,理应采用数字证书对运行的系统和软件作认证; 访问控制 采用不同...
  • 信息安全领域相关术语介绍

    千次阅读 2014-11-16 15:32:07
    信息安全领域相关术语介绍!
  • 两万余字,SpringMVC 包教包会

    千次阅读 多人点赞 2019-12-26 10:26:14
    非常容易其他视图技术集成,如 Velocity、FreeMarker 等等,因为模型数据放在特定的 API 里,而是放在一个 Model 里(Map 数据结构实现,因此很容易被其他框架使用); 非常灵活的数据验证、格式化和数据绑定...
  • flask 实现 flask Restful 什么是restful网上解释很多,怎么用flask实现restful例子也数不胜数,可自行查阅,本篇主要是不同风格实现restful时候的安全认证。...注意:flask错误或者认证失败的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,633
精华内容 7,053
关键字:

安全码用户与姓名不匹配