Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Advanced Security
Transparent Data Encryptionのご紹介
日本オラクル株式会社
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また
、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできませ
ん。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)する
ものではないため、購買決定を行う際の判断材料になさらないで下さい。
オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊
社の裁量により決定されます。
Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標または商標です。
他社名又は製品名は、それぞれ各社の商標である場合があります。
2
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
データファイルを直接アクセスされるリスク
3
Oracle
Database
データベース上の物理ファイル
- データ・ファイル
- Redo ログファイル
- アーカイブログファイル
- バックアップファイル
- エクスポートファイル・・・
$> strings -a financials.dbf |
grep “-[0-9]{4}-”
5555-5555-5555-4444
5105-1051-0510-5100 OS ユーザ
OSユーザで直接バイナリ・エディタやstrings
コマンドを使って物理ファイルにアクセスされる
データベースが起動していなくてもアクセス可能
ストレージ暗号やOSのファイル暗号は意味をなさない
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
従来の格納データ暗号化機能の問題点
4
しかし
SQL> declare
2 input_datavarchar2(256):= '暗号化したい文字列';
3 key_data raw(8) := dbms_obfuscation_toolkit.desgetkey(
4 seed => utl_raw.cast_to_raw(rpad('abcd', 80, 'abcd')));
5 output_dataraw(256);
6 output_data2 raw(256);
7 begin
8 dbms_output.put_line(input_data);
9 dbms_obfuscation_toolkit.desencrypt(
10 input => utl_raw.cast_to_raw(rpad(input_data, ((floor(lengthb(input_data)/8 + .9)) * 8))),
11 key => key_data,
12 encrypted_data=> output_data);
13 dbms_output.put_line(output_data);
14 dbms_obfuscation_toolkit.desdecrypt(
15 input => output_data,
16 key => key_data,
17 decrypted_data=> output_data2);
18 dbms_output.put_line(utl_raw.cast_to_varchar2(rtrim(output_data2)));
19 end;
20 /
暗号化ツールキット(PL/SQLパッケージ)
を利用したデータの暗号化はOracle 9i以前からも可能
暗号化ツールキットの利用
 アプリケーションの変更が必要
 パフォーマンスの劣化が大きい
 暗号鍵管理の問題
セキュリティ要件上は求められていても、
データ暗号化の実装は困難・・
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Advanced Security Transparent Data Encryption (TDE)
• アプリケーションからは透過的にデータの暗号化/復号
– 既存のアプリケーション(SQL)を改修する必要はなし
• 列暗号、表領域暗号の2種類の暗号化方式
• 強力な暗号アルゴリズムを利用した暗号化を実施
– NISTの標準共通鍵暗号方式 AES(128/192/256bit) に対応
• Oracle Wallet やHardware Security Moduleを利用した暗号鍵管理メカニズム
ディスク
バックアップ
ダンプファイル
外部委託先アプリケーション
SELECT name,cardnumber FROM credit;
ヤマダタロウ
1234567812345678
ヤマダタロウ
aG5#g&3f_g0R1Blg
カード番号の
暗号化
5
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Advanced Security Transparent Data Encryption (TDE)
Xeon 5570
IPP 無し
Xeon 5570
IPP 有り
AES-NI無し AES-NI有り
10倍の
スループット
暗号化
Xeon 5570
IPP 無し
Xeon 5570
IPP 有り
AES-NI無し AES-NI有り
8倍の
スループット
複合
1. アプリケーションの改修なく
実装可能
2. CPU内でデータの暗号化/
復号処理を実行
- パフォーマンス劣化を防止
暗号化処理量(MB/秒)
高
低
Intel/SPARCプロセッサの暗号化アクセラレーションによるDB暗号化・復合
AES-NIの使用有無による暗号化処理データ量(MB/秒)の比較
6
Intel/SPARCでサポート
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
SGA
TDE 列暗号化 (10gR2~)
表領域
REDOログ
UNDO表領域
サーバープロセス
SELECT
INSERT
UPDATE・・・
• 列単位での暗号化
• サーバプロセスで暗号化・復号
• REDOログ、UNDO表領域、アーカイブログも暗号化される
• SGAのバッファキャッシュは、暗号化されている
• 暗号化するとデータサイズは増加する
※暗号化アルゴリズムやSALT, MACオプションの有無に依存するが、
暗号化される列の値ごとに1~52Byte増加する
• 表暗号鍵はデータディクショナリに格納
• 暗号列への索引は、 B-Tree索引の一意検索のみ
• データ型とデータ長の制限が若干あり
Oracle Wallet
(Oacle Keystore)
列暗号化
マスター鍵
暗号化/復号
表暗号鍵
7
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
SGA
TDE 表領域暗号化 (11gR1~)
8
表領域暗号化
REDOログ
UNDO表領域
Disk I/Oで
暗号化/復号
サーバープロセス
SELECT
INSERT
UPDATE・・・
• 表領域単位での暗号化
• 表領域内の表や索引といったオブジェクトは
すべて暗号化される
• データブロックに対するI/Oで暗号化・復号
• REDOログ、UNDO表領域、アーカイブログも暗号化される
• SGAのバッファキャッシュ上は暗号化されていない
• 暗号化してもデータサイズは増加しない
• 表領域暗号鍵はデータファイルのヘッダーに格納
• 暗号列への索引に制限なし
• ほとんどすべてのオブジェクトが暗号化可能
(BFILEのみ不可)
表領域暗号化
マスター鍵
表領域暗号鍵
Oracle Wallet
(Oacle Keystore)
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
列暗号・表領域暗号の特徴
9
列暗号化 表領域暗号化
暗号化のタイミング 行アクセス時 データ・ブロックに対するI/O発生時
暗号化アルゴリズム 3DES168, AES128 , AES192 , AES256
暗号化により保護される場所 メモリ、ディスク ディスク
データサイズ 暗号化対象データの量に比例して増加 暗号化前と変わらない
性能への影響 暗号化列へのアクセス頻度に応じて劣化 暗号化表領域のディスクI/O頻度に応じて劣化
対象オブジェクト 列のみ
暗号化列に対する索引は、
B-Tree索引の一意検索のみ可能
表領域内のすべてのオブジェクト
BITMAP索引の作成やB-Tree索引の
範囲検索も利用可能
• 基本的に、表領域暗号化を使用することを推奨
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
TDEの暗号鍵の仕組み
10
Oracle Wallet
(Oracle Keystore)
パスワード
認証
マスター暗号鍵
表暗号鍵
データ・ディクショナリ
表領域暗号鍵
表領域
Datafile
表領域暗号鍵
表領域
Datafile
• Oracle Walletに、マスター暗号鍵が格納される (※12cから呼称は、Oracle Keystore)
• マスター暗号鍵は、それぞれの表暗号鍵と表領域暗号鍵を暗号化する
• 表ごとの暗号鍵、表領域ごとの暗号鍵でそれぞれの実データを暗号化する
• Oracle Walletにはマスター暗号鍵の履歴が含まれる
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Enterprise Manager Cloud Control 12c
11
GUIによる暗号鍵管理
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Enterprise Manager Cloud Control 12c
12
マスタ暗号鍵の変更
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Enterprise Manager Cloud Control 12c
13
表領域の暗号化方法
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Enterprise Manager Cloud Control 12c
14
表領域の暗号化方法
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Oracle Advanced Security Transparent Data Encryptionのご紹介

  • 1.
    Copyright © 2014Oracle and/or its affiliates. All rights reserved. |Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Oracle Advanced Security Transparent Data Encryptionのご紹介 日本オラクル株式会社
  • 2.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また 、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできませ ん。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)する ものではないため、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊 社の裁量により決定されます。 Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標または商標です。 他社名又は製品名は、それぞれ各社の商標である場合があります。 2
  • 3.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | データファイルを直接アクセスされるリスク 3 Oracle Database データベース上の物理ファイル - データ・ファイル - Redo ログファイル - アーカイブログファイル - バックアップファイル - エクスポートファイル・・・ $> strings -a financials.dbf | grep “-[0-9]{4}-” 5555-5555-5555-4444 5105-1051-0510-5100 OS ユーザ OSユーザで直接バイナリ・エディタやstrings コマンドを使って物理ファイルにアクセスされる データベースが起動していなくてもアクセス可能 ストレージ暗号やOSのファイル暗号は意味をなさない
  • 4.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 従来の格納データ暗号化機能の問題点 4 しかし SQL> declare 2 input_datavarchar2(256):= '暗号化したい文字列'; 3 key_data raw(8) := dbms_obfuscation_toolkit.desgetkey( 4 seed => utl_raw.cast_to_raw(rpad('abcd', 80, 'abcd'))); 5 output_dataraw(256); 6 output_data2 raw(256); 7 begin 8 dbms_output.put_line(input_data); 9 dbms_obfuscation_toolkit.desencrypt( 10 input => utl_raw.cast_to_raw(rpad(input_data, ((floor(lengthb(input_data)/8 + .9)) * 8))), 11 key => key_data, 12 encrypted_data=> output_data); 13 dbms_output.put_line(output_data); 14 dbms_obfuscation_toolkit.desdecrypt( 15 input => output_data, 16 key => key_data, 17 decrypted_data=> output_data2); 18 dbms_output.put_line(utl_raw.cast_to_varchar2(rtrim(output_data2))); 19 end; 20 / 暗号化ツールキット(PL/SQLパッケージ) を利用したデータの暗号化はOracle 9i以前からも可能 暗号化ツールキットの利用  アプリケーションの変更が必要  パフォーマンスの劣化が大きい  暗号鍵管理の問題 セキュリティ要件上は求められていても、 データ暗号化の実装は困難・・
  • 5.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Oracle Advanced Security Transparent Data Encryption (TDE) • アプリケーションからは透過的にデータの暗号化/復号 – 既存のアプリケーション(SQL)を改修する必要はなし • 列暗号、表領域暗号の2種類の暗号化方式 • 強力な暗号アルゴリズムを利用した暗号化を実施 – NISTの標準共通鍵暗号方式 AES(128/192/256bit) に対応 • Oracle Wallet やHardware Security Moduleを利用した暗号鍵管理メカニズム ディスク バックアップ ダンプファイル 外部委託先アプリケーション SELECT name,cardnumber FROM credit; ヤマダタロウ 1234567812345678 ヤマダタロウ aG5#g&3f_g0R1Blg カード番号の 暗号化 5
  • 6.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Oracle Advanced Security Transparent Data Encryption (TDE) Xeon 5570 IPP 無し Xeon 5570 IPP 有り AES-NI無し AES-NI有り 10倍の スループット 暗号化 Xeon 5570 IPP 無し Xeon 5570 IPP 有り AES-NI無し AES-NI有り 8倍の スループット 複合 1. アプリケーションの改修なく 実装可能 2. CPU内でデータの暗号化/ 復号処理を実行 - パフォーマンス劣化を防止 暗号化処理量(MB/秒) 高 低 Intel/SPARCプロセッサの暗号化アクセラレーションによるDB暗号化・復合 AES-NIの使用有無による暗号化処理データ量(MB/秒)の比較 6 Intel/SPARCでサポート
  • 7.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | SGA TDE 列暗号化 (10gR2~) 表領域 REDOログ UNDO表領域 サーバープロセス SELECT INSERT UPDATE・・・ • 列単位での暗号化 • サーバプロセスで暗号化・復号 • REDOログ、UNDO表領域、アーカイブログも暗号化される • SGAのバッファキャッシュは、暗号化されている • 暗号化するとデータサイズは増加する ※暗号化アルゴリズムやSALT, MACオプションの有無に依存するが、 暗号化される列の値ごとに1~52Byte増加する • 表暗号鍵はデータディクショナリに格納 • 暗号列への索引は、 B-Tree索引の一意検索のみ • データ型とデータ長の制限が若干あり Oracle Wallet (Oacle Keystore) 列暗号化 マスター鍵 暗号化/復号 表暗号鍵 7
  • 8.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | SGA TDE 表領域暗号化 (11gR1~) 8 表領域暗号化 REDOログ UNDO表領域 Disk I/Oで 暗号化/復号 サーバープロセス SELECT INSERT UPDATE・・・ • 表領域単位での暗号化 • 表領域内の表や索引といったオブジェクトは すべて暗号化される • データブロックに対するI/Oで暗号化・復号 • REDOログ、UNDO表領域、アーカイブログも暗号化される • SGAのバッファキャッシュ上は暗号化されていない • 暗号化してもデータサイズは増加しない • 表領域暗号鍵はデータファイルのヘッダーに格納 • 暗号列への索引に制限なし • ほとんどすべてのオブジェクトが暗号化可能 (BFILEのみ不可) 表領域暗号化 マスター鍵 表領域暗号鍵 Oracle Wallet (Oacle Keystore)
  • 9.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 列暗号・表領域暗号の特徴 9 列暗号化 表領域暗号化 暗号化のタイミング 行アクセス時 データ・ブロックに対するI/O発生時 暗号化アルゴリズム 3DES168, AES128 , AES192 , AES256 暗号化により保護される場所 メモリ、ディスク ディスク データサイズ 暗号化対象データの量に比例して増加 暗号化前と変わらない 性能への影響 暗号化列へのアクセス頻度に応じて劣化 暗号化表領域のディスクI/O頻度に応じて劣化 対象オブジェクト 列のみ 暗号化列に対する索引は、 B-Tree索引の一意検索のみ可能 表領域内のすべてのオブジェクト BITMAP索引の作成やB-Tree索引の 範囲検索も利用可能 • 基本的に、表領域暗号化を使用することを推奨
  • 10.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | TDEの暗号鍵の仕組み 10 Oracle Wallet (Oracle Keystore) パスワード 認証 マスター暗号鍵 表暗号鍵 データ・ディクショナリ 表領域暗号鍵 表領域 Datafile 表領域暗号鍵 表領域 Datafile • Oracle Walletに、マスター暗号鍵が格納される (※12cから呼称は、Oracle Keystore) • マスター暗号鍵は、それぞれの表暗号鍵と表領域暗号鍵を暗号化する • 表ごとの暗号鍵、表領域ごとの暗号鍵でそれぞれの実データを暗号化する • Oracle Walletにはマスター暗号鍵の履歴が含まれる
  • 11.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Oracle Enterprise Manager Cloud Control 12c 11 GUIによる暗号鍵管理
  • 12.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Oracle Enterprise Manager Cloud Control 12c 12 マスタ暗号鍵の変更
  • 13.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Oracle Enterprise Manager Cloud Control 12c 13 表領域の暗号化方法
  • 14.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Oracle Enterprise Manager Cloud Control 12c 14 表領域の暗号化方法
  • 15.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. |