Ofuscacion/Encode/Encriptar

Forums: 

Saludos,

Amigos muy buenas noches mi duda es.

Existe manera o saben de alguna pagina para ofuscar procedures, funciones, etc, etc en PostgreSQL

Gracias espero su pronta ya favorable respuesta

¿Eso dicen las mejores prácticas?

Imagen de carlosjulioperez

Yo pienso que nuestra tarea es educar al cliente respecto a temas de las mejores prácticas.

Recuerda: Los procedimientos y funciones son código, y dicho código debe ser bien elaborado, estructurado y documentado para que otro programador o dba lo lean.

Parafraseo lo que tu cliente pide y pregunto a la vez: ¿y si se pierde el código para descifrar, cómo harías para volverlo a tener como código legible para un ser humano?

No soy DBA, pero aparentemente en MySQL y PostgreSQL no existen métodos para tal fin. Muy por el contrario, en MS SQL-Server abunda la información aquí y acá -por citar unos breves ejemplos- respecto al tema. ¡Qué casualidad!, ¿verdad?

En este enlace en inglés te explican por qué no es una buena idea hacer eso.

Lo más sano en este caso y mi sugerencia de acuerdo a mi experiencia, es que te crees un usuario con los derechos necesarios para lectura o modificación de dichos objetos de la base de datos y le asignes las claves apropiadas y listo.

Saludos cordiales.

Carlos Julio Pérez Quizhpe
Full stack developer
https://ec.linkedin.com/in/carlosjulioperez

Obfuscacion

Imagen de nestor.davila

Buen Día Carlos,

[quote]Yo pienso que nuestra tarea es educar al cliente respecto a temas de las mejores prácticas.
Recuerda: Los procedimientos y funciones son código, y dicho código debe ser bien elaborado, estructurado y
documentado para que otro programador o dba lo lean.
Para fraseo lo que tu cliente pide y pregunto a la vez: ¿y si se pierde el código para descifrar, cómo harías para volverlo a tener como
código legible para un ser humano?[/quote]

Tienes toda la razon, gran parte de mi propuesta fue plantear todos los escenarios posibles y en el peor de los casos que yo como principal
desarrollador del proyecto ya no este en mi cargo, pues dejar las directrices de todo para que el nuevo desarrollador no se de cabezazos}
contra la pared intentando comprender.

[quote]No soy DBA, pero aparentemente en MySQL y PostgreSQL no existen métodos para tal fin. Muy por el contrario, en MS SQL-Server
abunda la información aquí y acá -por citar unos breves ejemplos- respecto al tema. [/quote]

Si existe en postgreSQl pero lamentablemente es codigo cerrado desarrollado por EnterpriseDB

[quote]Lo más sano en este caso y mi sugerencia de acuerdo a mi experiencia, es que te crees un usuario con los derechos necesarios
a lectura o modificación de dichos objetos de la base de datos y le asignes las claves apropiadas y listo.[/quote]

Bueno el temor de mi cliente es por la guerra cibernetica que se ha dado en los ultimos días, la verdad soy consciente de que hubieron
mas infiltrados en el ataque con ganas de dañar las cosas antes solucionarlas, y siempre tendremos ese tipo de ataques.
No creo que simplemente sea cosa de crear usuarios y privilegios, si este escenario ya ha sido probado por ti, pues me gustaria me encamines un
poco en el tema.

Gracias.

Saludos cordiales.

Saludos

Imagen de carlosjulioperez

Si configuras bien tu server linux te evitarás muchos de los problemas de seguridad informática.

Otra opción que se me ocurre es la siguiente:

Si tienes código sensible, la puedes grabar en un campo CLOB en una tabla y a ese contenido le aplicas el cifrado SHA1 o SHA2, luego lo descrifras y lo ejecutas en tiempo de ejecución dependiendo del lenguaje de programación que estés empleando.

Hay muchas maneras de hacer lo que te planteo, e incluso mejores. Sólo es cuestión de barajar opciones.

Saludos cordiales.

Carlos Julio Pérez Quizhpe
Full stack developer
https://ec.linkedin.com/in/carlosjulioperez

Mmm pero Carlos no seria lo

Imagen de nestor.davila

Mmm pero Carlos no seria lo mismo que encriptar con una funcion o procedure a la vez los precedimientos y funciones?

ya que eso creo que tardaria mucho el proceso al decifrar ya que mi sistema es un sistema de facturacion por volumen 20000 fact x mes

Esa es una de las razones

Imagen de deathUser

Esa es una de las razones para no ofuscar el código a ejecutarse, a no ser que lo que generes sea interpretado por otra "máquina virtual" como el bytecode por ejemplo o soluciones similares para PHP que tienen una librería que incluso dice acelerar la ejecución de estos pedazos de código ofuscados, creo que deberías plantear al cliente que la solución que pide para que sea eficiente le va a costar licencias (las de EnterpriseDB) que creo que caen en el escenario que he descrito ...

bye
;)
PD: al que quiere celeste que le cueste :D

Ya veo...

Imagen de carlosjulioperez

Recién comentas que el proceso que necesitas es transaccional y que es parte crítica del core del negocio.

Ahí no se puede aplicar lo que te comentaba porque como vos y deathUser comentan, consumirían valiosos ciclos del procesador para poder realizar la propuesta que lancé.

Hay que revisar más opciones y una de esas es conseguirte la licencia comercial de PGSQL.

Tampoco has mencionado el lenguaje de programación. Eso es lo que hay que considerar para esbozar la solución propuesta.

Saludos cordiales.

Carlos Julio Pérez Quizhpe
Full stack developer
https://ec.linkedin.com/in/carlosjulioperez

CREATE OR REPLACE FUNCTION

Imagen de nestor.davila


CREATE OR REPLACE FUNCTION plpgsqlobf_call_handler()
RETURNS language_handler AS
'/tools/plpgsqlobf', 'plpgsqlobf_call_handler'
LANGUAGE 'c' VOLATILE
COST 1;
ALTER FUNCTION plpgsqlobf_call_handler() OWNER TO postgres;

CREATE OR REPLACE FUNCTION plpgsqlobf(oid)
RETURNS void AS
'/lib/plpgsqlobf', 'plpgsqlobf'
LANGUAGE 'c' VOLATILE
COST 1;
ALTER FUNCTION plpgsqlobf(oid) OWNER TO postgres;

CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsqlobf'
HANDLER plpgsqlobf_call_handler
VALIDATOR plpgsqlobf;
ALTER LANGUAGE plpgsqlobf OWNER TO postgres;

Páginas