2011-07-20 30 views
2

私はすぐに照会する必要がある人口統計的個人データのセットを格納するために必要なSQLデータベースを持っています。暗号化されたフィールドデータを格納するための最適なデータ型

要件は、個人情報であるためにデータを暗号化する必要がありますが、レコードマッチングを可能にするためには検索する必要があります。

私の質問は、これらのフィールドを、varcharまたはvarbinaryの場合に暗号化されたデータを格納するデータ型として定義する必要があることです。

varbinaryは暗号化されたデータをbase64文字列に変換するための不要なオーバーヘッドを減らしますが、SQLのこのデータをクエリするとvarcharフィールドをクエリするよりも時間がかかります。非クラスタ化インデックスでvarbinaryフィールドがどのように機能するのかよく分かりません。

[編集] 私の質問は本当にクエリのパフォーマンスを目指しています。フィールドを比較して等価性がある場合、varbinaryデータを格納するとクエリのパフォーマンスに影響しますか?

+0

私は分かります。正確な比較がすべて必要なので、これは問題ではありません。クエリのパフォーマンスが私の主な関心事です。私はできるだけ早くこれらのフィールドのレコードを一致させることができる必要があります。 – Sheff

+0

複数のRDBMSを使用すると、データベースごとに個々の列を暗号化することができます。*データを手動で暗号化する必要はありません。システムがこれをサポートしているかどうか、およびこのデータが格納されているデータを照会する方法については、ドキュメントを参照してください。 –

答えて

1

私が過去に行ったことは、暗号化されたデータのハッシュを計算し、それを別の列に格納することです。ハッシュは索引付けできるvarcharフィールドです。全体的に私は、varcharフィールドはvarbinary検索に比べてクエリのパフォーマンスが向上すると考えています。

+0

私は実際にこれも強制的なパラメータのセットでやっていますが、残念ながらさらなるオプションのフィルタリングのためにいくつかのパラメータを追加する必要があります。 – Sheff

1

個々のフィールドではなく、データベース全体を保護する必要があります。さもなければあなたはそれらを照会することができません。

+0

それは厳密には当てはまりません。私が必要とする正確なフィールド比較に関するクエリが可能です。 Db全体を保護することには別の問題があります。私は意見のデータのdbに渡される前に暗号化する必要があります。ファイルが何らかの形で取得されても、DBの暗号化は実際にしか保護されませんが、他の攻撃はデータが侵害されることを意味します。 – Sheff

+0

しかし、HTTPSなどのように、 –

+0

どのような方法でSQLログインを取得したらどうなりますか?攻撃者はプレーンテキストレコードを利用できます。私はHTTPSについてあなたの意見を述べますが、私が心配しているデータは、それを電線で渡すことです。 – Sheff

関連する問題