2016-06-30 3 views
0

私はlibsodiumの公開鍵暗号の例を見ています。平文を暗号化するときに受信者の公開鍵に加えて送信者の秘密鍵が使われているようです。関連exampleから暗号化に送信者の秘密鍵が使用されるのはなぜですか?

エキス:

crypto_box_easy()関数は、受信者の公開鍵pk、送信者の秘密鍵sk とノンスNと、その長さ MLENバイトであるメッセージMを暗号化します。

この点は何ですか?私の理解は、送信者の秘密鍵はメッセージに署名するときにのみ使用されたということでした。

+0

私が公開鍵暗号の私の把握が不足していると思います。 – PureW

+0

@zaphですが、送信者の秘密鍵を使用している例では、なぜ暗号化コード 'crypto_box_easy()'が使用されていますか? – PureW

+0

ユースケースを知る必要があります。 – zaph

答えて

0

libsodiumドキュメントは、次のセクションでdifferent chapterに説明されて「認証タグ」のことをいう:

This operation: 

* Encrypts a message with a key and a nonce to keep it confidential. 
* Computes an authentication tag. This tag is used to make sure that 
    the message hasn't been tampered with before decrypting it. 

だからlibsodium認証タグがメッセージに署名するより一般的な用語と同等であると呼ぶもの。したがって、暗号化は実際に暗号化と署名であるため、crypto_box_easy(...)関数が送信者秘密鍵を入力として受け取ることは意味があります。

0

デジタル署名は秘密鍵で暗号化され、公開鍵で復号化されます。これにより、誰でも署名者の公開鍵で署名を検証することができます。

+0

はい、私の質問は暗号化のステップについてです。参照される例では、送信者の秘密鍵は、平文から暗号文を暗号化するために使用されます。 – PureW

+0

これはできますが、コード署名を除いてはありません。公開鍵は一般公開されているため、公開鍵を持つ人(本質的に誰もが)は秘密鍵で暗号化されたものを復号化できることを意味します。しかし、それが望ましいかもしれない非常に限られたユースケースがあります。 – zaph

関連する問題