1

いくつかの調査の結果、PSSパディングを備えたRSAは、そのセキュリティ特性が良好であることがわかっているため、使用することが提案されているように思われます。問題は、特にそのような要件との署名アルゴリズムの互換性を持つことが難しいということです。

私が達成したいのは、少なくとも次の環境で署名して検証することです。

  • ボタン
  • OpenSSL
  • Crypto ++
  • Node.js(OpenSSLを使用)

PolarSSLなどとの互換性があることも興味深いかもしれません。

署名の作成と検証に関する例がnode.js暗号ページにあります。これはうまく機能しますが、Botan EMSAx(SHA256)との互換性が必要であり、RSA-PSSのようなセキュリティのために署名を埋める必要があると本当に考えています。ノードの例のページは表示されるだけ'RSA-SHA256'ですが、パディングは使用されていません。

PSSパディングは、OpenSSLを使用して実現できます。

openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:32 \
 -sign rsa.key -out data.txt.sha256 data.txt

私のテストコードは次のようになります。

var s = crypto.createSign('RSA-SHA256');
var key = fs.readFileSync('rsa.key').toString();

s.update(message);

var signature = s.sign(key, 'base64');

しかし、それは私が望むものではなく、明らかに私が持っているBotanを使用するC++実装と互換性がない同じ入力に対して同じ出力を生成します。

最小限の労力で互換性を達成できない場合、どのアルゴリズムを選択するかについての提案は、これらの暗号ライブラリの開発者に連絡して、取得するアルゴリズムについてコンセンサスがあるかどうかを確認するために努力するかもしれませんデファクトスタンダードとして実装されています。(はい、これは必死に思えます。)このような継続的な取り組みはありますか?

4

1 に答える 1

4

現在PSS署名形式を使用していますが、Node.jsはほぼ確実にPKCS#1 v1.5互換の署名を使用しています。現在のコードを見ると、Node.jsはそれらに制限されているようです。1つの違いは、PSSで生成されたシグニチャにはランダムなコンポーネントが含まれ、PKCS#1v1.5互換のシグニチャには含まれないことです。

PSS署名は確かに好まれますが、BotanのPKCS#1 v1.5互換署名に戻すか、Node.jsにPSS署名を実装することが唯一の選択肢のようです。PKCS#1 v1.5シグニチャは、PSSシグニチャと比較して望ましいプロパティが少ない場合でも、安全である必要があります。

于 2013-02-24T19:16:00.020 に答える