暗号化では不十分、データ自体を守るデータセキュリティ方式が注目される理由とは?

データ暗号化

現代の世間の風潮として、サイバー攻撃や内部不正などによって企業の存続を脅かす情報漏洩の被害が様々なところで発生しています。ひと昔前までは、間に何も介さずに直接外部ネットワークに接続していないため危険や危害のリスクがないと考えられていた「データベース」も攻撃の対象となってしまい情報漏洩した事件の報告数が多くなっています。

 

ネットワーク層におけるファイアウォールやウイルス・マルウェア対策製品の導入など、世間で広く用いられている以上の対策を実施しているはずの大手企業からの情報漏洩事件も数多く報告されています。情報漏洩対策として、今まで取り組み始めていなかった「極めて重要なデータ」を「実際に格納している」データベースのセキュリティ対策に関心を向けて、力を抜いて妥協することなく、よく考えなければならない時期であると提言いたします。

 

暗号化は完璧ではない

個人情報保護委員会によるセキュリティ対策ガイドライン個人情報保護法ガイドライン(通則編)」には、「持ち運ぶ個人データの暗号化」「個人データを含む通信の経路又は内容を暗号化」というように、移動中のデータに対して情報漏洩が起きてしまうことを防ぐ手法の例として暗号化がはっきりと指摘されていますが、保存されているデータの暗号化に関係する記述まではありません。

 

ただし、同じく個人情報保護委員会による対応例「個人データの漏洩等の事案が発生した場合の対応について」には、漏洩等事案に係る個人データ又は加工方法等情報について高度な暗号化等が秘匿化されている場合には「実質的に個人データ又は加工方法等情報が外部に漏洩していないと判断される」とされ、データの漏洩があったと仮定しても個人情報保護委員会などへの報告は「要しない」とされています。

 

情報漏洩事案が報道されると仮定しても、「個人情報が筒抜けになっており、全て流出していました」と「暗号化していました。実際に情報は漏れてはいません」では、ブランドイメージにマイナスの影響を与えるレベルは大きく違ってきます。基本的に個人情報のような重要情報は確実に暗号化すべきですが、「暗号化さえしておけば完璧」ではなく、暗号化だけでは対応ができない危険の源もあるからです。

 

暗号化とは不正にアクセスされたとしても、データ内容を容易に推測されないようにする技術ですが、今やそれを正しく推量する技術も進歩していますので、適切な暗号化アルゴリズムを利用していなければ極めて容易に復号されてしまいます。また適切にアクセス制御していなければ、データの漏洩が発生することを防げたとしてもデータ内容を書き換えられるデータ破壊の脅威を防げません。さらにデータを利用するときは復号する必要があるため、「時と場合によらず例外なく暗号化されている状態を続けられるわけではない」ということです。

 

個人情報保護法ガイドライン(通則編)」をもう一度確認してみると、個人情報の定義として「暗号化等によって秘匿化されているかどうかを問わない」と記載されています。つまり暗号化しているか否かにかかわらず、個人情報は個人情報であるのでそれを保護するための安全管理措置に対する関心を向けてそのためによく考える必要があります。暗号化されているとしてもアクセス制御などのセキュリティ対策も適切であることが必要不可欠となるため、セキュリティ対策と暗号化は等しいものではないということになります。

 

暗号化以外には防御できない脅威

同様にアクセス制御だけでも脅威に備えるための行動はできません。データベースへのアクセスで例えるならば、データベース管理システム(DBMS)のアクセス制御機能が十分な効力を発揮するのは「データベースで問い合わせ処理したとき」のみとなるため、データベースの技術的側面を使用しないアクセスに対してはデータベースのアクセス制御機能では対応が不可能となってしまいます。

 

個人情報保護法ガイドライン(通則編)」をもう一度確認してみると、ガイドラインには「持ち運ぶ個人データの暗号化」と「個人データを含む通信の経路又は内容を暗号化」という手法の例を挙げて示されていることを先に言及しましたが、まさしくこれらはDBMSの技術的側面を使用しないケースとなってしまうのです。

 

具体的な例を提示すると、前者はデータベースからシステム連携のためにCSVファイルとして出力したデータが該当し、後者は情報を得るためにネットワーク傍受するといった不正アクセスが該当します。両者はDBMSの技術的側面を使用しないため、こういったケースに対しては暗号化することによってデータに含まれている内容を危害から守ることが適切な対応策となります。

 

また移動中や通信中のデータだけでなく、保存されているデータについても暗号化でしか防御できない脅威があります。データファイルやデータベースのストレージ管理機能を利用してデータベースにデータが格納されていますが、初期設定として自動的に選ばれている設定では暗号化されていない状態でディスクに保存されているため、データファイルはバイナリ型となっていますので、文字コードを正確に合わせることによってテキストエディタで読むことが可能となっています。

 

ストレージの管理者であればデータベースにログインすることなく、間に何も介さずに直接データファイルやストレージのボリュームから情報を集めることによって、データの内容をユーザに気づかれないように見れてしまうということです。内部不正以外にも具体的な例を提示すると、交換したディスクを適切でふさわしい廃棄処理でなかった場合は廃棄したディスクから情報が漏洩する可能性があります。

 

アプリケーションを運用管理している組織やハードウェア、ひょっとするとデータベースを管理している組織が異なってしまい、さらには外部事業者がインフラを管理しているといったように、管理者が誰であるかを把握できていない状態になっていることもあり得るのです。クラウドサービスを利用する場面を思い浮かべるともう少し内容が簡単で分かりやすいかもしれません。クラウドにおいては自社の組織とは別のクラウドサービス事業者がインフラを管理することになりますので、もしデータが暗号化されていなければ『その内容が見られてしまう』状況を否定できないわけです。

 

それでもデータベースの初期設定として自動的に暗号化する設定が選ばれていない理由としては、そもそもデータベースは「いかにして速く対象となるデータを検索するか」という性能を追究してきた歴史があります。ほとんどのデータベースでは検索するに先立ち必要とする処理時間となる可能性がある暗号化処理は、別途必要に応じて暗号化機能を使えるようにしていますが、初期設定として使えるように設定されていないため、システム管理者が「暗号化対策を明示的に行う」必要性があるのです。

 

データを暗号化する方式はタイミングによって異なる

『データベースに格納されるデータを暗号化する』処理にはいくつかの方式が存在しています。どのタイミングで暗号化するかといったスタンスによって大きく3つに分類されていますので、それぞれの処理の仕方についてを確認していくことにします。

 

データベースへ格納される前にアプリケーションを利用して暗号化

アプリケーションにおいて暗号化API(Application Programming Interface)を利用することによって、暗号化されたデータをデータベースへ格納される方式となります。よって、データベースに格納されているデータは暗号化されているため、データベースへの問い合わせにおいて抽出されたデータは暗号化されているので、アプリケーションにおいて暗号化されているデータを復号する必要があります。

 

データベースの暗号化機能を利用

『TDE(Transparent Data Encryption:透過的データ暗号化)』機能はその名が示しているように、アプリケーションでデータに対しての変更を何もする必要がなく、データベースへ格納するデータを暗号化することが可能であるということです。このため、アプリケーション側で何ら考慮する必要はなく通常のSQL問い合わせを発行すればいいという優れている点があります。DBMS内部で暗号化したデータを格納して、アプリケーションに戻すために暗号化されたデータを透過的に復号するといった技術的側面となっています。

 

ストレージの暗号化機能を利用

ファイルシステムやストレージ機器が備え持っている暗号化機能を利用する方式です。例えばストレージ機器が備え持っている暗号化機能を利用する場合には、OSからファイルアクセスのリクエストが発生した場合、ストレージ機器へ書き込まれるときに自動的に暗号化され、ファイルシステムから読み込むときに透過的に暗号化されたデータが復号される仕組みとなっています。

 

最適なデータベースの暗号化は「データベースの暗号化機能を利用する方式」

暗号化していなければ防御できない脅威のひとつとして『データベースの仕組みを使用しないアクセスが発生した場合』が挙げられます。このようなOSから何も介さずにデータファイルから情報を集めるためにアクセスされた場合でも、情報が漏洩しないように対策する必要性があるため『ストレージの暗号化機能を利用する方式』だけで対策することは不可能であるということになります。

 

その一方で、『暗号化するかしないのかについて未決定であるものは、全て暗号化する』という指針を実践するためには、データベース設計やアプリケーションへの影響などの都合から、データベースに格納する前にアプリケーション側においてデータを暗号化するという方式だけでは、ありとあらゆるものに対して補完的役割を果たすことを実現することは難しいため、データベースに格納されているデータを暗号化するためにはデータベースの暗号化機能を利用することが条件を満たしているといえます。

 

当然ながら、アプリケーションで暗号化されたデータをデータベースに格納する方式を利用したとしても、『正当性を欠いたデータベースに対しての問い合わせが発生した場合には、暗号化されているデータが抽出されるため、その内容を読み取ることはできないから、情報は漏洩していないので安全である』と認識することはできます。しかし原則的に考えてみると、本質的にはデータへのアクセス制御で対応すべき脅威であるといえます。ログイン時に正確な方法で認証された結果、必要に応じてアクセス権限を与えているのであれば、問い合わせ結果でデータが抽出されることは正しく機能している結果であるからです。

 

まとめ

今回は、データベースにも暗号化が必要不可欠であることと、暗号化といってもいくつかの方式が存在して、それぞれの方式で良いところと悪いところがあることまでを解説しました。簡潔な結論を述べると個人情報だけに限らず、そもそものセキュリティ対策としてデータの暗号化は「やっておくべき基本的な対策である」ということになるでしょう。

 

データを暗号化していないことによって、思いもよらなかった人が気づかれないように見られてしまう可能性があることを紹介しました。このことをあらためて聞くことによって、「確かにそして紛れもなく」理解することが可能ですが、データベース管理者の中で過半数以上を占める人たちは、このことを「検討すべき事柄として意識していなかった」のではないでしょうか。

 

もうひとつの例を挙げてみると、OS上の操作によって削除してしまったファイルを復旧や復元するために存在している手段と同様に、データベースにおいても、データ復旧サービスやデータ復元ツールが存在しています。どのような手段を使っても起動しなくなってしまったデータベースに格納されているデータをCSVなどに出力してくれるといったものです。

 

データ暗号化ソリューション「D'Amo」の詳細はこちら

www.pentasecurity.co.jp