RSA算法与错误敏感攻击

参见《RSA 算法的错误敏感攻击研究与实践》

RSA 算法简介

   RSA 算法原理:
1) RSA 算法密钥产生过程
(1)系统随机产生两个大素数 p p p q q q,对这两个数据保密;
(2)计算 n = p × q n = p \times q n=p×q (公开),计算欧拉函数 ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n) = (p-1)(q-1) ϕ(n)=(p1)(q1)(保密);
(3)随机选择满足 g c d ( e , ϕ ( n ) ) = 1 gcd(e, \phi(n) )=1 gcd(e,ϕ(n))=1 e ( 1 < e < ϕ ( n ) ) e (1 < e < \phi(n) ) e(1<e<ϕ(n)) 作为公钥,则加密密钥 ( e , n ) (e,n) (e,n)
(4)计算私钥 d d d,使其满足 e d ≡ 1 ( m o d ϕ ( n ) ) ed \equiv 1(\mod \phi(n)) ed1(modϕ(n)),私钥为 ( d , n ) (d,n) (d,n)
2)RSA 加解密过程
   首先,将需要加密的明文信息转化为二进制数,然后将其进行分组(分组长度根据实际需要来定),最后对每个分组进行加解密操作:
(1) 加密运算:使用公钥 e e e 和要加密的明文 m m m,进行 c = m e m o d n c = m^e \mod n c=memodn 运算即得密文;
(2)解密运算:使用私钥 d d d 和要解密的密文 c c c, 进行 m = c d m o d n m = c^d \mod n m=cdmodn 运算即得明文。

针对 RSA 算法的侧信道攻击

   目前智能卡的密码芯片很多都采用了RSA算法来保护用户个人信息。然而,如果在智能卡运行过程中没有施以任何保护,攻击者则可以轻而易举地利用侧信道信息来破译密钥。其中功耗攻击和故障攻击作为侧信道攻击中最为有效的两种攻击方法,对智能卡安全而言是一个巨大的挑战。实施功耗攻击首先要获取密码芯片运行过程中的功耗曲线,然后通过分析找到功耗曲线和密钥之间的相关性,以此来破译算法密钥;故障攻击首先要确定注入错误的时间点,然后在该点注入足够大的错误使得密码芯片运算发生错误,最后利用得到的错误输出和算法特性等来获取密钥相关信息。

功耗攻击

   Kocher等人发现可以利用密码芯片运行过程中的功耗曲线来破译加密算法密钥。简单功耗攻击正是基于这个特性,其只需获得密码芯片完整运行一次的功耗曲线就可以从中得出算法密钥。
   智能卡在执行加解密算法时,电路会根据算法的运行步骤而处于不同的状态,由于电路所处的状态不同会导致电路运行过程中的消耗功耗不同,例如当设备处于存储数据和算术运算时设备所需的功耗是不同的。SPA核心思想就是利用获取得到的功耗曲线,通过分析将电路所处的状态区分开来,从而得到算法实施过程的各个时间点,推测实际运算过程涉及到的秘密参数,以此来破译算法密钥。
  对于RSA算法来说,在加解密过程中进行最多次的是模幂运算。SPA利用这个特性,通过分析模幂运算过程中的功耗曲线来确定参与运算的指数位为1或0.其中L-R模幂算法尤为明显。L-R模幂算法如下所示:

L-R模幂算法

  在上述算法步骤2.2中,当 e i = 1 e_i=1 ei=1 时, s < − s ⋅ c m o d n s <- s\cdot c \mod n s<scmodn 就会被执行一次;当 e i = 0 e_i = 0 ei=0 时,则算法直接跳过步骤2.2。基于这一点,密钥位的不同使得算法执行不同的分支,对应的,攻击者可以从功耗曲线上看出算法执行的不同路径。因此通过检测一次完整的RSA解密过程,获取功耗曲线,从功耗曲线上就可以推测出算法的具体实现过程,从而就可以对密钥进行重构。
  从上述分析来看,采用SPA攻击RSA具有简单、高效的特点。针对SPA攻击方式的特征,其防御工作可以从几个方面展开:使攻击者不能够正确区分模乘和摸平方操作;消除算法中不平衡操作,可以对每一个比特都进行模乘和摸平方操作;在主要的运算中插入伪指令以消除或减小中间数据和功耗轨迹之间的相关性;阻止能量消耗的采集。近几年来,密码学界对功耗分析的威胁性越来越重视,并针对其防御投入很大的人力和物力,不断地提出有效的防御方案,目前具体有以下几种防护措施:减小信号强度、引入随机噪声、随机过程中断、非线性密钥升级

故障攻击

  故障攻击是指通过利用物理方法(如电磁辐射、X光、微探测或切断路线)干扰密码信息的正常工作,使密码芯片产生错误的操作,然后对密码芯片的输出进行收集和分析,从而可以得到芯片中的密钥信息。目前有很多成熟的故障攻击方法。
  针对RSA,Yen提出了一种新的思想,即,安全错误攻击(Safe-Error Attack),其主要思想如图所示:

安全错误攻击
  RSA算法执行了两个分支,分别是 operation1 和 operation2,运算完成后将结果存储在变量C当中。攻击者可以在算法执行者两个分支运算时注入错误,由于算法对错误做出了不同的反应,左边的计算没有受到影响,输出了正确的结果 C;而错误注入对 operation2产生了影响使其输出了错误的结果 C,因此根据这二者的不同,攻击者可以很直观地分辨出算法执行了哪个步骤,从而获取有关密钥的信息。
  为了防范SPA,L-R模幂算法在密钥为0时加入了虚假操作,该操作对最终的结果没有任何影响。Joye等提出了C-safe error攻击,该攻击方式正是利用上述特点,在密码芯片进行模幂运算时,注入错误的时钟频率,使得本步的计算发生错误,然后继续运算,将得到的结果和正确的输出进行比较,如果二者一致,则说明本步的密钥为0,反之,则为1。如此反复,直到得到正确的密钥。为了防御 C-safe error攻击,Joye等提出了Powering Ladder 模幂算法。

错误敏感攻击

   在FSA过程中,除了错误密文之外,攻击者还可以利用错误敏感信息。所谓错误敏感就是将错误注入到密码芯片中而恰使其好产生错误密文时的状态。当攻击者逐渐加大故障注入的强度时,可以辨别出故障开始出现和故障变得稳定时的临界状态。类似于大多数侧信道攻击,如果错误敏感信息和敏感数据之间的关系是已知的,那么FSA可以得到密钥的相关信息。
   由于在密码芯片中电路信号的转换是数据依赖的,因此可以肯定的是错误敏感信息也是数据依赖的。数据依赖的基本概念就是指电路的输入信号对电路的运行时间起确定性左右。下面使用与门、或门和异或门作为例子来解释信号时序延迟的数据依赖的一般机制。如下图所示:

数据依赖性的例子
   图中 T X T_X TX 表示信号 X X X 的延迟。对与门(a),假设 T A < T B T_A < T_B TA<TB,即信号A到达与门的速度的快于信号B。如果信号A为0,则信号C的延时取决于信号A,即 T C = T A + T A N D T_C = T_A + T_{AND} TC=TA+TAND,其中 T A N D T_{AND} TAND为与门的延时;反之,如果信号A为1,信号C的值取决于信号B,即, T C = T B + T A N D T_C = T_B + T_{AND} TC=TB+TAND。即,信号A为1,则输出结果会更慢。
   类似的,对于或门(b),仍然假设 T A < T B T_A < T_B TA<TB。如果信号A为1, T C = T A + T O R T_C = T_A + T_{OR} TC=TA+TOR;反之, T C = T B + T O R T_C = T_B + T_{OR} TC=TB+TOR。即,信号A为1时,输出会更快。由以上分析可知,一旦电路结构确定,数据依赖性的错误敏感度也会被固定。攻击者可以利用电路结构来分析得到数据依赖性,以此来获得错误敏感信息。
   相较于差分故障攻击攻击,FSA攻击不需要通过假设只有几个比特或将注入的故障限制在一个小的子空间内。即使DFA可能只需更少的错误注入次数就可以获得密钥,但是它要求攻击者必须拥有将错误注入指定位置的能力。虽然攻击者可能拥有整个攻击设备,可以对设备进行多次非入侵式的注入故障,但是它需要有大量的知识来注入预期的故障。此外,FSA所需要的信息不包括错误的输出信息。因此,对于检测到故障即停止计算的密码设备,FSA的攻击仍然是一个潜在的威胁。
   从L-R模幂算法的实现中可以看到,只要能够正确区分算法执行的是模乘操作还是模平方操作,就可以得到该比特位为1还是0。针对该特性,FSA攻击可以从模乘操作和模平方操作对错误时钟频率的不同敏感度入手,将错误时钟频率作为敏感信息来区分本步的具体操作,从而破译私钥。
   RSA在智能卡中的应用十分广泛,研究该类智能卡的错误敏感攻击和针对性的防御措施具有重要的意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/114394.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小米面试题——不用加减乘除计算两数之和

前言 &#xff08;1&#xff09;刷B站看到一个面试题&#xff0c;不用加减乘除计算两数之和。 &#xff08;2&#xff09;当时我看到这个题目&#xff0c;第一反应就是感觉这是一个数电题目。不过需要采用C语言的方式编写出来。 &#xff08;3&#xff09;不过看到大佬的代码之…

代价高昂的 IT 错误:识别并避免供应商锁定

陷入不提供所需服务的云服务器合同中可能会非常痛苦、令人沮丧且成本高昂。 供应商锁定是提供商难以切换的地方&#xff0c;这意味着企业迁移到新供应商的成本太高、破坏性太大或耗时。 这使得公司受到供应商的摆布&#xff0c;尽管该服务可能无法提供他们所需的可靠性或可扩…

【高性能计算】opencl语法及相关概念(四):结合opencv进行图像高斯模糊处理

目录 高斯模糊简介主函数&#xff1a;host端设备端函数&#xff1a;mywork.cl效果图对比 高斯模糊简介 高斯模糊是一种常用的图像处理技术&#xff0c;用于减少图像中的噪点和细节&#xff0c;并实现图像的平滑效果。它是基于高斯函数的卷积操作&#xff0c;通过对每个像素周围…

亚马逊美国站上半年“日本商店”畅销品类了解一下吧!

近日&#xff0c;亚马逊美国站公布了2023年上半年“日本商店”&#xff08;JAPAN STORE&#xff09;的热门品类以及各品类销量排名前三的商品。据了解&#xff0c;亚马逊与日本贸易振兴机构 (JETRO) 合作&#xff0c;于2021年11月推出“日本商店”&#xff0c;支持日本卖家出海…

Ansible之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…

Unity 之 参数类型之值类型参数的用法

文章目录 基本数据类型结构体结构体的进一步补充 总结&#xff1a; 当谈论值类型参数时&#xff0c;我们可以从基本数据类型和结构体两个方面详细解释。值类型参数指的是以值的形式传递给函数或方法的数据&#xff0c;而不是引用。 基本数据类型 基本数据类型的值类型参数&…

vue去掉循环数组中的最后一组的某个样式style/class

vue去掉循环数组中的最后一组的某个样式style/class 需求&#xff1a;要实现这样的排列 现状 发现&#xff0c;最后一个格子并没有跟下面绿色线对齐。 最后发现 是因为 每个格子都给了 margin-right&#xff1a;36px&#xff0c;影响到了最后一个格子 所以要 将最后一个格子的…

OpenCV(十一):图像仿射变换

目录 1.图像仿射变换介绍 仿射变换&#xff1a; 仿射变换矩阵&#xff1a; 仿射变换公式&#xff1a; 2.仿射变换函数 仿射变换函数&#xff1a;warpAffine() 图像旋转&#xff1a;getRotationMatrix2D() 计算仿射变换矩阵&#xff1a;getAffineTransform() 3.demo 1.…

浅谈城市轨道交通视频监控与AI视频智能分析解决方案

一、背景分析 地铁作为重要的公共场所交通枢纽&#xff0c;流动性非常高、人员大量聚集&#xff0c;轨道交通需要利用视频监控系统来实现全程、全方位的安全防范&#xff0c;这也是保证地铁行车组织和安全的重要手段。调度员和车站值班员通过系统监管列车运行、客流情况、变电…

【Vue】集成百度地图

Vue 集成 百度地图 1、获取百度地图 ak 密钥 2、登录网址 https://lbsyun.baidu.com/ 3、注册百度地图开放平台账号&#xff0c;填写认证信息&#xff0c;并且创建应用 安装 npm install vue-baidu-map --savemain.js import BaiduMap from vue-baidu-map;Vue.use(BaiduM…

mybatisPlus多数据源方案

背景 在微服务李娜一般一个服务只有一个数据源&#xff0c;但是在有的老项目或者一些特定场景需要多数据源链接不同的数据库&#xff0c;本文以mybatisPlus为基础给出解决方案 多数据源场景分类 情形一&#xff1a;项目启动就确定了情形一&#xff1a;一些sass系统里面动态确…

[管理与领导-63]:IT基层管理者 - 潜技能 - 1 - 职场中的陷阱 - 看清楚职场中的霸凌现象

目录 前言&#xff1a; 1&#xff1a;打击自尊心 2&#xff1a;孤立他人 3&#xff1a;恶意针对 4&#xff1a;当众羞辱 5&#xff1a;持续性否定 前言&#xff1a; 职场中&#xff0c;什么样的人都有。 害人之心不可有&#xff0c;防人之心不可无。 前者教人从善&…

chatGPT训练过程

强化学习基础 强化学习是指智能体在不确定环境中最大化其获得的奖励从而达到自主决策的目的。其执行过程为&#xff1a;智能体依据策略决策从而执行动作&#xff0c;然后感知环境获取环境的状态&#xff0c;进而得到奖励(以便下次再到相同状态时能采取更优的动作)&#xff0c;…

《穷爸爸与富爸爸》时间是最宝贵的资产,只有它对所有人都是公平的

《穷爸爸与富爸爸》时间是最宝贵的资产&#xff0c;只有它对所有人都是公平的 罗伯特清崎&#xff0c;日裔美国人&#xff0c;投资家、教育家、企业家。 萧明 译 文章目录 《穷爸爸与富爸爸》时间是最宝贵的资产&#xff0c;只有它对所有人都是公平的[toc]摘录各阶层现金流图支…

WebSocket 协议及其使用案例

文章目录 前言一、初识 WebSocket 协议1.1 什么是 WebSocket 协议1.2 WebSocket 与 HTTP 的关系1.3 WebSocket 握手的过程1.4 WebSocket 解决了什么问题 二、WebSocket 数据帧格式2.1 WebSocket 数据帧格式图示2.2 各字段的详细说明 三、SpringBoot 项目中引入 WebSocket3.1 创…

STM32 FREERTOS osDelayUntil()异常

问题&#xff1a; 在使用osDelayUntil&#xff08;&#xff09;进行固定延时时发现不起作用&#xff0c;程序不能按照预期的延时进行执行&#xff08;比延时要快&#xff09;。 #define taskMBSysManage_Delay_TIME 1000 TickType_t xLastWakeTime; xLastWakeTime xTaskGe…

计算机视觉-卷积神经网络

目录 计算机视觉的发展历程 卷积神经网络 卷积&#xff08;Convolution&#xff09; 卷积计算 感受野&#xff08;Receptive Field&#xff09; 步幅&#xff08;stride&#xff09; 感受野&#xff08;Receptive Field&#xff09; 多输入通道、多输出通道和批量操作 …

算法通关村十三关 | 进制转换问题处理模板

1. 七进制数 题目&#xff1a;LeetCode504&#xff1a;504. 七进制数 - 力扣&#xff08;LeetCode&#xff09; 思路 进制转换&#xff0c;对几转换就是对几求余&#xff0c;最后将所有的余数反过来即可、如果num< 0&#xff0c;先取绝对值&#xff0c;再进行操作。 100转7…

【二等奖方案】大规模金融图数据中异常风险行为模式挖掘赛题「Aries」解题思路

第十届CCF大数据与计算智能大赛&#xff08;2022 CCF BDCI&#xff09;已圆满结束&#xff0c;大赛官方竞赛平台DataFountain&#xff08;简称DF平台&#xff09;正在陆续释出各赛题获奖队伍的方案思路&#xff0c;欢迎广大数据科学家交流讨论。 本方案为【大规模金融图数据中…

Nginx笔记(安装+使用)

Nginx开源版安装、启动 版本区别 Nginx开源版 Nginx plus 商业版 openresty Tengine 安装 将.tar.gz放到linux系统下, 使用tar -zxvf减压 进入减压目录>>>命令安装指令&#xff1a;安装到usr/local/nginx路径下 ./configure --prefix/usr/local/nginxmake &…