Criptografia
Criptografia
Criptografia
La criptografía es una parte importante de casi todas las aplicaciones web o móviles
y sin embargo la mayoría de los desarrolladores sienten que no lo entienden o, peor
aún, lo están haciendo mal. Sí, el campo de la criptografía está dominado por
matemáticos súper-inteligentes, investigadores y doctorados a montones, pero
gracias a la ardua labor de aquellas personas, tenemos grandes herramientas que
el desarrollador promedio puede beneficiarse.
¿Qué es la criptografía?
La criptografía es la práctica de la protección de la información contra el acceso no
deseado al ocultar o convertirlo en algo sin sentido. Para los desarrolladores, la
criptografía es un tema notoriamente complejo y difícil de implementar.
Terminología
Primero, un poco de terminología. En la cripto-tierra, se puede dividir la mayoría de
los algoritmos en dos, sistemas de cifrado y hash.
Cifrados son algoritmos que pueden cifrar o descifrar los datos basados en
claves compartidas o públicas / privadas.
Hashes (también conocido como Message Digests) son una manera, la
conversión irreversible de una fuente de entrada. A menudo se utiliza para las
contraseñas y las sumas de comprobación.
Cifrados por otro lado son su herramienta si va a necesitar el valor original en bruto
(llamado “texto plano” en la criptografía, aunque sean datos binarios) con el tiempo.
Números de tarjetas de crédito son un buen ejemplo de ello. Sean le da su tarjeta
de crédito y más tarde tendrás el valor de texto sin formato para procesar una
transacción. Con el fin de cifrar y descifrar cualquier dato necesitarás ciertas claves
(claves de cifrado) y asegurarse de que las estes manteniendo a salvo.
Considera el cifrado asimétrico hasta que los requisitos del proyecto sugieren lo
contrario. Y siempre recuerda proteger adecuadamente las claves privadas.
Un stream (o flujo) de cifrado tiene una clave de transmisión que se utiliza para cifrar
y descifrar datos. Un bloque de cifrado utiliza un “bloque” de los datos (un ‘trozo’ de
bytes = una array de bytes) como la clave que se utiliza para cifrar y descifrar. Se
recomienda que la mayoría de la gente utilice los cifrados por bloque ya que las
claves de matrices de bytes son fáciles de trabajar y almacenar. AES y Blowfish son
ambos Cifrados por bloques, por ejemplo.
Cifrados de flujo tienen sus beneficios (como la velocidad), pero son más difíciles
de trabajar por lo que generalmente no se recomienda a menos que sepas lo que
estás haciendo.
Hay una idea errónea de que los cifrados de bloque son para bloques de datos,
como los archivos y campos de datos, mientras que los cifrados de flujo son para
datos de flujo, como flujos de red. Este no es el caso. La palabra “stream” refleja
una corriente de bits usados para la clave, no los datos en bruto (de nuevo,
_plaintext) está cifrado o descifrado.
Asegurar Claves… Sí
¡Hablando de asegurar sus llaves, usted debe! No, lo digo en serio. Si alguna vez
alguien se apodera de sus claves privadas, todos los datos cifrados puede ser que
también sea en texto plano. Como casi todo en la criptografía, hay estrategias muy
avanzadas, pero la mayoría están fuera del conjunto de habilidades y el presupuesto
de la mayoría de los desarrolladores. Si usted puede permitirse el software de
gestión de claves, entonces es su apuesta más segura y mejor. De lo contrario, aún
puede reducir algunos riesgos con estrategias básicas.
1. Mantenga sus claves en otro servidor y base de datos de los datos cifrados.
2. Mantenga los parches de seguridad de ese servidor 100% hasta al día todo el
tiempo (Firmware, sistema operativo, base de datos, etc.)
3. Bloquee su acceso a la red tanto como puedas. Invierta en un buen firewall.
4. Límite quién en su equipo tiene acceso al servidor y aplicar autenticación de
múltiples factores para que puedan acceso a él.