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);
키 문자열 값은 SET
, SELECT
또는 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()
함수를 사용하여 읽을 수 있습니다.
다이제스트와 서명 문자열은 동일하게 처리 할 수 있습니다.