RSA 时序攻击
RSA的破解从理论上来讲是大数质数分解,可是就是有一些人另辟蹊径,根据你解密的时间长短就能破解你的RSA私钥。
举一个不恰当但是比较容易理解的例子:
密文0101
私钥0110
明文0100
问题的关键来了,进行&运算时如果有一个0,那么运算的时间为1ms,如果两个都是1,运算的时间是10ms(只是个假设)。
基于以上假设,就可以破解私钥了。先构造一个0001的密文,获取解密的时间,如果是1ms左右,那么对应的位就是0,
如果是10ms左右,对应的1,依次类推,就把整个私钥推断出来了。
如何防范这种攻击呢?
一种最简单有效的方法,每次过来一个密文,先用一个随机数与它&一下,然后再与私钥&,只要随机数是真正的随机数,那么
是无法破解的。注意,是真正的随机数而不是伪随机数。
RSA解密的本质就是幂模运算,也就是x = a ^ b mod n ,其中a是明文,b是私钥,n是两个大质数(p-1)(q-1)的积。由于这些
数都特别大,比如b可能有2048位,直接计算是不可行的。计算x的最经典的算法是蒙哥马利算法,用代码表示如下:
int mod(int a,int b,int n){
int result = 1;
int base = a;
while(b>0){
if(b & 1==1){
result = (result*base) % n;
}
base = (base*base) %n;
b>>=1;
}
return result;
}
这个算法从b的最低位循环到最高位,如果是1,需要进行两次模乘运算,如果是0的话则只需要一次。由于这个操作是比较耗时的,所以
0和1对应的时间差别较大。攻击者可以通过观察不同输入对应的解密时间,通过分析统计推断出私钥。而防范RSA时序攻击的方法也是在
解密时加入随机因素,让攻击者无法获取准确的解密时间。
关于随机数
真正意义上的随机数,是很难产生的,因为即使小到原子,它的规律也是有迹可循的。所以我们产生的随机数都是伪随机数,但是伪随机数的
随机性也是不一样的,如果产生的随机数规律性很强,那就很容易被预测到,而如果产生的随机数被预测的难度特别大,那么我们就可以认为
它是真随机数了,只有强度高的随机数用来加解密等操作上才是安全的。
目前大部分操作系统都会提供两种随机数的产生方式,以Linux为例,它提供了/dev/urandom和/dev/random两个特殊设备,可以从里面读
取一定长度的随机数。
(1)/dev/random是blocking pseudo random number generator (阻塞式伪随机数产生器),它是通过网络事件,键盘敲
击事件等物理上随机的事件,收集一些随机bit到熵池来产生随机数。这个随机生成函数可能因为熵池为空而等待,所以需要大量随机数的情
况下它会显得很慢,但诸如产生证书之类的操作需要这种强度的随机数。
(2)/dev/urandom就是unblocking,它不会阻塞,但是产生的随机数不够高,是以时间戳之类的种子来产生随机数。
Java可以用SecureRandom产生随机数,而且可以在JVM参数里配置是使用/dev/random还是/dev/urandom,如果安全性要求改,就用
/dev/random,但是性能是就会有折扣。
出处:
RSA 时序攻击的更多相关文章
- Rails项目防止时序攻击
时序攻击属于侧信道攻击/旁路攻击(Side Channel Attack),侧信道攻击是指利用信道外的信息,比如加解密的速度/加解密时芯片引脚的电压/密文传输的流量和途径等进行攻击的方式,一个词形容就 ...
- 【译】 沙箱中的间谍 - 可行的 JavaScript 高速缓存区攻击
王龑 - MAY 27, 2015 原文连接 The Spy in the Sandbox – Practical Cache Attacks in Javascript 相关论文可在 https:/ ...
- [译] 沙箱中的间谍 - 可行的 JavaScript 高速缓存区攻击
原文 The Spy in the Sandbox – Practical Cache Attacks in Javascript 相关论文可在 https://github.com/wyvernno ...
- 密码学奇妙之旅、02 混合加密系统、AES、RSA标准、Golang代码
CTR 计数器模式 计数器模式CTR是分组密码模式中的一种.通过将逐次累加的计数器进行加密来生成密钥流的流密码.每次加密时会生成一个不同的值来作为计数器的初始值. 可以事先进行加密.解密的准备. 加密 ...
- 密码学之RSA基础
预备数论知识 互质关系 如果两个正整数,除了1以外,没有其他公因子,那么就称这两个数是互质关系 比如:4和7,13和61 欧拉函数 思考:任意给定整数n,在小于等于n的正整数中,有多少个数与n构成互质 ...
- RSA学习档案
RSA 学习档案 基本原理 随机选择两个质数p,q模数n=p*qφ(n)=(p−1)(q−1)选择加密指数e: 1 < e < φ(n)计算机密指数d: e*d % φ(n) = 1c = ...
- rsa加密初探
RSA加密算法初探 RSA加密算法是早期的非对称加密,公钥和私钥分离,公开公钥,通过确保私钥的安全来保证加密内容的安全.由麻省理工学院的罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi ...
- 【论文阅读笔记】-针对RSA的短解密指数的密码学分析(Cryptanalysis of Short RSA Secret Exponents)
目录 1. 介绍 polynomially larger 2. 连分数背景知识 3. 连分数算法 4. 连分数算法在RSA中的应用 5. 例子 6. 对RSA连分数攻击的反制 7. 对于攻击的改进 8 ...
- PHP类和函数注释大全
每次要用PHP的某个功能的时候,都要去查一下,于是决定将PHP所有类和函数都整理出来,加上注释 大致实现 将php.jar文件解压,取出目录stubs 将stubs中的所有php文件中的注释去掉,并做 ...
随机推荐
- 开源项目收集:博客系统solo
前言 一个好的项目,我不会吝啬于推荐之语.找了好久,想要一个最简单的个人博客.由于个人不怎么会写前端页面,怎么也看不到漂亮的设计.没有漂亮的前台都不知道后台需要写一些什么! 这个项目至少目前满足了我的 ...
- Scala学习笔记——函数式对象
用创建一个函数式对象(类Rational)的过程来说明 类Rational是一种表示有理数(Rational number)的类 package com.scala.first /** * Creat ...
- Redhat6.5——解决yum功能不能正常使用
以前或多或少接触过linux服务器,由于是服务器上的,很多东西也没去玩过.要想多研究,还是得自己弄一个linux系统.由于正常工作,还是接触windows更多,双系统显然没有那么方便,所以决定弄个虚拟 ...
- ViewPager PagerAdapter not updating the View
There are several ways to achieve this. The first option is easier, but bit more inefficient. Overri ...
- [Tensorflow] Object Detection API - predict through your exclusive model
开始预测 一.训练结果 From: Testing Custom Object Detector - TensorFlow Object Detection API Tutorial p.6 训练结果 ...
- [React] 11 - Redux: redux
Ref: Redux中文文档 Ref: React 讀書會 - B團 - Level 19 Redux 深入淺出 Ref: React+Redux 分享會 Ruan Yifeng, Redux 架构: ...
- 一个整型数组里除了一个数字之外,其他的数字都出现了两次。要求时间复杂度是O(n),空间复杂度是O(1),如何找出数组中只出现一次的数字
思路分析:任何一个数字异或它自己都等于0,根据这一特性,如果从头到尾依次异或数组中的每一个数字,因为那些出现两次的数字全部在异或中抵消掉了,所以最终的结果刚好是那些只出现一次的数字. 代码如下: #i ...
- react学习笔记(一)用create-react-app构建 React 开发环境
React 可以高效.灵活的用来构建用户界面框架,react利用高效的算法最小化重绘DOM. create-react-app 是来自于 Facebook,通过该命令不需配置就能快速构建 React ...
- Use a load-balancer as a first row of defense against DDOS
We’ve seen recently more and more DOS and DDOS attacks. Some of them were very big, requiring thousa ...
- TransmittableThreadLocal 解决 线程池线程复用 无法复制 InheritableThreadLocal 的问题.
ThreadLoacl,InheritableThreadLocal,原理,以及配合线程池使用的一些坑 TransmittableThreadLocal 原理 之前为了能让InheritableThr ...