第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗?
第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗?
几个月前(回到3月份),您可能还记得我在这个系列的52件东西中发布了第23件(可以在这里找到)。这篇文章的标题是“编写一个C程序来实现蒙哥马利算法”,并包含了实现的一部分。在本文中,我们将研究这个实现,并了解它如何泄漏信息,从而对泄漏的情况有一个实际的了解。
在继续之前,我想提醒你一下我的上一篇文章,它研究了SPA和DPA攻击的区别。从那里你会记得,SPA攻击使用一个或很少的痕迹的发现趋势和工作模式(如时间或指令序列)而DPA攻击使用很多的痕迹,旨在推导算法的中间值,因此秘密信息通过使用机密数据和正确的泄漏模型的假设。之前看蒙哥马利乘法算法从一开始就那么值得说明的是,如果假设的秘密数据和相应的泄漏模型可以推导出算法,DPA攻击方式可以用来得到中间值将意味着该算法将泄漏被处理的数据。因此,如果这些数据是秘密的,那么我们已经可以说,通过使用DPA风格的攻击,这个算法将会泄漏。
然而,正如我在上一篇文章中提到的,我们知道DPA风格的攻击比SPA要难得多,因为它们需要形成秘密数据假设的能力,更多的痕迹和它们的成功将在很大程度上取决于设备产生的噪音。接下来的问题是,我们的实现将如何被利用正在执行的指令的时间或顺序等内容,实现SPA泄露攻击。为了理解这件事,我将算法分成了四个阶段,我们感兴趣的是条件语句或循环之类的东西,因为它们可能被用于时间侧信道攻击。
1.GCD操作
这里我们进行了一个GCD操作,为了计算\(r^{-1}\)和\(m\)满足\(rr^{-1} = 1 + mm^{'}\)。如果我们假设因此,如果我们假设扩展gcd操作的算法在恒定时间内运行,那么我们可以假设该操作是安全的。
2.将乘数转换到蒙哥马利空间
这个阶段计算\(abar = ar \mod m\)和\(bbar = br \mod m\),因此这是一个简单操作,常数运行时间不会泄露信息。
3.进行蒙哥马利乘法运算
条件语句会泄露侧信道信息!
首先指令if (ulo<tlo) uhi=uhi+1会让我们在特定平台进行实现的时候,通过观察执行时间或功率跟踪,可以了解是否执行了这个条件,以及这些ulo是否高于tlo。
另外指令if (ov>0||ulo>=m) ulo=ulo-m,这回暴露条件是否达到,然后泄露内部值的信息。
4.取逆操作
这里我们计算了\(ur^{-1} \mod m\) ,实际上就是\(ab \mod m\)。就像阶段1和2没有泄漏一样,我们也可以说这个阶段不会泄漏。
第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗?的更多相关文章
- Bristol大学密码学博士生的五十二个知识点
		
Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...
 - 第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么
		
第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Al ...
 - NeHe OpenGL教程 第四十二课:多重视口
		
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
 - 网站开发进阶(四十二)巧用clear:both
		
网站开发进阶(四十二)巧用clear:both 前言 我们在制作网页中用div+css或者称xhtml+css都会遇到一些很诡异的情况,明明布局正确,但是整个画面却混乱起来了,有时候在IE6下看的很正 ...
 - Gradle 1.12用户指南翻译——第四十二章. Announce插件
		
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
 - SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关
		
0x1普通测试方式 (1)输入and1=1和and1=2测试,返回错误,证明存在注入 (2)union select联合查询 (3)查询表名 (4)其他 payload: ,( ,( 0x2 堆叠注入 ...
 - “全栈2019”Java第四十二章:静态代码块与初始化顺序
		
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
 - 第四十九个知识点:描述在IPsec和TLS后的基本想法
		
第四十九个知识点:描述在IPsec和TLS后的基本想法 网络安全协议(Internet Protocol Security,IPsec)和安全传输层协议(Transport Layer Securit ...
 - 第四十八个知识点:TPM的目的和使用方法
		
第四十八个知识点:TPM的目的和使用方法 在检查TPM目的之前,值得去尝试理解TPM设计出来的目的是为了克服什么样的问题.真正的问题是信任.信任什么?首先内存和软件运行在电脑上.这些东西能直接的通过操 ...
 
随机推荐
- 学习java 7.17
			
学习内容: 计算机网络 网络编程 网络编程三要素 IP地址 端口 协议 两类IP地址 IP常用命令: ipconfig 查看本机IP地址 ping IP地址 检查网络是否连通 特殊IP地址: 127. ...
 - admire, admit
			
admire 当别人admire你时,小心掉进泥潭(mire).词源:to wonder. wonderful夸人,awful骂人,awesome夸人.admiral与admire词源不同,碰巧长得像 ...
 - Struts 2 基础篇【转】
			
转载至 : http://www.blogjava.net/huamengxing/archive/2009/10/21/299153.html Struts2架构图 有视频讲解百度一下就可以找到了 ...
 - 【编程思想】【设计模式】【行为模式Behavioral】访问者模式Visitor
			
Python版 https://github.com/faif/python-patterns/blob/master/behavioral/visitor.py #!/usr/bin/env pyt ...
 - 【Spring Framework】Spring注解设置Bean的初始化、销毁方法的方式
			
bean的生命周期:创建---初始化---销毁. Spring中声明的Bean的初始化和销毁方法有3种方式: @Bean的注解的initMethod.DestroyMethod属性 bean实现Ini ...
 - 【Java 基础】Java动态代理
			
Java动态代理InvocationHandler和Proxy java动态代理机制中有两个重要的类和接口InvocationHandler(接口)和Proxy(类),这一个类Proxy和接口Invo ...
 - eclips 配置一个tomcat,启动多个不同端口的web项目
			
前提: 记录这个文章是因为在网上查资料,很多都是,用eclips.配置多个tomcat,就像下面图这样配置两个tomcat 去启动不同的web: 运动多个web 项目,设置不同的端口,需要多个tomc ...
 - Python enumerate():使用计数器简化循环
			
摘要:当您需要计数和迭代中的值时,Pythonenumerate()允许您编写 Pythonicfor循环.最大的优点enumerate()是它返回一个带有计数器和值的元组,因此您不必自己增加计数器. ...
 - JavaXML解析的四种方法(连载)
			
1. xml简介 XML:指可扩展标记语言, Extensible Markup Language:类似HTML.XML的设计宗旨是传输数据,而非显示数据. 一个xml文档实例: 1 <?xml ...
 - Redis慢查询配置和优化
			
目录 一.介绍 二.参数配置 sql动态配置 配置文件设置 三.sql操作 四.优化 一.介绍 慢查询只记录redis执行时间,并不记录redis服务到客户端之间的网络问题. 超过多少毫秒的才被记录 ...