「データベースに格納するデータを暗号化する」方式は幾つかあります。どのタイミングで暗号化するかの観点で大きく3つに分けられます。
それぞれの方式を確認してみましょう。
こちらは、暗号化API(Application Programming Interface)などを利用して、アプリケーション側でデータを暗号化してから、データベースに格納する方式です。データベースには暗号化された状態でデータが格納され、データベースへの問い合わせでも暗号化されたデータが戻り、復号はアプリケーション側で行われます。ちなみにOracle Databaseでは、「DBMS_CRYPTO」というPL/SQLの暗号化パッケージが用意されています。
Oracle Databaseでは、「TDE(Transparent Data Encryption:透過的データ暗号化)」と呼ばれるアプリケーションによって透過的な格納データ暗号化機能を実現しています。これはバージョン「10g R2」から実装されました。TDEは、10g R2で列単位の透過的データ暗号化機能が、11g R1では表領域単位の透過的データ暗号化機能が追加されています。ちなみに、2017年8月現在ではOracle Database以外にも、多くの商用およびオープンソースのDBMSで同等の機能は提供されています。
透過的データ暗号化機能ではその名の通り、“アプリケーションに変更を加えることなく”データベースへ格納するデータを暗号化できることです。このため、アプリケーションからは通常のSQL問い合わせを発行するだけでいいというメリットがあります。DBMSが内部的にデータを暗号化して格納し、暗号化されたデータを透過的に復号してアプリケーションに戻す仕組みです。
OS、ファイルシステム、ストレージ機器などが備えている暗号化機能を利用する方式です。例えばストレージシステムが備える暗号化機能を利用する場合には、OSからファイルアクセスがあり、ストレージシステムへ書き込まれるときに自動で暗号化され、ファイルシステムから読み込むときに透過的に暗号化されたデータが復号される仕組みです。
それぞれの暗号化方式で対応できる脅威と利用時の注意点は以下の通りです(表1)。
今回は「データベースにも暗号化が必要なこと」と「暗号化といっても幾つかの方式があり、それぞれの方式で強みと弱みがある」ことまでを理解してもらえれば大丈夫です。
次回は、「何を、どのように暗号化していくべきか」の指針を解説します。
日本オラクルでセキュリティ関連のプロダクトやソリューションを長年担当。出荷前製品検証からプリセールス、コンサルティングと、さまざまな部署を転々とするも担当はだいたいいつもデータベースセキュリティかIDマネジメント。出荷前から構築、運用、トラブル対応まで製品の一生を見守るエンジニア
Copyright © ITmedia, Inc. All Rights Reserved.