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

课程学习内容总结

每次作业链接汇总

20189216 2018-2019-2 《密码与安全新技术专题》第一次作业
20189216 2018-2019-2 《密码与安全新技术专题》第二次作业
20189216 2018-2019-2 《密码与安全新技术专题》第三次作业
20189216 2018-2019-2 《密码与安全新技术专题》第四次作业
20189216 2018-2019-2 《密码与安全新技术专题》第五次作业
20189216 2018-2019-2 《密码与安全新技术专题》第六次作业
20189216 2018-2019-2 《密码与安全新技术专题》第七次作业

每次讲座内容总结

(1)讲座的主题为网络(Web)安全与与内容安全

张老师从Web应用安全和隐私安全两个方面为我们带来了一场精彩的讲座。通过这次讲座,我们知道常见的Web漏洞有如下几个:

通过这次讲座我们知道了什么是SQL注入漏洞、SQL注入分类以及如何判断等等。
还学习到什么是XSS跨站脚本攻击, XSS漏洞分为两类:①反射型XSS ②存储型XSS,认识到XSS的危害,了解持久型跨站脚本攻击场景等等。
学习什么是CSRF跨站请求伪造漏洞,跨站请求伪造(CSRF)场景,如何上传漏洞、解析漏洞,什么是弱口令等等。
在隐私安全部分介绍了用户轨迹的危害以及机器学习的启发。

(2)讲座的主题是量子密码

通过本次讲座我们知道量子密码与传统的密码系统不同,它依赖于物理学作为安全模式的关键方面而不是数学。实质上,量子密码术是基于单个光子的应用和它们固有的量子属性开发的不可破解的密码系统,因为在不干扰系统的情况下无法测定该系统的量子状态。理论上其他微粒也可以用,只是光子具有所有需要的品质,它们的行为相对较好理解,同时又是最有前途的高带宽通讯介质光纤电缆的信息载体。量子密码学的理论基础是量子力学,不同于以往理论基础是数学的密码学。如果用量子密码学传递数据,则此数据将不会被任意撷取或被插入另一段具有恶意的数据,数据流将可以安全地被编码及译码。而编码及译码的工具就是随机的序列(bit-strings),也可以称他为金钥(Key)。当前,量子密码研究的核心内容,就是如何利用量子技术在量子信道上安全可靠地分配金钥。量子密码通信现在是非常热门的问题。当下,我国必须培养这方面的人才,与国外相比,技术不能落后,只有大力发展科学技术,才能在量子密码通信的道路上越走越远!

(3)讲座主题是基于深度学习的密码分析与设计

通过这次讲座了解到密码分析与机器学习、深度学习简介与现状、深度学习与密码分析、深度学习与密码设计。金鑫老师充满活力的给我们带来一个精彩的讲座——基于深度学习的密码分析与设计。我发现人工智能需要我们的知识储备非常足,要有很好的数学基础,密码学基础等等。本次讲座使我对人工智能、机器学习和深度学习增加了系统性的认知,以及对深度学习的应用有了更为宽阔的了解。我发现自己对人工智能、深度学习有点感兴趣,可是知识储备远远不够,希望后期自己能够努力培养这方面的知识。

(4)讲座的主题是信息隐藏

通过这次讲座知道了信息隐藏是指将特定用途的消息隐蔽地藏于其他载体(Cover)中,使得它们难以被发现或者消除,通过可靠提取隐藏的信息,实现隐蔽通信、内容认证或内容保护功能 。信息隐藏主要包括水印、可视密码、隐写等。随着多媒体技术在通信领域的广泛应用和飞速发展,信息隐藏及隐写分析技术成为信息安全领域的研究热点。通过夏老师的这次课让我对信息隐藏和隐写分析技术等有了基础的了解。最重要的一点是夏老师给我们提出的四点建议让我感受颇深。首先我们要在平时学习专业课之余去看一些最新的顶会、期刊文章,增加自己的知识储备。当然,要想看懂顶会期刊就必须拥有一定的英语水平。老师建议我们去抽时间学习英语,说好英语,写好英语。作为一名计算机的学生,编程自然是少不了的。要想在科研工作上走的更远,需要拥有良好的编程能力。老师告诉我们要利用好资源,GitHub上有很多优秀的代码,很多牛人都值得我们去学习。最后一点就是不管干什么事都要放平心态,我认为老师说的非常对,我深有感触。只有遇到问题遇到麻烦不慌不忙,平心静气,踏踏实实去尽自己最大的努力完成就可以了。心态是决定你能否成功的关键因素。

(5)讲座的主题是区块链

通过这次讲座知道比特币概念、比特币交易的特点、比特币的特点、区块链技术以及区块链技术雨未来。这次讲座为我们详细地讲解了区块链的产生和发展,由匿名作者中本聪发布的《比特币:一种点对点的电子现金系统》白皮书,演化成为今天这个比特币体系。这次讲座让我对比特币、区块链的历史有了系统的了解,对于区块链的技术也有了较为详细的认识,明白了这个机制是怎么正常运作的。

(6)讲座主题为漏洞挖掘及攻防技术。

通过这次讲座,对漏洞挖掘有个基本的了解。我认为想提高漏洞挖掘能力的方法要做到细心、耐心、会看、会记、懂收集、勤动手、爱学习。 细心放在第一位,是因为细心真的是非常非常非常重要。耐心同细心一样重要,可以说是一对cp。 会看,会记就是要多看多记,多看漏洞详情,多看技术文章,漏洞详情可以在乌云看,还有网上很多人分享的案例,主要是乌云。勤动手,当你看了大量漏洞,记了大量笔记,这个时候,我相信你最需要的,就是实战,实战是可以把所学所看融会贯通的最快方法,没有之一,只有实战可以锻炼自己的挖洞能力,和效率。看到新的漏洞多去搭建环境复现,这也是对能力的一种提升。

自认为写得最好一篇博客是?为什么?

20189216 2018-2019-2 《密码与安全新技术专题》第二次作业
这篇博客的是关于量子密码的。通过老师上课的内容来进行归纳总结,从研究背景、量子密码基本物理概念、典型协议和基本模型三个方面。对上课中存在的疑问以及对有关知识点的理解不透彻课后查询资料,如对薛定谔的猫的概念的理解、量子Grover算法等等。量子密码学的理论基础是量子力学,不同于以往理论基础是数学的密码学。如果用量子密码学传递数据,则此数据将不会被任意撷取或被插入另一段具有恶意的数据,数据流将可以安全地被编码及译码。而编码及译码的工具就是随机的序列(bit-strings),也可以称他为金钥(Key)。另外就量子密钥分发这个方面查阅了顶会上的最新的论文,理解其最新研究现状。

各组同学汇报总结

(1)Finding Unknown Malice in 10 Seconds: Mass Vetting for New Threats at the Google-Play Scale

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

检测思路如下:

核心技术结构:
MassVet结构

(2)[Spectre Attacks: Exploiting Speculative Execution](file:///C:/Users/lenovo/AppData/Local/Temp/HZ$D.665.1630/HZ$D.665.1631/1801.01203.pdf)

通过他们的汇报知道什么是预测执行。简单来说就是一些具有预测执行能力的新型处理器,可以估计即将进行的指令,采用预先计算的方法来加快整个处理过程。预测执行的设计理念是为了加速大概率事件。预测执行是高速处理器使用的一种技术,通过考虑可能的未来执行路径并提前地执行其中的指令来提高性能。例如,当程序的控制流程取决于物理内存中未缓存的值时,可能需要几百个时钟周期才能知道该值。除了通过空闲浪费这些周期之外,过程还会控制控制流的方向,保存其寄存器状态的检查点并且继续在推测的路径上推测性地执行该程序。当值从存储器中偶然到达时,处理器检查最初猜测的正确性。如果猜测错误,则处理器将寄存器状态恢复为存储的检查点并丢弃(不正确的)预测执行,如果猜测是正确的,则该部分代码已被执行过,不需要再次执行,因此带来了显著的性能增益。可以发现,如果预测错误,即便程序真正执行到这里时错误结果被丢弃,但错误的结果还是短暂的出现在寄存器中,在被丢弃之前,这部分数据就很容易被泄露。
Spectre Attacks(幽灵攻击)
现代处理器使用分支预测和推测执行来最大化性能。 例如,如果分支的目标取决于正在读取的内存值,则CPU将尝试获取目标并尝试提前执行。 当内存值最终到达时,CPU丢弃或提交推测计算。 推测逻辑在执行方式上是不忠实的,可以访问受害者的内存和寄存器,并且可以执行具有可测量副作用的操作。
幽灵攻击涉及诱使受害者以规范的方式执行在正确的程序执行期间不会发生的操作以及泄漏受害者的操作,可以通过侧信道向外界提供的机密信息。幽灵攻击结合了来自侧信道攻击,故障攻击和回归导向编程的方法,可以从受害者的内存中读取任意任意位置的内容。 更广泛地说,推测性执行实施违反了支持数字软件安全机制的安全假设,包括操作系统进程分离,静态分析,容器化,即时(JIT)编译以及对缓存的定时/侧通道攻击的对策。 这些攻击对实际系统构成严重威胁,因为在用于数百万台设备的英特尔,AMD和ARM的微处理器中发现了漏洞预测执行的功能。
幽灵攻击就像字面所说的意思一样,来无影去无踪,当攻击发生时受害者在毫无察觉的情况下就被CPU的预测执行功能“出卖”了。
攻击过程及结果
攻击流程图如下:

获取目标内存地址的技术本论文没有介绍,个人以为可以堆内存地址进行监控,选择频繁被修改的地址。
攻击示例程序中的受害代码采用上面的例子,交替输入有效和恶意的参数:

在通过直接读取该处cache中的值确定攻击是否命中,当读取速度小于某个经验值时,则认为该数据在高速缓存中,判断为命中。当命中某个数值达到一定次数时判定命中结果:

相似的攻击手段:meltdown
Meltdown是一种类似的微体系结构攻击,它利用无序执行来泄漏目标的物理内存。 Meltdown在两个主要方面与Spectre Attacks截然不同。 首先,与Spectre不同,Meltdown不使用分支预测来实现推测执行。 相反,它依赖于观察,当一条指令导致一个软中断时,正在无序执行的指令中止。第二,Meltdown利用特定于英特尔处理器的特权升级漏洞,由此 推测执行的指令可以绕过内存保护。 结合这些问题,Meltdown从用户空间访问内核内存。 此访问会导致软中断,但在发出软中断之前,访问后面的代码会通过缓存通道泄漏所访问内存的内容。与Meltdown不同,Spectre攻击适用于非Intel处理器,包括AMD和ARM处理器。 此外,KAISER补丁已被广泛应用于对Meltdown攻击的缓解,但不能防止幽灵攻击。

(3)[AllYourGPSAreBelongToUs: TowardsStealthyManipulationofRoadNavigationSystems](file:///C:/Users/lenovo/AppData/Local/Temp/HZ$D.226.3854/HZ$D.226.3855/security18gps.pdf)

他们所选论文主要探讨了对道路导航系统进行隐身操纵攻击的可行性目标是触发假转向导航,引导受害者到达错误的目的地而不被察觉。其主要想法是略微改变GPS位置,以便假冒的导航路线与实际道路的形状相匹配并触发实际可能的指示。为了证明可行性,该论文首先通过实施便携式GPS欺骗器并在真实汽车上进行测试来执行受控测量。然后,该论文设计一个搜索算法来实时计算GPS移位和受害者路线。该论文使用追踪驾驶模拟(曼哈顿和波士顿的600辆出租车道路)进行广泛的评估,然后通过真实驾驶测试(攻击我们自己的车)来验证完整的攻击。最后,该研究组在美国和中国使用驾驶模拟器进行欺骗性用户研究,结果显示95%的参与者遵循导航没有意识到这种攻击就到了错误的目的地。论文提出了一种秘密操纵道路导航系统的攻击方法。该算法利用了现实中出租车行驶轨迹,并对算法进行了广泛的评估,实现了攻击算法和一个低成本的便携式GPS欺骗器.在道路上的实际测量和驾驶测试证实了攻击的可行性,证明在道路行驶过程中人为的因素可以影响攻击是否成功。这些结果表明,有些司机常见的驾驶习惯大概率会让他们遭受到GPS欺骗攻击,并对结果进行了分析和提出了相应的对策。
论文的研究思路
1、首先本文介绍了两种攻击GPS信号的方法强制接管和平滑接管。强制接管,欺骗者只是以高功率发送错误信号,导致受害者失去对卫星的跟踪并锁定更强的欺骗信号。平滑接管,接管开始于发送与原始信号同步的信号,然后逐渐超过原始信号以引起迁移。平滑接管隐秘性,强制接管会在接收到的信号强度中产生异常跳跃,平滑接管需要特殊的硬件来实时跟踪并与受害者位置处的原始信号同步,价格更加昂贵。
2、接下来介绍了本文使用的便携式的欺骗设备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移动电源作为整个系统的电源。所有组件都是现成的。总费用大约是223美元(175美元+ 35美元+ 10美元+ 3美元)。

3、接着分析了GPS欺骗的可行性:如果攻击者随机改变导航设备的GPS信息,则驾驶员可以容易地注意到路线信息与物理路况之间的不一致。例如,欺骗的GPS位置可以触发导航系统指示“转弯”,但是在实际道路上没有办法向左转。为了让驾驶员相信他在原始路线上驾驶。如何使攻击更加隐蔽?关键是要找到一条模仿真实道路形状的虚拟路线。在这样,导航指令可以与物理世界保持一致。另一个影响因素是导航系统通常会显示第一人称视角。司机没有看到整个路线,而是关注当前路线和下一个转弯,这可能会增加攻击者成功的机会。
4、攻击的原理:

(1)受害者是纽约市的旅行者,他不熟悉该地区,因此依靠GPS应用程序进行导航。
(2)图3a显示受害者正在从新泽西州的汉密尔顿公园(P)开车到曼哈顿的帝国大厦(D)。
(3)假设攻击者接管受害者在Lincoln Tun nel(A)出口处的GPS接收器,如图3c所示。
(4)攻击者创建错误的GPS信号以将GPS位置设置为附近的“主机”位置B.为了应对错误的位置漂移,导航系统将重新计算B和D之间的新路线。我们称之为新的路线鬼魂路线。
(5)在物理道路上,受害者仍然在位置A并开始按照应用程序的逐向导航。同时,导航应用程序不断接收欺骗的GPS信号。最终,受害者将最终到达不同的地方C.注意B与D的路线形状类似于A与C的路线。
(6)也即是受害者的原始导航路线为P→D; 在位置A,欺骗者将GPS设置为幻影位置B,其迫使导航系统生成新的路线B→D。在逐向导航之后,受害者实际上在物理世界中从A行进到C。
5、攻击的算法

(1)基本攻击算法

如算法1所示,基本算法首先从距离绑定Ω的所有连接点中,从实际位置Loca中选择一个鬼位置Loca。然后, 计算从鬼位置到目的地的鬼导航路由Γg=(SG1,Sg2,.,sgm)。为了找到更多的受害者路线尽可能,我们通过m深度宽度优先搜索从实际位置遍历图.我们在每一步都保持符合以下条件的候选路线:

  • 转向模式匹配:为了确保幽灵路由的导航指令可以应用于受害者路由,我们需要匹配两条路由的转弯模式:φ(svi,svi 1)和φ(Sgi), SGI 1)∈相同的机动指令类别。
  • 分段长度匹配:给定一个速度刻度因子Ω速度,鬼魂的旅行距离应在(1±Ω)倍于受害者实际TRA的范围内 每个节段上的距离一样,这保证了在重影和受害者路由上的段长度是相似的。

(2)迭代攻击算法

在基本攻击中,攻击者只将GPS位置从LOCA移动到LOCF。这里,我们提出了一种迭代攻击,使攻击者能够在不同位置创建多个漂移, 受害者正在开车。通过迭代地应用基本攻击算法,可以显著提高攻击性能,因为可以使用部分匹配的受害者-重影路由,在受害者移动时搜索新路线。如算法2所示,对于每次迭代,我们首先检查攻击目标是否已经实现。如果不是,我们在新幽灵r上创建另一个位置移位。 从前一次迭代中提取出分段,并应用基本的搜索算法。攻击者的目标可能是“到达预先定义的目标”或“输入错误的方式”,这有助于终止 早期搜索。

(4)[With Great Training Comes Great Vulnerability: Practical Attacks against Transfer Learning ](file:///C:/Users/lenovo/AppData/Local/Temp/HZ$D.802.4647/HZ$D.802.4649/第4组%2020189214%2020189217/translearn-usenixsec18.pdf)

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

(2)迁移学习方法
根据训练过程中被冻结的层数K,可以把迁移学习分为以下3种方法:深层特征提取器(Deep-layer Feature Extractor)、中层特征提取器(Mid-layer Feature Extractor)、全模型微调(Full Model Fine-tuning)。

  • Deep-layer Feature Extractor:K=N-1,学生任务与教师任务非常相似,需要的训练成本最小
  • Mid-layer Feature Extractor:K<N-1,允许更新更多的层,有助于学生为自己的任务进行更多的优化
  • Full Model Fine-tuning:K=0,学生任务和教师任务存在显著差异,所有层都需要微调

对迁移学习的攻击
(1)对抗性攻击
由于机器学习算法的输入形式是一种数值型向量(numeric vectors),所以攻击者就会通过设计一种有针对性的数值型向量从而让机器学习模型做出误判,这便被称为对抗性攻击。
和其他攻击不同,对抗性攻击主要发生在构造对抗性数据的时候,之后该对抗性数据就如正常数据一样输入机器学习模型并得到欺骗的识别结果。如给一个输入图像加入不易察觉的扰动,使模型将输入图像误分类成其他类别。
对抗性攻击可分为白盒攻击和黑盒攻击。
白盒攻击:攻击者能够获知分类器的内部体系结构及所有权重。它允许攻击者对模型进行无限制的查询,直至找到一个成功地对抗性样本。这种攻击常常在最小的扰动下获得接近100%的成功,因为攻击者可以访问深度神经网络的内部结构,所以他们可以找到误分类所需的最小扰动量。然而白盒攻击一般被认为是不切实际的,因为很少会有系统公开其模型的内部结构。
黑盒攻击:攻击者不知道受害者的内部结构,攻击者要么尝试反向工程DNN的决策边界,建一个复制品用于生成对抗样本,要么反复查询生成中间对抗样本并不断迭代改进。黑盒攻击容易被防御。

对抗样本是对干净图像进行处理后的样本,被故意扰乱(如加噪声等)以达到迷惑或者愚弄机器学习技术的目的,包括深度神经网络。

(2)本文攻击模式
由于当前模型的默认访问模式是:

  • 教师模型被深度学习服务平台公开。
  • 学生模型离线训练且不公开。
    本文提出了一个新的针对迁移学习的对抗性攻击,即对教师模型白盒攻击,对学生模型黑盒攻击。攻击者知道教师模型的内部结构以及所有权重,但不知道学生模型的所有权值和训练数据集。

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

(4)如何计算扰动
本文通过求解一个有约束的最优化问题来计算扰动。目标是是模拟隐藏层第K层的输出向量,约束是扰动不易被人眼察觉。即在扰动程度perturb_magnitude小于一定约束值(扰动预算P)的前提下,最小化对抗样本(扰动后的source image)第K层的输出向量与target image 第K层的输出向量的欧式距离。前人计算扰动程度都是使用Lp范数,但是它无法衡量人眼对于图像失真程度的感知。所以本文使用DSSIM计算扰动程度,它是一种对图像失真度的客观测量指标。

DSSIM

(5) 目标攻击/非目标攻击
目标攻击:将source image x_s 误分类成target image s_t 所属标签

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

非目标攻击需要确定一个“方向”把source image推出它自己的决策边界。但是要预测这个“方向“是非常难的,所以本文的解决方法是,把每个目标攻击的攻击目标都试一遍,然后选出与source image第K层输出向量距离最小的类别作为目标。

(6)影响攻击效果的因素

  • 扰动预算P
    扰动预算P的选择直接关系到攻击的隐蔽性。P越小攻击成功率越低,通过使用DSSIM度量方法测量图像失真,我们发现P=0.003是人脸图像的一个安全阈值。其对应的L2范数值明显小于前人的结果。
  • 距离度量方法
    距离度量方法也会影响攻击效果,使用DSSIM产生的扰动不易察觉,使用L2的扰动更明显。DSSIM能考虑到图像的潜在结构,而L2平等对待每一个像素,并经常在脸部产生明显的“纹身样” 图案。
  • 迁移学习方法
    迁移学习方法也非常影响攻击效果,本文的攻击对于Deep-layer Feature Extractor是非常有效的,但对于Full Model Fine-tuning无效。

(7)如何选择攻击层
攻击者首先要判断学生模型是否使用了Deep-layer Feature Extractor,因为它是最易被攻击的方法。
如果学生模型的迁移学习方法是Deep-layer Feature Extractor ,攻击者需要攻击第N-1层以获得最佳的攻击性能;
如果学生模型的迁移学习方法不是Deep-layer Feature Extractor ,攻击者可以尝试通过迭代瞄准不同的层,从最深层开始,找到最优的攻击层。

(8) 给定学生模型确定其教师模型

前面我们的误分类攻击是假设了攻击者知道教师模型是哪个的,接下来我们放宽这个条件,考虑攻击者不知道教师模型是哪个的情况。今天的深度学习服务(Google Cloud ML, Facebook PyTorch, Microsoft CNTK)会帮用户从一系列教师模型中生成学生模型。这种情况下,攻击者就得自己寻找他要攻击的学生模型对应的教师模型。本文设计了一种指纹方法,只需要对学生模型进行少量图像查询就可以确定他的教师模型。
我们假设给定一个学生模型,攻击者可以知道它的教师模型候选池,候选池中的一个教师模型生成了该学生模型。这个假设是现实的,因为对于常规的深度学习任务,目前只有少数几个公开可用的高质量、预训练过的模型。比如Google Cloud ML 给图像分类任务提供的是Inception v3 , MobileNet及其变体作为教师模型。所以攻击者只需要在这一组候选模型中识别。

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

(5)[Safeinit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities](file:///C:/Users/lenovo/AppData/Local/Temp/HZ$D.599.4880/HZ$D.599.4881/safeinit.pdf)

safeinit
llvm/clang架构

LLVM包括了一个狭义的LLVM和一个广义的LLVM。广义的LLVM其实就是指整个LLVM编译器架构,包括了前端、后端、优化器、众多的库函数以及很多的模块;而狭义的LLVM其实就是聚焦于编译器后端功能(代码生成、代码优化等)的一系列模块和库。Clang是一个C++编写、基于LLVM的C/C++/Objective-C/Objective-C++编译器。Clang是一个高度模块化开发的轻量级编译器,它的编译速度快、占用内存小、非常方便进行二次开发。上图是LLVM和Clang的关系:Clang其实大致上可以对应到编译器的前端,主要处理一些和具体机器无关的针对语言的分析操作;编译器的优化器部分和后端部分其实就是我们之前谈到的LLVM后端(狭义的LLVM);而整体的Compiler架构就是LLVM架构。
safeinit架构
1)通过调整工具链来确保所有堆栈和堆分配始终初始化,从而减轻通用程序中的这些错误。 SafeInit在编译器级别实现。
2)必须在编译器本身内完成。 只需在编译过程中传递额外的加固标记即可启用SafeInit。

如图编译器在获得C/C++文件后,编译器前端将源文件转换为中间语言(IR),通过初始化、代码优化结合现存编译器的优化器,之后通过无效数据消除、强化分配器最后获得二进制文件。Safeinit在整个过程中所添加的就是 初始化全部变量、优化以及强化分配器,来避免或缓解未初始化值。最后,SafeInit优化器提供了非侵入式转换和优化,它们与现有的编译器优化(必要时自行修改)以及最终组件(现有“死存储消除”优化的扩展)一起运行。这些构建在我们的初始化传递和分配器之上,执行更广泛的删除不必要的初始化代码,证明我们的解决方案的运行时开销可以最小化。
初始化:保证堆和栈内的局部变量全部初始化
SafeInit在首次使用之前初始化所有局部变量,将局部变量看做新分配的变量处理。SafeInit通过修改编译器编译代码的中间表示(IR),在每个变量进入作用域后进行初始化(例如内置memset)。
强化分配器
1)SafeInit的强化分配器可确保在返回应用程序之前将所有新分配的内存清零。——敏感数据的保护
2)通过修改现代高性能堆分配器tcmalloc来实现我们的强化分配器。——提高性能
3)修改了LLVM,以便在启用SafeInit时将来自新分配的内存的读取视为返回零而不是undef。 ——初始化数据
优化器:可在提高效率和非侵入性的同时提高SafeInit的性能。优化器的主要目标是更改现有编译器中可用的其他标准优化,以消除任何不必要的初始化。
1)存储下沉:存储到本地的变量应尽可能接近它的用途。
2)检测初始化:检测初始化数组(或部分数组)的典型代码
字符串缓冲区
3)用于存储C风格的以空字符结尾的字符串的缓冲区通常仅以“安全”方式使用,其中永远不会使用超出空终止符的内存中的数据。传递给已知C库字符串函数(例如strcpy和strlen)的缓冲区是“安全的”,优化器检测到该缓冲区始终被初始化,可以删除掉该缓冲区的初始化代码。
无效存储消除(DSE):可以删除总是被另一个存储覆盖而不被读取的存储。
1)堆清除:所有堆分配都保证初始化为零,使用零存储删除堆内存
2)非恒定长度存储清除:为了删除动态堆栈分配和堆分配的不必要初始化
3)交叉块DSE:可以跨多个基本块执行无效存储消除
4)只写缓冲区:通过指定该缓冲区只用来存储而不是删除,就可以将该缓冲区删除
评估
本测试的基线配置是clang/LLVM的未修改版本,以及tcmalloc未修改版本。
基准测试运行在(4核)Intel i7-3770上,内存为8GB,运行(64位)Ubuntu 14.04.1。 禁用CPU频率缩放,并启用超线程。
安全

开销

(6)[Manipulating Machine Learning: Poisoning Attacks and Countermeasures for Regression Learning](file:///C:/Users/lenovo/AppData/Local/Temp/HZ$D.273.782/HZ$D.273.783/20189221_郭开世/操纵机器学习.pdf)

作者对线性回归模型的中毒攻击及其对策进行了第一次系统研究。作者提出了一个针对中毒攻击和快速统计攻击的新优化框架,该框架需要对培训过程的了解很少。作者还采用原则性方法设计一种新的鲁棒防御算法,该算法在很大程度上优于现有的稳健回归方法。作者在医疗保健,贷款评估和房地产领域的几个数据集上广泛评估作者提出的攻击和防御算法。作者在案例研究健康应用中证明了中毒攻击的真实含义。作者终于相信,作者的工作将激发未来的研究,以开发更安全的中毒攻击学习算法。
系统架构:

TRIM算法及成果:


相关数据:





(7)[ConvolutionalNeuralNetworksforSentenceClassification](file:///C:/Users/lenovo/AppData/Local/Temp/HZ$D.256.2020/HZ$D.256.2021/第七组+20189230/(原文)Convolutional%20Neural%20Networks%20for%20Sentence%20Classification.pdf)

论文报告了一系列的卷积神经网络(CNN)的实验,这些实验是在预先训练过的单词向量的基础上训练的,用于句子级的分类任务。作者发现,一个简单的CNN具有很少的超参数调整和静态向量,在多个基准点上都能达到很好的效果。通过微调学习特定于任务的向量可以进一步提高性能。此外,作者还建议对体系结构进行简单的修改,以允许使用特定于任务的向量和静态向量。本文所讨论的CNN模型改进了7项任务中的4项,包括情绪分析和问题分类。
模型介绍

用一张释义更明确的图来讲解该模型的结构:

感想和体会

自己的收获
通过本学期对该课程的学习,让我印象最深的就是王老师这种授课模式。总共八次课,前六次每次的专题都不一样,由不同的老师来讲解。然后让我们自己去顶会找一篇论文来阅读理解,最后两次课由我们上台汇报自己所学所看。因为准备跟着导师做的课题是密码分析。在六次讲座中,其中一个老师说的量子密码,一个老师讲的是基于深度学习的密码分析与设计。我对这两个专题讲座很是感兴趣。在之前,我对密码分析的认识很片面,将密码分析分为以下五种情形:
(1)惟密文攻击(Ciphertext only)
对于这种形式的密码分析,破译者已知的东西只有两样:加密算法、待破译的密文。
(2)已知明文攻击(Known plaintext)
在已知明文攻击中,破译者已知的东西包括:加密算法和经密钥加密形成的一个或多个明文—密文对,即知道一定数量的密文和对应的明文。
(3)选择明文攻击(Chosen plaintext)
选择明文攻击的破译者除了知道加密算法外,他还可以选定明文消息,并可以知道对应的加密得到的密文,即知道选择的明文和对应的密文。例如,公钥密码体制中,攻击者可以利用公钥加密他任意选定的明文,这种攻击就是选择明文攻击。
(4) 选择密文攻击(Chosen ciphertext)
与选择明文攻击相对应,破译者除了知道加密算法外,还包括他自己选定的密文和对应的、已解密的原文,即知道选择的密文和对应的明文。
(5)选择文本攻击(Chosen text)
选择文本攻击是选择明文攻击与选择密文攻击的结合。破译者已知的东西包括:加密算法、由密码破译者选择的明文消息和它对应的密文,以及由密码破译者选择的猜测性密文和它对应的已破译的明文。
金鑫老师生动给我们上了一课,基于深度学习的密码分析与设计。通过那次课发现自己要提高的东西太多,如英语水平,数学基础,密码学知识储备,查阅文献资料,搜索资料的能力。我想王老师最后两次课让我们自己去学习顶会论文,自己去理解论文,代码复现,意图就是为了我们提前做好准备,提前接触顶会论文,对大牛发的论文,对自己感兴趣的研究方向上有一定的认识,为我们研二做项目写论文提前做准备,到那个时候不会无处下手。
自己需要改进的地方
课程的前半部分往往比较认真,随着课程深入,其他课程的任务比较重,可能投入的认真程度有一定下降。就是认真努力地程度还有待提高,与自己的目标的还有很大的距离,不能把零碎的时间用来学习,学习的效率没有达到理想的状态。

对本课程的建议和意见

首先,老师这种教学方式很新颖,第一次一门课程由六个老师来讲解。我认为这样很好,六个老师有六个不同的上课风格,总有一款适合学生。我觉得老师每次让我们就一个专题学习后写一篇博客,这样可以让我们对专题知识点的总结,可以起到一定的记忆和回顾作用。但是我认为最好的作业应该由上课的老师来布置,比如有的知识就需要实践跑代码的等等。而且每次由不同的老师来布置,其风格和老师上课的风格必然是一致的,这样会让作业更加新颖,不会那么单调枯燥。另外我认为授课老师应该多加强与学生的互动。不同的学生的专业、兴趣、爱好都是不一样的。所以最后一次的论文理解与代码复现我觉得范围可以放的更大一点,可以由学生自己的研究方向来定,这样应该会理解的更透彻一点,更明白一点。

posted @ 2019-06-09 20:25  鲍政李20189216  阅读(592)  评论(0编辑  收藏  举报