现代密码学中RSA和Rabin签名的实用方案解析
在现代密码学领域,许多基于公钥密码学的方案和协议都有基础的“教科书版本”。然而,这些版本往往只适用于理想环境,在现实世界的应用场景中可能存在诸多不足。本文将重点探讨RSA和Rabin签名的实用版本,包括概率签名方案(PSS)以及带有消息恢复功能的概率签名方案(PSS - R)。
1. 教科书签名方案的局限性
RSA和Rabin函数属于单向陷门置换(OWTP)。基于这些函数的教科书版本签名方案,如教科书RSA签名方案和教科书Rabin签名方案,是确定性算法。这意味着对于给定的密钥对 (sk, pk) 和消息 M,签名算法输出的签名是由 (sk, pk) 和 M 唯一确定的。
在密码学中,确定性是一个不理想的属性。以教科书Rabin签名方案为例,其确定性会导致严重的攻击,如自适应选择消息攻击,恶意攻击者可以通过该攻击获得所选消息的两个不同平方根,从而对模数进行分解。因此,适用于实际应用的RSA和Rabin签名版本必须是概率性方案。
2. 随机填充签名方案 - PSS
Bellare和Rogaway提出了使用RSA和Rabin进行概率签名的方法,即概率签名方案(PSS)。这是一种基于随机填充的方案,下面主要以RSA为例进行介绍。
PSS填充方案与OAEP填充方案类似,都是由哈希函数构建而成,基本思想一致。在RSA - OAEP加密方案中,加密过程利用了RSA函数的单向部分;而在RSA - PSS签名方案中,签名过程利用了RSA函数的陷门部分,因为签名者拥有私钥。
2.1 PSS算法具体步骤
PSS签名方案的算法如下:
-