拡大するデータ漏洩の脅威と暗号化の必要性

近年、顧客のパスワード情報、患者の医療記録、財務情報など、数百万件に及ぶ記録が絶えず漏洩しています。その主な原因の一つは、データが平文で保存されていたり、暗号化されていない通信で送信されていたりすることです。もしこれらのデータが適切に暗号化されていれば、攻撃者はアクセスできなかったはずです。

暗号化は、読み取り可能なデータ(平文データ)を読み取れない形式(暗号文)に変換し、有効な暗号鍵を使用した場合のみ元の状態に戻せるようにします。

かつては、強力な暗号化は高コストで複雑であり、専任のITセキュリティチームと商用ソフトウェアライセンスを持つ大企業でしか実現できないと考えられていました。しかし、この認識は過去のものとなりつつあります。世界中で多くの無料オープンソース暗号化ツールが利用されており、その数はプロプライエタリツールを凌駕しています。

例えば、現在のHTTPSインターネットトラフィックのかなりの部分でSSLを提供する「OpenSSL」や、ほぼすべてのLinuxディストリビューションに含まれる「LUKS」などがあります。また、「Let's Encrypt」は2014年以来、数百万もの無料TLS/SSL証明書を発行しています(出典)。

オープンソースの利点は、そのソースコードが公開されているため、世界中の暗号学者が継続的に評価し、クローズドシステムと比較して脆弱性が早期に特定される点にあると感じます。これはセキュリティの透明性という点で非常に重要ではないでしょうか。個人的にはPythonの暗号化ライブラリもよく使いますが、基盤がオープンソースであることの安心感は大きいですね。

さらに、GDPR(一般データ保護規則)、HIPAA(医療保険の携行性と責任に関する法律)、PCI DSS(決済カード業界データセキュリティ基準)、そしてインドのデジタル個人データ保護法(2022年制定)といった規制が、個人データや金融データの暗号化を義務付けたり、強く推奨したりすることで、暗号化の動きを後押ししています。

データを守る二つの状態:保存時と転送時

データセキュリティを考える上で、データがどのような状態にあるかを理解することが重要です。データは大きく分けて「保存時(Data at rest)」と「転送時(Data in transit)」の二つの状態にあります。

保存時(Data at rest)のデータ保護

永続的に保管されている情報は「保存時のデータ」として知られています。これには、HDD、SSD、データベースファイル、バックアップテープ、オブジェクトストレージ、USBなどのリムーバブルデバイス内のデータが含まれます。攻撃者は、このようなデータが広範囲なターゲットとなり、長期的な影響を与えるため、非常に積極的に狙います。

例えば、攻撃者がラップトップやデータベースのバックアップを盗んだ場合、数年間にわたって蓄積されたすべての記録にアクセスできてしまいます。具体的な脅威としては、デバイスの物理的盗難、完全にワイプされずに廃棄されたドライブ、ストレージシステムへの内部者によるアクセス、サーバーへの足がかりを得てファイルを直接読み取る攻撃などが挙げられます。

保存時の暗号化は、ストレージ媒体上の生のバイトが暗号文であることを保証し、媒体を所有するだけでは何も得られないようにします。

先日報じられたイギリスの法務省の件も、内部アクセスによるデータ漏洩の危険性を浮き彫りにしています。裁判所職員がサウスポートの事件被害者のファイルに不正アクセスしたことで、被害者の権利と自由に高いリスクをもたらす可能性のある機密個人データが含まれていたとされています(出典)。

これは、たとえデータが外部に漏れていなくても、不正な内部アクセスがいかに深刻な問題であるかを示しています。Cloud Storageのオブジェクトストレージでもデフォルトで暗号化はされていますが、追加でカスタマーマネージドキーによる暗号化を検討するなどの対策は非常に有効でしょう。

転送時(Data in transit)のデータ保護

転送中のデータは、システム間を移動する情報です。例えば、ブラウザがWebサーバーと通信する際、マイクロサービスがAPIコールを交換する際、データベースのレプリケーションストリーム、ファイル転送、電子メールなどがこれに該当します。

データは移動中に、送信者が制御しないネットワーク(公共Wi-Fi、インターネットバックボーン、クラウドプロバイダーのインフラなど)を通過します。これらの場所では、受動的な盗聴や、中間者攻撃、ARPスプーフィング、不正なアクセスポイントを介した積極的な傍受が行われる可能性があります。

転送時の暗号化は、通常TLS(Transport Layer Security)プロトコルを使用して通信を安全なチャネルでラップし、機密性(盗聴防止)、完全性(改ざん防止)、認証(本物のサーバーと通信していることの保証)を保証します。

クラウドサービスを利用する際、GCPのLoad BalancerやCloud RunなどはTLS終端を容易に設定できますし、AWSやAzureでも同様の機能が提供されています。これらのインフラを利用することで、開発者は意識せずとも転送時の暗号化を実装できるのは、現代のクラウド技術の恩恵だと感じます。個人プロダクトでもLet's Encryptを使ったTLS証明書は当たり前のように導入しており、もはや必須機能ですね。

保存時と転送時の暗号化比較

項目 保存時 (Data at rest) 転送時 (Data in transit)
対象 HDD, SSD, DB, バックアップテープ, オブジェクトストレージ, USBなど物理ストレージ Web通信、API通信、DBレプリケーション、ファイル転送、メールなどネットワーク通信
脅威 物理的盗難、廃棄ドライブからの情報漏洩、内部者アクセス、ファイル直接読み取り 盗聴、中間者攻撃、ARPスプーフィング、不正アクセスポイント
技術 ディスク暗号化 (LUKSなど)、ファイルシステム暗号化、DB暗号化 TLS/SSL (HTTPS), VPN, SSHなど
目的 データを保存している媒体が奪われても情報漏洩を防ぐ 通信経路上の盗聴・改ざんを防ぎ、通信相手を認証する