JavaScriptが無効になっています。
この状態では一部の情報が表示されず、すべての機能を利用することができません。
DBMS_CRYPTO 使用例 〜準備〜
Oracle 10g には DBMS_CRYPTO という新しい暗号化するためのパッケージが組み込まれている。 ⇒ 暗号化ツールキットの概要
DBMS_CRYPTO パッケージを使用するための準備
DBMS_CRYPTO は初期状態では SYS にインストールされているが一般ユーザー(PUBLIC グループ )には実行権限が付与されていない。
ユーザー RIVUS に実行権限を付与する。
SQL> -- ユーザー RIVUS に実行権限付与
SQL> grant execute on dbms_crypto to RIVUS;
暗号化、暗号化ハッシュのタイプ
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-1: SH1(160bit) HASH_SH256 Secure Hash algorithm-2 : SH2(256bit) HASH_SH384 Secure Hash algorithm-2 : SH2(384bit) HASH_SH512 Secure Hash algorithm-2 : SH2(512bit) HMAC_MD5 Message Authentication Code:MAC 秘密鍵を使う MD5 HMAC_SH1 MAC 秘密鍵を使う SH1 HMAC_SH256 MAC 秘密鍵を使う SH256 HMAC_SH384 MAC 秘密鍵を使う SH384 HMAC_SH512 MAC 秘密鍵を使う SH512
暗号化のブロック連鎖
データ列を暗号化するときに前ブロックと連鎖方法の指定
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: 暗号型が指定されていません
暗号化 ENCRYPT
ENCRYPT には RAW を入力として RAW を戻り値とするファンクションがある。また、BLOB を入力し BLOB を出力するプロシージャ、CLOB を入力、BLOB を出力とする オーバーロード されたプロシージャがある。
FUNCTION ENCRYPT (src IN RAW,
typ IN PLS_INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL
) RETURN RAW;
パラメータ名 内容 src 暗号化するデータ(バイナリ) typ 暗号化、または、暗号化ハッシュ化のタイプ key 暗号化キー iv イニシャルベクター
BLOB および CLOB 用の暗号化プロシージャ
-- BLOB 用
PROCEDURE ENCRYPT (dst IN OUT NOCOPY BLOB,
src IN BLOB,
typ IN PLS_INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL
);
-- CLOB 用
PROCEDURE ENCRYPT (dst IN OUT NOCOPY BLOB,
src IN CLOB,
typ IN PLS_INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL
);
乱数、暗号化、ハッシュ関連事項