GT.Mのデータベース暗号化には、選択された暗号化パッケージで「すぐに」動作するリファレンス実装が付属しています。これは、GT.Mデータベースの暗号化を使用した初期の開発とテストに使用できます。多くの暗号化パッケージがあります。先に論じたように、FISは特定の暗号やパッケージを保証もサポートもしていません。プロダクション環境で、あなたは希望するパッケージの選択、実装、および調達の責任を負います。選択した暗号化パッケージの誤動作により、回復不能なデータが生成され、FISがお客様をサポートできなくなる可能性があることを覚えておいてください。
以下の プラグインのアーキテクチャとインタフェース のセクションでは、リファレンス実装について詳しく説明しています。このリファレンス実装は、あなた自身の使用のために自由に変更できる完全なソースコードとともに提供されています。
GT.Mが暗号化をサポートするプラットフォームごとに、次の表は、FISがGT.Mをテストした暗号化パッケージとバージョンを示しています。FISは、これらのパッケージに対する操作のためにGT.Mをテストしました。FISは、暗号化パッケージ自体の堅牢性をテストしませんでした。
OS (HW) |
libgpgme |
libgpg-error |
libgcrypt / libcrypto |
GPG |
---|---|---|---|---|
Ubuntu 12.04 LTS (x86_64) |
1.2.0-1.2 |
1.6-1 |
libgcrypt 1.4.4-5 |
|
RHEL 6 (x86_64) |
1.1.6 |
1.4-2 |
libgcrypt 1.4.4-5 |
|
RHEL 6 (x86) |
1.1.6 |
1.4-2 |
libgcrypt 1.4.4-5 |
|
AIX 6.1 と 7.1 |
1.1.8 + fix |
1.7 |
OpenSSLのlibcrypto - (version >= 1.5) OpenSSLで実装されているAES256CFB - (version >= 0.9.8) |
|
Sun SPARC Solaris 10 (Update 6 以上) |
1.1.4 + fix |
1.6 |
libgcrypt 1.4.1 |
|
HP-UX 11V3 (11.31) |
1.1.8 + fix |
1.7 |
libgcrypt 1.4.1 |
|
SLES 11 (x86_64) |
1.1.6-25.30 |
1.6-8.6 |
libgcrypt 1.4.4-2.2 |
表にパッケージのバージョン番号とそれに続く "+ fix" が表示されている場合は、テストの過程で修正されたパッケージに関する問題が特定されたことを意味します。アップストリームのパッケージ・メンテナに修正プログラムのソースコードを提供しました。FISとサポート契約を結んでいる場合は、要請があれば、そのソースコードをお客様と共有します。
リファレンス実装では:
GPGによって実装されたディスク上のキーリング
公開/秘密キー・ペアの生成を含む公開キー暗号化:GPGによって実装されたRSA
暗号化ハッシュ:SHA-512
GPGへのプログラム・インタフェース:libgpgme
GPGのエラーメッセージ:libgpg-error
対称暗号化:すべてのプラットフォームでlibgcryptによって実装されたAES256CFB
GT.Mデータベース暗号化がV5.3-004で初めてリリースされたとき、AIXのリファレンス実装はBlowfish CFBでした。64ビット環境への libgcrypt の移植は、32ビット環境への移植(AIXのGT.Mは64ビットアプリケーション)よりも成熟度が低いため、libgcryptには一定の制限がありました。また、その時点でOpenSSLのlibcryptoにAESを実装するには、データが16バイトの倍数であるチャンクである必要があったため、Blowfishが使用されました。プラグインのリファレンス実装を介してV6.0-001でBlowfish CFBを引き続き使用する場合は、インストール後のシンボリックリンクを変更するか、次のように環境変数gtm_crypt_pluginを定義する必要があります。
もし環境変数 gtm_crypt_plugin が定義されていて、$gtm_dist/plugin に関連する共有ライブラリへのパスを提供する場合、GT.Mは、$gtm_dist/plugin/$gtm_crypt_plugin をプラグインを提供する共有ライブラリとして使用します。
もし $gtm_crypt_plugin が定義されていない場合、GT.Mは $gtm_dist/plugin/libgtmcrypt.so がプラグインを提供する共有ライブラリへのシンボリックリンクであると想定します。実際の共有ライブラリの予想される名前は libgtmcrypt_cryptlib_CIPHER.so です(プラットフォームによっては実際の拡張子が .so と異なる場合があります)。たとえば libgtmcrypt_openssl_AESCFB です。GT.Mは、OpenSSLで実装されている暗号が実際にAES CFBであることを保証することはできません。GT.Mは、CIPHERをデータベース・ファイル・ヘッダーのハッシュキー用のsaltとして使用し、cryptlib は利便性のために使用しています。たとえば、トラブルシューティングのために使用します。GT.M ディストリビューションをインストールすると、デフォルトのシンボリックリンクが作成されます。
注意 | |
---|---|
Blowfish CFBからAES CFBにデータベースを移行するには、データを抽出して新しく作成したデータベースファイルにロードする必要があります。アプリケーションを使用できない時間を最小限に抑えるには、アプリケーションを論理マルチサイト(LMS)構成に配置し、ローリング・アップグレード・テクニックを使用して移行できます。詳しくは、第7章: “データベース・レプリケーション” を参照してください。 |
GT.Mプロセスが最初に暗号化プラグインを提供する共有ライブラリを開くと、ライブラリは $gtm_dist/plugin またはそのサブディレクトリに存在することが保証されます。これにより、暗号化プラグインを実装しているライブラリであれば、GT.Mのインストール自体と同じアクセスコントロールがインストールされ、同じアクセスコントロールで保護されている必要があります。
GT.Mが暗号化をサポートするすべてのプラットフォームでは、共有ライブラリ libgtmcrypt_gcrypt_AES256CFB.so、libgtmcrypt_openssl_AES256CFB.so およびlibgtmcrypt_openssl_BLOWFISHCFB.so によって提供される、プラグインの3つのリファレンス実装が配布に含まれます。インストール時に、AIX以外のプラットフォーム libgtmcrypt.so は、libgtmcrypt_gcrypt_AES256CFB.so へのシンボリックリンクです; AIXのシンボリックリンクは libgtmcrypt_openssl_AESCFB.soです。Blowfish CFBをデフォルトとして使用するには、GT.Mをインストールした後にシンボリックリンクを変更する必要があります。AES CFBをデフォルトとして使用し、V6.0-000から移行されたデータベースのBlowfish CFBを保持するには、これらのデータベースを使用するときにgtm_crypt_pluginを設定します。V6.0-000とV6.0-001の間で移植できるスクリプトの場合、V6.0-000が無視するgtm_crypt_pluginの値を安全に設定することができます。
注意 | |
---|---|
|
注意 | |
---|---|
開発中、コアダンプで、FISは、GT.Mがライブラリを適切に呼び出してキーを破棄したにもかかわらず、libgpgme によって解放されたバッファ内の解読された対称データベースキーに気付きました。私たちは上流の開発者にこれを伝えました。これは、データベース・キーとしての強力な乱数の望ましさと、必要な場合を除いてコア・ダンプの無効化を再度強調しています。これらの強力なキーは、 “キー・マネージメント ” のセクションで説明している gen_sym_key.sh スクリプトを使用して作成できます。 |