1. ホーム
  2. linux

[解決済み] OpenSSLで公開鍵を使用して大きなファイルを暗号化する方法

2023-05-17 15:14:51

質問

公開鍵で大きなファイルを暗号化し、秘密鍵を持っている人以外には復号化できないようにするにはどうしたらよいでしょうか。

RSAの公開鍵と秘密鍵を作ることはできますが、このコマンドを使用して大きなファイルを暗号化するとなると、どうしたらよいでしょうか。

openssl rsautl -encrypt -pubin -inkey public.pem -in myLargeFile.xml -out myLargeFile_encrypted.xml

また、復号化もどのようにすればよいのでしょうか。

秘密鍵と公開鍵は以下のコマンドで作成しました。

openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout

こんなエラーが出ます。

RSA operation error
3020:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:.\crypto\rsa\rsa_pk1.c:151:

1024ビットから1200ビットのキーを作ろうとしましたが、同じエラーでうまくいきませんでした。

どのように解決するのですか?

公開鍵暗号は、任意の長さのファイルを暗号化するためのものではありません。1 つは通常の暗号化を行うために対称型暗号 (たとえば AES) を使用します。毎回、新しいランダムな共通鍵を生成して使用し、RSA暗号(公開鍵)を使って暗号化します。暗号化された対称鍵とともに暗号文が受信者に転送されます。受信者は自分の秘密鍵を使って対称鍵を復号化し、対称鍵を使ってメッセージを復号化します。

秘密鍵は決して共有されず、公開鍵のみがランダムな対称暗号を暗号化するために使用されます。