DBMS_CRYPTO システムパッケージは、基本的な暗号化および復号化の関数とストアドプロシージャを提供します。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
DBMS_CRYPTO は、AES高度暗号化標準を含む、さまざまな業界標準の暗号化およびハッシュアルゴリズムをサポートしています。AESは、NIST(米国国立標準技術研究所)によって認可され、DESデータ暗号化標準(The Data Encryption Standard)に取って代わるものとなりました。
DBMS_CRYPTO は、一般的なデータ型の暗号化および復号化をサポートしており、RAW データ型や画像、音声などのBLOB(LOB)データ型も対象となります。また、DBMS_CRYPTO はグローバル化にも対応しており、異なる文字セットを使用するデータベース間でのデータの暗号化および復号化を実行できます。
DBMS_CRYPTOデータ型
DBMS_CRYPTOサブプログラムのパラメータで使用されるデータ型は以下のとおりです:
データ型 |
説明 |
|---|---|
| BLOB | ソースまたはターゲットのバイナリ LOB。 |
| CLOB | ソースまたはターゲットの文字列 LOB。 |
| PLS_INTEGER | 暗号化アルゴリズムのタイプを指定します(BLOB、CLOB、RAW データ型と共に使用)。 |
| RAW | ソースまたはターゲットの RAW バッファー。 |
DBMS_CRYPTOアルゴリズム
DBMS_CRYPTO パッケージには、事前定義された暗号化アルゴリズム、パスワードブロック連結アルゴリズム、およびパスワードブロックパディングアルゴリズムが含まれています。
サポートされているハッシュ暗号化アルゴリズム:
名前説明HASH_MD4 入力メッセージの128ビットハッシュまたはメッセージダイジェストを生成します。 HASH_MD5 128ビットのハッシュも生成しますが、MD4よりも複雑です。 HASH_SH1 安全ハッシュアルゴリズム(SHA-1)。160ビットのハッシュを生成します。 HASH_SH256 SHA-2、256ビットのハッシュを生成します。 HASH_SH384 SHA-2、384ビットのハッシュを生成します。 HASH_SH512 SHA-2、512ビットのハッシュを生成します。 HASH_SM3 国密アルゴリズム、256ビットのハッシュを生成します。 サポートされている暗号化アルゴリズム:
名前説明ENCRYPT_AES128 暗号化ブロック高級暗号方式。128ビットの鍵を使用します。 ENCRYPT_AES192 暗号化ブロック高級暗号方式。192ビットの鍵を使用します。 ENCRYPT_AES256 暗号化ブロック高級暗号方式。256ビットの鍵を使用します。 ENCRYPT_DES 暗号化ブロック暗号方式。56ビットの鍵を使用します。 ENCRYPT_3DES_2KEY 暗号化ブロック暗号方式。同一ブロックに対して2つの鍵で3回暗号化します。有効な鍵長は112ビットです。 ENCRYPT_3DES 暗号化ブロック暗号方式。同一ブロックに対して3回暗号化します。 ENCRYPT_SM4 国密ブロック暗号アルゴリズム。ブロック長と鍵長はいずれも128ビットです。 サポートされているパスワードブロック連結アルゴリズム:
名前説明CHAIN_ECB 電子暗号本モード。平文全体を複数の同じ長さの小ブロックに分割し、各小ブロックごとに暗号化します。 CHAIN_CBC 暗号化ブロック連結モード。まず平文を複数の小ブロックに分割し、各小ブロックを初期ブロックまたは前の暗号化ブロックとXOR演算を行った後、鍵と共に暗号化します。 CHAIN_CFB 暗号化フィードバックモード。ブロックサイズより小さいデータユニットの暗号化を有効にします。 CHAIN_OFB 出力フィードバックモード。ブロック暗号を同期ストリーム暗号として動作させることができます。CFBと類似していますが、前の出力ブロックのnビットが暗号化待ちのデータキューの最右端に移動する点が異なります。 サポートされているパスワードブロックパディングアルゴリズム:
名前説明PAD_PKCS5 提供されるパディングアルゴリズムは、PKCS#5、すなわちパスワードベースの暗号標準に準拠しています。 PAD_NONE パディングアルゴリズムを指定しないオプションを提供します。呼び出し元はブロックサイズが正しいことを確認する必要があります。そうでない場合、パケットはエラーとして返されます。
DBMS_CRYPTOの使用上の制限
DBMS_CRYPTO は VARCHAR2 データ型を直接サポートしていません。VARCHAR2 型のデータに対して暗号化操作を実行する前に、統一データベース文字セットAL32UTF8に変換し、その後 RAW データ型に変換する必要があります。これらの変換を完了した後であれば、DBMS_CRYPTO システムパッケージを使用して暗号化できます。
DBMS_CRYPTOサブプログラムの概要
次の表は、OceanBaseデータベースの現在のバージョンでサポートされている DBMS_CRYPTO サブプログラムとその簡単な説明を示しています。