博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最优非对称加密填充(OAEP)和PSS(Probabilistic Signature Scheme)
阅读量:7086 次
发布时间:2019-06-28

本文共 3880 字,大约阅读时间需要 12 分钟。

Optimal asymmetric encryption padding(OAEP),最优非对称加密填充,RSA的加密解密是基于OAEP的。

PSS (Probabilistic Signature Scheme) ,RSA的签名验证是基于PSS的。

The signature schemes are actually signatures with appendix, which means that rather than signing some input data directly a hash function is used first to produce an intermediary representation of the data and then the result of the hash is signed. This technique is almost always used with RSA because the amount of data that can be directly signed is proportional to the size of the keys; which is almost always much smaller than the amount of data an application may wish to sign.

RSAES-OAEP: improved encryption/decryption scheme。

RSASSA-PSS: improved probabilistic signature scheme with appendix;
EMSA-PSS: encoding method for signature appendix, probabilistic signature scheme.

In cryptography, Optimal Asymmetric Encryption Padding (OAEP) is a padding scheme often used together with RSA encryption. OAEP was introduced by Bellare and Rogaway.[1]

The OAEP algorithm is a form of Feistel network which uses a pair of random oracles G and H to process the plaintext prior to asymmetric encryption. When combined with any secure trapdoor one-way permutation f, this processing is proved in the random oracle model to result in a combined scheme which is semantically secure under chosen plaintext attack (IND-CPA). When implemented with certain trapdoor permutations (e.g., RSA), OAEP is also proved secure against chosen ciphertext attack. OAEP can be used to build an all-or-nothing transform.
OAEP satisfies the following two goals:
Add an element of randomness which can be used to convert a deterministic encryption scheme (e.g., traditional RSA) into a probabilistic scheme.
Prevent partial decryption of ciphertexts (or other information leakage) by ensuring that an adversary cannot recover any portion of the plaintext without being able to invert the trapdoor one-way permutation f.
The original version of OAEP (Bellare/Rogaway, 1994) showed a form of "plaintext awareness" (which they claimed implies security against chosen ciphertext attack) in the random oracle model when OAEP is used with any trapdoor permutation. Subsequent results contradicted this claim, showing that OAEP was only IND-CCA1 secure. However, the original scheme was proved in the random oracle model to be IND-CCA2 secure when OAEP is used with the RSA permutation using standard encryption exponents, as in the case of RSA-OAEP. [2] An improved scheme (called OAEP+) that works with any trapdoor one-way permutation was offered by Victor Shoup to solve this problem.[3] More recent work has shown that in the standard model (that is, when hash functions are not modelled as random oracles), that it is impossible to prove the IND-CCA2 security of RSA-OAEP under the assumed hardness of the RSA problem

OAEP

In the diagram,

n is the number of bits in the RSA modulus.
k0 and k1 are integers fixed by the protocol.
m is the plaintext message, an (n − k0 − k1 )-bit string
G and H are typically some cryptographic hash functions fixed by the protocol.
To encode,
messages are padded with k1 zeros to be n − k0 bits in length.
r is a random k0-bit string
G expands the k0 bits of r to n − k0 bits.
X = m00..0 ⊕ G(r)
H reduces the n − k0 bits of X to k0 bits.
Y = r ⊕ H(X)
The output is X || Y where X is shown in the diagram as the leftmost block and Y as the rightmost block.
To decode,
recover the random string as r = Y ⊕ H(X)
recover the message as m00..0 = X ⊕ G(r)
The "all-or-nothing" security is from the fact that to recover m, you must recover the entire X and the entire Y; X is required to recover r from Y, and r is required to recover m from X. Since any bit of a cryptographic hash completely changes the result, the entire X, and the entire Y must both be completely recovered.

refer to:

转载于:https://www.cnblogs.com/Ymete/archive/2013/01/07/2849497.html

你可能感兴趣的文章
用C++做TerraExplorer开发(四)——实现HUD Layer(1)(转载)
查看>>
[.net 面向对象编程基础] (9) 类和类的实例
查看>>
语法面试等题目汇总
查看>>
Duilib技巧:背景图片平铺
查看>>
【转】Android出现“Read-only file system”解决办法
查看>>
基于jQuery左侧大图右侧小图切换代码
查看>>
机器学习:更多的数据总是优于更好的算法吗?
查看>>
Python 迭代器 & __iter__方法
查看>>
Machine Learning - XI. Machine Learning System Design机器学习系统的设计(Week 6)
查看>>
Fragment 和 FragmentActivity的使用
查看>>
matlab在图片上画框
查看>>
随着通信和编程,它是一门艺术系列6(技术的情况)
查看>>
sql 子查询stuff功能(同一个人的多任务,多领域成为字符串)
查看>>
iOS8新特性(2)——UIPopoverController和UIPresentationController
查看>>
你写的Try...Catch真的有必要么?
查看>>
4安德鲁斯.2.2在系统,具有系统权限的应用程序无法读取或写入SD卡
查看>>
CSS3布局之box-flex的使用
查看>>
WPF一步步开发XMPP IM客户端1:入门
查看>>
【转】14.5.6 禁止和激活中断线
查看>>
[saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
查看>>