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

安静時の暗号化および/またはAES_ENCRYPT

    安静時の暗号化

    保管中の暗号化は、使用/アクセスまたは更新されていないときのデータベース内のデータです。移動中の暗号化はTLSのようなものです ここで、データ(データベースから )サーバーからサーバー、ブラウザ、サーバー、ブラウザなどに転送されます。TLSは、慎重に処理され、最小限以上のことを行う必要があるという態度でアプローチされた場合、ほとんどの状況で完全に良好です。 実際にそれを現実的に安全にするために。

    典型的な例は、LetsEncryptからのTLS証明書を自分のドメインに置いて、突然すべてのものが安全だと思っている人です。ただし、セッションやCookieは暗号化されません そのため、防御に大きな潜在的な穴を残します。

    MySQLに組み込まれている暗号化システムを使用しないでください。

    私はこれを十分に強調することはできません。 MySQLに組み込まれている暗号化システムは、実際の安全なデータ保護には適していません。

    ここで非常によく似た質問に対する私の答え をお読みください 詳細について(単にコピー/貼り付けしたくない

    それでは、あなたが主張しているので....ここに:

    このトピックに関する私自身の調査で読んだものから、Magnusが提供する defuse/phpへのリンク-暗号化 これは、MySQLプログラム/サーバーにデータのプレーンテキスト値を表示させないことで、MySQLがデータを危険にさらすのを防ぐための最良の方法の1つです。

    -2017年5月7日に投稿された回答。

    また、同じ質問に対するビルカーウィンの回答 いくつかの貴重な追加の洞察を提供します:

    -2017年5月7日に投稿された回答。

    クロージングポイント:

    セキュリティは複雑です。あなたがそれをきちんとやりたい、そしてあなたの保護タマネギの皮に自信を持っているなら、あなたはたくさんのことをする必要があります(以下の箇条書きを見てください)。ただし、最初に行う必要があるのは次のとおりです。

    • 保護する相手を定義する

    真剣に。プレーンテキストの名前とアドレスを盗もうとしている人と、サーバーを乗っ取りたい人と、単にデータをゴミ箱に捨てたいという理由で、さまざまな戦略が必要です。常にすべての人から身を守ることができるというのは神話です。概念上、これは不可能です*。したがって、最も可能性の高い攻撃者を定義してから、その進歩を軽減するための最善の方法を見つける必要があります。

    MySQLとは別に、いくつかの明確な推奨事項:

    • SQLとPHPを同じサーバーに保持します。 MySQLデータにリモートアクセスしないでください。

    • SQLへの外部アクセスを除外します(つまり、localhost のみ)

    • テーブル名と列名をわかりにくくします。誰かがあなたのデータに侵入し、あなたがHDTBJ^BTUETHNUYTを持っている場合 username列の下 そうすれば、彼らはこの文字化けがおそらくユーザー名であることを知っているので、暗号化を破ろうとするのに非常に良いスタートを切ることができます。

    • 重要 :テーブルへのアクセスを本当にロックダウンします。多くのMySQLユーザーを設定し、それぞれが必要なことを実行するための最低限の特権のみを持ちます。ユーザーにテーブルを読んでもらいたい(のみ )そして特定のテーブルのみを読み取ります。ユーザーは特定のテーブルに書き込みますが、他のテーブルにはアクセスできません。 MySQLのいずれかのユーザーが危険にさらされた場合、それは懸念の分離です。そこにあるすべてのデータが自動的に失われるわけではありません。

    • PHP暗号化サービスを使用します。暗号化キーは完全に別の場所に保管してください。たとえば、バックアップ専用に使用する別のサーバーがあり、暗号化キーを取得するために連絡するためだけにアクセスできます。したがって、PHP / MySQLサーバーが侵害された場合は、キーサーバーを切断してロックダウンする余地があります。ダメージを制限します。キーサーバーにもバックアップがある場合は、実際にはそれほどひどく危険にさらされているわけではありません(状況によって異なります

    • 多くのウォッチャーと電子メールインフォーマーを設定して、特定のプロセスがいつ実行されているか、どのサーバーユーザー(人ではなくプログラム)が何をしているのかを正確に知らせます。したがって、MySQLテーブルのサイズを測定するために、予期しないプロセスが午前5時に実行を開始する理由がわかります。 WTF?

    • MySQL AES_ENCRYPTのデータがDBに保存されていなくても「スニッフィング」される可能性はたくさんありますが、Webサイトが危険にさらされた場合(またはさらに悪いことに、PHPコードが安全でない場合)、タイミング攻撃がうまくいく可能性がありますタイミングクエリルックアップとデータパケットリターンによるデータコンテンツ。

    • セキュリティはブラックホールです。ある時点で、あなたは「これで十分だ」と思うでしょう。完全なセキュリティを備えている人は誰もいません。非常に熱心な組織の中には、十分な 安全。距離を移動する前に、どれだけ歩いても構わないと思っているかを把握する必要があります。

    * なぜ不可能なのですか?データをすべての脅威から保護するために、常に、ハッシュのように読み取り不可、使用不可である必要があります。ハッシュは常にすべての人から保護されています。ただし、ハッシュをハッシュ解除することはできません。




    1. Android-GCMを使用してクライアントのsqliteデータベースを更新します

    2. JDBCを使用したMySQL一般クエリログの有効化

    3. サーバーやphpMyADMINにアクセスせずにSQLテーブルをエクスポートする簡単な方法

    4. VB.NETMySQL接続