Loading...
MySQL 9.5 Reference Manual 9.5의 8.6.5 MySQL Enterprise Encryption Component Function Descriptions의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL Enterprise Encryption 함수는 다음과 같은 일반적인 특성을 갖습니다:
잘못된 타입의 인수나 인수 개수가 올바르지 않은 경우, 각 함수는 오류를 반환합니다.
함수가 요청된 연산을 수행하기에 인수가 적절하지 않으면, 각 함수는 상황에 따라 NULL 또는 0을 반환합니다. 예를 들어, 함수가 지정된 알고리즘을 지원하지 않거나, 키 길이가 너무 짧거나 길거나, PEM 포맷의 키 문자열이어야 할 문자열이 유효한 키가 아닐 경우에 이러한 일이 발생합니다.
하위 SSL 라이브러리가 난수 초기화를 처리합니다.
이 컴포넌트 함수들은 RSA 암호화 알고리즘만을 지원합니다.
추가 예제와 설명은
Section 8.6.3, “MySQL Enterprise Encryption Usage and Examples”를 참조하십시오.
지정된 알고리즘과 키 문자열을 사용하여 암호화된 문자열을 복호화하고, 그 결과 평문을 바이너리 문자열로 반환합니다. 복호화에 실패하면 결과는 NULL입니다.
MySQL 8.0.29 이전에 사용되던 이 함수의 레거시 버전에 대해서는
MySQL Enterprise Encryption Legacy Function Descriptions을 참조하십시오.
기본적으로,
component_enterprise_encryption 함수는 암호화된 텍스트가 RSAES-OAEP 패딩 방식(padding scheme)을 사용한다고 가정합니다. 시스템 변수
enterprise_encryption.rsa_support_legacy_padding
이 ON으로 설정된 경우(기본값은
OFF), 이 함수는 예전 openssl_udf 공유 라이브러리 함수로 암호화된 콘텐츠에 대한 복호화를 지원합니다. 이 값이 ON일 때 함수는 예전 openssl_udf 공유 라이브러리 함수에서 사용되던 RSAES-PKCS1-v1_5 패딩 방식도 지원합니다. 변수가 OFF로 설정되면 레거시 함수로 암호화된 콘텐츠는 복호화할 수 없고, 이 함수는 그러한 콘텐츠에 대해 null 출력값을 반환합니다.
algorithm 은 키를 생성하는 데 사용된 암호화 알고리즘입니다. 지원되는 알고리즘 값은 'RSA'입니다.
data_str 은 복호화할 암호화된 문자열로,
asymmetric_encrypt()로 암호화된 값입니다.
priv_key_str 은 유효한 PEM 인코딩 RSA 개인 키입니다. 복호화를 성공적으로 수행하려면, 키 문자열은 암호화된 문자열을 생성하는 데 사용된 공개 키 문자열과 일치해야 합니다.
asymmetric_encrypt() 컴포넌트 함수는 공개 키를 사용한 암호화만 지원하므로, 복호화는 이에 상응하는 개인 키를 사용하여 수행됩니다.
사용 예는
asymmetric_encrypt()의 설명을 참조하십시오.
지정된 알고리즘과 키 문자열을 사용하여 문자열을 암호화하고, 그 결과 암호문을 바이너리 문자열로 반환합니다. 암호화에 실패하면 결과는 NULL입니다.
MySQL 8.0.29 이전에 사용되던 이 함수의 레거시 버전에 대해서는
MySQL Enterprise Encryption Legacy Function Descriptions을 참조하십시오.
algorithm 은 키를 생성하는 데 사용된 암호화 알고리즘입니다. 지원되는 알고리즘 값은 'RSA'입니다.
data_str 은 암호화할 문자열입니다. 이 문자열의 길이는 패딩을 고려하여 키 문자열 길이(바이트 단위)에서 42를 뺀 값보다 클 수 없습니다.
pub_key_str 은 유효한 PEM 인코딩 RSA 공개 키입니다.
asymmetric_encrypt() 컴포넌트 함수는 공개 키를 사용한 암호화만 지원합니다.
원래의 암호화되지 않은 문자열을 복구하려면, 암호화된 문자열을
asymmetric_decrypt()에 전달하고, 다음 예제와 같이 암호화에 사용된 키 쌍의 다른 부분을 함께 전달합니다:
1-- Generate private/public key pair 2SET @priv = create_asymmetric_priv_key('RSA', 2048); 3SET @pub = create_asymmetric_pub_key('RSA', @priv); 4 5-- Encrypt using public key, decrypt using private key 6SET @ciphertext = asymmetric_encrypt('RSA', 'The quick brown fox', @pub); 7SET @plaintext = asymmetric_decrypt('RSA', @ciphertext, @priv);
다음과 같이 가정합니다:
1SET @s = a string to be encrypted 2SET @priv = a valid private RSA key string in PEM format 3SET @pub = the corresponding public RSA key string in PEM format
그러면 다음과 같은 항등 관계가 성립합니다:
1asymmetric_decrypt('RSA', asymmetric_encrypt('RSA', @s, @pub), @priv) = @s
개인 키를 사용하여 다이제스트 문자열 또는 데이터 문자열을 서명하고, 서명값을 바이너리 문자열로 반환합니다. 서명에 실패하면 결과는 NULL입니다.
MySQL 8.0.29 이전에 사용되던 이 함수의 레거시 버전에 대해서는
MySQL Enterprise Encryption Legacy Function Descriptions을 참조하십시오.
algorithm 은 키를 생성하는 데 사용된 암호화 알고리즘입니다. 지원되는 알고리즘 값은 'RSA'입니다.
text 는 데이터 문자열 또는 다이제스트 문자열입니다. 이 함수는 다이제스트를 허용하지만 다이제스트를 반드시 요구하지는 않으며, 임의 길이의 데이터 문자열도 처리할 수 있습니다. 다이제스트 문자열은
create_digest()를 호출하여 생성할 수 있습니다.
priv_key_str 은 다이제스트 문자열을 서명하는 데 사용할 개인 키 문자열입니다. 유효한 PEM 인코딩 RSA 개인 키여야 합니다.
digest_type 은 데이터를 서명하는 데 사용될 알고리즘입니다. OpenSSL 1.0.1이 사용 중인 경우 지원되는
digest_type 값은
'SHA224', 'SHA256',
'SHA384', 'SHA512'입니다. OpenSSL 1.1.1이 사용 중인 경우, 여기에 더해
'SHA3-224', 'SHA3-256',
'SHA3-384', 'SHA3-512' 값을 추가로 사용할 수 있습니다.
사용 예는
asymmetric_verify()의 설명을 참조하십시오.
서명 문자열이 다이제스트 문자열과 일치하는지 확인하고, 검증이 성공했는지 실패했는지를 나타내기 위해 1 또는 0을 반환합니다. 검증에 실패하면 결과는 NULL입니다.
기본적으로,
component_enterprise_encryption 함수는 서명이 RSASSA-PSS 서명 방식을 사용한다고 가정합니다. 시스템 변수
enterprise_encryption.rsa_support_legacy_padding
이 ON으로 설정된 경우(기본값은
OFF), 이 함수는 예전 openssl_udf 공유 라이브러리 함수로 생성된 서명에 대한 검증을 지원합니다. 이 값이 ON일 때 함수는 예전 openssl_udf 공유 라이브러리 함수에서 사용되던 RSASSA-PKCS1-v1_5 서명 방식도 지원합니다. 값이 OFF이면 레거시 함수로 생성된 서명은 검증할 수 없으며, 함수는 그러한 콘텐츠에 대해 null 출력값을 반환합니다.
algorithm 은 키를 생성하는 데 사용된 암호화 알고리즘입니다. 지원되는 알고리즘 값은 'RSA'입니다.
text 는 데이터 문자열 또는 다이제스트 문자열입니다. 컴포넌트 함수는 다이제스트를 허용하지만 다이제스트를 반드시 요구하지는 않으며, 임의 길이의 데이터 문자열도 처리할 수 있습니다. 다이제스트 문자열은
create_digest()를 호출하여 생성할 수 있습니다.
sig_str 은 검증할 서명 문자열입니다. 서명 문자열은
asymmetric_sign()을 호출하여 생성할 수 있습니다.
pub_key_str 은 서명자의 공개 키 문자열입니다.
asymmetric_sign()에 전달되어 서명 문자열을 생성하는 데 사용된 개인 키에 상응하는 값입니다. 유효한 PEM 인코딩 RSA 공개 키여야 합니다.
digest_type 은 데이터를 서명하는 데 사용된 알고리즘입니다. OpenSSL 1.0.1이 사용 중인 경우 지원되는
digest_type 값은
'SHA224', 'SHA256',
'SHA384', 'SHA512'입니다. OpenSSL 1.1.1이 사용 중인 경우, 여기에 더해
'SHA3-224', 'SHA3-256',
'SHA3-384', 'SHA3-512' 값을 추가로 사용할 수 있습니다.
1-- Set the encryption algorithm and digest type 2SET @algo = 'RSA'; 3SET @dig_type = 'SHA512'; 4 5-- Create private/public key pair 6SET @priv = create_asymmetric_priv_key(@algo, 2048); 7SET @pub = create_asymmetric_pub_key(@algo, @priv); 8 9-- Generate digest from string 10SET @dig = create_digest(@dig_type, 'The quick brown fox'); 11 12-- Generate signature for digest and verify signature against digest 13SET @sig = asymmetric_sign(@algo, @dig, @priv, @dig_type); 14SET @verf = asymmetric_verify(@algo, @dig, @sig, @pub, @dig_type);
지정된 알고리즘과 키 길이를 사용하여 개인 키를 생성하고, 이를 PEM 포맷의 바이너리 문자열으로 반환합니다. 키는 PKCS #8 포맷입니다. 키 생성에 실패하면 결과는 NULL입니다.
MySQL 8.0.29 이전에 사용되던 이 함수의 레거시 버전에 대해서는
MySQL Enterprise Encryption Legacy Function Descriptions을 참조하십시오.
algorithm 은 키를 생성하는 데 사용된 암호화 알고리즘입니다. 지원되는 알고리즘 값은 'RSA'입니다.
key_length 는 비트 단위의 키 길이입니다. 허용되는 최대 키 길이를 초과하거나 최소값보다 작은 값을 지정하면 키 생성이 실패하고 결과는 null 출력값입니다. 허용되는 최소 키 길이는 2048비트입니다. 허용되는 최대 키 길이는
enterprise_encryption.maximum_rsa_key_size
시스템 변수의 값이며, 기본값은 4096입니다. 이 변수의 최대 설정값은 16384이며, 이는 RSA 알고리즘에서 허용되는 최대 키 길이입니다. 자세한 내용은
Section 8.6.2, “Configuring MySQL Enterprise Encryption”을 참조하십시오.
참고
더 긴 키를 생성하면 상당한 CPU 리소스를 소모할 수 있습니다.
enterprise_encryption.maximum_rsa_key_size
시스템 변수를 사용하여 키 길이를 제한하면, 요구 사항에 대해 충분한 보안을 제공하면서도 리소스 사용량을 균형 있게 조정할 수 있습니다.
다음 예는 2048비트 RSA 개인 키를 생성한 후, 해당 개인 키에서 공개 키를 도출합니다:
1SET @priv = create_asymmetric_priv_key('RSA', 2048); 2SET @pub = create_asymmetric_pub_key('RSA', @priv);
지정된 알고리즘을 사용하여 주어진 개인 키로부터 공개 키를 도출하고, 이를 PEM 포맷의 바이너리 문자열으로 반환합니다. 키는 PKCS #8 포맷입니다. 키 도출에 실패하면 결과는 NULL입니다.
MySQL 8.0.29 이전에 사용되던 이 함수의 레거시 버전에 대해서는
MySQL Enterprise Encryption Legacy Function Descriptions을 참조하십시오.
algorithm 은 키를 생성하는 데 사용된 암호화 알고리즘입니다. 지원되는 알고리즘 값은 'RSA'입니다.
priv_key_str 은 유효한 PEM 인코딩 RSA 개인 키입니다.
사용 예는
create_asymmetric_priv_key()의 설명을 참조하십시오.
지정된 다이제스트 타입을 사용하여 주어진 문자열로부터 다이제스트를 생성하고, 다이제스트를 바이너리 문자열으로 반환합니다. 다이제스트 생성에 실패하면 결과는 NULL입니다.
MySQL 8.0.29 이전에 사용되던 이 함수의 레거시 버전에 대해서는
MySQL Enterprise Encryption Legacy Function Descriptions을 참조하십시오.
결과로 생성된 다이제스트 문자열은
asymmetric_sign() 및
asymmetric_verify()에 사용할 수 있습니다. 이러한 함수의 컴포넌트 버전은 다이제스트를 허용하지만 다이제스트를 반드시 요구하지는 않으며, 임의 길이의 데이터도 처리할 수 있습니다.
digest_type 은 다이제스트 문자열을 생성하는 데 사용될 다이제스트 알고리즘입니다. OpenSSL 1.0.1이 사용 중인 경우 지원되는
digest_type 값은
'SHA224', 'SHA256',
'SHA384', 'SHA512'입니다. OpenSSL 1.1.1이 사용 중인 경우, 여기에 더해
'SHA3-224', 'SHA3-256',
'SHA3-384', 'SHA3-512' 값을 추가로 사용할 수 있습니다.
str 은 다이제스트를 생성할 대상이 되는 null이 아닌 데이터 문자열입니다.
1SET @dig = create_digest('SHA512', 'The quick brown fox');
8.6.4 MySQL Enterprise Encryption Function Reference
8.7 SELinux