2017-06-12 31 views
0

私は、教育目的のためにpython3.6でRSAコードを書こうとしています。RSA署名の作成と転送

メッセージ暗号化部分が終了しました。私は、メッセージのデジタル署名を作成する必要があります。これは、わかっているように、送信者の秘密鍵を使用して暗号化された大きな整数です(私が間違っている場合は修正してください)。整数が使用されるべきサイズはどれくらいですか?暗号化されたメッセージと署名はペアとして転送されますか、何らかの形で単一の整数に接続されるべきですか?

答えて

1

署名されたメッセージは暗号化されません。それはあなたがそれに署名するときに変わるべきではなく、むしろ変わるべきではない。代わりにハッシュされ、ハッシュは「暗号化」されます(実際には解読手順ですが、パディングが適用されます)。このすべてが表現され、接続されている方法についての

  1. 公開鍵
  2. オリジナル改変されていないメッセージ
  3. 署名
  4. 知識:公開鍵のエンコーディングのエンコーディング

    受信機は、4つの物事を必要としますメッセージ、シグネチャのエンコーディング、使用された実際の署名方式(RSA/DSA/EdDSA/SPHINCSなど)、特定のハッシュ関数とパディング方式を使用したもの)

数学的に言えば、RSAシグネチャは単一の大きな整数ですが、送信する場合は何とかエンコードする必要があります。完全な仕様はRFC 8017にあります。署名にRSAを使用する場合は、RSASSA-PSSを使用するか、セキュアと見なされるパディングスキームを指定するPSSを使用する必要があります。実稼働環境で使用する場合は、自分で実装しないでください。

関連する問題