问题标签 [padding-oracle-attack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - javax.crypto.Cipher 为 RSA 使用了哪个填充
我需要通过 RSA 解密消息以便通过不安全的通道发送它,但我害怕Padding Oracle Attack。因此,我已经问了以下问题:
就像第一个问题中建议的那样,
但是,由于您使用的是高级加密库,因此您不必担心这一点。该图书馆的作者应该照顾它。
我不应该考虑。据我所知,RSA 的实现PKCS#1 v1.5
很容易受到Padding Oracale Attack
OAEP的影响(假设它已正确实现)
因此,我想知道javax.crypt.Cipher
Java 7使用了哪个填充实现
encryption - 如何处理 pkcs11 中的填充错误?
我想知道C_DecryptFinal
&C_Decrypt
应该如何处理填充错误。
根据pkcs11 2.20,C_DecryptFinal
可以返回CKR_ENCRYPTED_DATA_INVALID
or CKR_ENCRYPTED_DATA_LEN_RANGE
,所以我假设如果 padding 无效,C_DecryptFinal
/ C_Decrypt
return CKR_ENCRYPTED_DATA_INVALID
。
这是对的吗?
如果是这样,是否C_DecryptFinal
/C_Decrypt
容易受到 padding-oracle 攻击?
python - CBC解密异或混淆
我正在尝试在 DES 中实现填充 oracle 攻击。我对 CBC 解密过程的理解(或者至少我在课堂上被告知的)是这样的:
假设我们的密文只有两个块,C0 和 C1。解密过程然后与 C1 进行 C0 异或,然后解密。之后,oracle 检查填充并返回 True 或 False。
我的问题是关于异或,我不明白如何在 python 中对两个字符串值进行异或(我对这一切都很陌生)。
所以如果我有价值观:
我如何对这两者进行异或运算,以便查看预言机是否返回正确的值?
编辑:我已经尝试过以下代码:如何在 python 中按位异或两个字符串?
但是我得到了一个看起来很奇怪的输出,这就是为什么我发布了一个单独的问题。任何帮助将不胜感激谢谢
encryption - Padding oracle攻击,加密自己的消息
我对填充预言机的加密攻击的理解是攻击者有一组 Pi 和 Dec(Ci)
我知道通过反向计算攻击者可以找出 Ci-1,因为我们有
这样攻击者可以找到所有的 Ci-1,但是第一个 Ci 会发生什么?由于您从头开始并倒退,看起来最后一个 Ci 不会被计算,在这种情况下,攻击者无法加密所有消息......?
security - 幸运十三这个名字的含义是什么?
哪些特定攻击可能的细节取决于握手协议协商的 MAC 算法输出的 MAC 标记的确切大小,以及在 MAC 计算中包含正好 13 个字节的报头数据这一事实(因此我们的标题)。
此外,我在伦敦大学皇家霍洛威学院的网站上阅读:
TLS MAC 计算包括 13 个字节的标头信息(5 个字节的 TLS 标头加上 8 个字节的 TLS 序列号)这一事实部分地使攻击成为可能。
据我了解,攻击是基于填充机制、使用 CBC 操作模式的事实以及 MAC 计算时间(和压缩函数)的差异。我无法弄清楚 MAC 标头的大小如何影响。
谁能解释一下幸运十三这个名字的含义?
谢谢你。
c# - 此代码是否容易受到填充预言机攻击?
以下代码是否容易受到填充预言攻击,因为如果填充有效或无效(CBC,PKCS#7),它将返回?
代码直接取自微软的网页,可以在 dotnetfiddle.net 等在线编译器上轻松运行。
我目前正在研究的程序使用上面的代码来加密一些 XML 文件。这是该程序的示例文件(只有一个元素的 XML 文件)。
python - Python Padding Oracle 破解脚本似乎未定义?
我正在编写一个非常简单的脚本,它将根据这个公式解密一个文本字节,P′2[K] = Pn[K] ⊕ Cn-1[K] ⊕ C′[K]
oracle 是一个简单的函数,它解密然后检查最后一个字节是否等于 padding 0x15
。p'2[k] 只是 0x15(填充大小)
但行为似乎 Undefined 。该循环是一个从 0-> 255 的简单循环(尝试解密一个块的次数)
被加密的消息只是 8 字节字符串 + 8 字节填充,并且每次都使用相同的密钥和 IV 进行解密。与c1,c2对应m1,m2的密文
完整的源代码在这里:
encryption - 在 AES-128 中,get 请求参数的密文是否可以包含 16 的非整数倍数的字节数?
我一直在研究加密/解密以及最近的填充预言攻击。现在,在我的学习中,我遇到了一个看起来像这样的 URL:
http://(some url)?stuff=IfCmMrKNpduwAZW51Kz-HGcGROyJM8ul3Q3us3kzzQQe-rwWR1e7tv3pCWGkqKe7XCK5J9q0sUfv2V!Ot-7rlZ3meyeVtX44xib7oMV-Q6TpIfuD8FfHskAw9oY8cjM-5r2!bTwy-AhsnNTKTM9GClGQOCNIQhDZruztsRfsOR65BTgWm31ZepjLayhN-I8AjB6jkoZQBJZtXNk3VyJ3Cg~~
现在,我将 stuff 参数中的密文放入字符计数器中,发现该密文由 216 个字符(即 216 个字节)组成。但是,数字 216 不是 16 的倍数(因为 216 / 16 = 13.5)。
AES-128 使用 16 字节块(是的,应用程序确认数据是使用 AES-128 加密的),所以当数据被加密时,它应该已经被填充,以便密文最终由多个字节组成是 16 的倍数。这是正确的,不是吗?
如果是这种情况,那么为什么上面的 URL 会返回 200 ok 状态而不是 500 无效填充的内部服务器错误?为什么只有当我删除该密文中的字符或更改字符时,才返回无效填充错误?(顺便说一句,那个网址不是真正的网址。我不想使用实际的网址,但密文是真实的)。我在这里错过了什么吗?
python - 在python中设置递归函数的问题(第一次使用python)
我已经为填充 oracle CTF 编写了这个小函数,但在此过程中迷路了,有人可以帮忙吗?
我正在尝试从后面逐字节更新字节串。但是,当我运行它时,它是从前面的 newbyte 执行的:看起来像 b"x00/x00..." iv[0:x] 不会以某种方式变小