keytool -genseckey -alias TDES -keyalg DESede -keysize 128 funciona dentro de la carpeta jre / bin pero no cuando keytool.exe está en otra ubicación

1

Me gustaría crear una clave TDES con un tamaño de 128 bits y una clave 2KTDES con 192 bits para la autenticación en una tarjeta inteligente Desfire. Por lo tanto, he usado el keytool para generar los jceks con el siguiente comando. Cuando ejecuto el mismo en la carpeta C:\Program Files (x86)\Java\jdk1.8.0_25\jre\bin puedo ver que la ejecución se realiza correctamente y se crean los jceks. Sin embargo, cuando se exporta el archivo keytool.exe a otra ubicación, tal vez en el escritorio, puedo ver que el mismo comando falla con el siguiente error.

C:\Users\Charan\Desktop\KeyGen>keytool -genseckey -alias TDES -keyalg DESede -keysize 128 -storetype jceks -keystore TDES.jceks -storepass change -keypass change
keytool error: java.security.InvalidParameterException: Wrong keysize: must be equal to 112 or 168

C:\Users\Charan\Desktop\KeyGen>
C:\Users\Charan\Desktop\KeyGen>

Intenté lo mismo con las opciones 112 y 168, de cualquier manera se ejecuta sin errores, pero el tamaño de clave creado en ambos casos es de 192 bits. Pero la pregunta original sigue siendo un misterio porque cuando intenté crear claves de 192 y 256 bits con DESEDE, pude hacerlas cuando ejecuté la herramienta desde la carpeta bin. Los archivos de almacén de claves generados tenían la longitud de clave correcta, 192 y 256.

    
pregunta Charan Chakravarthi 19.08.2015 - 13:09
fuente

1 respuesta

3

Meta: esto puede adaptarse mejor a la seguridad o incluso a un superusuario; Si migra, toma mi respuesta, por favor.

¿Qué tan grande? Una clave TDES (completa) también conocida como DESede contiene 168 bits de clave "real", pero la forma almacenada incluye bits originalmente reservados para la paridad y hoy en día a menudo se ignora totalizando 192 bits = 24 octetos. "TDES de dos teclas" (opción de codificación TDEA 2) tiene 112 bits "reales", almacenados a veces como 128 bits = 16 octetos donde los primeros 8 octetos (k1) se duplican como k3 durante el cifrado y descifrado, a veces como 192 bits = 24 octetos, donde los primeros 8 octetos se duplican realmente en los últimos 8 octetos, de modo que k3 = k1.

El KeyGenerator para DESede en el proveedor SunJCE de Oracle-anteriormente Sun, acepta solo 112 o 168 bits como tamaño, y almacena siempre en la forma de 24 octetos; la generación de 112 bits produce una clave almacenada con k3 = k1. Esto es aparentemente porque El Cipher de ese proveedor solo funciona con el formulario de 24 octetos. El proveedor BouncyCastle (que yo uso) KeyGenerator acepta 112 o 128 para generar la forma de 16 octetos y 168 o 192 para generar la forma de 24 octetos, y su Cipher funciona con cualquiera de las formas. Ninguna implementación DESede que he visto (Java u otra) genera o usa una clave de 256 bits; ¿Seguro que no confundiste eso con AES?

keytool.exe en realidad ejecuta una JVM y carga clases de Java para realizar las operaciones de cifrado, incluida la generación de claves. Normalmente usa el JRE en el mismo directorio, pero si ha movido el .exe debe usar algunos otro método para encontrar el JRE; en Windows apuesto a que usa las mismas entradas de registro que se usan para encontrar el JRE para los applets del navegador. Normalmente, este no es el JRE dentro de un JDK como el suyo, y no estoy seguro de que pueda serlo. Si tienes el JRE-in-JDK personalizado con por ejemplo Bouncycastle, pero el "navegador" JRE no, debe obtener los resultados que describe.

Advertencia: el TDES de dos teclas solo tiene 56 bits de fuerza debido al ataque en el medio, que ahora es al menos casi práctico, y por lo tanto no se acepta como seguro ; ver

(y este punto es definitivamente un tema clave para criptografía).

    
respondido por el dave_thompson_085 19.08.2015 - 17:32
fuente

Lea otras preguntas en las etiquetas