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

SQL Server 2008 で SSN を暗号化する最良の方法は何ですか?

    データを暗号化する場合は、誰がそれを解読するのか自問する必要があります。非対称暗号化システム (RSA など) を使用する場合、暗号化には公開鍵が使用され、復号化には対応する秘密鍵が使用されます。 「非対称性」は、公開鍵から秘密鍵を再計算できないという事実に由来します (ただし、両方の鍵は数学的にリンクされています)。

    非対称暗号化にはオーバーヘッドが発生する傾向があります。最初の注意点は、そのような暗号化にはランダムな部分が含まれている必要があるということです。なぜなら、誰もが暗号化できるからです (公開鍵は公開鍵です):暗号化プロセスが決定論的である場合、誰でも可能なすべての SSN を暗号化できます ( 10 億個 (最新のコンピューターでは非常に小さい数) であり、暗号化された値と一致します。したがって、暗号化中にランダムな値が追加される必要があり、暗号化された SSN は平文の SSN より大きくなります。

    既知の非対称暗号化システムは、独自のコストを持つ数学的構造を使用します。基本的に、「十分に強力な」キーを使用する RSA 暗号化システムの場合、暗号化されたメッセージの長さは少なくとも 128 バイトになります。一部の暗号化システムはより優れています。学術研究のよく踏まれた道に固執している間、私は41バイト程度でそれを行うことができました(NIST K-163楕円曲線上のEl-Gamalを使用).小さいほど難しく見えます。

    したがって、特定のデータベース システムにデフォルトでそのような機能が含まれていないことは不思議ではありません。

    あなたの問題について、最初にできる限り明確に定義 (および記述) する必要があります。

    • 保護したいデータは何ですか
    • 誰がデータを入力するか
    • 誰がデータを読み返すのか

    そして、暗号化がそのための適切なツールであるかどうかを自問する必要があります.暗号化は、想定された攻撃者が生の保存されたデータを手に入れることができる場合に適しています。これは、攻撃者がオペレーティング システムの保護をバイパスしたことを意味します。その時点で、オペレーティング システムが知っていることは何でも、攻撃者も知っています。データベースがマシンでホストされていて、復号化された SSN を取得できるインターフェイスがある場合、そのマシンはデータの取得方法を「知って」おり、攻撃者もそうです... 一方、ホストがマシンのオペレーティング システムが十分に回復力があると見なされている場合、暗号化はまったく必要ないようです。

    データベースの対称暗号化は、攻撃者が後でハードディスクのコピーを取得するという、より弱い問題に対処する可能性があります .ホスト システムは対称暗号化キーを認識していますが、RAM でしか認識していません。ハードディスクを盗む攻撃者はその鍵を持ちません。



    1. 2つのテーブルを結合する必要がありますが、MySQLの別のテーブルの一部の行を除きます

    2. MySQL IN句を包括的(ORではなくAND)として使用する

    3. H2データベースのすべてのテーブルにトリガーを追加します

    4. SQLデータベースを正規化する方法