2

.pemファイルに保存されている秘密鍵を使用してPythonでテキストにデジタル署名する必要があります。最近はM2Cryptoが好ましい方法のようですので、それを使用しています。私はそれのほとんどを手に入れていると思いますが、パディングを構成する方法について混乱しています。具体的には、次のkSecPaddingPKCS1SHA1ように呼び出されて説明されるパディングスキームを使用して、iPhoneアプリの署名を確認する必要があります。

署名されるデータはSHA1ハッシュです。標準のASN.1パディング、および基になるRSA操作のPKCS1パディングが実行されます。

暗号の専門家ではないので、私はこれが何を意味するのか曖昧な考えしか持っていません。私はRFCのいくつかを調べようとしましたが、それらは侵入できないことがわかりました。RSAオブジェクトの暗号化/復号化メソッドはパディングタイプを使用しているようですが、署名の検証に関連する同様の方法は見当たりません。

特にコードに関して、どんな助けでもありがたいです。

(ある意味で、これはこの質問の逆です。)


わかりました、以下の答えは正しいAFAICTです。次のコードは、パディングスキームtextを使用してiPhoneで検証するための署名を生成します。kSecPaddingPKCS1SHA1

from M2Crypto import EVP
privkey = EVP.load_key("privkey.pem")
privkey.sign_init()
privkey.sign_update(text)
signature = privkey.sign_final()

(編集して申し訳ありませんが、暗号ハッカーは宇宙で最もお粗末なドキュメンテーションライターの一部であると言えますか?)

4

1 に答える 1

2

AFAIK M2Cryptoは、必要な場所にパディングを追加します。

PKCS1のパディングがデフォルトです。

ただし、(ここでもAFAIKのみ)、署名にはパディングがありません。パディングは、攻撃の可能性を防ぐために暗号化されたデータにのみ追加されます。
編集:ユーザーcafは、コメントの中で、パディングは優れた署名に不可欠であると述べています。デフォルトのM2Crypto動作で試してみることをお勧めします。追加される可能性があります。

M2Cryptoで生成されたドキュメントでは、{public、private} _ {encrypt、decrypt}メソッドにパディングオプションがあり、デフォルトではPKCS1ですが、記号menthodにはありません。

IMOは、デフォルトのM2Cryptoパラメータを使用してショットを与えるだけで、おそらく機能します。

于 2009-11-05T00:58:34.740 に答える