データを暗号化すると,データが漏洩しても情報を保護できるという効果がある。主要なDBMS(データベース管理システム)は,内部に格納するデータの暗号化機能を備える。DBサーバーに不正アクセスされた場合に効果を発揮するが,デメリットが大きすぎて,実質的に使ってはいけない技術だった。

 主なデメリットとして,処理性能の低下,開発と運用の負担増が挙げられる。データを暗号化すると,更新系では暗号処理,参照系では復号処理が必要になる。そのうえ,暗号化したカラムにはインデックスを設定できなかったり,設定できても効果的に働かなかったりした。結果的に,データを暗号化するとスループットが数分の1~十数分の1に低下してしまう。

 暗号機能を利用するアプリケーションの開発は,利用しない場合に比べて煩雑になる。運用面では暗号鍵の管理が難しい。例えばOracle Database 10gやSQL Server 2005では暗号鍵が定期的に失効するので,その更新が必要になる。そのたびに古い暗号鍵でデータを復号し,新しい暗号鍵で暗号化し直さなければならない。

 しかし,この状況も変わりつつある。例えば,「Oracle Database 10g R2 Enterprise Edition」にはデータ暗号の新機能として「Transparent Data Encryption」が搭載され,暗号鍵の管理が自動化されたほか,効果的なインデックスを張れるようになった(範囲検索で使えないなどの制限はある)。テーブル作成時に暗号化するカラムなどを指定すると,通常通りにSQL文を発行するだけで自動的にデータが暗号化され復号される。

 また,暗号専用装置(米Ingrian Networksの「DataSecure Platform」や米nCipherの「SecureDB」など)を利用すれば,暗号/復号負荷を切り離し,DB管理者による暗号鍵の改竄を防げる。