Uso de algoritmo de encriptación SHA
Descripción
Hemos procedido a la revisión y actualización de los parámetros de seguridad de nuestros servicios web, siendo necesario que por su parte se realice una actualización en la forma de generar los actuales hash para poder acceder a nuestros servicios.
Los algoritmos soportados van a ser:
¿Cómo encriptar una cadena en SHA3-256 o SHA2-512?
SHA-3 está declarado y aprobado como estándar por el organismo regulador, y se está extendiendo su uso de manera gradual en cada lenguaje de manera nativa, además de ser soportado actualmente por OpenSSL. Para la generación en SHA3-256 se puede hacer uso de la librería Bouncy Castle, altamente conocida por los desarrolladores, que incluye una colección de APIs y permite la utilización de diferentes algoritmos criptográficos. Dicha librería está disponible tanto en Java como en C#.
A continuación se muestra un ejemplo, en C#, de como se encriptaría una cadena en SHA3-256 con la clave "SandboxAxesor", obteniendo el resultado codificado en Base64.
Nuestra recomendación es el uso de SHA3-256 ya que se trata del método de encriptación más reciente declarado y aprobado, lo que asegura un alto nivel de seguridad y vida útil. En caso de no poder utilizarlo, permitimos el uso de SHA2-512, el cual se encuentra implementado de forma nativa en todos los lenguajes.
A continuación se muestra un ejemplo, en C#, de como se encriptaría una cadena en SHA2-512 con la clave "SandboxAxesor", obteniendo el resultado codificado en Base64.
¿Cómo funciona el Sandbox?
Desde axesor ponemos a disposición de su Departamento de IT un Sandbox para que puedan realizar y testear en un entorno cerrado los cambios en el código y hacer pruebas relativas al cambio de encriptación.
Las opciones disponibles son las siguientes:
1. Encriptar una cadena
Permite obtener cadenas encriptadas con diferentes tipos de encriptación y codificación. Para ello, es necesario dotar al sistema de los siguientes parámetros:
- La cadena que se quiere encriptar.
- La clave para realizar la encriptación. Recomendamos usar SandboxAxesor.
- El tipo de encriptación a utilizar:
- SHA1
- SHA2 256
- SHA2 512
- SHA3 256
- El tipo de codificación que se aplica al resultado:
- Hexadecimal
- Base 64
- Hexadecimal Base 64
2. Validar una cadena POST
Esta segunda opción nos permite verificar si un hash generado previamente es correcto o no. Para ello, es necesario dotar al sistema de los siguientes parámetros:
- La cadena que se ha utilizado para la generación previa del hash.
- La clave que se ha utilizado para la generación previa del hash. Se debe de usar SandboxAxesor.
- El hash generado previamente.
- El tipo de encriptación utilizada para la generación del hash anterior:
- SHA1
- SHA2 256
- SHA2 512
- SHA3 256
- El tipo de codificación utilizada para la generación del hash anterior:
- Hexadecimal
- Base 64
- Hexadecimal Base 64
3. Validar una cadena GET
Esta tercera opción nos permite verificar si un hash generado previamente es correcto o no mediante una petición GET. Este sistema puede ser útil en el caso de querer realizar la comprobación en sistemas externos al Sandbox, realizando por ejemplo una llamada Ajax.
La url sobre la que se tiene que hacer la petición GET es "https://sandbox.axesor.es/validarhashseguridad?cadena={CADENA}&hash={HASH}&opcioncodificacion={OP_COD}&opcionencriptacion={OP_ENC}".
Los parámetros que necesita son los siguientes:
- {CADENA} - La concatenación de la cadena y la clave que se ha utilizado para la generación previa del hash.
- {HASH} - El hash generado previamente.
- Un entero indicando el tipo de codificación utilizada para la generación del hash anterior:
- {2} - Hexadecimal
- {3} - Base 64
- {4} - Hexadecimal Base 64
- Un entero indicando el tipo de encriptación utilizada para la generación del hash anterior:
- {1} - SHA1
- {2} - SHA2 256
- {3} - SHA2 512
- {4} - SHA3 256
Por último en esta sección del Sandbox, nos encontramos un formulario similar al de la sección anterior y que sirve como ejemplo de realización de una llamada GET y poder ver el resultado devuelto, en este caso, un JSON.
4. Posibles pasos a seguir
- Realizar la programación necesaria para generar hash en SHA3-256 (preferente) o SHA2-512
- Utilizar el Sandbox para verificar (POST/GET) si el hash generado es correcto
- En caso de error, encriptar la cadena con el Sandbox y ver diferencias con la cadena generada previamente
Para solventar cualquier duda o consulta puede ponerse en contacto a través de seguridad@axesor.es