私は、pkg_cryptoを使用してユーザーの個人情報を保護するプロジェクトを進めています。数千行(おそらく数万になると予想されます)があり、クエリにWHERE
またはORDER BY
句を使用するたびに、結果が返される前にテーブル全体が復号化されます。これは、単一のクエリでは数秒かかるため、開発には使用できますが、リリースにはあまり適していない可能性があります。pkg_cryptoで暗号化された列の索引付け
セキュリティを損なうことなく暗号化された列で動作するインデックスを作成する方法はありますか?
挿入と選択は(iBatisので)このような何かを見て:
挿入:
INSERT INTO "USER_TABLE"
(
"ID"
,"LOGIN"
,"PASSWORD"
,"NAME"
,"EMAIL"
)
VALUES
(
user_table_seq.nextval,
#login#
,#password#
,pkg_crypto.encrypt(#name#, 'key')
,pkg_crypto.encrypt(#email#, 'key')
)
を選択:私は先制そこに入れます
SELECT
"ID"
,"LOGIN"
,"PASSWORD"
,pkg_crypto.decrypt("NAME", 'key') NAME
,pkg_crypto.decrypt("EMAIL", 'key') EMAIL
FROM "USER_TABLE"
WHERE pkg_crypto.decrypt("NAME", 'key') LIKE #name# || '%'
AND pkg_crypto.decrypt("EMAIL", 'key') LIKE '%' || #email#
そのパスワードはdbに渡される前にサーブレットによってハッシュされます。
私はそれが一般的に使用されるライブラリであると仮定しました。それは私が与えられたプロトタイプに含まれていました。 – bdares
また、この仕様では、攻撃者がdbに対してクエリを実行できる場合でも、情報を保護する暗号化方式が必要と考えています。 – bdares