¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Optimización de almacenamiento de contraseña secundaria en IDM para cumplimiento y seguridad

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 22 Vistas
0
Cargando...

En nuestra implementación de IDM necesitamos almacenar una contraseña secundaria que estamos utilizando en un proceso de autenticación de dos factores. Recrear el almacenamiento de esta contraseña en IDM es fácil, pero debido a razones de cumplimiento, debemos asegurarnos de que la contraseña secundaria no coincida con la contraseña regular existente en IDM.

Estoy utilizando el marco de extensión para agregar la lógica Java en línea en el portal, si una contraseña no cumple con nuestras reglas de complejidad o coincide con el MX_ENCRYPTED_PASSWORD existente, el usuario recibe un mensaje cuando intenta guardar. Sin embargo, me estoy encontrando con un problema, las funciones de cifrado Java habituales que crean cifrado 3Des están devolviendo una contraseña diferente a la función uDesEncrypt dentro de IDM cuando se utiliza una clave idéntica.

¿Alguien ha experimentado esto antes, alguien sabe la forma correcta de llamar al objeto de cifrado Java para obtener un resultado idéntico a la función uDesEncrypt?

Gracias,

Pete.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Bueno, es inexacto -- es solo codificado en hexadecimal. La parte relevante codificada en hexadecimal es F700AD168253BC248497969EDB988620 -- el 1: significa que fue encriptado por KEY001 en keys.ini. Puedo generar la misma cadena encriptada usando tanto uDESEncrypt como las clases javax.crypto, con algoritmo = "DESede", transformación = "DESede/CBC/PKCD5Padding". Obtengo el resultado " 1:0653565108cc220e" de uDESEncrypt y "0653565108CC220E" del java.

Mi sugerencia sería que cambies la KEY00x en keys.ini que crees que se está usando, verifiques que el DES3 generado dentro de IDM cambie, luego uses esa clave en hexadecimal con una función rápida usando javax.crypto para asegurarte de que estás usando el mismo método de generación y claves. Un código java de muestra que debería producir los mismos resultados que uDESEncrypt (sin la parte " 1:") es el siguiente.

String PLAIN_TEXT = "TU TEXTO AQUÍ";

String SHARED_KEY = "TU CLAVE AQUÍ"; // solo los 48 caracteres hexadecimales

String algoritmo = "DESede";

String transformación = "DESede/CBC/PKCS5Padding";

byte[] keyValue = Hex.decodeHex(SHARED_KEY.toCharArray());

DESedeKeySpec keySpec = new DESedeKeySpec(keyValue);

IvParameterSpec iv = new IvParameterSpec(new byte[8]);

SecretKey key = SecretKeyFactory.getInstance(algoritmo).generateSecret(keySpec);

Cipher encrypter = Cipher.getInstance(transformación);

encrypter.init(Cipher.ENCRYPT_MODE, key, iv);

byte[] input = PLAIN_TEXT.getBytes("UTF-8");

byte[] encrypted = encrypter.doFinal(input);

System.out.println(new String(Hex.encodeHex(encrypted)).toUpperCase());

Editado por: Chris Foley el 1 de marzo de 2012 a las 2:01 AM

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Algo que he notado por si despierta alguna reflexión... la documentación de SAP dice

el resultado está precedido por seguido por el número de clave utilizado en la encriptación. Luego los datos encriptados se almacenan como base64 . Sin embargo, cuando observo los datos, no parece base64, ¿no termina con un = por ejemplo? Aquí tienes un ejemplo de los datos que veo en IDM 1:F700AD168253BC248497969EDB988620

¿Alguien sabe si esa afirmación del documento es precisa?

Editado por: Pete Simms el 29 de febrero de 2012 a las 10:47 PM

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Sí, seguro que es la clave que IDM está utilizando. He probado varias opciones al pasarla al objeto Java, como enviarla tal cual, reducir su longitud para que coincida con la documentación de uDesEncrypt, también he intentado convertirla de una cadena hexadecimal a decimal y agregarle un prefijo con . Estaría feliz si alguien pudiera decirme cómo formatear la clave para obtener el resultado correcto, pero hasta ahora todas las variaciones que he intentado han fallado.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¿Estás seguro de que estás utilizando la misma clave exacta para la encriptación?

La clave debería estar en el archivo <directorio de instalación>\key\keys.ini

Pero otra cosa a tener en cuenta es que la clave en keys.ini es más larga de 24 caracteres (al menos en mi caso), lo cual debe ser (en el caso de Java) según la documentación de uDesEncrypt, por lo que esto podría causar problemas.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?