Data Security
データセキュリティでは、暗号化、アクセス制御、監査によって不正アクセス、改ざん、損失からデータを保護します。AIのデータセットと重みも対象です。
データセキュリティとは、データの収集、保存、処理、共有から削除まで、ライフサイクル全体を通じて、デジタルデータを不正アクセス、窃盗、改ざん、紛失から守ることです。通常、その目標はCIAトライアドで示されます。機密性は、認可された人やシステムだけがデータを読み取れること、完全性はデータが正確で改変されていない状態を保つこと、可用性は必要なときにデータを利用できることを指します。2024年2月に公開されたNISTのサイバーセキュリティフレームワーク 2.0は、取り組みを統治、特定、防御、検知、対応、復旧の6つの機能に分類しています。機械学習で保護すべきデータには、トレーニングデータとそのラベル、データから学習した内容を符号化するモデルの重み、推論のために送信する画像やプロンプト、それらを記録するログが含まれます。
主要な管理策#
データセキュリティは複数のレイヤーを組み合わせ、1つの制御が失敗してもすべてが露出しないようにします。
- 暗号化: 保存データはAES-256などの暗号方式で暗号化し、転送中のデータにはTLSを使用します。
- アクセス制御: ロール、多要素認証、共有パスワードの代わりに有効期間の短い認証情報を用いて、各ユーザーやサービスに必要最小限の権限を付与します。
- 鍵とシークレットの管理: 暗号鍵はデータとは分けて鍵管理サービスまたはハードウェアセキュリティモジュールに保管し、定期的にローテーションします。APIキーはソースコードやノートブックに記載しません。
- 完全性チェックとバックアップ: チェックサムとデジタル署名でファイルの改変を検知し、バージョン管理された不変のバックアップでランサムウェアや誤削除から復旧できるようにします。
- 監査ログ: 読み取り、書き込み、権限変更をすべて記録することで、夜間に1つのアカウントがデータセット全体をダウンロードするような不審なアクセスを検知し、調査できます。
認証付き暗号化は、機密性と完全性を同時に実現します。この例では、Pythonのcryptographyパッケージに含まれるFernetを使ってラベルファイルの1行を暗号化し、ビットを1つ反転させた場合に検知できることを示します。
import base64
from cryptography.fernet import Fernet, InvalidToken
# 本番環境では鍵を鍵管理サービスから取得し、データと一緒に保存しません
cipher = Fernet(Fernet.generate_key())
label = b"0 0.48 0.63 0.21 0.37\n" # YOLOアノテーションの1行
token = cipher.encrypt(label) # AES-128-CBCの暗号文とHMAC-SHA256タグ
print(cipher.decrypt(token) == label)
# 改ざんやディスク破損を想定して、保存された暗号文のビットを1つ反転させます
raw = bytearray(base64.urlsafe_b64decode(token))
raw[30] ^= 1
try:
cipher.decrypt(base64.urlsafe_b64encode(bytes(raw)))
except InvalidToken:
print("Integrity check failed: decryption refused")最初の行は、変更されていないトークンが元のラベルに復号されるため、Trueを出力します。暗号文のビットが1つ変わるとHMACタグが一致しなくなるため、decryptはInvalidTokenを発生させ、改変されたデータを返さずにIntegrity check failed: decryption refusedを出力します。
機械学習におけるデータセキュリティ#
AIシステムには、一般的なデータベースにはない攻撃対象領域があります。
- データポイズニング: データセット、ラベル付けキュー、スクレイピングしたウェブソースへの書き込み権限を持つ攻撃者が、学習済みモデルの誤動作を引き起こすサンプルを挿入します。多くの場合、隠されたトリガーが現れたときにのみ誤動作します。
- 安全でないモデルファイル: Pythonのpickleで保存されたチェックポイントは、読み込み時に任意のコードを実行する可能性があります。PyTorch 2.6では、
torch.loadのデフォルトをweights_only=Trueに変更しました。これにより、テンソルと単純な型以外は拒否されます。また、safetensors形式はテンソルのみを保存します。 - メンバーシップ推論攻撃: 学習済みモデルへのクエリによって、特定のレコードがトレーニングセットに含まれていたかどうかが判明する可能性があるため、機密データで学習した重みには、そのデータと同等の保護が必要です。
- プロンプトインジェクション: 文書やウェブページに隠された指示によって、LLMアプリケーションがコンテキスト内のデータを漏えいしたり、ツールを介して攻撃者に送信したりする可能性があります。
- シャドーAI: 従業員が、組織の承認を受けていないAIツールに機密データを貼り付け、組織のアクセス制御やログ管理の範囲外で利用します。
コンピュータービジョンのデータでは、人、住宅、車両、患者の画像に個人情報が含まれることが多く、リスクが高まります。医療分野で米国の病院が医用画像解析に使うスキャン画像には、電子的に保護された医療情報に対する管理的、物理的、技術的な保護策を求めるHIPAAセキュリティ規則が適用されます。カメラ上でフレームを処理するエッジAIは、生動画をネットワークに一切送信せずに済みます。連合学習では、各拠点がデータを保持したまま共有モデルを学習できます。機密AIでは、クラウドの暗号化されたハードウェアエンクレーブ内で機密データのトレーニングや推論を実行します。企業ネットワーク内にデータセットを保持する必要がある場合、Ultralytics Platformのオンプレミス統合を使うと、データセットの取り込み、プレビュー、トレーニングを企業所有のコンピューター上で実行できます。ワーカーはデータセットフォルダーを読み取り専用でマウントし、インバウンドポートを開かずにHTTPS経由で外部へ接続します。画像のピクセルデータがPlatformに届くことはなく、Platformが受け取るのはラベル、メトリクス、最良のチェックポイントのみです。
データセキュリティとデータプライバシーの違い#
データプライバシーは、GDPRなどの法律に基づき、個人データが適法に、かつ本人に通知したとおりに収集、使用、共有、保持されているかを扱います。データセキュリティは、プライバシーに関する取り組みを支える技術的・組織的な保護策を提供し、個人情報を含まない企業秘密、ソースコード、モデルの重みなど、価値のあるすべてのデータを対象とします。差分プライバシーなどのプライバシー強化技術は両者の間に位置し、公開するモデルや統計情報から特定の個人について明らかになる内容を制限します。侵害は、セキュリティ上の失敗によって個人データが露出した場合に、プライバシーインシデントとなります。GDPR第33条では、侵害によって人々の権利や自由が危険にさらされる可能性が低い場合を除き、管理者は侵害を認識してから72時間以内に監督機関へ通知する必要があります。










