MariaDB [(none)]> SET @key_str = SHA2('Is it secure?',512);
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SET @crypt_str = AES_ENCRYPT('cleartext',@key_str);
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> select @crypt_str from dual;
+------------------+
| @crypt_str |
+------------------+
| ���5��!$�l |
+------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> SELECT AES_DECRYPT(@crypt_str,@key_str) from dual;
+----------------------------------+
| AES_DECRYPT(@crypt_str,@key_str) |
+----------------------------------+
| cleartext |
+----------------------------------+
1 row in set (0.01 sec)
Docs in MariaDB KB Funciones de cifrado, hashing y compresión, como ENCRYPT, DECRYPT , COMPRIMIR, CONTRASEÑA . MariaDB KB no escribe sobre qué tan seguras son esas funciones.
¿Recomienda una aplicación nativa en la nube (factor 12) para descargar el cifrado en la base de datos (en mi caso, MariaDB)? ¿Se puede mejorar mi código de ejemplo para que sea más seguro (pero solo con las funciones de MariaDB)?
Encontré una (quizás) revisión sesgada de un proveedor de productos MyDiamo (desean vender):
Por qué las funciones de cifrado interno de MySQL no son suficientes
1. Los algoritmos de cifrado interno de MySQL no son seguros
MySQL proporciona muchos algoritmos como AES, DES, SHA-1 y MD5 algoritmos Entre estos algoritmos, se ha comprobado que MD5 y SHA-1 no están Seguro como han sido rajados. Además, para los algoritmos AES, el actual La versión de MySQL 5.6 generalmente disponible proporciona solo la operación ECB modo que también se ha demostrado que no es seguro.
2. Las funciones de cifrado interno de MySQL no proporcionan administración de claves
Al cifrar datos, no solo es importante el cifrado en sí, sino que también También la gestión de la clave es importante. La importancia de la clave no puede ser Destacó lo suficientemente fuerte cuando el cifrado es importante. La mayoría de cifrado Sin embargo, las soluciones no prestan mucha atención a la clave. Cuando usas MySQL funciones de cifrado interno, la clave está expuesta a la fuente, por lo tanto, no existe una gestión de claves adecuada.