Joven hacker sonriendo

Implementar Cifrado Simétrico

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en Java al implementar un cifrado simétrico. Java permite la creación de llaves de cifrado además de proporcionar herramientas para cifrar y descifrar mensajes utilizando javax.cripto.

Necesidad

Implementar criptografía simétrica en Java.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se dispone de un programa realizado en Java 1.4 o superior.

Solución

De manera general, se conoce como criptografía a las técnicas de cifrado o codificado destinadas a alterar las representaciones lingüísticas de ciertos mensajes con el fin de hacerlos ininteligibles a receptores no autorizados. Estas técnicas se utilizan tanto en el arte como en la ciencia y en la tecnología.

Con la aparición de la informática y el uso masivo de las comunicaciones digitales, se han producido un número creciente de problemas de seguridad. Las transacciones que se realizan a través de la red pueden ser interceptadas, y por tanto, la seguridad de esta información debe garantizarse. Este desafío ha hecho que la criptografía se use con el fin de proteger la información y dotar de seguridad a las comunicaciones y a las entidades que se comunican.[1]

Por otro lado, la criptografía simétrica, también llamada criptografía de clave secreta o criptografía de una clave, es un método criptográfico en el cual se usa una misma clave para cifrar y descifrar mensajes en el emisor y el receptor. Las dos partes que se comunican han de ponerse de acuerdo, de antemano, sobre la clave a usar. Una vez que ambas partes tienen acceso a esta clave, el remitente cifra un mensaje usando la clave, lo envía al destinatario, y éste lo descifra con la misma clave.[2]

Para cifrar, descifrar y crear la llave de cifrado, Java proporciona las clases Cipher, KeyGenerator y SecretKey del paquete javax.crypto. A continuación se enumeran las consideraciones que se deben tener en cuenta al momento de implementar el algoritmo de cifrado simétrico AES con un tamaño de clave de 256 bits:

  1. Cree una clase para encapsular los métodos de cifrado y descifrado.

  2. Importe las clases Cipher, KeyGenerator y SecretKey del paquete javax.crypto.

    cifrado.java
    1
    2
    3
     import javax.crypto.Cipher;
     import javax.crypto.KeyGenerator;
     import javax.crypto.SecretKey;
    
  3. Cree el método para generar la llave privada con un tamaño de 256 bits.

  4. Luego cree un objeto Cipher que referencie a un algoritmo de cifrado simétrico. Para este caso se va hacer referencia al algoritmo AES.

    1
    2
    3
    4
    5
    6
    7
    8
     Cipher cipher = Cipher.getInstance(algorithm);
     String algorithm = "AES";
     KeyGenerator kgen = KeyGenerator.getInstance(algorithm);
     //Para establecer un tamaño de clave de 128 bits se debe cambiar este valor
     kgen.init(256);
     SecretKey key = kgen.generateKey();
     cipher.init(Cipher.ENCRYPT_MODE, key);
     byte[] cipherText = cipher.doFinal(secret.getBytes());
    

Referencias

  1. Criptografía

  2. Criptografía simétrica

  3. REQ.0144: Debe utilizarse como mecanismo de cifrado simétrico con un tamaño de clave mínimo de 256 bits.




Haz un comentario

Estado de los servicios - Términos de Uso