oracle advanced security transparent data encryptionのご紹介
Post on 16-Apr-2017
408 views
TRANSCRIPT
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. | 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。
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-44445105-1051-0510-5100 OS ユー
ザ
OS ユーザで直接バイナリ・エディタや stringsコマンドを使って物理ファイルにアクセスされるデータベースが起動していなくてもアクセス可能ストレージ暗号や OS のファイル暗号は意味をなさない
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
従来の格納データ暗号化機能の問題点
4
しかし
SQL> declare 2 input_data varchar2(256) := ' 暗号化したい文字列 '; 3 key_data raw(8) := dbms_obfuscation_toolkit.desgetkey( 4 seed => utl_raw.cast_to_raw(rpad('abcd', 80, 'abcd'))); 5 output_data raw(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 5570IPP 無し
Xeon 5570IPP 有り
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 表領域
サーバープロセス
SELECTINSERTUPDATE ・・・• 列単位での暗号化
• サーバプロセスで暗号化・復号• 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 で暗号化 / 復号
サーバープロセス
SELECTINSERTUPDATE ・・・• 表領域単位での暗号化
• 表領域内の表や索引といったオブジェクトはすべて暗号化される
• データブロックに対する 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. |