私は最近、絶対にメソッドを使用する必要がある状況に遭遇しましたOpenSSL::PKey::RSA#params
。ただし、ドキュメントには次のように書かれています。
この方法は安全ではなく、個人情報が漏洩する可能性があります!!!
..。
使用しないでください:-))(それはあなた次第です)
これは何を意味するのでしょうか?秘密鍵は通常、RSA鍵のインスタンス内でどのように保護されますか?また、これは通常のオブジェクトとどのように異なりますか?
メソッドがラムダ内でのみアクセスされる次のようなことを行うことで、情報の漏洩を防ぐことができますか?
private_key = OpenSSL::PKey::RSA.generate(2048)
save_private = lambda do
key = OpenSSL::Digest::SHA512.new.digest("password")
aes = OpenSSL::Cipher.new("AES-256-CFB")
iv = OpenSSL::Random.random_bytes(aes.iv_len)
aes.encrypt
aes.key, aes.iv = key, iv
aes.update(private_key.params.to_s) + aes.final
end
private_enc, save_private = save_private.call, nil
また、このセキュリティの問題が、GCを待機しているメモリに残っている変数と関係がある場合、ガベージコレクションを強制すると、より安全になりますか?
GC.start
これを片付けることができる人に事前に感謝します。