Spec-Zone.ru › MySQL 9.2

8.6.5 Описание функций компонента шифрования MySQL Enterprise

Функции MySQL Enterprise Encryption обладают следующими общими характеристиками:

  • При использовании аргументов неправильного типа или неверного количества аргументов каждая функция возвращает ошибку.

  • Если аргументы не позволяют выполнить запрошенную операцию, функция возвращает NULL или 0, в зависимости от ситуации. Это происходит, например, если функция не поддерживает указанный алгоритм, длина ключа слишком короткая или длинная, или строка, ожидаемая как строка ключа в формате PEM, не является допустимым ключом.

  • Базовая библиотека SSL позаботится об инициализации случайных чисел.

Функции компонента поддерживают только алгоритм шифрования RSA.

Дополнительные примеры и обсуждение см. в разделе 8.6.3, «Использование и примеры шифрования MySQL Enterprise».

  • asymmetric_decrypt(algorithm, data_str, priv_key_str)

    Расшифровывает зашифрованную строку с использованием заданного алгоритма и ключа, возвращая результирующий открытый текст в виде двоичной строки. Если расшифровка не удалась, результатом является NULL.

    Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .

    По умолчанию, функция component_enterprise_encryption предполагает, что зашифрованный текст использует схему заполнения RSAES-OAEP. Функция поддерживает расшифровку содержимого, зашифрованного с помощью старых функций библиотеки openssl_udf, если системная переменная enterprise_encryption.rsa_support_legacy_padding установлена в ON (по умолчанию OFF). Когда это ON, функция также поддерживает схему заполнения RSAES-PKCS1-v1_5, используемую старыми функциями библиотеки openssl_udf. Если переменная установлена в OFF, содержимое, зашифрованное с помощью устаревших функций, не может быть расшифровано, и функция возвращает нулевое значение для такого содержимого.

    algorithm — алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма — 'RSA'.

    data_str — зашифрованная строка для расшифровки, которая была зашифрована с помощью asymmetric_encrypt().

    priv_key_str — действительный PEM-закодированный закрытый ключ RSA. Для успешной расшифровки строка ключа должна соответствовать строке открытого ключа, используемой с asymmetric_encrypt() для создания зашифрованной строки. Компонентная функция asymmetric_encrypt() поддерживает только шифрование с использованием открытого ключа, поэтому расшифровка выполняется с соответствующим закрытым ключом.

    Пример использования см. в описании asymmetric_encrypt().

  • asymmetric_encrypt(algorithm, data_str, pub_key_str)

    Шифрует строку с использованием заданного алгоритма и строки ключа и возвращает результирующий шифр в виде двоичной строки. Если шифрование не удалось, результатом является NULL.

    Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .

    algorithm — алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма — 'RSA'.

    data_str — строка для шифрования. Длина этой строки не может быть больше длины строки ключа в байтах минус 42 (для учета заполнения).

    pub_key_str — действительный PEM-закодированный открытый ключ RSA. Компонентная функция asymmetric_encrypt() поддерживает только шифрование с использованием открытого ключа.

    Для восстановления исходной незашифрованной строки передайте зашифрованную строку в asymmetric_decrypt() вместе с другой частью пары ключей, используемой для шифрования, как в следующем примере:

    -- Generate private/public key pair
    SET @priv = create_asymmetric_priv_key('RSA', 2048);
    SET @pub = create_asymmetric_pub_key('RSA', @priv);
    
    -- 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
    

    Тогда эти отношения тождества выполняются:

    asymmetric_decrypt('RSA', asymmetric_encrypt('RSA', @s, @pub), @priv) = @s
    
  • asymmetric_sign(algorithm, text, priv_key_str, digest_type)

    Подписывает строку дайджеста или строку данных с использованием закрытого ключа и возвращает подпись в виде двоичной строки. Если подписание не удалось, результатом является NULL.

    Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .

    algorithm — алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма — 'RSA'.

    text — строка данных или дайджеста. Функция принимает дайджесты, но не требует их, так как она также способна обрабатывать строки данных произвольной длины. Строку дайджеста можно сгенерировать, вызвав create_digest().

    priv_key_str — строка закрытого ключа для использования при подписи строки дайджеста. Она должна быть действительным PEM-закодированным закрытым ключом RSA.

    digest_type — алгоритм, который будет использоваться для подписи данных. Поддерживаемые значения digest_type — 'SHA224', 'SHA256', 'SHA384' и 'SHA512' при использовании OpenSSL 1.0.1. Если используется OpenSSL 1.1.1, доступны дополнительные значения digest_type — 'SHA3-224', 'SHA3-256', 'SHA3-384' и 'SHA3-512'.

    Пример использования см. в описании asymmetric_verify().

  • asymmetric_verify(algorithm, text, sig_str, pub_key_str, digest_type)

    Проверяет, соответствует ли строка подписи строке дайджеста, и возвращает 1 или 0, чтобы указать, прошла ли проверка или нет. Если проверка не удалась, результатом является NULL.

    По умолчанию, функция component_enterprise_encryption предполагает, что подписи используют схему подписи RSASSA-PSS. Функция поддерживает проверку подписей, созданных старыми функциями библиотеки openssl_udf, если системная переменная enterprise_encryption.rsa_support_legacy_padding установлена в ON (по умолчанию OFF). При этом значении функция также поддерживает схему подписи RSASSA-PKCS1-v1_5, используемую старыми функциями библиотеки openssl_udf; если она установлена в OFF, подписи, созданные устаревшими функциями, не могут быть проверены, и функция возвращает нулевой вывод для такого содержимого.

    algorithm — алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма — 'RSA'.

    text — строка данных или дайджеста. Компонентная функция принимает дайджесты, но не требует их, так как она также способна обрабатывать строки данных произвольной длины. Строку дайджеста можно сгенерировать, вызвав create_digest().

    sig_str — строка подписи, подлежащая проверке. Строку подписи можно сгенерировать, вызвав asymmetric_sign().

    pub_key_str — строка открытого ключа подписывающего лица. Она соответствует закрытому ключу, переданному в asymmetric_sign() для генерации строки подписи. Он должен быть действительным PEM-закодированным открытым ключом RSA.

    digest_type — алгоритм, который использовался для подписи данных. Поддерживаемые значения digest_type — 'SHA224', 'SHA256', 'SHA384' и 'SHA512' при использовании OpenSSL 1.0.1. Если используется OpenSSL 1.1.1, доступны дополнительные значения digest_type — 'SHA3-224', 'SHA3-256', 'SHA3-384' и 'SHA3-512'.

    -- Set the encryption algorithm and digest type
    SET @algo = 'RSA';
    SET @dig_type = 'SHA512';
    
    -- Create private/public key pair
    SET @priv = create_asymmetric_priv_key(@algo, 2048);
    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_length)

    Создает закрытый ключ с использованием заданного алгоритма и длины ключа и возвращает ключ в виде двоичной строки в формате PEM. Ключ в формате PKCS #8. Если генерация ключа не удалась, результатом является NULL.

    Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .

    algorithm — алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма — 'RSA'.

    key_length — длина ключа в битах. Если вы превысите максимальную разрешенную длину ключа или укажете значение меньше минимального, генерация ключа завершится неудачно, и результатом будет пустое значение. Минимальная разрешенная длина ключа в битах — 2048. Максимальная разрешенная длина ключа — значение системной переменной enterprise_encryption.maximum_rsa_key_size, которая по умолчанию равна 4096. Ее максимальное значение — 16384, что является максимальной длиной ключа, разрешенной для алгоритма RSA. См. Раздел 8.6.2, “Настройка MySQL Enterprise Encryption”.

    Примечание

    Генерация более длинных ключей может потребовать значительных ресурсов ЦП. Ограничение длины ключа с помощью системной переменной enterprise_encryption.maximum_rsa_key_size позволяет обеспечить необходимую безопасность, балансируя ее с использованием ресурсов.

    Этот пример создает закрытый ключ RSA длиной 2048 бит, а затем выводит открытый ключ из закрытого ключа:

    SET @priv = create_asymmetric_priv_key('RSA', 2048);
    SET @pub = create_asymmetric_pub_key('RSA', @priv);
    
  • create_asymmetric_pub_key(algorithm, priv_key_str)

    Выводит открытый ключ из заданного закрытого ключа с использованием заданного алгоритма и возвращает ключ в виде двоичной строки в формате PEM. Ключ в формате PKCS #8. Если вывод ключа не удался, результатом является NULL.

    Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .

    algorithm — алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма — 'RSA'.

    priv_key_str — действительный PEM-закодированный закрытый ключ RSA.

    Пример использования см. в описании create_asymmetric_priv_key().

  • create_digest(digest_type, str)

    Создаёт дайджест из заданной строки с использованием указанного типа дайджеста и возвращает дайджест в виде бинарной строки. Если генерация дайджеста завершается ошибкой, результат — NULL.

    Для использования в более ранних версиях MySQL, до 8.0.29, см. .

    Полученная строка дайджеста подходит для использования с asymmetric_sign() и asymmetric_verify(). Компонентные версии этих функций принимают дайджесты, но не требуют их, так как они способны обрабатывать данные произвольной длины.

    digest_type — алгоритм дайджеста, который будет использован для генерации строки дайджеста. Поддерживаемые значения digest_type — 'SHA224', 'SHA256', 'SHA384' и 'SHA512' при использовании OpenSSL 1.0.1. При использовании OpenSSL 1.1.1 доступны дополнительные значения digest_type — 'SHA3-224', 'SHA3-256', 'SHA3-384' и 'SHA3-512'.

    str — непустая строка данных, для которой необходимо сгенерировать дайджест.

    SET @dig = create_digest('SHA512', 'The quick brown fox');
    

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/enterprise-encryption-functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API