375

一部のデータの暗号化と一部のデータの署名(RSAを使用)の違いは何ですか?

それは単に官民の鍵の役割を逆転させるのでしょうか?

たとえば、秘密鍵を使用してメッセージを生成したいので、自分だけが送信者になる可能性があります。メッセージを読むために公開鍵を使用したいのですが、誰がメッセージを読むかは気にしません。特定の情報を暗号化して、ソフトウェアのプロダクトキーとして使用できるようにしたいと考えています。これらを生成できるのは私だけです。公開鍵をソフトウェアに含めて、鍵の署名を復号化/読み取りたいのですが。キー内のデータを誰が読み取ることができるかは気にせず、データを生成できる唯一の検証可能な人であることに気を配るだけです。

このシナリオで署名は役に立ちますか?

4

12 に答える 12

556

暗号化するときは、公開鍵を使用してメッセージを書き込み、秘密鍵を使用してメッセージを読み取ります。

署名するとき、あなたはあなたの秘密鍵を使ってメッセージの署名を書き、彼らはあなたの公開鍵を使ってそれが本当にあなたのものであるかどうかをチェックします。

秘密鍵を使用してメッセージを生成したいので、自分だけが送信者になる可能性があります。

メッセージを読むために公開鍵を使用したいのですが、誰がメッセージを読むかは気にしません

これは署名です、それはあなたの秘密鍵で行われます。

特定の情報を暗号化して、ソフトウェアのプロダクトキーとして使用できるようにしたいと考えています。

これらを生成できるのは私だけです。

自分でそれを知る必要があるだけの場合は、これを行うためにキーをいじる必要はありません。ランダムなデータを生成してデータベースに保存するだけです。

しかし、キーが本当にあなたのものであることを人々に知ってもらいたい場合は、ランダムなデータを生成し、データベースに保存して、キーで署名する必要があります。

公開鍵をソフトウェアに含めて、鍵の署名を復号化/読み取りたいのですが。

おそらく、VerisignやThawteなどの商用プロバイダーから公開鍵の証明書を購入する必要があります。そうすれば、誰もあなたのソフトウェアを偽造して公開鍵を自分のものに置き換えていないことを人々が確認できます。

于 2009-01-17T21:20:06.920 に答える
173

RSA 暗号では、キー ペアを生成するときに、どちらを公開キーとして選択し、どちらを秘密キーにするかは完全に任意です。一方で暗号化すると、もう一方で復号化できます。双方向で機能します。

したがって、受信者の公開鍵を使用してメッセージを暗号化し、受信者が秘密鍵を使用してメッセージを復号化する方法を理解するのは非常に簡単です。

署名は、署名者が公開鍵と一致する秘密鍵を持っていることの証明です。これを行うには、その送信者の秘密鍵でメッセージを暗号化し、平文バージョンと一緒に暗号化バージョンを含めるだけで十分です。送信者を確認するには、暗号化されたバージョンを復号化し、平文と同じであることを確認します。

もちろん、これはあなたのメッセージが秘密ではないことを意味します。公開鍵はよく知られているため、誰でも復号化できます。しかし、そうすることで、暗号文の作成者が対応する秘密鍵を持っていることが証明されます。

ただし、これは送信のサイズを 2 倍にすることを意味します (プレーンテキストと暗号文を合わせて) (署名の検証に関心がない人にメッセージを読んでもらいたいと仮定すると)。代わりに、通常、平文のハッシュを作成することによって署名が作成されます。偽のハッシュを作成できないことが重要であるため、SHA-2 などの暗号化ハッシュ アルゴリズムが使用されます。

そう:

  • 署名を生成するには、平文からハッシュを作成し、秘密鍵で暗号化し、平文と一緒に含めます。
  • 署名を検証するには、平文からハッシュを作成し、送信者の公開鍵で署名を復号化し、両方のハッシュが同じであることを確認します。
于 2009-01-17T21:38:15.323 に答える
23

ええ、データに署名することは、他の誰も持っていない独自のワックススタンプを与えることだと考えてください。これは、整合性と否認防止を実現するために行われます。暗号化は、他の誰もデータを見ることができないようになっています。これは機密性を達成するために行われます。ウィキペディアhttp://en.wikipedia.org/wiki/Information_security#Key_conceptsを参照してください

署名は、秘密鍵を使用して署名されたメッセージのハッシュです。

于 2009-01-17T21:19:15.910 に答える
20

署名とは、公開鍵で検証できる秘密鍵を使用した「ハッシュ」を生成することです。テキストは平文で送信されます。

暗号化では、受信者の公開鍵を使用してデータを暗号化します。デコードは秘密鍵を使用して行われます。

したがって、鍵の使用は逆になりません(そうしないと、秘密鍵はもう秘密になりません!)。

于 2009-01-17T21:11:03.523 に答える
9

公開鍵暗号で署名が使用される方法と理由を正確に説明しています。他の人から提供された任意のメッセージに署名(または暗号化)することは非常に危険であることに注意してください。これにより、キーを危険にさらす可能性のあるアルゴリズムへの攻撃が可能になります。

于 2009-01-17T21:20:26.563 に答える
8

機能的には、公開鍵/秘密鍵の暗号化を使用して、受信者だけがメッセージを読み取れるようにします。メッセージは、受信者の公開鍵を使用して暗号化され、受信者の秘密鍵を使用して復号化されます。

署名を使用して、メッセージを作成し、転送中に変更されていないことを受信者に知らせることができます。メッセージの署名は、独自の秘密鍵を使用して行われます。受信者は公開鍵を使用して、メッセージが改ざんされていないことを確認できます。

使用されるアルゴリズムについては、一方向性関数が含まれます。たとえば、ウィキペディアを参照してください。そのようなアルゴリズムの最初の1つは大きな素数を使用しますが、それ以来、より多くの一方向性関数が発明されています。

「ボブ」、「アリス」、「マロリー」を検索して、インターネットで紹介記事を見つけてください。

于 2009-01-17T21:16:06.743 に答える
8

署名は、あなたが実際に署名されたオブジェクトのソースまたは保証であることを示します。ただし、誰でもオブジェクトを読み取ることができます。

暗号化とは、対応する秘密鍵を持っている人だけがそれを読み取ることができることを意味しますが、署名しないと、暗号化されたオブジェクトの背後にいるという保証はありません。

于 2009-01-17T23:08:38.480 に答える
4

あなたのシナリオでは、非対称暗号化の意味で暗号化することはありません。私はむしろそれを「エンコード」と呼びたいです。

したがって、データをバイナリ表現にエンコードしてから、秘密鍵で署名します。公開鍵を使用して署名を検証できない場合は、署名されたデータが秘密鍵で生成されていないことがわかります。(「検証」とは、符号なしデータが意味を持たないことを意味します)

于 2009-01-17T22:13:34.537 に答える