1

私は単純なライセンス ファイル システムを実装していますが、現在の実装ラインに間違いがないかどうかを知りたいです。

メッセージ データはキーより小さいです。キーサイズが 3072 ビットの RSA を使用しています。

ライセンスの発行者は、署名するメッセージを生成し、単純な RSA ベースのアプローチを使用して署名し、同様のアプローチを適用してメッセージを暗号化します。暗号化されたメッセージと署名は、ライセンス ファイルとして一緒に保存されます。

  1. Sha512 メッセージ。
  2. 秘密鍵でハッシュに署名します。
  3. 秘密鍵でメッセージに署名します。
  4. 連結して送信します。

受領時の検証プロセスは次のとおりです。

  1. 公開鍵でメッセージを復号化する
  2. メッセージをハッシュする
  3. 公開鍵を使用してファイルからハッシュを復号化し、ローカル ハッシュと比較します。

実装は今のところ正しく機能しており、有効であるように見えます。

私は現在、キーサイズに合わせてメッセージをゼロパディングしていますが、これはおそらく悪い動きです (1 や 1.5 などの PKCS パディングアルゴリズムを使用する必要があると思いますか?)

この戦略は有効だと思われますか? 私が見落としている明らかな欠陥や視点はありますか?

4

1 に答える 1

3

私が気付いた主な欠陥は、復号化するときにパディングがまだ存在することを確認する必要があることです。

(メッセージの長さが事前にわかっている場合は、独自のパディングスキームを使用して回避できる場合がありますが、言及したように既存のものを使用することをお勧めします).

なぜあなたがメッセージ自体を暗号化するのに苦労しているのかわかりません. メッセージと暗号化された埋め込みハッシュを送信するだけでもかまいません。

cryptlibKeyCzar (可能であれば)など、「署名メッセージ」機能を提供する高レベルのライブラリを使用することをお勧めします。これらは、コードが目にする可能性が高いよりもはるかに多くの眼球から恩恵を受け、すべての細かいパディングの問題などを処理します.

于 2009-07-20T06:05:32.630 に答える