web-dev-qa-db-ja.com

ed25519のOpenSSLサポート、コンテンツの暗号化?

OpenSSL 1.1.1.b-1を使用して、RSAキーペアを生成し、それらを使用してコンテンツを暗号化できます。

openssl genrsa -out private_key 4096
openssl rsa -in private_key -pubout -outform PEM -out public_key.pem
openssl rsautl -encrypt -inkey public_key.pem -pubin -in original.txt -out encrypted.enc
openssl rsautl -decrypt -inkey private_key -in encrypted.enc -out original.txt

しかし、ed25519キーでコンテンツを暗号化しようとすると、

openssl genpkey -algorithm ED25519 -out private_key
openssl pkey -in private_key -pubout -out public_key
openssl pkeyutl -encrypt -inkey public_key -pubin -in original.txt -out encrypted.enc

エラーが発生します:

pkeyutl: Error initializing context
140302731502080:error:0608B096:digital envelope routines:EVP_PKEY_encrypt_init:operation not supported for this keytype:crypto/evp/pmeth_fn.c:141:

OpenSSL 1.1.1.b-1は機能を実行できませんか、またはpkeyutlを誤って使用していますか?

2
effer
  1. openssl rsautlメッセージを暗号化するためのものではありませんドキュメントは非常に悪く、誤解を招くものであり、数十年、それは私のせいではありません。一般に、opensslコマンドラインユーティリティは、ソフトウェアおよび暗号化プロトコルのさまざまなビット用の診断ツールおよびデバッグ支援であり、そのほとんどは何年も前に設計されたものです。過度の複雑さ。

    基本的に、誰もopenssl rsautlを使用するべきではありません。 RSAでメッセージを暗号化するために設計されている唯一のopensslコマンドラインツールはopenssl smime/openssl cms—そして ひどくそれで プロトコル設計者はプリンターの煙に高い官僚だったからです。

  2. Ed25519は署名スキームです。暗号化は行いません。Ed25519と同じ基本的な数学的アイデアのいくつかを使用する公開鍵暗号化スキーム(認証済みまたは匿名)がありますが、Ed25519自体を使用してメッセージを暗号化することはできません。 RSASSA-PSSを使用してメッセージを暗号化できる以上のもの。

2