在RSA攻击中,存在着“小明文攻击“的方式;

    在明文够小时,密文也够小,直接开e次方即可;

    在明文有点小时,如果e也较小,可用pow(m,e)=n*k+c穷举k尝试爆破

所以,比如说,在选择明文攻击中,单纯的RSA非常容易被破解。

  于是,我们就像将密文进行一下填充,最好让密文都等长。  

但是填充方式也是很讲究的;不好的填充规则往往仅仅有限的增加了攻击的难度,或者难以实现等长密文。

  于是我们就查到了(bushi)OAEP——最优非对称加密填充。

最优非对称加密填充:

(1)准备工作:

    将k比特内容转化为m比特内容的 公共单向函数G

    将m比特内容转化为k比特内容的 公共单向函数H

(2)Alice的加密过程:

    最初有一个小于m比特的信息。它填充这个信息来获得一个m比特的信息M

    选择一个k比特的随机数r。

    运用G和r生成一个m比特的整数G(m,r),并丢弃r。

    运用G(m,r)生成明文的第一部分c1=M xor G(m,r),并生成明文的第二部分c2=H(P1) xor r

    最后,运用c1,c2生成密文C

(3)Bob的解密过程(?):

    大概是,运用H找到G(m,r)并,运用G(r)找到信息。

当OAEP与RSA结合:

    关于“在加密中引入随机化的作用”:

  大量对教科书式加密算法的攻击都是这样采样一种通用技术:篡改密文从而以一种可控的方式修改相应的明文。

  然而,OAEP有良好的特性;因此,如果攻击者想篡改密文,就会导致明文的改变是不可控的,

     因为使用了杂凑函数,在保证杂凑函数的安全性下(比若说单向性、抗碰撞性等),很难找到一个有效的hash值,其对应的明文是有效的。

  即:如果攻击者试图以适应性的方式修改密文,那么数据完整性检验将以“压倒性”概率失败,并且解密结果为一条没有任何意义的明文。

  

  注:因为在查阅相关资料和文献时,几乎没有背景知识,甚至是初次接触“填充”;

  所以,我对“在加密中引入随机化的作用”可能有偏差;并留下疑问作为可能会填的坑:

  (1)其实感觉一切都没完全懂。

  (2)关于填充。(加密描述和“作用”中都直接跳过了这部分的叙述)

参考:

https://www.cnblogs.com/akira90/archive/2012/11/19/2778234.html

https://blog.csdn.net/qq_39743001/article/details/117249884?utm_source=app&app_version=4.16.0

(半课内)信安数基 RSA-OAEP 初探的更多相关文章

  1. (课内)信安数基RSA-基础&&解密加速

    RSA基本实现 首先获得N比特的伪随机数:使用Random库中内容. randint(n,m) 表示生成一个在n和m之间的随机数, **表示乘幂. getPrime找素数,or 1运算是一种优化:如果 ...

  2. (课内)信安数基RSA-level3-5

    emmmm感觉其实自己对这个的理解完全不够,原理只能写出这么个东西(悲) 代码完全是 攻击方式中(1)(2)内容的实现. lambda是一种可以理解为匿名函数的写法:写在这里看起来很酷炫(bushi) ...

  3. (课内)信安数基RSA-level1&&2

    注:(不求甚解的)攻击原理 以及(浅层的)算法解释已在图片中给出:文字部分主要讲一些python语法的东西. 代码需要库 gmpy2和libnum:加密算法还需要Crypto.Util.number ...

  4. 1284-Primitive Roots,学信安的路过

                                                      Primitive Roots 此题通过率如此之高,料想不会很难,但是再简单小菜还是不会.. 嗯,下 ...

  5. 信安周报-第03周:DB系统表

    信安之路 第03周 前言 这周自主研究的任务如下: 任务附录的解释: 文件读写在通过数据库注入漏洞获取webshell的时候很有用 系统库和表存放了很多关键信息,在利用注入漏洞获取更多信息和权限的过程 ...

  6. 站内信,群发与全部发送。Gson解析result

    /** * 发送站内信 */@Permission(Module.TZGL)@RequestMapping(value = "/sendznx", method = Request ...

  7. 信安周报-第02周:SQL基础

    信安之路 第02周 Code:https://github.com/lotapp/BaseCode/tree/master/safe 前言 本周需要自行研究学习的任务贴一下: 1.概念(推荐) 数据库 ...

  8. 第一届“信安杯”部分WriteUp

    第一届"信安杯"部分WriteUp------OooooohLeeGay队! 小队成员(按姓氏):郭泽坤.李江川.赵乐祺 以下这部分是做出来的 2019.11.23-24 ++Re ...

  9. ASP.NET 实现站内信功能(点对点发送,管理员群发)

    正好这段时间在研究这个功能,还是得感谢这位大神,没有他的引路,我就不可能把站内信做出来. http://www.cnblogs.com/grenet/archive/2010/03/08/168065 ...

随机推荐

  1. JAVA 之 每日一记 之 算法( 给定一个正整数,返回它在 Excel 表中相对应的列名称。 )

    题目: 给定一个正整数,返回它在 Excel 表中相对应的列名称. 例如: 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -& ...

  2. Java 登录模块设计

    登录流程 前端登录传输用户名和md5加密后的密码 后端对密码在进行md5加密,或者使用md5加密的密码 + id 进行盐加密,增加密码被破解的难度. 登录成功后,这里分成单体,或者分布式的情况 单体 ...

  3. Throwable中3个异常的方法

  4. 计算机网络-HTTP篇

    目录 计算机网络-HTTP篇 HTTP的一些问题 HTTP 基本概念 常见状态码 常见字段 Get 与 Post HTTP 特性 HTTP(1.1) HTTP/1.1 HTTPS 与 HTTP HTT ...

  5. ☕【Java技术指南】「并发编程专题」针对于Guava RateLimiter限流器的入门到精通(含实战开发技巧)

    并发编程的三剑客 在开发高并发系统时有三剑客:缓存.降级和限流. 缓存 缓存的目的是提升系统访问速度和增大系统处理容量. 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题 ...

  6. 跨 Docker 宿主机 macvlan 类型

    跨 Docker 宿主机 macvlan 类型 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 三台 CentOS 7.0 虚拟机 (Vmware Workstation 15 ...

  7. 328 day07线程池、Lambda表达式

    day07[线程池.Lambda表达式] 主要内容 等待与唤醒案例 线程池 Lambda表达式 教学目标 -[ ] 能够理解线程通信概念 -[ ] 能够理解等待唤醒机制 -[ ] 能够描述Java中线 ...

  8. DP 习题

    一.简单基础dp 这类dp主要是一些状态比较容易表示,转移方程比较好想,问题比较基本常见的.主要包括递推.背包.LIS(最长递增序列),LCS(最长公共子序列),下面针对这几种类型,推荐一下比较好的学 ...

  9. CS:APP Chapter 3 程序的机器级表示-读书笔记

    3.1 程序的机器级表示 发展历史 Intel,AMD,ARM 等企业各有又是,CPU 从 8 位发展到 16 位,再到 32 位,近几年发展到 64 位,当下的 CPU 体系被称为 x86-64 体 ...

  10. 从浏览器渲染层面解析css3动效优化原理

    引言 在h5开发中,我们经常会需要实现一些动效来让页面视觉效果更好,谈及动效便不可避免地会想到动效性能优化这个话题: 减少页面DOM操作,可以使用CSS实现的动效不多出一行js代码 使用绝对定位脱离让 ...