Hola compañeros!, para mí es un gusto saludar una comunidad con tantos aportes como esta.
Ahora bien al grano...
He instalado un software que como medida de seguridad implementa validación de licencias mediante firma digital de la siguiente manera:
El programa constantemente realiza consultas a la base de datos que se instala junto con la distribución de dicho software, específicamente en la tabla "license" de dicha base de datos, este procedimiento VALIDA que nuestro software no esté toqueteado, y lo hace de la siguiente manera:
licensed_users int(11)
license_id char(36)
customer_id char(100)
description varchar(100)
email char(100)
bo_type varchar(64)
En los campos anteriores pertenecientes a la tabla "license" se captura información en el siguiente orden:
1. Número de licencias a adquirir, por ejemplo yo adquiero 100, de ahí que el campo sea del tipo int(11)
2. Identificador de licencias, es del tipo char(36)
3. Identificador de cliente, es del tipo char(100)
4. Descripcion, es del tipo varchar(100)
5. Email, es del tipo char(100)
6. bo_type, es del tipo varchar(64)
He aquí la parte interesante!!..!!..
El programa implementa una función, la cual utiliza TODAS las variables anteriores (campos) para aplicar un algoritmo (probablemente un algoritmo RSA) para obtener una firma y de esa manera VALIDAR, tanto el número de licencias (la parte más importante) como el resto de los datos, que para propósitos prácticos, son irrelevantes.
El resultado se almacena en el campo:
signature, y es del tipo varchar(172)
He estado revisando la base de datos que auto instala el software, y las llaves que se incluyen como ejemplo tienen una longitud exactamente de 172 caracteres:
algo más o menos así:
wxzqVSqFCC7QLjtLwBbXGYY6K77v37bZOW2HMfSCdmwh/qoFyFCvWwxzqVSqFCC7QLjtLwBk1fy3/jkO/bIEDDQxkLNtm5VRoBEWKkEJN0jRdGv3wxzqVSqFCC7QLjtLwBDe76hcuLE1hUetUhRK75JWwxzqVSqFCC7QLjtLwBg=
Me llama la atención que las firmas de ejemplo terminen en signo de igualdad, tuve la oportunidad de ver trabajando una llave genuina en mi lugar de trabajo, y su terminación es en signo de igualdad también...
La consulta que les hago es:
¿Qué procedimiento o algoritmo podría yo usar para hacer pruebas con los datos de ejemplo que incluye el programa, esto, con la intención de conocer el procedimiento que los creadores del software usaron para implementar seguridad en el mismo. Y hacer mis propias llaves de prueba. Repito, se usan 6 elementos que combinados dan como resultado la llave de caracteres de 172 caracteres de longitud y terminada en signo de igualdad.
La ingeniería del software es muy útil e interesante y si alguien pudiera ayudarme con alguna sugerencia de que algoritmo poder implementar, se lo agradecería demasiado.
Mis mejores deseos a todos en el foro.,
Gracias de antemano.
Ahora bien al grano...
He instalado un software que como medida de seguridad implementa validación de licencias mediante firma digital de la siguiente manera:
El programa constantemente realiza consultas a la base de datos que se instala junto con la distribución de dicho software, específicamente en la tabla "license" de dicha base de datos, este procedimiento VALIDA que nuestro software no esté toqueteado, y lo hace de la siguiente manera:
licensed_users int(11)
license_id char(36)
customer_id char(100)
description varchar(100)
email char(100)
bo_type varchar(64)
En los campos anteriores pertenecientes a la tabla "license" se captura información en el siguiente orden:
1. Número de licencias a adquirir, por ejemplo yo adquiero 100, de ahí que el campo sea del tipo int(11)
2. Identificador de licencias, es del tipo char(36)
3. Identificador de cliente, es del tipo char(100)
4. Descripcion, es del tipo varchar(100)
5. Email, es del tipo char(100)
6. bo_type, es del tipo varchar(64)
He aquí la parte interesante!!..!!..
El programa implementa una función, la cual utiliza TODAS las variables anteriores (campos) para aplicar un algoritmo (probablemente un algoritmo RSA) para obtener una firma y de esa manera VALIDAR, tanto el número de licencias (la parte más importante) como el resto de los datos, que para propósitos prácticos, son irrelevantes.
El resultado se almacena en el campo:
signature, y es del tipo varchar(172)
He estado revisando la base de datos que auto instala el software, y las llaves que se incluyen como ejemplo tienen una longitud exactamente de 172 caracteres:
algo más o menos así:
wxzqVSqFCC7QLjtLwBbXGYY6K77v37bZOW2HMfSCdmwh/qoFyFCvWwxzqVSqFCC7QLjtLwBk1fy3/jkO/bIEDDQxkLNtm5VRoBEWKkEJN0jRdGv3wxzqVSqFCC7QLjtLwBDe76hcuLE1hUetUhRK75JWwxzqVSqFCC7QLjtLwBg=
Me llama la atención que las firmas de ejemplo terminen en signo de igualdad, tuve la oportunidad de ver trabajando una llave genuina en mi lugar de trabajo, y su terminación es en signo de igualdad también...
La consulta que les hago es:
¿Qué procedimiento o algoritmo podría yo usar para hacer pruebas con los datos de ejemplo que incluye el programa, esto, con la intención de conocer el procedimiento que los creadores del software usaron para implementar seguridad en el mismo. Y hacer mis propias llaves de prueba. Repito, se usan 6 elementos que combinados dan como resultado la llave de caracteres de 172 caracteres de longitud y terminada en signo de igualdad.
La ingeniería del software es muy útil e interesante y si alguien pudiera ayudarme con alguna sugerencia de que algoritmo poder implementar, se lo agradecería demasiado.
Mis mejores deseos a todos en el foro.,
Gracias de antemano.