OpenSSL RSA 算法的盐在哪里?
Where is the salt on the OpenSSL RSA algorithm?
我发现 OpenSSL 中对称例程的加盐技术带有选项 -salt
。但我找不到非对称 RSA 算法的盐选项。
salt 参数仅对基于密码的加密有意义。密码用于派生用于加密的密钥。当你将密码传递给 OpenSSL 来加密某些东西时,你可能还会指定一个盐来增加整个过程的输入熵。
RSA 不是基于密码的。密钥是预先生成的,直接使用。所以,根本没有地方可以为 RSA 使用盐。
对称密钥和RSA密钥的结构也有所不同。对称块密码的密钥只是二进制 strings/arrays。它们可以很容易地随机生成或从加盐密码中生成。另一方面,RSA 密钥具有特定的数学结构,不能完全随机。
这是因为一对RSA密钥用于加密双方单向通信。如果没有 RSA 的私钥,就不能简单地生成 public 密钥。它们必须同时生成。让一方生成 public 密钥而另一方生成带盐的私钥是没有意义的,因为
- 密钥将无法互操作或
- 更糟糕的是,public 密钥持有者还可以生成私钥。
我发现 OpenSSL 中对称例程的加盐技术带有选项 -salt
。但我找不到非对称 RSA 算法的盐选项。
salt 参数仅对基于密码的加密有意义。密码用于派生用于加密的密钥。当你将密码传递给 OpenSSL 来加密某些东西时,你可能还会指定一个盐来增加整个过程的输入熵。
RSA 不是基于密码的。密钥是预先生成的,直接使用。所以,根本没有地方可以为 RSA 使用盐。
对称密钥和RSA密钥的结构也有所不同。对称块密码的密钥只是二进制 strings/arrays。它们可以很容易地随机生成或从加盐密码中生成。另一方面,RSA 密钥具有特定的数学结构,不能完全随机。
这是因为一对RSA密钥用于加密双方单向通信。如果没有 RSA 的私钥,就不能简单地生成 public 密钥。它们必须同时生成。让一方生成 public 密钥而另一方生成带盐的私钥是没有意义的,因为
- 密钥将无法互操作或
- 更糟糕的是,public 密钥持有者还可以生成私钥。