暗号メカニズム
DuoKey PKCS#11 ライブラリは、標準的な Cryptoki メカニズムのセットを公開します。このページでは、Oracle TDE に関連するメカニズム、関与するキーサイズ、そして重要な点として、Oracle TDE がマスターキーのラップパスで使用しなければならないメカニズムについて説明します。
Oracle TDE が使用するのは、AES キー生成 と ラップ/アンラップ(暗号化/復号)のメカニズムのみです。このライブラリは汎用の Cryptoki プロバイダーであり、他の DuoKey 統合のために RSA および EC メカニズムも公開しますが、Oracle TDE がマスターキーのためにそれらを駆動することはありません。TDE マスター暗号化キーは常に AES-256 です。
概要
対称暗号
AES-CBC および AES-CBC-PAD — Oracle TDE のラップメカニズム
PKCS#11 メカニズム: CKM_AES_CBC、CKM_AES_CBC_PAD
Oracle TDE のマスターキーパスでは、表領域およびテーブルキーが、長さを保持する AES-CBC / AES-CBC-PAD メカニズムを用いて、マスターキーによってラップおよびアンラップされます。これは Oracle TDE が依拠するメカニズムであり、長さを保持するものでなければなりません。
長さの保持が重要な理由:
Oracle の SET KEY 操作は、アンラップされたキーが、ラップされたときとまったく同じサイズであることを期待します。AES-CBC(ブロック境界に整列した入力を用いる場合)と AES-CBC-PAD はキーサイズを保持するため、保管されたキーの blob が正しくラウンドトリップします。
拡張する AES-GCM エンベロープ(IV と認証タグを付加するもの)は、保管されるキー blob の長さを変えてしまいます。Oracle TDE のラップパスでは、これが Oracle の保管する表領域キーを破損させ、次のエラーを引き起こします。
ORA-00600: internal error code, arguments: [kcbtse_populate_tbskey_1]
認証付きの AES-GCM エンベロープモードは、不透明な blob を保管する 非 TDE の呼び出し元向けのフォールバックとしてのみ 提供されます。Oracle TDE 向けに選択してはなりません。
特性:
- ブロックサイズ: 128 ビット(16 バイト)
- IV: 初期化ベクトルが必要です
- パディング:
CKM_AES_CBC_PADは PKCS#7 パディングを自動的に適用します。CKM_AES_CBCはブロック境界に整列した入力を期待します - 操作: 単一パート(
C_Encrypt/C_Decrypt)とマルチパート(C_EncryptUpdate/C_EncryptFinal)の両方の形式をサポートします
AES-GCM(Oracle TDE では使用しません)
PKCS#11 メカニズム: CKM_AES_GCM
AES-GCM は、機密性と完全性を提供する認証付き暗号化モードです(IV、オプションの追加認証データ、および認証タグを伴います)。暗号文を拡張するため、Oracle TDE のキーラップパスには適しておらず(上記の注意を参照)、非 TDE の呼び出し元向けのフォールバックとしてのみ予約されています。
キー生成
AES キー生成
PKCS#11 メカニズム: CKM_AES_KEY_GEN
サポートされるキーサイズ:
- 128 ビット(16 バイト)
- 192 ビット(24 バイト)
- 256 ビット(32 バイト) — Oracle TDE で使用
Oracle TDE での使用:
- マスター暗号化キー (MEK): 256 ビット AES キー。Oracle のマスター暗号化キーは常に AES-256 です。
- テーブルおよび表領域キー: Oracle によって生成され、AES-CBC-PAD を用いてマスターキーによってラップされます。
RSA および ECC キー生成(Oracle TDE では使用しません)
このライブラリは、他の DuoKey 統合のために CKM_RSA_PKCS_KEY_PAIR_GEN(2048 / 3072 / 4096 ビット)と CKM_EC_KEY_PAIR_GEN(P-256 / P-384 / P-521)も公開します。Oracle TDE は、マスターキーに RSA や ECC を使用しません。
Oracle TDE 使用のまとめ
| TDE 操作 | メカニズム | 備考 |
|---|---|---|
| マスターキー生成 | CKM_AES_KEY_GEN | 256 ビット、TDE-MASTER-<date> などの CKA_LABEL。ラップ/アンラップを有効化 |
| テーブルキーのラップ/アンラップ | CKM_AES_CBC_PAD | 長さを保持。マスターキーによってテーブル暗号化キーをラップ |
| 表領域キーのラップ/アンラップ | CKM_AES_CBC_PAD | 長さを保持。マスターキーによって表領域キーをラップ |
マスターキーのバイト列はセンシティブです。C_GetAttributeValue が CKA_VALUE を返すことは決してなく(CKR_ATTRIBUTE_SENSITIVE で拒否されます)、マスターキーの素材がバックエンドキーストアから外に出ることはありません。
セキュリティに関する考慮事項
キーサイズ
- AES: 256 ビットが Oracle TDE のデフォルトであり、推奨される選択です。
IV の管理
- ラップ操作ごとに、新しいランダムな IV を使用してください。
- IV の長さを AES ブロックサイズ(16 バイト)に合わせてください。
- IV をラップされたキーとともに保管してください。
- 同じキーで IV を再利用しないでください。
パフォーマンスに関する考慮事項
- バルクな表領域データ は、データベースホスト上でローカルに暗号化され、CPU の AES-NI 命令によってハードウェアアクセラレートされます。ネットワークを越えることはありません。
- マスターキー操作(生成、ラップ、アンラップ)は小さく、頻度も低いものです。DuoKey Cockpit に到達するのはこれらのみです。
- オブジェクトハンドルは、繰り返しのルックアップを避けるためにセッションごとにキャッシュされます。
他の箇所で示されるスループットの数値はいずれも参考目標値であり、ベンチマークによる保証ではありません。
次のステップ
- PKCS#11 インターフェイスレイヤー → - メカニズムが Oracle にどのように公開されるかを見る
- 通信フロー → - 操作フローを理解する
- 構成 → - プロバイダーがどのように構成されるかを学ぶ