公钥加密:RSA 相关方案解析
1. 填充 RSA 与 PKCS #1 v1.5
虽然普通 RSA 加密不安全,但它为基于 RSA 问题的公钥加密提供了一种通用思路:使用公钥 ⟨N, e⟩ 加密消息 m 时,先将 m 映射到元素 ˆm ∈ Z∗N,然后计算密文 c := [ ˆme mod N]。接收方解密密文 c 时,计算 ˆm := [cd mod N] 并恢复原始消息 m。为使接收方能够恢复消息,从消息到 Z∗N 元素的映射必须是(高效)可逆的。若要使该方案具有 CPA 安全性,映射必须是随机化的,这样加密就不是确定性的。当然,这只是必要条件而非充分条件,加密方案的安全性关键取决于所使用的具体映射。
一种简单的实现方法是在加密前对消息进行随机填充。即,为将消息 m(视为比特串)映射到 Z∗N 中的元素,发送方选择一个均匀的比特串 r ∈ {0, 1}ℓ(对于某个合适的 ℓ),并设置 ˆm := r∥m;所得值自然可解释为 Z∗N 中的整数。(这种映射显然是可逆的)。具体构造如下:
构造 12.30:填充 RSA 加密方案
- Gen :输入 1n,运行 GenRSA(1n) 以获得 (N, e, d)。输出公钥 pk = ⟨N, e⟩ 和私钥 sk = ⟨N, d⟩。
- Enc :输入公钥 pk = ⟨N, e⟩ 和消息 m ∈ {0, 1}∥N∥−ℓ(n)−1,选择一个均匀的字符串 r ∈ {0, 1}ℓ(n),并将 ˆm := r∥m 解释为 Z∗N 中的元素。输出密文 c := [ ˆme mod N]。
-
超级会员免费看
订阅专栏 解锁全文
2576

被折叠的 条评论
为什么被折叠?



