Fork me on GitHub

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

课程:《密码与安全新技术专题》
班级: 1892班
姓名: 李炀
学号:20189215
上课教师:谢四江
必修/选修: 选修

PART1 教师讲座

1.web安全和内容安全

博客链接:https://www.cnblogs.com/jsjliyang/p/10464346.html
本次讲座主要学习了网络安全以及网络内容安全相关的知识,介绍了web安全和内容的含义,以及背景、发展现状等。我们了解到常见的web漏洞,比如SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造、验证不充分之上传漏洞、弱口令、社会工程学等等。也介绍了在生活中一些隐私泄露的案例。最后介绍了机器学习在网络安全方面的应用,机器学习有助于解决钓鱼攻击,水坑式攻击,内网漫游,隐蔽信道检测,注入攻击,网页木马,钓鱼网站URL识别等网络安全问题。
sql注入的一个小实验:javascript:alert(document.cookie="id="+escape("x"))
document.cookie:表示当前浏览器中的cookie变量
alert():表示弹出一个对话框,在该对话框中单击“确定”按钮确认信息。
escape():该函数用于对字符串进行编码。

![](https://img2018.cnblogs.com/blog/1506992/201903/1506992-20190308211031439-1096425975.jpg)

2.量子密码基础知识与研究进展

博客链接:https://www.cnblogs.com/jsjliyang/p/10525976.html
本次讲座从薛定谔的猫讲起,为我们介绍了量子密码的基础知识与研究进展。

  • 薛定谔的猫”是薛定谔提出的一个想象实验,根据量子力学的思想,得到与传统物理学相违背的结论,猫不可能是既生又死的状态(对应量子的衰变和不衰变可以叠加)。
![](https://img2018.cnblogs.com/blog/1506992/201903/1506992-20190313203117231-1949038631.png)
本次的讲座上我主要学习到了量子的概念、量子态的表示、量子态的叠加、BB84量子密钥分配协议等知识。 - 量子态:量子比特(Qubit) |0> (水平方向) |1> (竖直方向) 量子比特还可以处在不同状态的叠加态上。 ![](https://img2018.cnblogs.com/blog/1506992/201903/1506992-20190313204514353-2075666380.png) ![](https://img2018.cnblogs.com/blog/1506992/201903/1506992-20190313204531741-129439343.png) - |0>,|1>相互正交, |+>,|->相互正交 - 量子态的可叠加性带来一系列特殊性质 + 量子计算的并行性:强大的计算能力 ![](https://img2018.cnblogs.com/blog/1506992/201903/1506992-20190313204713271-1650174840.png) + 不可克隆定理:未知量子态不可克隆 ![](https://img2018.cnblogs.com/blog/1506992/201903/1506992-20190313204801051-360603709.png) + 测不准原理:未知量子态不可准确测量 ![](https://img2018.cnblogs.com/blog/1506992/201903/1506992-20190313204906616-133501568.png) + 对未知量子态的测量可能会改变量子态 跟测量仪器有关,测量时量子会发生坍塌,根据选择的测量仪器(或者说选择的测量基)不同变为不同的状态。 - 量子密码的四个基本步骤 + 信息传输:通常同时用到量子信道和经典信道。量子信道传输量子载体(量子信道允许窃听者对传输的量子消息进行任意窃听和篡改),经典信道传输经典消息。 + 窃听检测:一般随机选择部分量子载体,比较初末状态;对比较的协议来说,窃听必然干扰量子态,进而引入错误,一旦发现存在窃听(错误率过高),则终止通信,丢弃相关数据。因为传输的是密钥(即随机数),而不是秘密消息,因此可以丢弃它们而不会因此泄露秘密。 + 纠错:纠正密钥中的错误,由于接收方随机选择测量基,会出现双方不匹配的情况。 + 保密增强:通过压缩密钥长度,将Eve(窃听者)可能获得的部分密钥信息压缩至任意小,得到安全的密钥。

3.人工智能在密码分析设计上的应用/基于深度学习的密码分析与设计

博客链接:https://www.cnblogs.com/jsjliyang/p/10651247.html
本次讲座主要介绍了机器学习、深度学习方面的基础知识以及与密码设计、密码分析相关的研究热点。分为以下几个方面来介绍:密码分析与机器学习、深度学习简介与现状、深度学习与密码分析、深度学习与密码设计。

  • 密码分析与机器学习之间有天然的相似性
    在密码分析中,攻击者试图通过推算出密钥来破解密码系统。解密函数是从一个由密钥索引的已知函数空间(解空间)求解出。攻击者的目的是发现解密函数的精确解。如果攻击者能够获取多个获取密文与明文配对来进行密码分析,其与机器学习的概念相似:机器学习的研究人员也是试图从多个样本与标签配对来进行机器学习模型的求解(训练)。
![](https://img2018.cnblogs.com/blog/1506992/201904/1506992-20190403213825861-583218407.png)
- 深度学习:深度学习是人工智能领域中,机器学习的一个分支,但是使用较广泛,研究与应用更多。
![](https://img2018.cnblogs.com/blog/1506992/201904/1506992-20190403213835377-1969701052.png)
- 深度学习与密码分析 - 基于卷积神经网络的侧信道攻击 - 基于循环神经网络的明文破译 - 基于生层对抗网络的口令破解 - 基于深度神经网络的密码基元识别 - 深度学习与密码设计 量子计算技术快速发展对密码技术产生极大的威胁和挑战,一旦实用化量子计算出现,将导致基于离散对数、整数分解的公钥密码体制直接被快速攻破,意味着当前所使用的网络信息系统不再安全。因此,未来对于新密码算法的设计需求将与日剧增,然而目前密码算法的设计还停留在人工设计阶段,较为耗时耗力,难以适应未来对密码算法设计的需求。可以利用深度学习,让机器自动设计密码算法。 - 总结 本次讲座给我打开了机器学习的大门,让我接触到了一种全新的解决问题的办法。以密码分析和设计来说,要设计和攻破一个密码对人类来说是很困难的,但是采用生成对抗网络这种方式,可以让两个模型互相训练,互相学习直到得出想要的结果,中间的过程都可以省略掉,设置好参数,最后拿到结果即可。人工智能是目前计算机技术发展的一个方向,而且与大数据时代的契合度也相当高,未来或许会出现更多更好的方法和模型。

4.信息隐藏

博客链接:https://www.cnblogs.com/jsjliyang/p/10727741.html
本次讲座主要介绍信息隐藏技术的原理、分类、隐写等,介绍了图像隐写的一些实际应用,让我发觉了图片隐写更大的作用。

  • 信息隐藏是指将特定用途的消息隐蔽地藏于其他载体中,使得它们难以被发现或者消除,通过可靠提取隐藏的信息,实现隐蔽通信、内容认证或内容保护功能。主要包括水印可视密码隐写等。
    • 鲁棒水印(Robust Watermaking)是指将与数字媒体版权或者购买者有关的信息嵌入数字媒体中,使攻击者难以在载体不遭到显著破坏情况下消除水印,而授权者可以通过检测水印实现对版权所有者或者内容购买者等表示信息的认定。
    • 可视密码(Visual Cryptography)的主要特点是恢复秘密图像时不需要任何复杂的密码学计算,而是以人的视觉即可将密码图像辨别出来。其做法是产生n张不具有任何意义的胶片,任取其中t张胶片叠合在一起即可还原出隐藏在其中的秘密信息。
    • 隐写(Steganography)是基于信息隐藏的隐蔽通信或者隐蔽存储方法,将秘密消息难以感知地隐藏在内容可公开的载体中,保护保密通信或者保密存储这些行为事实。称隐写后的载体为隐写媒体Stego。
  • 隐写
    • LSB嵌入。The Least Sifnificant Bit,最低有效位嵌入算法。
    • 矩阵嵌入。以最小的嵌入修改树木达到嵌入要传递消息的目的,可以提高嵌入效率,即利用较少的嵌入修改得到要嵌入同样数量的秘密消息。
    • 自适应隐写。“嵌入失真函数+STCs编码”(Syndrome-Trellis Codes),根据构造的嵌入失真函数计算载体图像中元素发生更改所引起的失真,利用隐写编码控制秘密信息的嵌入位置,在最小化图像总体嵌入失真的同时保证秘密信息的准确提取。包括空域自适应隐写、JPEG域自适应隐写。
  • 隐写分析
    • 高维隐写分析特征。可以尽可能多地捕获隐写对图像统计特性的影响。
    • 空域高维隐写分析特征。
    • 选择信道高维隐写分析特征。包括tSRM、maxSRM、σSRM、σspamPSRM、SCA-DCTR、SCA-PHARM、SCA-GFR等。
  • 隐写可以与卷积神经网络CNN相结合。
  • 总结
    本次讲座我学习到了很多关于信息隐藏的知识,了解到信息隐藏与密码学、加密的关系,信息隐藏也是保证信息安全传输的重要方式。讲座使我发觉图片隐写巨大的潜力与广阔的实际应用空间,令我受益匪浅。

5.区块链技术

博客链接:https://www.cnblogs.com/jsjliyang/p/10813190.html
本次讲座接介绍了区块链和比特币技术,让我们学到了一些比较新的东西,对于区块链和比特币有了比较全面的了解,搞清楚了基本原理,主要分为区块链、区块链技术、区块链与未来三个方面。

  • 比特币交易
    • 交易单:交易单记录一笔交易的具体信息,比如付款人(交易发起方的公钥)、收款人(交易接收方的公钥)、付款金额(上一笔交易信息)、付款人签名(加密后的Hash值)等。
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190505155108262-1331203387.png)
+ 如何交易:每一位所有者(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。 + 本质上,比特币的存在是通过交易单来提现。 + 交易单类似于银行的对账单,其通过记录货币的去留来证明你有多少货币,而不是提供给你具体的货币单元。 - Block + 比特币网络中,数据以文件的形式被永久记录,称之为区块(Block),Block是记录交易单的数据单元,一个Block上会记录很多交易单。 + 区块的“面容”如下图,所有区块以双向链表的方式链接起来,且每个Block都会保存其上一个Block的Hash值,就变成了区块链。
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190505155251631-1667841092.png)
+ 第一个Block没有上一节点,称为创世Block。 + Block有很多份,每个Block只记录比特币全网10分钟内的交易信息,每约10分钟产生一个新的Block。 - 挖矿 + 生产Block的过程,被形象的称为“挖矿”,生产工也被称为“矿工”。 + 一个Block被创建后,这个Block里初始就有钱(归创建这个Block者所有,此规则称为“激励”) - 第0个 – 第21万个Block,每个Block里有50个比特币 - 第21万-第42万个Block,每个Block里有25个比特币(2016年) - 依次递减,最后比特币全网中只会有2100万个比特币
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190505155157711-499601709.png)
- 最后比特币的实际可用个数应少于2100W,因为会有部分币随着拥有者的密钥丢失而永远的无法流通(尽管记录这些币的交易单还在,但谁也无法使用它) + 挖矿过程实际上就是反复去尝试寻找一个随机数(又称“幸运数”),使得将最后一个Block的hash值、当前世界中尚未被加入到任何Block的交易单、随机数三部分组织起来送入SHA256算法计算出散列值X(256位),如果X满足一定条件(比如前20位均为0),那么该节点初步获得创建Block的权利。 - 总结 在这次讲座之前,我对于区块链和比特币知识略有耳闻,有一个大概的概念,知道挖矿是计算一个数值,但没有深入、全面地了解这个方面。这次讲座为我们详细地讲解了区块链的产生和发展,由匿名作者中本聪发布的《比特币:一种点对点的电子现金系统》白皮书,演化成为今天这个比特币体系,虽然在我国比特币交易是明令禁止的,但技术是无罪的。讲座让我对区块链的知识有了全面的了解,对系统整体的运行方式和流程有了认识,这一技术还在不断地发展、扩充中,目前来看它的设计是“精妙绝伦的”,但它的机制合理性、系统安全性、系统稳定性等还需要更长时间的验证。

6.漏洞挖掘及攻防技术

博客链接:https://www.cnblogs.com/jsjliyang/p/10888408.html
本次讲座从安全漏洞介绍、漏洞挖掘技术、漏洞挖掘技术研究进展、漏洞挖掘示例4个方面介绍了漏洞挖掘技术及攻防技术,并通过具体案例的展示让我们很直观地感受到了对漏洞的攻击。

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

手工测试
补丁比对
程序分析
二进制审核
模糊测试

  • 漏洞挖掘技术进展方向向着AI、机器学习、深度学习发展。
    1. 二进制程序函数识别
      二进制程序函数识别是二进制分析的基础,对于软件漏洞分析与修复,甚至恶意软件检测、协议逆向等都至关重要。由于二进制代码缺少高级语言程序中的信息,函数的识别往往比较困难,现有的反汇编分析工具具有识别正确率低的缺陷。
      • 使用循环神经网络算法RNN进行二进制程序函数识别的模型训练。
    2. 函数相似性检测
    3. 测试用例生成
      • 在软件漏洞挖掘中,构造代码覆盖率高或脆弱性导向型的测试输入能提高漏洞挖掘的效率和针对性。
      • 可以使用机器学习来指导生成更高质量的测试输入样本
    4. 测试用例帅选
    5. 路径约束求解。
  • 循环神经网络RNN
    • RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
    • RNN结构图
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134302382-987576012.png)
+ RNN的实质:上一个时刻的网络状态信息将会作用于下一个时刻的网络状态。RNN网络还能够以时间序列展开成如下形式:
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134310481-1367567372.png)
- 总结 这次讲座为我们介绍了漏洞挖掘技术,对于漏洞挖掘我一直都比较有兴趣,但是一直感觉没有入门,这次讲座让我对漏洞挖掘的技术和发展方向都有了很多的了解。安卓平台的Xposed框架我之前也有用过,但应该是系统版本的原因,基本上模块都用不了,漏洞挖掘本身也是一项比较有趣味性的工作,以后可以往这个方向靠近一点。

PART2 同学报告

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

这篇论文开发了一种名为MassVet的新技术,用于大规模审查应用程序,而无需了解恶意软件的外观和行为方式。与通常使用重量级程序分析技术的现有检测机制不同,文中所用的方法只是将提交的应用程序与已经在市场上的所有应用程序进行比较,重点关注那些共享类似UI结构(表示可能的重新打包关系)和共性的区别。一旦公共库和其他合法代码重用被删除,这种差异/通用程序组件就会变得非常可疑。研究中,本文在一个有效的相似性比较算法之上构建了这个“DiffCom”分析,该算法将应用程序的UI结构或方法的控制流图的显著特征映射到一个快速比较的值。在流处理引擎上实施了MassVet,并评估了来自全球33个应用市场的近120万个应用程序,即Google Play的规模。最后研究表明,该技术可以在10秒内以低错误检测率审核应用程序。此外,它在检测覆盖率方面优于VirusTotal(NOD32,赛门铁克,迈克菲等)的所有54台扫描仪,捕获了超过10万个恶意应用程序,包括20多个可能的零日恶意软件和数百万次安装的恶意软件。仔细观察这些应用程序可以发现有趣的新观察结果:例如,谷歌的检测策略和恶意软件作者的对策导致某些Google Play应用程序的神秘消失和重新出现。
MassVet的结构如下图:

![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184003096-1124633071.png)

2.幽灵攻击:利用预测执行

博客链接:https://www.cnblogs.com/jsjliyang/p/10967193.html

  • 幽灵攻击利用了CPU的预测执行机制。
  • 预测执行
    通常,处理器不知道程序的未来指令流。例如,当无序执行执行条件分支指令时,会发生这种情况,该条件分支指令的方向取决于其执行尚未完成的先前指令。在这种情况下,处理器可以保存包含其当前寄存器状态的检查点,对程序将遵循的路径进行预测,并沿路径推测性地执行指令。如果预测结果是正确的,则不需要检查点,并且在程序执行顺序中退出指令。否则,当处理器确定它遵循错误的路径时,它通过从检查点重新加载其状态并沿着正确的路径继续执行来放弃沿路径的所有待处理指令。执行放弃指令,以便程序执行路径外的指令所做的更改不会对程序可见。因此,推测执行维护程序的逻辑状态,就好像执行遵循正确的路径一样。
  • 幽灵攻击涉及诱使受害者推测性地执行在正确的程序执行期间不会发生的操作,并且通过旁路分支将受害者的机密信息泄露给攻击者。论文中的幽灵攻击结合了侧信道攻击,故障攻击和面向返回编程的方法,可以从受害者的进程中读取任意内存。更广泛地说,论文说明了推测性执行实施违反了许多软件安全机制所依据的安全假设,包括操作系统进程分离,静态分析,容器化,即时(JIT)编译以及缓存时序/侧通道的对策攻击。由于在数十亿设备中使用的Intel,AMD和ARM微处理器中存在易受攻击的推测执行能力,这些攻击对实际系统构成严重威胁。
  • 欺骗推测分支训练器
    下面这段代码中,攻击者首先使用有效的x调用相关代码,训练分支预测器判断该if为真。 然后,攻击者设置x值在array1_size之外。 CPU推测边界检查将为真,推测性地使用这个恶意x读取array2 [array1 [x] * 256]。 读取array2使用恶意x将数据加载到依赖于array1 [x]的地址的高速缓存中。当处理器发现这个if判断应该为假时,重新选择执行路径,但缓存状态的变化不会被恢复,并且可以被攻击者检测到,从而找到受害者的存储器的一个字节。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190603135735621-654595576.png)
- 运行结果
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190603135754524-1762373179.png)

3.您所有的GPS都属于我们:对道路导航系统的秘密操作

  • 论文的三点贡献
    • 提出了一种秘密操纵道路导航系统的攻击方法。该算法利用了现实中出租车行驶轨迹,并对算法进行了广泛的评估。
    • 实现了攻击算法和一个低成本的便携式GPS欺骗器,在道路上的实际测量和驾驶测试证实了攻击的可行性。
    • 进行了一项用户调查研究,以证明在道路行驶过程中人为的因素可以影响攻击是否成功。这些结果表明,有些司机常见的驾驶习惯大概率会让他们遭受到GPS欺骗攻击,并对结果进行了分析和提出了相应的对策。
  • 便携式的欺骗设备HarkrfOne
    由四个组件组成,分别是HackRFOne-based前端,Raspberry Pi,便携式电源和天线。整体器件可以放在一个小盒子里,将其连接到频率范围在700 MHz至2700 MHz之间的天线,覆盖民用GPS频段L1(1575.42兆赫),Raspberry Pi 可以用作中央服务器,它运行支持SSH的Raspbian Jessie操作系统和LAMP堆栈服务器。GPS卫星信号由一个名为的开源软件生成在Raspberry Pi上运行的无线攻击发射盒(WALB)。 Raspberry Pi具有蜂窝网络连接,并支持通过SSH进行远程访问(Se-并支持通过SSH(Se-cure Shell)。通过控制Raspberry Pi,可以手动或使用脚本来获取实时GPS位置信息。使用10000 mAh移动电源作为整个系统的电源。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184019007-941195070.png)
- 攻击原理
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184025880-263276571.png)
- 如上图,基本算法首先从距离绑定Ω的所有连接点中,从实际位置Loca中选择一个ghost位置Loca。然后,计算从ghost位置到目的地的鬼导航路由Γg=(SG1,Sg2,.,sgm)。为了找到更多的受害者路线尽可能,我们通过m深度宽度优先搜索从实际位置遍历图。我们在每一步都保持符合以下条件的候选路线: + 转向模式匹配:为了确保ghost路由的导航指令可以应用于受害者路由,我们需要匹配两条路由的转弯模式:φ(svi,svi 1)和φ(Sgi), SGI 1)∈相同的机动指令类别。 + 分段长度匹配:给定一个速度刻度因子Ω速度,ghost的旅行距离应在(1±Ω)倍于受害者实际TRA的范围内 每个节段上的距离一样,这保证了在重影和受害者路由上的段长度是相似的。 - 攻击演示
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184034535-1161339576.png)
受害者是纽约市的旅行者,他不熟悉该地区,因此依靠GPS应用程序进行导航。图3a显示受害者正在从新泽西州的汉密尔顿公园(P)开车到曼哈顿的帝国大厦(D)。假设攻击者接管受害者在Lincoln Tun nel(A)出口处的GPS接收器,如图3c所示。攻击者创建错误的GPS信号以将GPS位置设置为附近的“主机”位置B.为了应对错误的位置漂移,导航系统将重新计算B和D之间的新路线。我们称之为新的路线ghost路线。在物理道路上,受害者仍然在位置A并开始按照应用程序的逐向导航。同时,导航应用程序不断接收欺骗的GPS信号。最终,受害者将最终到达不同的地方C。注意B→D的形状路线类似于A→C路线。根据攻击的目的,攻击者可以预先定义目标目的地C或者仅仅旨在转移受害者来自原始目的地D。图3:攻击示例:受害者的原始导航路线为P→D; 在位置A,欺骗者将GPS设置为ghost位置B,其迫使导航系统生成新的路线B→D。在逐向导航之后,受害者实际上在物理世界中从A行进到C。

4.伟大的训练带来巨大的弱点:针对转移学习的实际攻击

  • 迁移学习:一个小型公司借用大公司预训练好的模型来完成自己的任务。我们称大公司的模型为“教师模型“,小公司迁移教师模型并加入自己的小数据集进行训练,得到属于自己的高质量模型”学生模型”。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184044118-1984133084.png)
- 攻击思路:把source图猫误识别为target图狗 首先将target图狗输入到教师模型中,捕获target图在教师模型第K层的输出向量。之后对source图加入扰动,使得加过扰动的source图(即对抗样本)在输入教师模型后,在第K层产生非常相似的输出向量。由于前馈网络每一层只观察它的前一层,所以如果我们的对抗样本在第K层的输出向量可以完美匹配到target图的相应的输出向量,那么无论第K层之后的层的权值如何变化,它都会被误分类到和target图相同的标签。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184052168-1254465425.png)
- 复现结果 左图为source image,中图为加过扰动的对抗样本,右图为其要误分类成的target image。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184059468-493264312.png)

5.Safeinit:全面而实用的未初始化读取漏洞缓解

  • 未初始化漏洞:未初始化值的使用仍然是C / C ++代码中的常见错误。这不仅导致未定义的和通常不期望的行为,而且还导致信息泄露和其他安全漏洞。
  • 未定义行为:简单地说,未定义行为是指C语言标准未做规定的行为。编译器可能不会报错,但是这些行为编译器会自行处理,所以不同的编译器会出现不同的结果,什么都有可能发生,这是一个极大的隐患,所以我们应该尽量避免这种情况的发生。
  • 文章贡献
    • 提出了SafeInit,一种基于编译器的解决方案。
    • 通过确保栈和堆上的初始化来自动减轻未初始化的值读取。
    • 提出的优化可以将解决方案的开销降低到最低水平(<5%),并且可以直接在现代编译器中实现基于clang和LLVM的SafeInit原型实现,并表明它可以应用于大多数真实的C / C++应用程序而无需任何额外的手动工作。
    • 评估我们在CPU-intensiv占用CPU资源的操作、IO-intensive占用I/O设备的操作以及Linux内核方面的工作,并验证是否成功地减轻了现存的漏洞。
  • safeinit
    • llvm/clang架构:LVM包括了一个狭义的LLVM和一个广义的LLVM。广义的LLVM其实就是指整个LLVM编译器架构,包括了前端、后端、优化器、众多的库函数以及很多的模块;而狭义的LLVM其实就是聚焦于编译器后端功能(代码生成、代码优化等)的一系列模块和库。Clang是一个C++编写、基于LLVM的C/C++/Objective-C/Objective-C++编译器。Clang是一个高度模块化开发的轻量级编译器,它的编译速度快、占用内存小、非常方便进行二次开发。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184117932-847656551.png)
+ safeinit架构:编译器在获得C/C++文件后,编译器前端将源文件转换为中间语言(IR),通过初始化、代码优化结合现存编译器的优化器,之后通过无效数据消除、强化分配器最后获得二进制文件。Safeinit在整个过程中所添加的就是 初始化全部变量、优化以及强化分配器,来避免或缓解未初始化值。最后,SafeInit优化器提供了非侵入式转换和优化,它们与现有的编译器优化(必要时自行修改)以及最终组件(现有“死存储消除”优化的扩展)一起运行。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184126309-651505618.png)
- 实验结果的评估 下表提供了每个基准测试的allocas数量(表示局部变量的数量,偶尔的参数副本或动态分配)的详细信息。 该表还提供了(剥离的)二进制大小; 在许多情况下,初始化的影响对最终的二进制大小没有任何影响,并且在最坏的情况下它是最小的。#INITS是现有编译器优化之后剩余的大量初始化数量,并且我们的优化器已经分别运行。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184133288-1591240434.png)

6.操纵机器学习:回归学习的中毒攻击与对策

  • 论文贡献
    • 对线性回归模型的中毒攻击及其对策进行了第一次系统研究
    • 提出了一个针对中毒攻击和快速统计攻击的新优化框架
    • 采用原则性方法设计一种新的鲁棒防御算法,该算法在很大程度上优于现有的稳健回归方法
  • 系统架构
    • 理想世界:学习过程包括执行数据清理和标准化的数据预处理阶段,之后可以表示训练数据;
    • 测试阶段:模型在预处理后应用于新数据,并使用在训练中学习的回归模型生成数值预测值;
    • 对抗性世界:在中毒攻击中,攻击者在训练回归模型之前将中毒点注入训练集。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184144453-160967536.gif)
- TRIM算法
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184152321-169241138.gif)
- 实现结果
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184159601-872670047.gif)
+ 对三个数据集进行岭回归攻击的MSE,论文提出的新优化(OptP)和统计(StatP)攻击比基线更有效。OptP是根据表I的最佳最佳优化攻击。 + 在三个数据集上攻击LASSO的MSE,发现StatP和OptP能够非常有效地毒害数据集,由于基线(bgd)。OptP是根据表I的最佳优化攻击。

7.卷积神经网络用于句子分类

  • 这篇论文主要研究用于句子分类的卷积神经网络(CNN)的实验,这些实验是在预先训练过的单词向量的基础上训练的。一个简单的CNN具有很少的超参数调整和静态向量,在多个基准点上都能达到很好的效果。通过微调学习特定于任务的向量可以进一步提高性能。
  • 模型介绍
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184209206-394362983.png)
+ 输入矩阵 CNN输入矩阵的大小取决于两个因素:A.句子长度(包含的单词的个数)B.每个字符的长度。假设输入X包含m个单词,而每个单词的字嵌入(Word Embedding)长度为d,那么此时的输入就是md的二维向量。对于I like this movie very much!来说,当字嵌入长度设为5时,输入即为75的二维向量。 + 卷积过程
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184215391-293407604.png)
假设输入X包含m个单词,而每个单词的字嵌入(Word Embedding)长度为d,那么此时的输入就是md的二维向量。对于I like this movie very much!来说,当字嵌入长度设为5时,输入即为75的二维向量。 A.filter_size代表卷积核纵向上包含单词个数,即认为相邻几个词之间有词序关系,代码里使用的是[3,4,5]。 B.embedding_size就是词向量的维数。每个卷积核计算完成之后我们就得到了1个列向量,代表着该卷积核从句子中提取出来的特征。有多少卷积核就能提取出多少种特征。 + 池化过程 这篇文章使用MaxPooling的方法对Filter提取的特征进行降维操作,形成最终的特征。每个卷积的结果将变为一个特征值,最终生成一个特征向量。 - 实验结论 + CNN-rand:所有的word vector都是随机初始化的,同时当做训练过程中优化的参数; + CNN-static:所有的word vector直接使用无监督学习即Google的word2vector工具得到的结果,并且是固定不变的; + CNN-non-static:所有的word vector直接使用无监督学习即Google的word2vector工具得到的结果,但是会在训练过程中被微调; + CNN-multichannel:CNN-static和CNN-non-static的混合版本,即两种类型的输入。
![](https://img2018.cnblogs.com/blog/1506992/201906/1506992-20190616184224394-433245656.png)

PART3 感想和体会

《密码与安全新技术专题》这门课程让我接触到更多的新技术,极大地开拓了我的视野,让我接触到更多的技术和研究方向。从密码的角度出发,接触新的技术,让我看到了多种技术的结合使用,学科交叉与融合,在这之前很少能够想到可以把两个东西进行结合。每位老师上课都很用心,给我们展开一个完整的世界,同学们的论文研究也取得了很好的效果。对一篇论文的研究把课程由广度引向深度,让我们在获得更多视角的同时,能够深入理解。夏超老师给我们的四点建议也非常重要:看好论文(最新的顶会、顶刊)、学好英语(写作、听说都用得着)、练好编程(工作、科研、github)和放好心态(运气也是成功的一个因素)。总之,从这门课程中我获益匪浅。

PART4 对本课程的建议和意见

  1. 老师可以给大家一些查找论文的渠道
  2. 同学找论文研究的时候要趁早,不然时间容易不够(ˉ▽ˉ;)
  3. 课程上可以多一些实际的演示
posted @ 2019-06-16 18:47  20189215李炀  阅读(333)  评论(0编辑  收藏