2012-06-15 17 views
7

私はかなり重要な個人情報を扱うプロジェクトに取り組んでいますが、それはバックカウンター番号ではありませんが、依然として機密情報ですので、この情報を暗号化してmysql可能な限り安全に。だから私はこの敏感な情報に対処できるいくつかのセキュリティ対策を強く探しています。PHP Mcrypt、本当に安全ですか?

文字列とテキストブロックを暗号化/復号化する簡単な方法の1つは、mcryptを使用することです。しかし、ここでstackoverflowでmcryptを検索すると、多くの人がmcryptがあまり安全ではないことを伝えていることに気付きました。

だから私は本当にどれくらい安全だと思いますか?キーが安全に格納されている場合、格納された情報を解読して解読するには、多くのハッキングスキルが必要ですか?スキルの低いハッカーがmysqlサーバに格納する暗号化された情報を解読できることを恐れる必要がありますか?暗号化された情報をmcryptで暗号化するにはどのようなスキルが必要ですか?

もしMcryptが十分に使えないなら、gnupg拡張を使って複雑ではない良い選択肢は何ですか?

+4

は、技術、アプリケーションも安全でなければならない方程式...の一部でしか覚えておいてください。この技術のみに焦点を当てることで、あなたがあなたよりも安全であると見なすことができます。 –

+1

*「多くの人がmcryptが安全ではないことを伝えていることに気付きました。それは推論なしでですか? – hakre

+1

mcrypt自体はワンクリックソリューションではなく、いくつかの異なるモードでいくつかの異なるアルゴリズムをサポートしています。これは、あなたのセキュリティシステムを構築する必要がある、実際の数字をクランチする小さなコグです。ほとんどの場合、mcryptを使用している開発者は、より大きな画像を理解していないため、不安が生じています。 – deceze

答えて

16

いくつかの落とし穴を回避し、いくつかの推奨事項を適用するための小さなガイドです。

  • 2つの異なるメッセージに対して同じ暗号化キーと初期化ベクトル(IV)を再使用しないでください。

敵対者が同じ鍵を使用して輸送中に2つの以上のメッセージを傍受するために管理し、IV場合はプレーンテキストの露出を危険にさらすだろうそう。

  • ECBモードは使用しないでください。 OFBとCTRモードはやや優れていますが、CBCまたはCFBモードを使用することをお勧めします。このモードでは、データのあなたの符号化ストリームを損なうことがあり、重複する平文ブロックについての情報をリークしているため

ECBを使用しないように主な理由です。

OFBとCTRはより優れていますが、同じIV +キーの組み合わせを複数回使用する前述のセキュリティ上の問題があります。

CFBとCBCは、IV +キーの再利用に対して最も弾力性がありますが、同じ共通プレフィックスを持つ別々のメッセージは、前記プレフィックスの長さをリークします。さらに、CFBは最初の同一でないプレーンテキストブロックの違いを漏らします。

  • あなたはそれが印刷可能なASCII(例えばない「私の超強力な秘密鍵」)から選択することがないべきで

    キー強力な暗号化を持っていることを確認してください。 PBKDF2が好まれるでしょう(すぐにそれがGoogleに提供されるまで、すぐにネイティブにサポートされる予定です)。この鍵は安全に保たなければならないことは明らかです。あなたがそれを失うと、バイバイデータ。

  • 初期化ベクトルを生成するには、良いエントロピーソースを使用します。

    のMcryptは、あなたがmcrypt_create_iv()を呼び出すときMCRYPT_DEV_RANDOMまたはMCRYPT_DEV_URANDOMを使用するオプションを持っています。これはあなたを助ける

希望:)

+0

ありがとう、ジャック! – HermesTrismegistus

関連する問題