sql >> データベース >  >> RDS >> Mysql

MySQLで暗号化キーを使用/保存するための最良の方法は何ですか

    MySQLビルドイン暗号化を使用することが問題の最善の解決策になるかどうかはわかりません。

    PHPの M_CRYPT パッケージは非常に優れていると考えられており、ニーズに最適なアルゴリズムを柔軟に選択できます。

    キーを他のサーバーに保存することには、1つの大きな利点があります。それは、キーが暗号化されたデータと同じマシン上にないことです。攻撃者が侵入先のマシンを十分に制御できない限り、キーを取得することはできません。
    攻撃者がデータが保存されているマシンを完全に制御できる場合、攻撃者はクエリを実行できる可能性があります。キーのWebサービス。

    ただし、あるマシンから別のマシンにキーを送信すると、セキュリティで保護する必要のあるまったく新しい領域が開かれます。おそらく、より多くのキーとより多くの暗号化レイヤーが関係しているため、間違いが発生する可能性が高くなります。

    もう1つのオプションは、Webサーバーの起動時にパスワードを入力し、それをメモリにのみ保持することです。

    考えられる解決策
    Webアクセスを持つユーザーのファイルを暗号化するために次の方法を使用するソリューションが採用されている場合(環境はわかりませんが、役立つ場合があります):

    • ユーザーが作成されると、長いランダムキーが新しいユーザーに割り当てられます。
    • このランダムキーは、ユーザーレコードの暗号化された列に保存されます。
      この列のみが暗号化され、残りのレコードのパフォーマンスに影響を与えません!
    • ランダムキー列の暗号化は、ファイルまたはメモリに保存された1つのマスターパスワードを使用して行われます。
      より適切なオプションは、Webサーバーを見つめたときにパスワードを入力し、それのみを保存することです。メモリ内。
      別のアプローチは、ユーザーにパスワードを入力させ、それを使用してランダムキー列を暗号化/復号化することですが、それによってセキュリティが向上するか低下するかはわかりません。
    • 暗号化する必要のあるすべてのドキュメントは、そのユーザーのランダムキーで暗号化されてから、ディスクに保存されます。
    • ドキュメントは最小限の権限でファイルシステムに保存されます。

    このアプローチの利点は次のとおりです。
    1。ランダムキーはデータベースで暗号化されます。したがって、暗号化された列と組み合わせて、データベースサーバーのセキュリティを強化できます。ドキュメントは異なるキーで保存されます。攻撃者がキーを入手すると、ドキュメントの一部のみが危険にさらされます。

    ただし:
    攻撃者がマスターパスワードを入手し、ユーザーテーブルへの読み取りアクセス権を持っている場合、システム全体がもう一度壊れます。



    1. mysqlFULLTEXTは複数の単語を検索します

    2. Cloud sqlプロキシを使用して複数のCloudSQLインスタンスに接続しますか?

    3. SEQUELIZE(nodeJS)でTRIGGERを作成するにはどうすればよいですか?

    4. GETUTCDATE()SQL Server(T-SQL)の例