Loading...
MySQL 9.5 Reference Manual 9.5의 8.6.3 MySQL Enterprise Encryption Usage and Examples의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
애플리케이션에서 MySQL Enterprise Encryption을 사용하려면, 수행하려는 작업에 적합한 함수들을 호출하면 됩니다. 이 섹션에서는 몇 가지 대표적인 작업을 수행하는 방법을 보여줍니다.
MySQL Enterprise Encryption 함수들은 MySQL 컴포넌트인 component_enterprise_encryption에 의해 제공됩니다. 이러한 함수들에 대한 정보는
Section 8.6.4, “MySQL Enterprise Encryption Function Reference”를 참조하십시오.
다음과 같은 일반적인 사항들은 키 길이와 암호화 알고리즘을 선택할 때 적용됩니다:
개인 키 및 공개 키에 대한 암호화의 강도는 키 크기가 증가함에 따라 증가하지만, 키 생성 시간도 함께 증가합니다.
컴포넌트 함수들은 RSA 키만 지원합니다.
비대칭 암호화 함수는 대칭 암호화 함수에 비해 더 많은 리소스를 소비합니다. 이들은 적은 양의 데이터를 암호화하고 서명을 생성 및 검증하는 데 적합합니다. 많은 양의 데이터를 암호화할 때는 대칭 암호화 함수가 더 빠릅니다. MySQL 서버는 대칭 암호화를 위해
AES_ENCRYPT() 및
AES_DECRYPT() 함수를 제공합니다.
키 문자열 값은 런타임에 생성하여
SET,
SELECT, 또는
INSERT를 사용하여 변수나 테이블에 저장할 수 있습니다. 다음 예와 같습니다:
1SET @priv1 = create_asymmetric_priv_key('RSA', 2048); 2SELECT create_asymmetric_priv_key('RSA', 2048) INTO @priv2; 3INSERT INTO t (key_col) VALUES(create_asymmetric_priv_key('RSA', 1024));
파일에 저장된 키 문자열 값은
LOAD_FILE() 함수를 사용하여 FILE 권한을 가진 사용자가 읽을 수 있습니다. 다이제스트 및 서명 문자열도 유사하게 처리할 수 있습니다.
이 예제는 컴포넌트 함수와 레거시 함수 모두에 대해 동작합니다:
1-- Encryption algorithm 2SET @algo = 'RSA'; 3-- Key length in bits; make larger for stronger keys 4SET @key_len = 2048; 5 6-- Create private key 7SET @priv = create_asymmetric_priv_key(@algo, @key_len); 8-- Derive corresponding public key from private key, using same algorithm 9SET @pub = create_asymmetric_pub_key(@algo, @priv);
이 키 페어는 데이터를 암호화/복호화하거나 데이터를 서명/검증하는 데 사용할 수 있습니다.
이 예제는 컴포넌트 함수와 레거시 함수 모두에 대해 동작합니다. 두 경우 모두, 키 페어의 구성원은 RSA 키여야 합니다:
1SET @ciphertext = asymmetric_encrypt(@algo, 'My secret text', @pub); 2SET @plaintext = asymmetric_decrypt(@algo, @ciphertext, @priv);
이 예제는 컴포넌트 함수와 레거시 함수 모두에 대해 동작합니다:
1-- Digest type 2SET @dig_type = 'SHA512'; 3 4-- Generate digest string 5SET @dig = create_digest(@dig_type, 'My text to digest');
키 페어는 데이터를 서명하는 데 사용될 수 있으며, 그런 다음 서명이 다이제스트와 일치하는지 검증할 수 있습니다. 이 예제는 컴포넌트 함수와 레거시 함수 모두에 대해 동작합니다:
1-- Encryption algorithm; keys must 2-- have been created using same algorithm 3SET @algo = 'RSA'; 4–- Digest algorithm to sign the data 5SET @dig_type = 'SHA512'; 6 7-- Generate signature for digest and verify signature against digest 8SET @sig = asymmetric_sign(@algo, @dig, @priv, @dig_type); 9-- Verify signature against digest 10SET @verf = asymmetric_verify(@algo, @dig, @sig, @pub, @dig_type);
레거시 함수의 경우, 서명에는 다이제스트가 필요합니다. 컴포넌트 함수의 경우, 서명에는 다이제스트가 필요하지 않으며, 임의의 데이터 문자열을 사용할 수 있습니다. 이러한 함수들에서 다이제스트 타입은 서명의 원본 입력을 생성하는 데 사용된 알고리즘이 아니라 데이터를 서명하는 데 사용되는 알고리즘을 의미합니다. 다음 예제는 컴포넌트 함수용입니다:
1-- Encryption algorithm; keys must 2-- have been created using same algorithm 3SET @algo = 'RSA'; 4–- Arbitrary text string for signature 5SET @text = repeat('j', 256); 6–- Digest algorithm to sign the data 7SET @dig_type = 'SHA512'; 8 9-- Generate signature for digest and verify signature against digest 10SET @sig = asymmetric_sign(@algo, @text, @priv, @dig_type); 11-- Verify signature against digest 12SET @verf = asymmetric_verify(@algo, @text, @sig, @pub, @dig_type);
8.6.2 Configuring MySQL Enterprise Encryption
8.6.4 MySQL Enterprise Encryption Function Reference