Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  Enterprise Encryption の使用法と例

12.17.2 Enterprise Encryption の使用法と例

アプリケーションで Enterprise Encryption を使用するには、実行する演算に適した関数を呼び出します。このセクションでは、一部の典型的なタスクを実行する方法を示します。

タスク: RSA 暗号化を使用して秘密鍵と公開鍵のペアを作成します。

-- Encryption algorithm; can be 'DSA' or 'DH' instead
SET @algo = 'RSA';
-- Minimum key length in bits; make larger for stronger keys
SET @key_len = 1024;

-- Create private key
SET @priv = CREATE_ASYMMETRIC_PRIV_KEY(@algo, @key_len);
-- Derive corresponding public key from private key, using same algorithm
SET @pub = CREATE_ASYMMETRIC_PUB_KEY(@algo, @priv);

鍵のペアを使用すると、データを暗号化および復号化したり、データを署名および検証したり、対称鍵を生成したりできるようになりました。

タスク: 秘密鍵を使用してデータを暗号化し、公開鍵を使用して復号化します。これには、鍵ペアのメンバーが RSA 鍵である必要があります。

SET @ciphertext = ASYMMETRIC_ENCRYPT(@algo, 'My secret text', @priv);
SET @plaintext = ASYMMETRIC_DECRYPT(@algo, @ciphertext, @pub);

反対に、公開鍵を使用して暗号化し、秘密鍵を使用して復号化できます。

SET @ciphertext = ASYMMETRIC_ENCRYPT(@algo, 'My secret text', @pub);
SET @plaintext = ASYMMETRIC_DECRYPT(@algo, @ciphertext, @priv);

いずれの場合でも、暗号化関数および復号化関数用に指定されたアルゴリズムは、鍵を生成したときに使用されたアルゴリズムと一致する必要があります。

タスク: 文字列からダイジェストを生成します。

-- Digest type; can be 'SHA256', 'SHA384', or 'SHA512' instead
SET @dig_type = 'SHA224';

-- Generate digest string
SET @dig = CREATE_DIGEST(@dig_type, 'My text to digest');

タスク: 鍵ペアを含むダイジェストを使用してデータを署名してから、その署名がダイジェストと一致することを確認します。

-- Encryption algorithm; could be 'DSA' instead; keys must
-- have been created using same algorithm
SET @algo = 'RSA';

-- Generate signature for digest and verify signature against digest
SET @sig = ASYMMETRIC_SIGN(@algo, @dig, @priv, @dig_type);
-- Verify signature against digest
SET @verf = ASYMMETRIC_VERIFY(@algo, @dig, @sig, @pub, @dig_type);

タスク: 対称鍵を作成します。これには、共有対称シークレットを使用して作成される DH 秘密鍵/公開鍵が入力として必要です。鍵の長さを CREATE_DH_PARAMETERS() に渡してシークレットを作成してから、そのシークレットを鍵の長さとして CREATE_ASYMMETRIC_PRIV_KEY() に渡します。

-- Generate DH shared symmetric secret
SET @dhp = CREATE_DH_PARAMETERS(1024);
-- Generate DH key pairs
SET @algo = 'DH';
SET @priv1 = CREATE_ASYMMETRIC_PRIV_KEY(@algo, @dhp);
SET @pub1 = CREATE_ASYMMETRIC_PUB_KEY(@algo, @priv1);
SET @priv2 = CREATE_ASYMMETRIC_PRIV_KEY(@algo, @dhp);
SET @pub2 = CREATE_ASYMMETRIC_PUB_KEY(@algo, @priv2);

-- Generate symmetric key using public key of first party,
-- private key of second party
SET @sym1 = ASYMMETRIC_DERIVE(@pub1, @priv2);

-- Or use public key of second party, private key of first party
SET @sym2 = ASYMMETRIC_DERIVE(@pub2, @priv1);

鍵文字列の値は、SETSELECT、または INSERT を使用することで実行時に作成し、変数やテーブルに格納できます。

SET @priv1 = CREATE_ASYMMETRIC_PRIV_KEY('RSA', 1024);
SELECT CREATE_ASYMMETRIC_PRIV_KEY('RSA', 1024) INTO @priv2;
INSERT INTO t (key_col) VALUES(CREATE_ASYMMETRIC_PRIV_KEY('RSA', 1024));

ファイルに格納されている鍵文字列の値は、FILE 権限を持つユーザーが LOAD_FILE() 関数を使用することで読み取ることができます。

ダイジェストと署名の文字列は、同様に処理できます。


User Comments
Sign Up Login You must be logged in to post a comment.