から
#!/usr/bin/env ruby
# DECRYPT
require 'openssl'
require 'base64'
private_key_file = 'private.pem';
password = 'boost facile'
encrypted_string = %Q{
...
}
private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file),password)
string = private_key.private_decrypt(Base64.decode64(encrypted_string))
を、認証/承認と機密性を守り、両方の側面を1つのステップでカバーしようとしています。それはうまくいかないでしょう。非対称アルゴリズムを使用して「実データ」を暗号化するべきではありません。 a)それはあまりにも遅いです。b)正しく行われなければ、ソリューションのセキュリティをひどく弱める微妙な問題があります。
親指の良いルールは、あなたがプライベート非対称キーで暗号化し終わる必要があります唯一の事は、はるかに高速対称アルゴリズムで使用される対称鍵であるということです。しかし、ほとんどすべてのケースで、あなたが実際に望んでいるケースの90%がそのような場合のTLS(SSL)なので、私はそれをやってはいけません。なぜかhereの理由を説明しようとしました。データベースに格納されるデータの
機密性:一般市民はそれを読んで(あるいはそれにアクセスできないようにする必要があり
あなたのケースでは、私は必要条件であると仮定します)
選択数(おそらくただ一人)がアクセスできるようにする必要があり、データが
最初の目標は、一般的にを使用することによって達成されていることを読んで。第二の目標は、関連はあるものの、まったく異なる手段によって実現される。ファイルにアクセスしているユーザーが認証される(つまり、IDを確立する)ことを望みます。確立されたアイデンティティが彼らが意図するものを行う権利を持っているかどうかをチェックする)。これは、非対称暗号化がステージに入る場合ですが、必ずしもそうではありません。あなたの質問はRailsでタグ付けされているので、私はRailsアプリケーションについて話していると思います。ユーザーは、通常、既に(前述のTLSを含む)ユーザーの認証と承認を行う手段を持っていますが、実際のファイル暗号化/復号化のための対称キーを確立するために単純に再利用できます。非対称暗号をまったく使用しない場合は、Password-based encryptionがこの目的に適しています。すでに秘密のデータの整合性を保証したい場合、つまり、最終的にアクセスするものが決して変更されていないという意味で、認証された許可されたユーザーに一種の保証を与えたい場合は、さらに複雑になりますその間。
これに対する解決策を開発することは、些細な作業ではなく、所要の要件に大きく依存するため、すべての人に適した「金色の方法」はないと思います。私はいくつかの研究を行い、あなたが達成しようとしていることとその方法をより明確に把握し、まだ不確実な/不快感を感じている科目についてさらにアドバイスを受けようとします。
私はRubyistは実際にはありませんが、それらはかなり良い電池です。私はどのような難しさは、Pythonに相当するだろうかと思う... – brice
ちょうどそのファイルは、例えば、AES - 256とecnryptedする必要が追加したいが、そのキーはrsaで送信する必要があります。 – tiktak
申し訳ありませんが、これは本当に悪いアドバイスです。 OPはファイルの暗号化/復号化について話しているので、RSAを使用しないでください。 – emboss