12.17.4 Enterprise Encryption 기능 설명
Enterprise Encryption 기능에는 다음과 같은 일반적인 특성이 있습니다.
인수의 형태가 부정한 경우 나 인수의 수가 잘못된 경우 각 함수에서 오류가 반환됩니다.
요청 된 연산을 수행 할 함수에 허용하는 인자가 적합하지 않으면 필요에 따라
NULL
또는 0이 반환됩니다. 이것은 지정된 알고리즘이 함수가 지원되지 않는 경우 키의 길이가 너무 짧거나 너무 길거나 할 경우 PEM 형식의 키 문자열로 요구되는 문자열이 유효한 키가 아닌 경우에 발생합니다.기반이되는 SSL 라이브러리는 불규칙성의 초기화가 처리됩니다.
함수의 일부는 암호화 알고리즘 인수가 지정됩니다. 다음 표에는 지원되는 알고리즘의 요약 함수별로 보여줍니다.
표 12.22 함수에서 지원되는 알고리즘
함수 | 지원되는 알고리즘 |
---|---|
ASYMMETRIC_DECRYPT() | RSA |
ASYMMETRIC_DERIVE() | DH |
ASYMMETRIC_ENCRYPT() | RSA |
ASYMMETRIC_SIGN() | RSA, DSA |
ASYMMETRIC_VERIFY() | RSA, DSA |
CREATE_ASYMMETRIC_PRIV_KEY() | RSA, DSA, DH |
CREATE_ASYMMETRIC_PUB_KEY() | RSA, DSA, DH |
RSA, DSA 또는 DH 중 하나의 암호화 알고리즘을 사용하면 열쇠를 만들 수 있지만 키 인수가 지정하는 다른 함수는 특정 유형의 키만 허용 될 수 있습니다. 예를 들어, ASYMMETRIC_ENCRYPT()
및 ASYMMETRIC_DECRYPT()
는 RSA 키 만 허용됩니다.
다음의 설명에서는 Enterprise Encryption 함수를 호출 순서를 나타냅니다. 추가 예제와 설명은 섹션 12.17.2 "Enterprise Encryption 사용법 및 예제" 를 참조하십시오.
ASYMMETRIC_DECRYPT(
algorithm
,crypt_str
,key_str
)지정된 알고리즘 및 키 문자열을 사용하여 암호화 된 문자열을 해독하고 그 결과로 생성되는 일반 텍스트를 바이너리 문자열로 반환합니다. 해독에 실패하면 결과가
NULL
입니다.key_str
은 PEM 형식의 유효한 키 문자열이어야합니다. 해독에 성공하면 공개 키 또는 비밀 키의 문자열을 암호화 된 문자열을 생성 할 때ASYMMETRIC_ENCRYPT()
에서 사용 된 공개 키 또는 비밀 키의 문자열에 대응하고있을 필요 수 있습니다.algorithm
은 열쇠를 만들 때 사용 된 암호화 알고리즘을 나타냅니다.지원되는
algorithm
값 :'RSA'
사용 예는
ASYMMETRIC_ENCRYPT()
의 설명을 참조하십시오.ASYMMETRIC_DERIVE(
pub_key_str
,priv_key_str
)있는 파티의 비밀 키와 다른 파티의 공개 키를 사용하여 대칭 키를 도출하고 그 결과로 생성되는 키를 바이너리 문자열로 반환합니다. 키 추출에 실패하면 결과가
NULL
입니다.pub_key_str
및priv_key_str
은 PEM 형식의 유효한 키 문자열이어야합니다. 이들은 DH 알고리즘을 사용하여 작성해야합니다.공개 키와 개인 키의 두 쌍을 가지고 있다고 가정합니다.
SET @dhp = CREATE_DH_PARAMETERS (1024); SET @ priv1 = CREATE_ASYMMETRIC_PRIV_KEY ( 'DH', @dhp); SET @ pub1 = CREATE_ASYMMETRIC_PUB_KEY ( 'DH'@ priv1); SET @ priv2 = CREATE_ASYMMETRIC_PRIV_KEY ( 'DH', @dhp); SET @ pub2 = CREATE_ASYMMETRIC_PUB_KEY ( 'DH'@ priv2);
또한 하나의 쌍에서 개인 키를 사용하고 다른 한 쌍의 공개 키를 사용하여 대칭 키 문자열을 작성한다고 가정합니다. 그 후,이 대칭 키의 ID 관계가 다음과 같이 개최됩니다.
ASYMMETRIC_DERIVE (@ pub1 @ priv2) = ASYMMETRIC_DERIVE (@ pub2 @ priv1)
ASYMMETRIC_ENCRYPT(
algorithm
,str
,key_str
)지정된 알고리즘 및 키 문자열을 사용하여 문자열을 암호화하고 결과로 생성 된 암호문을 바이너리 문자열로 반환합니다. 암호화에 실패했을 경우, 결과는
NULL
이됩니다.str
의 길이는 바이트 단위로key_str
길이 - 11보다 클 수 없습니다.key_str
은 PEM 형식의 유효한 키 문자열로해야합니다.algorithm
은 열쇠를 만들 때 사용 된 암호화 알고리즘을 나타냅니다.지원되는
algorithm
값 :'RSA'
문자열을 암호화하려면 비밀 또는 공개 키의 문자열을
ASYMMETRIC_ENCRYPT()
에 전달합니다. 원래의 암호화되지 않은 문자열을 복구하려면 암호화에 사용 된 비밀 키 또는 공개 키 문자열에 대응하는 공개 키 또는 비밀 키의 문자열과 함께 암호화 된 문자열을ASYMMETRIC_DECRYPT()
에 전달합니다.- Generate private / public key pair SET @priv = CREATE_ASYMMETRIC_PRIV_KEY ( 'RSA', 1024); SET @pub = CREATE_ASYMMETRIC_PUB_KEY ( 'RSA', @priv); - Encrypt using private key, decrypt using public key SET @ciphertext = ASYMMETRIC_ENCRYPT ( 'RSA', 'The quick brown fox', @priv); SET @plaintext = ASYMMETRIC_DECRYPT ( 'RSA', @ciphertext, @pub); - Encrypt using public key, decrypt using private key SET @ciphertext = ASYMMETRIC_ENCRYPT ( 'RSA', 'The quick brown fox', @pub); SET @plaintext = ASYMMETRIC_DECRYPT ( 'RSA', @ciphertext, @priv);
다음과 같이 가정합니다.
SET @s = a string to be encrypted SET @priv = a valid private RSA key string in PEM format SET @pub = the corresponding public RSA key string in PEM format
그렇다면 이러한 ID 관계가 다음과 같이 개최됩니다.
ASYMMETRIC_DECRYPT ( 'RSA', ASYMMETRIC_ENCRYPT ( 'RSA'@s, @priv) @pub) = @s ASYMMETRIC_DECRYPT ( 'RSA', ASYMMETRIC_ENCRYPT ( 'RSA'@s, @pub) @priv) = @s
ASYMMETRIC_SIGN(
algorithm
,digest_str
,priv_key_str
,digest_type
)비밀 키 문자열을 사용하여 다이제스트 문자열에 서명하고 그 서명을 바이너리 문자열로 반환합니다. 서명에 실패하면 결과가
NULL
입니다.digest_str
다이제스트 문자열입니다. 이것은CREATE_DIGEST()
를 호출하여 생성 할 수 있습니다.digest_type
다이제스트 문자열을 생성하는 데 사용 된 다이제스트 알고리즘을 나타냅니다.priv_key_str
다이제스트 문자열로 유명 할 때 사용되는 비밀 키 문자열입니다. 이는 PEM 형식의 유효한 키 문자열로해야합니다.algorithm
은 열쇠를 만들 때 사용 된 암호화 알고리즘을 나타냅니다.지원되는
algorithm
값 :'RSA'
,'DSA'
지원되는
digest_type
값 :'SHA224'
,'SHA256'
,'SHA384'
,'SHA512'
사용 예는
ASYMMETRIC_VERIFY()
의 설명을 참조하십시오.ASYMMETRIC_VERIFY(
algorithm
,digest_str
,sig_str
,pub_key_str
,digest_type
)서명 문자열이 다이제스트 문자열과 일치 여부를 확인하고 확인에 성공했는지 실패했는지를 나타내는 1 또는 0을 반환합니다.
digest_str
다이제스트 문자열입니다. 이것은CREATE_DIGEST()
를 호출하여 생성 할 수 있습니다.digest_type
다이제스트 문자열을 생성하는 데 사용 된 다이제스트 알고리즘을 나타냅니다.sig_str
서명 문자열입니다. 이것은ASYMMETRIC_SIGN()
를 호출하여 생성 할 수 있습니다.pub_key_str
은 서명자의 공개 키 문자열입니다. 이것은 서명 문자열을 생성하는ASYMMETRIC_SIGN()
에 전달되는 비밀 키에 대응하고 PEM 형식의 유효한 키 문자열로해야합니다.algorithm
은 열쇠를 만들 때 사용 된 암호화 알고리즘을 나타냅니다.지원되는
algorithm
값 :'RSA'
,'DSA'
지원되는
digest_type
값 :'SHA224'
,'SHA256'
,'SHA384'
,'SHA512'
- Set the encryption algorithm and digest type SET @algo = 'RSA'; SET @dig_type = 'SHA224'; - Create private / public key pair SET @priv = CREATE_ASYMMETRIC_PRIV_KEY (@algo 1024); SET @pub = CREATE_ASYMMETRIC_PUB_KEY (@algo, @priv); - Generate digest from string SET @dig = CREATE_DIGEST (@dig_type 'The quick brown fox'); - Generate signature for digest and verify signature against digest SET @sig = ASYMMETRIC_SIGN (@algo, @dig, @priv, @dig_type); SET @verf = ASYMMETRIC_VERIFY (@algo, @dig, @sig, @pub, @dig_type);
CREATE_ASYMMETRIC_PRIV_KEY(
algorithm
, {key_len
|dh_secret
})지정된 알고리즘 및 키 길이 또는 DH 암호를 사용하여 개인 키를 생성 해, 그 키를 PEM 형식의 이진 문자열로 반환합니다. 키 생성에 실패했을 경우, 결과는
NULL
이됩니다.지원되는
algorithm
값 :'RSA'
,'DSA'
,'DH'
지원되는
key_len
값 : 최소 키 길이는 1024 비트입니다. 최대 키 길이는 알고리즘에 따라 다르며, RSA의 경우는 16,384, DSA의 경우는 10,000입니다. 이 길이는 OpenSSL에 의해 부과 된 제약입니다.DH 키의 경우 키의 길이 대신 공유 DH 비밀을 전달합니다. 암호를 만들려면 키 길이를
CREATE_DH_PARAMETERS()
에 전달합니다.이 예에서는 2048 DSA 비밀 키를 생성하고 그 비밀 키에서 공개 키를 도출합니다.
SET @priv = CREATE_ASYMMETRIC_PRIV_KEY ( 'DSA', 2048); SET @pub = CREATE_ASYMMETRIC_PUB_KEY ( 'DSA', @priv);
DH 키 생성을 나타내는 예는
ASYMMETRIC_DERIVE()
의 설명을 참조하십시오.키 길이와 암호화 알고리즘을 선택할 때의 일반적인 몇 가지 고려 사항은 다음과 같습니다.
키 크기와 함께 공개 키와 비밀 키의 암호화 강도가 증가하지만 키 생성 시간도 증가합니다.
DH 키 생성 시간은 RSA 키 또는 RSA 키보다 훨씬 길어집니다.
비대칭 암호화 함수는 대칭 함수보다 느립니다. 성능이 중요한 요소이며, 그 함수가 매우 자주 사용되는 경우 대칭 암호화를 사용하는 것이 좋습니다. 예를 들어,
AES_ENCRYPT()
및AES_DECRYPT()
를 사용하는 것을 고려하십시오.
CREATE_ASYMMETRIC_PUB_KEY(
algorithm
,priv_key_str
)지정된 알고리즘을 사용하여 지정된 비밀 키에서 공개 키를 도출하고 그 키를 PEM 형식의 이진 문자열로 반환합니다. 키 추출에 실패하면 결과가
NULL
입니다.priv_key_str
은 PEM 형식의 유효한 키 문자열로해야합니다.algorithm
은 열쇠를 만들 때 사용 된 암호화 알고리즘을 나타냅니다.지원되는
algorithm
값 :'RSA'
,'DSA'
,'DH'
사용 예는
CREATE_ASYMMETRIC_PRIV_KEY()
의 설명을 참조하십시오.CREATE_DH_PARAMETERS(
key_len
)DH 비밀 키와 공개 키 쌍을 생성하기 위해 공유 암호를 만들고
CREATE_ASYMMETRIC_PRIV_KEY()
에 전달할 수있는 바이너리 문자열을 반환합니다. 암호 생성에 실패하면 결과가 NULL입니다.지원되는
key_len
값 : 최소 및 최대 키 길이는 1024 비트 및 10,000 비트입니다. 이 길이는 OpenSSL에 의해 부과 된 제약입니다.대칭 키를 생성하는 반환 값을 사용하는 방법을 보여주는 예제는
ASYMMETRIC_DERIVE()
의 설명을 참조하십시오.SET @dhp = CREATE_DH_PARAMETERS (1024);
CREATE_DIGEST(
digest_type
,str
)지정된 다이제스트 유형을 사용하여 지정된 문자열에서 다이제스트를 만들고 다이제스트를 바이너리 문자열로 반환합니다. 다이제스트의 생성에 실패했을 경우, 결과는
NULL
이됩니다.지원되는
digest_type
값 :'SHA224'
,'SHA256'
,'SHA384'
,'SHA512'
SET @dig = CREATE_DIGEST ( 'SHA512'The quick brown fox ');
결과로 생성되는 다이제스트 문자열은
ASYMMETRIC_SIGN()
및ASYMMETRIC_VERIFY()
와 사용에 적합합니다.