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