模数、公开指数与私密材料

常见两素数形式用n=pq作为模数,公钥包括n和公开指数e,私钥包含相应秘密指数等材料。RFC 8017也定义多素数形式与用于中国剩余定理计算的私钥表示,不能把某一种文件布局当成RSA数学定义的全部。

原始加密变换可写为c=m^e mod n,其中消息代表值须落在规定范围。私钥运算能恢复相应代表值,但知道如何做模幂不等于已经建立适合任意消息的安全加密方案;密钥有效性和表示范围是前提。

参考:[1]

加密编码与签名编码不相同

PKCS #1把基本运算与完整方案分开。RSAES-OAEP结合消息编码和加解密原语;RSASSA-PSS则为签名生成、验证规定相应编码。签名不是把普通明文用私钥“加密”一下,再把任何可恢复字符串都当成正确验签。

编码还影响可处理消息长度和错误处理。例如OAEP的长度上限依赖模数长度与哈希输出长度,较长正文常交给混合系统里的对称加密;不能把RSA模数位数直接解释成可无限加密的数据量。

参考:[1]

方案正确仍要处理身份与实现

接收者公钥的来源、签名者身份的绑定,以及不同用途能否复用密钥,属于完整系统必须检查的问题。数学运算顺利完成,不会自动说明公钥属于声称的人,也不说明解码失败时泄露的信息一定无害。

传统RSA依赖的整数分解相关安全假设还面临足够强量子计算机的威胁;这不等于已有普通计算机能解开所有RSA,也不意味着仅增加一点密钥长度就解决后量子迁移。算法选择、参数、编码和实施环境需要分层评估。

参考:[1] [2]