2009-05-19 14 views
7

¿Hay alguna forma de generar un par de claves de 128 bits adecuado para el cifrado mediante el programa de herramientas de claves de Sun? Parece que los algoritmos disponibles en http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator no son compatibles o no permiten claves de menos de 512 bits.Generación de claves de 128 bits con keytool

El par de claves se usará con el ff. fragmento de código:

Security.addProvider(new BouncyCastleProvider()); 

KeyStore keyStore = KeyStore.getInstance("PKCS12"); 

FileInputStream keyStoreSource = new FileInputStream("keystore"); 

try { 
    keyStore.load(keyStoreSource, "password".toCharArray()); 
} finally { 
    keyStoreSource.close(); 
} 

String alias = (String) keyStore.aliases().nextElement(); 
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, "password".toCharArray()); 
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(alias); 

CMSEnvelopedDataStreamGenerator generator = new CMSEnvelopedDataStreamGenerator(); 

generator.addKeyTransRecipient(certificate); 

OutputStream output2 = generator.open(output, CMSEnvelopedDataGenerator.AES128_CBC, BouncyCastleProvider.PROVIDER_NAME); 

try { 
    IOUtils.copy(input, output2); 
} finally { 
    output2.close(); 
    output.close(); 
} 

donde la producción es un poco de OutputStream donde se guardarán los datos cifrados y la entrada es un poco de InputStream, donde se leerán los datos de texto.

Respuesta

0

Tendría sentido que no se pueden generar pares de claves de menos de 512 bits. La criptografía de clave pública necesita una clave más larga que la criptografía de clave simétrica para mantener el mismo nivel de seguridad. No se recomienda un par de claves de 128 bits para la criptografía de clave pública.

+0

que estaba buscando para generar un certificado de prueba para utilizar con AES-128. ¿Lo estoy haciendo mal entonces? –

+1

¿Podría explicar con más detalle lo que desea lograr? –

+0

Pregunta actualizada con fragmento de código donde se usará el par de claves generado. –

2

Los certificados se utilizan para la criptografía de clave pública y no contienen claves de cifrado para el cifrado de bloque simétrico AES-128. En cambio, la criptografía de clave pública se usa solo para encriptar o negociar la clave AES de 128 bits y el resto de la conversación usa AES.

La clave AES de 128 bits no es un certificado, solo 128 bits de un generador de números aleatorios criptográficamente fuerte o derivada de una frase de contraseña utilizando un algoritmo hash como PBKDF2. Cómo obtendrá estos bits dependerá de su aplicación. SSL/TLS debe negociar una clave aleatoria, pero un programa de cifrado del disco duro deriva la clave de una frase de contraseña.

+0

Pregunta actualizada con fragmento de código donde se usará el par de claves generado. Con suerte, he aclarado cualquier confusión. Pero, sí, soy un principiante crypto. :PAG –

5

sólo tiene que especificar diferentes storetype

keytool -genseckey -alias check2 -keyalg AES -keysize 128 -storepass changeit -storetype JCEKS -keystore ks.jck

Cuestiones relacionadas