DBMS_CRYPTO 使用例 〜準備〜
Oracle 10g には DBMS_CRYPTO という新しい暗号化するためのパッケージが組み込まれている。 ⇒ 暗号化ツールキットの概要
DBMS_CRYPTO パッケージを使用するための準備
DBMS_CRYPTO は初期状態では SYS にインストールされているが一般ユーザー(PUBLIC グループ)には実行権限が付与されていない。
ユーザー RIVUS に実行権限を付与する。
SQL> -- ユーザー RIVUS に実行権限付与
SQL> grant execute on dbms_crypto to RIVUS;
暗号化 ENCRYPT
ENCRYPT には RAW を入力として RAW を戻り値とするファンクションと BLOB を入出力パラメータとして戻す BLOB、CLOB をそれぞれ入力とした オーバーロード したプロシージャがある。
FUNCTION ENCRYPT (src IN RAW,
typ IN PLS_INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL
) RETURN RAW;
| パラメータ名 | 内容 |
| src | 暗号化するデータ(バイナリ) |
| typ | 暗号化、または、暗号化ハッシュ化のタイプ |
| key | 暗号化キー |
| iv | イニシャルベクター |
暗号化、暗号化ハッシュのタイプ
DBMS_CRYPTO 暗号化パッケージでは大幅に暗号化およびハッシュアルゴリズムが追加されている。
ブロック暗号、ストリーム暗号では「アルゴリズム」「ブロック連鎖」「パディング」をセットにして指定する。それぞれは加算(≒ 論理和) したのちに1つのパラメータ(typ) で指定する。
事前定義済のブロック暗号化スイート(暗号化セット)
DES および 3DES については以下のセット内容で事前定義が用意されている。
| typ | 暗号化のセット内容 |
| DES_CBC_PKCS5 | ENCRYPT_DES + CHAIN_CBC + PAD_PKCS5 |
| DES3_CBC_PKCS5 | ENCRYPT_3DES + CHAIN_CBC + PAD_PKCS5 |
暗号化アルゴリズムのタイプ
暗号化(ENCRYPT) は復号化(DECRYPT) することで元のバイナリコードを取り出せる(可逆変換)。ハッシュ化は一方向の暗号化で元のバイナリコードを取り出せない(不可逆変換)。
| typ | 暗号化の内容 |
| 暗号化 | ENCRYPT_DES | Data Encryption Standard:DES(56bit/64bit) |
| ENCRYPT_3DES_2KEY | 3DES(112bit/128bit)でキー2つ使用 |
| ENCRYPT_3DES | 3DES(168bit/192bit)でキー3つ使用 |
| ENCRYPT_AES128 | Advanced Encryption Standard:AES(キー 128bit) |
| ENCRYPT_AES192 | AES(キー 192bit) |
| ENCRYPT_AES256 | AES(キー 256bit) |
| ENCRYPT_RC4 | RC4 |
| ハ ッ シ ュ 化 | HASH_MD4 | Message Digest:MD4(ハッシュ長:128bit) |
| HASH_MD5 | MD5(ハッシュ長:128bit) |
| HASH_SH1 | Secure Hash algorithm: SH1(160bit) |
| HMAC_MD5 | Message Authentication Code:MAC 秘密鍵を使う MD5 |
| HMAC_SH1 | MAC 秘密鍵を使う SH1 |
暗号化のブロック連鎖
データ列を暗号化するときに前ブロックと連鎖方法の指定
| typ | ブロック連鎖の内容 |
| CHAIN_ECB | Electronic Codebook:ECB(個々のブロックは独立:連鎖なし) |
| CHAIN_CBC | Cipher Block Chaining:CBC(直前のブロックと XOR 演算で連鎖) |
| CHAIN_CFB | Cipher Feedback:CFB(ブロックに満たないデータを暗号化できるように補完) |
| CHAIN_OFB | Output Feedback:OFB(直前のブロックの nビット分が次データストリームに追加) |
暗号化のブロックのパディング
データ列を暗号化するときブロックサイズ補完
| typ | データブロックの補完方法 |
| PAD_PKCS5 | PKCS #5: Password-Based Cryptography Standard を使用 |
| PAD_NONE | 補完しない。ユーザーがブロックサイズに責任をもつ |
| PAD_ZERO | 0 を補完する |
定義済み 例外一覧
| 例外名 | エラーコード:メッセージ |
| DoubleEncryption | ORA-28233: 二重暗号化はサポートされません。 |
| KeyBadSize | ORA-28234: キーの長さが短かすぎます。 |
| KeyNull | ORA-28239: キーが提供されませんでした |
| CipherSuiteInvalid | ORA-28827: 無効な暗号型が渡されました |
| CipherSuiteNull | ORA-28829: 暗号型が指定されていません |
実行可能なライセンス
サイト統合にともない代替情報の URL は不明