SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Desarrollo de software y criptografía
¾cómo proteger los datos en nuestras aplicaciones?
Gunnar Wolf
Debian ˆ IIEc-UNAM ˆ FI-UNAM
SG Conferencia y Expo 2014
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Contenidos
1 El qué y el por qué
2 El cómo y con qué
3 Cuando las cosas salen mal...
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Acerca de mí
Desarrollador, administrador de sistemas,
entusiasta...
Como todos ustedes (½espero!)
Mantenedor del llavero de conanza OpenPGP en el
Proyecto Debian
No soy experto en criptografía
Me resulta interesante
Estoy convencido de la importancia de que los
desarrolladores la comprendan y utilicen.
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Acerca de la ponencia
Mencionaré algunos (no demasiados) datos y
referencias
La presentación está disponible en
http://gwolf.org/desarrollo_y_criptograa
Con ligas vivas a la fuente de información donde
haga falta
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
La criptografía y el mundo real
¾Para qué desarrollamos sistemas?
¾Qué sabemos de nuestra información?
¾Cómo podemos proteger nuestra información?
¾Y en qué nos podemos equivocar?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
La criptografía y el mundo real
¾Para qué desarrollamos sistemas?
Invariablemente, para gestionar información
¾Qué sabemos de nuestra información?
En ella radica el valor de nuestro trabajo
¾Cómo podemos proteger nuestra información?
¾Y en qué nos podemos equivocar?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
La criptografía y el mundo real
¾Para qué desarrollamos sistemas?
Invariablemente, para gestionar información
¾Qué sabemos de nuestra información?
En ella radica el valor de nuestro trabajo
¾Cómo podemos proteger nuestra información?
...¾Qué signica proteger?
¾Y en qué nos podemos equivocar?
½A eso vamos!
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Propiedades a defender en un mensaje
¾Qué podemos asegurar empleando técnicas
criptográcas?
Condencialidad
Integridad
Autenticación
Y varias otras propiedades que derivan de estas.
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Un par de ejemplos
Veamos brevemente un ejemplo de cada uno.
Importante: Son ejemplos basados en nuestra realidad,
aunque no absolutamente literales
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Condencialidad
Figura: Ejemplo clásico de condencialidad: Transmisión de
datos para el comercio electrónico
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Autenticación
¾Qué hacen para vericar usuario/contraseña en sus
sistemas? ¾Y qué graban en la base de datos?
1 user = User.find_by_login(params[:login])
2 return false if user.blank?
3 passwd_hash = Digest::MD5.hexdigest(user.pw_salt +
params[:passwd])
4 return (user.passwd != passwd_hash) ? false : true
1 sistema= select login, passwd, pw_salt from users
where login=’gwolf’;
2 login | passwd | pw_salt
3 -------+----------------------------------+----------
4 gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL?
5 (1 row)
Nunca se guarda la contraseña, sino una prueba
criptográca de su posesión.
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Autenticación
¾Qué hacen para vericar usuario/contraseña en sus
sistemas? ¾Y qué graban en la base de datos?
1 user = User.find_by_login(params[:login])
2 return false if user.blank?
3 passwd_hash = Digest::MD5.hexdigest(user.pw_salt +
params[:passwd])
4 return (user.passwd != passwd_hash) ? false : true
1 sistema= select login, passwd, pw_salt from users
where login=’gwolf’;
2 login | passwd | pw_salt
3 -------+----------------------------------+----------
4 gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL?
5 (1 row)
Nunca se guarda la contraseña, sino una prueba
criptográca de su posesión.
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Autenticación
¾Qué hacen para vericar usuario/contraseña en sus
sistemas? ¾Y qué graban en la base de datos?
1 user = User.find_by_login(params[:login])
2 return false if user.blank?
3 passwd_hash = Digest::MD5.hexdigest(user.pw_salt +
params[:passwd])
4 return (user.passwd != passwd_hash) ? false : true
1 sistema= select login, passwd, pw_salt from users
where login=’gwolf’;
2 login | passwd | pw_salt
3 -------+----------------------------------+----------
4 gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL?
5 (1 row)
Nunca se guarda la contraseña, sino una prueba
criptográca de su posesión.
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Integridad
Al bajar un archivo de Internet, quiero conrmar que
sea exactamente el mismo que el que subió el autor
Muchos autores y depósitos de software lo publican
junto con su hash (MD5, SHA1, SHA-256)
No se comprueba la identidad del autor, sino
únicamente la integridad del documento
1 $ apt-cache show linux-image-3.14-1-amd64
2 Package: linux-image-3.14-1-amd64
3 (...)
4 Size: 30780396
5 MD5sum: 251351c12ed891abf3659514f62d05c6
6 SHA1: 8bbf040135253e96b4624ad0e141672015b0394a
7 SHA256:
072815c82ebd18f7998fffb441faea571518a6e1502652687d336
Importante: ¾Estos datos se transmitieron por un
canal conable?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Integridad
Al bajar un archivo de Internet, quiero conrmar que
sea exactamente el mismo que el que subió el autor
Muchos autores y depósitos de software lo publican
junto con su hash (MD5, SHA1, SHA-256)
No se comprueba la identidad del autor, sino
únicamente la integridad del documento
1 $ apt-cache show linux-image-3.14-1-amd64
2 Package: linux-image-3.14-1-amd64
3 (...)
4 Size: 30780396
5 MD5sum: 251351c12ed891abf3659514f62d05c6
6 SHA1: 8bbf040135253e96b4624ad0e141672015b0394a
7 SHA256:
072815c82ebd18f7998fffb441faea571518a6e1502652687d336
Importante: ¾Estos datos se transmitieron por un
canal conable?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Algunas otras propiedades derivadas
Vinculación / no-repudio
Certicación
Control de acceso
Tiempo de validez: Validación / expiración
Sello de tiempo
Revocación
Recibo / conrmación
Firma anónima o ciega
Ojo: Varias de estas dependen de la existencia de un
tercero conable (autoridad certicadora).
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Y con esto, ¾a qué quiero llamar la
atención?
Los esquemas antes descritos son seguros y están
comprobados al 100 %.
Módulo teoría de la complejidad → Más al
respecto en un minuto
Pero... ¾Y la implementación que los rodea / llama
/ invoca?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Contenidos
1 El qué y el por qué
2 El cómo y con qué
3 Cuando las cosas salen mal...
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
¾Cómo voy a implementar mi criptografía?
Los diferentes algoritmos son ampliamente
conocidos y están públicamente documentados
Criptografía simétrica / asimétrica; diferentes
longitudes de llave, diferentes modos de operación
¾Por qué?
Muchos de estos algoritmos son aparentemente
fáciles de comprender e implementar. ¾Por qué no
hacerlo?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
¾Cómo voy a implementar mi criptografía?
Los diferentes algoritmos son ampliamente
conocidos y están públicamente documentados
Criptografía simétrica / asimétrica; diferentes
longitudes de llave, diferentes modos de operación
¾Por qué? Cada uno presenta ciertas ventajas y
desventajas en situaciones especícas; algunos
ejemplos en breve
Muchos de estos algoritmos son aparentemente
fáciles de comprender e implementar. ¾Por qué no
hacerlo?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
¾Cómo voy a implementar mi criptografía?
Los diferentes algoritmos son ampliamente
conocidos y están públicamente documentados
Criptografía simétrica / asimétrica; diferentes
longitudes de llave, diferentes modos de operación
¾Por qué? Cada uno presenta ciertas ventajas y
desventajas en situaciones especícas; algunos
ejemplos en breve
Muchos de estos algoritmos son aparentemente
fáciles de comprender e implementar. ¾Por qué no
hacerlo?
½Nunca lo hagan!
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Regla de oro de la criptografía
No haces tu propia
criptografía
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Regla de oro de la criptografía
No haces tu propia
criptografía
...Pero asegúrate de entender la que existe
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Las mejores soluciones: Las más probadas
Mecanismo existente por más de
4,000 años
Con adecuaciones / actualizaciones
Pero el mecanismo con el que aún
hoy estamos más familiarizados
Imagen: Wikipedia, Cerradura
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Las mejores soluciones: Las más probadas
Imágenes: Wikipedia 
Cerradura de tambor
de pines
Largo proceso de estandarización y
revisión de un algoritmo
criptográco
½No se usa criptografía nueva!
Importancia de la revisión por
pares
Adecuaciones necesarias a
mecanismos existentes
Y, en contados casos, la
demostración de su inecacia
p.ej. Knapsacks
(Merkle-Hellman, 1978) →
Shamir, 1982
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Y va más allá del mero símil
La seguridad se logra a través de la apertura. Desarmar
las cosas y jugar con ellas (...) exponiendo a las fallas
de seguridad es lo que nos protege a todos nosotros.
Deviant Ollam, http://toool.us/
Introduction to Lockpicking and Physical Security
DEFCON 13, 2005
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Volviendo a la regla de oro: Los
criptoanalistas
Cualquiera, sin importar qué tan pocas
habilidades tenga, puede diseñar un algoritmo
que él mismo no pueda romper
Bruce Schneier, 1999
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Leyes de Shamir: La criptografía es fuerte,
pero. . .
Tres Leyes de la Seguridad, de Adi Shamir
1 Los sistemas absolutamente seguros no existen
2 Para reducit tu vulnerabilidad a la mitad, debes
duplicar tus gastos
3 La criptografía normalmente es evadida, no
penetrada
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
La criptografía normalmente es evadida, no
penetrada
La criptografía normalmente es evadida, no
penetrada. No conozco ningún sistema
importante y de uso mundial que emplee
criptografía en el que los atacantes penetraran
al sistema a través del criptoanálisis. (. . . )
Normalmente hay maneras mucho más simples
de penetrar el sistema de seguridad.
Adi Shamir
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Ejemplos de evasión de criptografía
Consolas de videojuego (PS3, Wii, Xbox)
Ejecutables rmados, almacenamiento cifrado,
cifrado de memoria, protección de integridad,
coprocesadores de seguridad, . . .
Prácticamente todos los teléfonos, tabletas y
dispositivos similares
SecureBoot, protección desde el cargador del
sistema operativo
Esquema antispam basado en llaves públicas (DKIM
 DomainKeys Identied Mail)
4,000 de 12,000 organizaciones investigadas en
2012 vulnerables por no usar llaves sucientemente
fuertes
Incluyendo Amazon, Apple, Dell, eBay, HP, HSBC,
LinkedIn, Paypal, Twitter. . .
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
¾Existen algoritmos trucados?
La alteración de las S-boxes de DES
La NSA alteró el órden interno de las cajas de
substitución en DES sin dar explicación
Muchos creyeron que debilitaban el mecanismo 
en realidad, lo blindaron contra análisis diferencial
(que no fue conocido públicamente hasta 1990)
Sin embargo, el Dual_EC_DRBG (generador
determinístico de bit aleatorio por doble curva
elíptica)...
Diseñado por la NSA, forma parte del estándar
NIST SP 800-90A
Backdoor intencional en su planteamiento
Documentado como parte de las fugas de Snowden
(2013); NIST retira Dual_EC_DRBG del estándar
en abril de 2014
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Dual_EC_DRBG como caso atípico
RSA La NSA pagó US$10,000,000 a RSA para que
elija Dual_EC_DRBG como default en la suite
criptográca BSafe...
Microsoft Microsoft incluyó este algoritmo en su sistema
operativo porque un cliente importante lo
solicitó. Kim Zetter
OpenSSL Un patrocinador lo solicitó como uno de varios
entregables. El razonamiento (. . . ) que
implementaríamos cualquier algoritmo basado
en estándares publicados ociales
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
En resumidas cuentas. . .
Los ataques no rompen el cifrado.
Aprovechan debilidades, sea en la implementación o en la
interfaz con esta.
...Excepto en muy contados casos, en que las puertas
traseras son introducidas a propósito desde el diseño
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Pero no sólo referente al algoritmo. . .
Complejidad de implementar bien un algoritmo
Complejidad de interoperar con todos los demás que
usan ese mismo cifrado
Nuevos programadores que se integren al equipo
Incluso en un desarrollo 100% propio:
Mantenimiento a futuro
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Empleo de implementaciones estándar
Permitir a quien sí sabe dar un mantenimiento
responsable a mi código
Software ampliamente disponible
En gran parte, bajo licenciamiento libre
Disponibles en fuente → Auditables
Amplias comunidades de usuarios conocedores y
comprometidos
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Aún así, mucho por aprender
Incluso usando implementaciones estándar de
algoritmos bien reconocidos como seguros, tenemos
que comprender lo que hacemos
O si no: Falso sentido de seguridad
Conar ciegamente en un proceso agujereado →
mayores riesgos que si no doy por sentado que mis
datos están seguros
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Ejemplo: Modo de operación ECB
El estándar NIST Special Publication 800-38A
dene cinco modos de operación para el cifrado de
llave simétrica para algoritmos de cifrado en bloques
El primero de estos, Electronic Code Book, tiene
algunas propiedades interesantes:
Ecientemente paralelizable
Mínimo daño al mensaje ante ruido
Sin embargo, nunca debe utilizarse para mensajes
largos, donde pueda haber más de un bloque igual
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Implementación ejemplo: AES (ECB) con
Ruby+OpenSSL
1 require ’openssl’
2 require ’base64’
3
4 cifrador = OpenSSL::Cipher::Cipher.new(’AES-128-ECB’)
5 cifrador.encrypt
6 cifrador.key = ’Un4_ll4v3_b13n_53gUr4’
7 result = cifrador.update(’Esto es todo. Esto es todo.
Esto es todo. Esto es todo. Esto es todo. Esto
es todo. Esto es todo. Esto es todo. ’)
8 result  cifrador.final
9 puts Base64.encode64(result)
Resultado:
cclaoTOpe/SjNJDEb67JynHJWqEzqXv0ozSQxG+uycpxyVqhM6l79KM0kMRv
rsnKcclaoTOpe/SjNJDEb67JyhWjrh7E34p6rEOYLvGpAJk=
¾Ubican el problema?
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Ilustrándolo grácamente
Figura: Imagen
original
Figura: Cifrado
empleando ECB
Figura: Cifrado
empleando OFB
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Modos de operación: ¾Y por qué?
Esquemas tomados de NIST SP 800-38A
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Contenidos
1 El qué y el por qué
2 El cómo y con qué
3 Cuando las cosas salen mal...
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Cuando se presentan problemas
El cifrado es difícil de implementar y mantener bien
 Incluso para los expertos
¾Qué pasa cuando los expertos se equivocan?
¾Cómo nos damos cuenta?
¾Cómo podemos reaccionar?
¾Qué aprendemos de estos errores?
A continuación, algunos ejemplos
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Debian DSA-1571-1 openssl  predictable
random number generator
En mayo de 2006, el mantenedor de OpenSSL en
Debian comentó una línea de código:
1 MD_Update(m,buf,j);
Porque Valgrind marcaba acceso a memoria no
inicializada (½Recuerden esto!)
Pero esto efectivamente redujo la recolección de
entropía a prácticamente cero
En Debian y todas sus distribuciones derivadas
Hasta mayo del 2008, en que Luciano Bello
(también de Debian) descubrió el problema
¾Resultado?
Millones de llaves (x.509, SSH) reducidas de un
espacio 2128 a uno 232
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Apple: Too big to fail (1)
En febrero de 2014, se descubrió este error en el código
criptográco de los sistemas operativos Apple:
1 if ((err = SSLFreeBuffer(hashCtx)) != 0)
2 goto fail;
3 if ((err = ReadyHash(SSLHashSHA1, hashCtx)) != 0)
4 goto fail;
5 if ((err = SSLHashSHA1.update(hashCtx, clientRandom))
!= 0)
6 goto fail;
7 if ((err = SSLHashSHA1.update(hashCtx, serverRandom))
!= 0)
8 goto fail;
9 if ((err = SSLHashSHA1.update(hashCtx, signedParams))
!= 0)
10 goto fail;
11 goto fail;
12 if ((err = SSLHashSHA1.final(hashCtx, hashOut)) != 0)
13 goto fail;
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Apple: Too big to fail (1)
El segundo goto fail de la vericación con
signedParams lleva a escapar de la correcta
vericación de la cadena de conanza
Lo cual volvió básicamente inútil todo el código
criptográco de Apple
Facilitando ataques de hombre en el medio (MitM)
¾Impacto? Millones de dispositivos MacOS, iOS
vulnerables
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
OpenSSL y Heartbleed
En abril de 2014 se dio a conocer el fallo
ampliamente publicitado bajo el nombre Heartbleed
En resumen: Un mal manejo de límites en memoria
y el uso repetido de memoria no correctamente
asignada/liberada causa fugas de información
arbitraria
Bloques de hasta 64K del espacio de memoria del
proceso
Contiene cualquier cosa
Causado no por una línea como los dos
anteriormente mencionados
Sino por prácticas de programación muy
cuestionables
En una biblioteca muy ampliamente utilizada
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
OpenSSL y Heartbleed
En abril de 2014 se dio a conocer el fallo
ampliamente publicitado bajo el nombre Heartbleed
En resumen: Un mal manejo de límites en memoria
y el uso repetido de memoria no correctamente
asignada/liberada causa fugas de información
arbitraria
Bloques de hasta 64K del espacio de memoria del
proceso
Contiene cualquier cosa
...¾Recuerdan lo que llevó al DSA-1571-1?
Causado no por una línea como los dos
anteriormente mencionados
Sino por prácticas de programación muy
cuestionables
En una biblioteca muy ampliamente utilizada
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Impacto de Heartbleed
Este bug llevó a un amplio debate acerca de la falta
de auditoría en infraestructura crítica y ampliamente
empleada, como OpenSSL
Al día de hoy, tres esfuerzos independientes de
auditoría al código (resultando en dos forks)
Linux Foundation: Core Infrastructure Initiative
OpenBSD: LibReSSL → Reporte de avance (Bob
Beck)
Google: BoringSSL
Mucha gente buscando fallos de forma independiente
en las implementaciones de criptografía
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Impacto de Heartbleed
Este bug llevó a un amplio debate acerca de la falta
de auditoría en infraestructura crítica y ampliamente
empleada, como OpenSSL
Al día de hoy, tres esfuerzos independientes de
auditoría al código (resultando en dos forks)
Linux Foundation: Core Infrastructure Initiative
OpenBSD: LibReSSL → Reporte de avance (Bob
Beck)
Google: BoringSSL
Mucha gente buscando fallos de forma independiente
en las implementaciones de criptografía
Obviamente, muchos nuevos fallos van apareciendo
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
¾Google busca crear código aburrido?
(. . . ) Fundamental security components like
SSL/TLS should be very, very boring. They're not
a place for innovation and experimentation, they're
not a place for clever code that demonstrates the
author's virtuosity (. . . ). They're not a place for
exploration of how the C preprocessor can be used
to automatically generate much of the codebase
(which is something that OpenSSL has done).
They're where you want very simple,
straightforward, boring implementations of industry
best practice algorithms and protocols.
When it comes to security, boring is good.
swillden; slashdot.org 21/06/2014
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Lo rescatable. . .
Estos fallos son únicamente los más publicitados
recientemente
Cosa de comenzar a rascarle. . .
Los fallos no sólo llevan a revisión del código
Van creando cambios culturales en el desarrollo de
software
En las culturas de desarrolladores de software
públicamente auditable (→ libre, necesariamente)
cada uno de estos casos llevan a discusiones y
cambios muy positivos de prácticas
p.ej. cambio del proceso de gestión de parches en
Debian; Patch Tagging Guidelines
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Lo rescatable. . .
Cada vez hay más conciencia de la importancia del
uso de mecanismos criptográcos para todo
Se va convirtiendo en la norma, no la excepción
p.ej. campaña+plugins HTTPS Everywhere
Pero mucho camino por recorrer
. . . Y ni hablamos de los problemas derivados de
certicados x.509 (SSL) comprometidos → EFF
SSL Observatory
Ni de esquemas alternos (y muy probados) de
vericación de identidad, como los anillos de
conanza de PGP, en contraposición de la PKI de
las Autoridades Certicadoras. . .
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
A n de cuentas. . .
Figura: http://xkcd.com/538/
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Recursos útiles
Buena parte del material aquí presentado proviene
directa o indirectamente de:
Crypto won't save you either (Peter Gutmann)
LibreSSL  An OpenSSL replacement. The rst 30
days, and where we go from here. (Bob Beck)
Desarrollo de
software y
criptografía
Gunnar Wolf
El qué y el por
qué
El cómo y con
qué
Cuando las
cosas salen
mal. . .
Fin
Aquí se termina mi material preparado...
Por mi parte,
Gracias.
Gunnar Wolf gwolf@gwolf.org
http://gwolf.org/desarrollo_y_criptograa

Más contenido relacionado

La actualidad más candente

Pen test: El arte de la guerra
Pen test: El arte de la guerraPen test: El arte de la guerra
Pen test: El arte de la guerraFutura Networks
 
NoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirus
NoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirusNoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirus
NoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirusINCIDE
 
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Websec México, S.C.
 
Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]Websec México, S.C.
 
Firmas y certificados digitales
Firmas y certificados digitalesFirmas y certificados digitales
Firmas y certificados digitalesTensor
 
Libro de Seguridad en Redes
Libro de Seguridad en RedesLibro de Seguridad en Redes
Libro de Seguridad en RedesTelefónica
 
Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017Websec México, S.C.
 
Gestión de Auditorías de Seguridad
Gestión de Auditorías de SeguridadGestión de Auditorías de Seguridad
Gestión de Auditorías de SeguridadConferencias FIST
 

La actualidad más candente (10)

Pen test: El arte de la guerra
Pen test: El arte de la guerraPen test: El arte de la guerra
Pen test: El arte de la guerra
 
NoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirus
NoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirusNoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirus
NoCONName 2014 (Ncn2k14) Abraham Pasamar - Desmitificando el AntiVirus
 
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
 
Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]
 
Firmas y certificados digitales
Firmas y certificados digitalesFirmas y certificados digitales
Firmas y certificados digitales
 
Seguridad sistemasinformacion
Seguridad sistemasinformacionSeguridad sistemasinformacion
Seguridad sistemasinformacion
 
Libro de Seguridad en Redes
Libro de Seguridad en RedesLibro de Seguridad en Redes
Libro de Seguridad en Redes
 
Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017
 
Gestión de Auditorías de Seguridad
Gestión de Auditorías de SeguridadGestión de Auditorías de Seguridad
Gestión de Auditorías de Seguridad
 
Vulnerabilidades y soluciones
Vulnerabilidades y solucionesVulnerabilidades y soluciones
Vulnerabilidades y soluciones
 

Similar a Desarrollo de software y criptografía, ¿cómo proteger los datos en nuestras aplicaciones?

Funcionamiento de los 'crypters'
Funcionamiento de los 'crypters'Funcionamiento de los 'crypters'
Funcionamiento de los 'crypters'Tensor
 
Seguridad de la Información para Periodistas.
Seguridad de la Información para Periodistas.Seguridad de la Información para Periodistas.
Seguridad de la Información para Periodistas.Gustavo Ibañez
 
Seguridad Computacional y Administración de Sistemas
Seguridad Computacional y Administración de SistemasSeguridad Computacional y Administración de Sistemas
Seguridad Computacional y Administración de SistemasArturo Hoffstadt
 
Security de Hacking-etico-.pdf
Security de Hacking-etico-.pdfSecurity de Hacking-etico-.pdf
Security de Hacking-etico-.pdfLuisMuoz394308
 
Hacking Etico de Carlos Tori
Hacking Etico de Carlos ToriHacking Etico de Carlos Tori
Hacking Etico de Carlos ToriMar Rubio Rubio
 
Aplicaciones Difusas UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1
Aplicaciones Difusas  UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1Aplicaciones Difusas  UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1
Aplicaciones Difusas UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1Luis Fernando Aguas Bucheli
 
Clase 1 21 02-13
Clase 1 21 02-13Clase 1 21 02-13
Clase 1 21 02-13Tensor
 
[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...
[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...
[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...Iván Portillo
 
Seguridad en los Sistemas Operativos
Seguridad en los Sistemas OperativosSeguridad en los Sistemas Operativos
Seguridad en los Sistemas OperativosLauris R Severino
 
Rooted con 2015 - Rojos y Azules: dos equipos con dos sabores
Rooted con 2015 - Rojos y Azules: dos equipos con dos saboresRooted con 2015 - Rojos y Azules: dos equipos con dos sabores
Rooted con 2015 - Rojos y Azules: dos equipos con dos saboresAlejandro Ramos
 
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...Iván Portillo
 
Advanced Persistent Threat ' BugCON 2023
Advanced Persistent Threat '  BugCON 2023Advanced Persistent Threat '  BugCON 2023
Advanced Persistent Threat ' BugCON 2023Jonathan Palacios
 
Algotirmos de criptologia
Algotirmos de criptologiaAlgotirmos de criptologia
Algotirmos de criptologiavictoriaSuro
 
Conexión inversa. Análisis Forense en medios de pago.
Conexión inversa. Análisis Forense en medios de pago.Conexión inversa. Análisis Forense en medios de pago.
Conexión inversa. Análisis Forense en medios de pago.Eventos Creativos
 
Summer boot camp sciende umh
Summer boot camp sciende umhSummer boot camp sciende umh
Summer boot camp sciende umhAlejandro Quesada
 

Similar a Desarrollo de software y criptografía, ¿cómo proteger los datos en nuestras aplicaciones? (20)

Funcionamiento de los 'crypters'
Funcionamiento de los 'crypters'Funcionamiento de los 'crypters'
Funcionamiento de los 'crypters'
 
Seguridad de la Información para Periodistas.
Seguridad de la Información para Periodistas.Seguridad de la Información para Periodistas.
Seguridad de la Información para Periodistas.
 
Analaisis de malwatre trickbot - mp alonso
Analaisis de malwatre   trickbot - mp alonsoAnalaisis de malwatre   trickbot - mp alonso
Analaisis de malwatre trickbot - mp alonso
 
Seguridad Computacional y Administración de Sistemas
Seguridad Computacional y Administración de SistemasSeguridad Computacional y Administración de Sistemas
Seguridad Computacional y Administración de Sistemas
 
Security de Hacking-etico-.pdf
Security de Hacking-etico-.pdfSecurity de Hacking-etico-.pdf
Security de Hacking-etico-.pdf
 
Hacking Etico de Carlos Tori
Hacking Etico de Carlos ToriHacking Etico de Carlos Tori
Hacking Etico de Carlos Tori
 
Aplicaciones Difusas UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1
Aplicaciones Difusas  UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1Aplicaciones Difusas  UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1
Aplicaciones Difusas UNIDAD 5: ÉTICA Y PRIVACIDAD: Parte 1
 
Clase 1 21 02-13
Clase 1 21 02-13Clase 1 21 02-13
Clase 1 21 02-13
 
[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...
[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...
[2020] Cybersecurity Day - Threat Intelligence en el ambito de la ciberinteli...
 
Seguridad en los Sistemas Operativos
Seguridad en los Sistemas OperativosSeguridad en los Sistemas Operativos
Seguridad en los Sistemas Operativos
 
Rooted con 2015 - Rojos y Azules: dos equipos con dos sabores
Rooted con 2015 - Rojos y Azules: dos equipos con dos saboresRooted con 2015 - Rojos y Azules: dos equipos con dos sabores
Rooted con 2015 - Rojos y Azules: dos equipos con dos sabores
 
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...
 
Advanced Persistent Threat ' BugCON 2023
Advanced Persistent Threat '  BugCON 2023Advanced Persistent Threat '  BugCON 2023
Advanced Persistent Threat ' BugCON 2023
 
TRABAJO EN CLASE CARLOS MONTERO
TRABAJO EN CLASE CARLOS MONTEROTRABAJO EN CLASE CARLOS MONTERO
TRABAJO EN CLASE CARLOS MONTERO
 
Qurtuba 2k17 ¡Malware a Mi!
Qurtuba 2k17 ¡Malware a Mi!Qurtuba 2k17 ¡Malware a Mi!
Qurtuba 2k17 ¡Malware a Mi!
 
Seguridad informática
Seguridad informáticaSeguridad informática
Seguridad informática
 
Algotirmos de criptologia
Algotirmos de criptologiaAlgotirmos de criptologia
Algotirmos de criptologia
 
Conexión inversa. Análisis Forense en medios de pago.
Conexión inversa. Análisis Forense en medios de pago.Conexión inversa. Análisis Forense en medios de pago.
Conexión inversa. Análisis Forense en medios de pago.
 
Owasp presentacion latam tour (Ago 2011)
Owasp presentacion latam tour (Ago 2011)Owasp presentacion latam tour (Ago 2011)
Owasp presentacion latam tour (Ago 2011)
 
Summer boot camp sciende umh
Summer boot camp sciende umhSummer boot camp sciende umh
Summer boot camp sciende umh
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Último

MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxRAMIROANTONIOGALINDO
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfAnaRosaMontenegro
 
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...FabianCruz73
 
Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.CZSOTEC
 
Tipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógicoTipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógicoMaxCaldern2
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptxmaykolmagallanes012
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 

Último (11)

MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptx
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdf
 
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
 
Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.
 
Tipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógicoTipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógico
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptx
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 

Desarrollo de software y criptografía, ¿cómo proteger los datos en nuestras aplicaciones?

  • 1. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Desarrollo de software y criptografía ¾cómo proteger los datos en nuestras aplicaciones? Gunnar Wolf Debian ˆ IIEc-UNAM ˆ FI-UNAM SG Conferencia y Expo 2014
  • 2. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Contenidos 1 El qué y el por qué 2 El cómo y con qué 3 Cuando las cosas salen mal...
  • 3. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Acerca de mí Desarrollador, administrador de sistemas, entusiasta... Como todos ustedes (½espero!) Mantenedor del llavero de conanza OpenPGP en el Proyecto Debian No soy experto en criptografía Me resulta interesante Estoy convencido de la importancia de que los desarrolladores la comprendan y utilicen.
  • 4. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Acerca de la ponencia Mencionaré algunos (no demasiados) datos y referencias La presentación está disponible en http://gwolf.org/desarrollo_y_criptograa Con ligas vivas a la fuente de información donde haga falta
  • 5. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . La criptografía y el mundo real ¾Para qué desarrollamos sistemas? ¾Qué sabemos de nuestra información? ¾Cómo podemos proteger nuestra información? ¾Y en qué nos podemos equivocar?
  • 6. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . La criptografía y el mundo real ¾Para qué desarrollamos sistemas? Invariablemente, para gestionar información ¾Qué sabemos de nuestra información? En ella radica el valor de nuestro trabajo ¾Cómo podemos proteger nuestra información? ¾Y en qué nos podemos equivocar?
  • 7. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . La criptografía y el mundo real ¾Para qué desarrollamos sistemas? Invariablemente, para gestionar información ¾Qué sabemos de nuestra información? En ella radica el valor de nuestro trabajo ¾Cómo podemos proteger nuestra información? ...¾Qué signica proteger? ¾Y en qué nos podemos equivocar? ½A eso vamos!
  • 8. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Propiedades a defender en un mensaje ¾Qué podemos asegurar empleando técnicas criptográcas? Condencialidad Integridad Autenticación Y varias otras propiedades que derivan de estas.
  • 9. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Un par de ejemplos Veamos brevemente un ejemplo de cada uno. Importante: Son ejemplos basados en nuestra realidad, aunque no absolutamente literales
  • 10. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Condencialidad Figura: Ejemplo clásico de condencialidad: Transmisión de datos para el comercio electrónico
  • 11. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Autenticación ¾Qué hacen para vericar usuario/contraseña en sus sistemas? ¾Y qué graban en la base de datos? 1 user = User.find_by_login(params[:login]) 2 return false if user.blank? 3 passwd_hash = Digest::MD5.hexdigest(user.pw_salt + params[:passwd]) 4 return (user.passwd != passwd_hash) ? false : true 1 sistema= select login, passwd, pw_salt from users where login=’gwolf’; 2 login | passwd | pw_salt 3 -------+----------------------------------+---------- 4 gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL? 5 (1 row) Nunca se guarda la contraseña, sino una prueba criptográca de su posesión.
  • 12. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Autenticación ¾Qué hacen para vericar usuario/contraseña en sus sistemas? ¾Y qué graban en la base de datos? 1 user = User.find_by_login(params[:login]) 2 return false if user.blank? 3 passwd_hash = Digest::MD5.hexdigest(user.pw_salt + params[:passwd]) 4 return (user.passwd != passwd_hash) ? false : true 1 sistema= select login, passwd, pw_salt from users where login=’gwolf’; 2 login | passwd | pw_salt 3 -------+----------------------------------+---------- 4 gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL? 5 (1 row) Nunca se guarda la contraseña, sino una prueba criptográca de su posesión.
  • 13. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Autenticación ¾Qué hacen para vericar usuario/contraseña en sus sistemas? ¾Y qué graban en la base de datos? 1 user = User.find_by_login(params[:login]) 2 return false if user.blank? 3 passwd_hash = Digest::MD5.hexdigest(user.pw_salt + params[:passwd]) 4 return (user.passwd != passwd_hash) ? false : true 1 sistema= select login, passwd, pw_salt from users where login=’gwolf’; 2 login | passwd | pw_salt 3 -------+----------------------------------+---------- 4 gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL? 5 (1 row) Nunca se guarda la contraseña, sino una prueba criptográca de su posesión.
  • 14. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Integridad Al bajar un archivo de Internet, quiero conrmar que sea exactamente el mismo que el que subió el autor Muchos autores y depósitos de software lo publican junto con su hash (MD5, SHA1, SHA-256) No se comprueba la identidad del autor, sino únicamente la integridad del documento 1 $ apt-cache show linux-image-3.14-1-amd64 2 Package: linux-image-3.14-1-amd64 3 (...) 4 Size: 30780396 5 MD5sum: 251351c12ed891abf3659514f62d05c6 6 SHA1: 8bbf040135253e96b4624ad0e141672015b0394a 7 SHA256: 072815c82ebd18f7998fffb441faea571518a6e1502652687d336 Importante: ¾Estos datos se transmitieron por un canal conable?
  • 15. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Integridad Al bajar un archivo de Internet, quiero conrmar que sea exactamente el mismo que el que subió el autor Muchos autores y depósitos de software lo publican junto con su hash (MD5, SHA1, SHA-256) No se comprueba la identidad del autor, sino únicamente la integridad del documento 1 $ apt-cache show linux-image-3.14-1-amd64 2 Package: linux-image-3.14-1-amd64 3 (...) 4 Size: 30780396 5 MD5sum: 251351c12ed891abf3659514f62d05c6 6 SHA1: 8bbf040135253e96b4624ad0e141672015b0394a 7 SHA256: 072815c82ebd18f7998fffb441faea571518a6e1502652687d336 Importante: ¾Estos datos se transmitieron por un canal conable?
  • 16. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Algunas otras propiedades derivadas Vinculación / no-repudio Certicación Control de acceso Tiempo de validez: Validación / expiración Sello de tiempo Revocación Recibo / conrmación Firma anónima o ciega Ojo: Varias de estas dependen de la existencia de un tercero conable (autoridad certicadora).
  • 17. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Y con esto, ¾a qué quiero llamar la atención? Los esquemas antes descritos son seguros y están comprobados al 100 %. Módulo teoría de la complejidad → Más al respecto en un minuto Pero... ¾Y la implementación que los rodea / llama / invoca?
  • 18. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Contenidos 1 El qué y el por qué 2 El cómo y con qué 3 Cuando las cosas salen mal...
  • 19. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . ¾Cómo voy a implementar mi criptografía? Los diferentes algoritmos son ampliamente conocidos y están públicamente documentados Criptografía simétrica / asimétrica; diferentes longitudes de llave, diferentes modos de operación ¾Por qué? Muchos de estos algoritmos son aparentemente fáciles de comprender e implementar. ¾Por qué no hacerlo?
  • 20. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . ¾Cómo voy a implementar mi criptografía? Los diferentes algoritmos son ampliamente conocidos y están públicamente documentados Criptografía simétrica / asimétrica; diferentes longitudes de llave, diferentes modos de operación ¾Por qué? Cada uno presenta ciertas ventajas y desventajas en situaciones especícas; algunos ejemplos en breve Muchos de estos algoritmos son aparentemente fáciles de comprender e implementar. ¾Por qué no hacerlo?
  • 21. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . ¾Cómo voy a implementar mi criptografía? Los diferentes algoritmos son ampliamente conocidos y están públicamente documentados Criptografía simétrica / asimétrica; diferentes longitudes de llave, diferentes modos de operación ¾Por qué? Cada uno presenta ciertas ventajas y desventajas en situaciones especícas; algunos ejemplos en breve Muchos de estos algoritmos son aparentemente fáciles de comprender e implementar. ¾Por qué no hacerlo? ½Nunca lo hagan!
  • 22. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Regla de oro de la criptografía No haces tu propia criptografía
  • 23. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Regla de oro de la criptografía No haces tu propia criptografía ...Pero asegúrate de entender la que existe
  • 24. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Las mejores soluciones: Las más probadas Mecanismo existente por más de 4,000 años Con adecuaciones / actualizaciones Pero el mecanismo con el que aún hoy estamos más familiarizados Imagen: Wikipedia, Cerradura
  • 25. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Las mejores soluciones: Las más probadas Imágenes: Wikipedia Cerradura de tambor de pines Largo proceso de estandarización y revisión de un algoritmo criptográco ½No se usa criptografía nueva! Importancia de la revisión por pares Adecuaciones necesarias a mecanismos existentes Y, en contados casos, la demostración de su inecacia p.ej. Knapsacks (Merkle-Hellman, 1978) → Shamir, 1982
  • 26. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Y va más allá del mero símil La seguridad se logra a través de la apertura. Desarmar las cosas y jugar con ellas (...) exponiendo a las fallas de seguridad es lo que nos protege a todos nosotros. Deviant Ollam, http://toool.us/ Introduction to Lockpicking and Physical Security DEFCON 13, 2005
  • 27. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Volviendo a la regla de oro: Los criptoanalistas Cualquiera, sin importar qué tan pocas habilidades tenga, puede diseñar un algoritmo que él mismo no pueda romper Bruce Schneier, 1999
  • 28. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Leyes de Shamir: La criptografía es fuerte, pero. . . Tres Leyes de la Seguridad, de Adi Shamir 1 Los sistemas absolutamente seguros no existen 2 Para reducit tu vulnerabilidad a la mitad, debes duplicar tus gastos 3 La criptografía normalmente es evadida, no penetrada
  • 29. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . La criptografía normalmente es evadida, no penetrada La criptografía normalmente es evadida, no penetrada. No conozco ningún sistema importante y de uso mundial que emplee criptografía en el que los atacantes penetraran al sistema a través del criptoanálisis. (. . . ) Normalmente hay maneras mucho más simples de penetrar el sistema de seguridad. Adi Shamir
  • 30. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Ejemplos de evasión de criptografía Consolas de videojuego (PS3, Wii, Xbox) Ejecutables rmados, almacenamiento cifrado, cifrado de memoria, protección de integridad, coprocesadores de seguridad, . . . Prácticamente todos los teléfonos, tabletas y dispositivos similares SecureBoot, protección desde el cargador del sistema operativo Esquema antispam basado en llaves públicas (DKIM DomainKeys Identied Mail) 4,000 de 12,000 organizaciones investigadas en 2012 vulnerables por no usar llaves sucientemente fuertes Incluyendo Amazon, Apple, Dell, eBay, HP, HSBC, LinkedIn, Paypal, Twitter. . .
  • 31. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . ¾Existen algoritmos trucados? La alteración de las S-boxes de DES La NSA alteró el órden interno de las cajas de substitución en DES sin dar explicación Muchos creyeron que debilitaban el mecanismo en realidad, lo blindaron contra análisis diferencial (que no fue conocido públicamente hasta 1990) Sin embargo, el Dual_EC_DRBG (generador determinístico de bit aleatorio por doble curva elíptica)... Diseñado por la NSA, forma parte del estándar NIST SP 800-90A Backdoor intencional en su planteamiento Documentado como parte de las fugas de Snowden (2013); NIST retira Dual_EC_DRBG del estándar en abril de 2014
  • 32. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Dual_EC_DRBG como caso atípico RSA La NSA pagó US$10,000,000 a RSA para que elija Dual_EC_DRBG como default en la suite criptográca BSafe... Microsoft Microsoft incluyó este algoritmo en su sistema operativo porque un cliente importante lo solicitó. Kim Zetter OpenSSL Un patrocinador lo solicitó como uno de varios entregables. El razonamiento (. . . ) que implementaríamos cualquier algoritmo basado en estándares publicados ociales
  • 33. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . En resumidas cuentas. . . Los ataques no rompen el cifrado. Aprovechan debilidades, sea en la implementación o en la interfaz con esta. ...Excepto en muy contados casos, en que las puertas traseras son introducidas a propósito desde el diseño
  • 34. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Pero no sólo referente al algoritmo. . . Complejidad de implementar bien un algoritmo Complejidad de interoperar con todos los demás que usan ese mismo cifrado Nuevos programadores que se integren al equipo Incluso en un desarrollo 100% propio: Mantenimiento a futuro
  • 35. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Empleo de implementaciones estándar Permitir a quien sí sabe dar un mantenimiento responsable a mi código Software ampliamente disponible En gran parte, bajo licenciamiento libre Disponibles en fuente → Auditables Amplias comunidades de usuarios conocedores y comprometidos
  • 36. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Aún así, mucho por aprender Incluso usando implementaciones estándar de algoritmos bien reconocidos como seguros, tenemos que comprender lo que hacemos O si no: Falso sentido de seguridad Conar ciegamente en un proceso agujereado → mayores riesgos que si no doy por sentado que mis datos están seguros
  • 37. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Ejemplo: Modo de operación ECB El estándar NIST Special Publication 800-38A dene cinco modos de operación para el cifrado de llave simétrica para algoritmos de cifrado en bloques El primero de estos, Electronic Code Book, tiene algunas propiedades interesantes: Ecientemente paralelizable Mínimo daño al mensaje ante ruido Sin embargo, nunca debe utilizarse para mensajes largos, donde pueda haber más de un bloque igual
  • 38. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Implementación ejemplo: AES (ECB) con Ruby+OpenSSL 1 require ’openssl’ 2 require ’base64’ 3 4 cifrador = OpenSSL::Cipher::Cipher.new(’AES-128-ECB’) 5 cifrador.encrypt 6 cifrador.key = ’Un4_ll4v3_b13n_53gUr4’ 7 result = cifrador.update(’Esto es todo. Esto es todo. Esto es todo. Esto es todo. Esto es todo. Esto es todo. Esto es todo. Esto es todo. ’) 8 result cifrador.final 9 puts Base64.encode64(result) Resultado: cclaoTOpe/SjNJDEb67JynHJWqEzqXv0ozSQxG+uycpxyVqhM6l79KM0kMRv rsnKcclaoTOpe/SjNJDEb67JyhWjrh7E34p6rEOYLvGpAJk= ¾Ubican el problema?
  • 39. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Ilustrándolo grácamente Figura: Imagen original Figura: Cifrado empleando ECB Figura: Cifrado empleando OFB
  • 40. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Modos de operación: ¾Y por qué? Esquemas tomados de NIST SP 800-38A
  • 41. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Contenidos 1 El qué y el por qué 2 El cómo y con qué 3 Cuando las cosas salen mal...
  • 42. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Cuando se presentan problemas El cifrado es difícil de implementar y mantener bien Incluso para los expertos ¾Qué pasa cuando los expertos se equivocan? ¾Cómo nos damos cuenta? ¾Cómo podemos reaccionar? ¾Qué aprendemos de estos errores? A continuación, algunos ejemplos
  • 43. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Debian DSA-1571-1 openssl predictable random number generator En mayo de 2006, el mantenedor de OpenSSL en Debian comentó una línea de código: 1 MD_Update(m,buf,j); Porque Valgrind marcaba acceso a memoria no inicializada (½Recuerden esto!) Pero esto efectivamente redujo la recolección de entropía a prácticamente cero En Debian y todas sus distribuciones derivadas Hasta mayo del 2008, en que Luciano Bello (también de Debian) descubrió el problema ¾Resultado? Millones de llaves (x.509, SSH) reducidas de un espacio 2128 a uno 232
  • 44. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Apple: Too big to fail (1) En febrero de 2014, se descubrió este error en el código criptográco de los sistemas operativos Apple: 1 if ((err = SSLFreeBuffer(hashCtx)) != 0) 2 goto fail; 3 if ((err = ReadyHash(SSLHashSHA1, hashCtx)) != 0) 4 goto fail; 5 if ((err = SSLHashSHA1.update(hashCtx, clientRandom)) != 0) 6 goto fail; 7 if ((err = SSLHashSHA1.update(hashCtx, serverRandom)) != 0) 8 goto fail; 9 if ((err = SSLHashSHA1.update(hashCtx, signedParams)) != 0) 10 goto fail; 11 goto fail; 12 if ((err = SSLHashSHA1.final(hashCtx, hashOut)) != 0) 13 goto fail;
  • 45. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Apple: Too big to fail (1) El segundo goto fail de la vericación con signedParams lleva a escapar de la correcta vericación de la cadena de conanza Lo cual volvió básicamente inútil todo el código criptográco de Apple Facilitando ataques de hombre en el medio (MitM) ¾Impacto? Millones de dispositivos MacOS, iOS vulnerables
  • 46. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . OpenSSL y Heartbleed En abril de 2014 se dio a conocer el fallo ampliamente publicitado bajo el nombre Heartbleed En resumen: Un mal manejo de límites en memoria y el uso repetido de memoria no correctamente asignada/liberada causa fugas de información arbitraria Bloques de hasta 64K del espacio de memoria del proceso Contiene cualquier cosa Causado no por una línea como los dos anteriormente mencionados Sino por prácticas de programación muy cuestionables En una biblioteca muy ampliamente utilizada
  • 47. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . OpenSSL y Heartbleed En abril de 2014 se dio a conocer el fallo ampliamente publicitado bajo el nombre Heartbleed En resumen: Un mal manejo de límites en memoria y el uso repetido de memoria no correctamente asignada/liberada causa fugas de información arbitraria Bloques de hasta 64K del espacio de memoria del proceso Contiene cualquier cosa ...¾Recuerdan lo que llevó al DSA-1571-1? Causado no por una línea como los dos anteriormente mencionados Sino por prácticas de programación muy cuestionables En una biblioteca muy ampliamente utilizada
  • 48. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Impacto de Heartbleed Este bug llevó a un amplio debate acerca de la falta de auditoría en infraestructura crítica y ampliamente empleada, como OpenSSL Al día de hoy, tres esfuerzos independientes de auditoría al código (resultando en dos forks) Linux Foundation: Core Infrastructure Initiative OpenBSD: LibReSSL → Reporte de avance (Bob Beck) Google: BoringSSL Mucha gente buscando fallos de forma independiente en las implementaciones de criptografía
  • 49. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Impacto de Heartbleed Este bug llevó a un amplio debate acerca de la falta de auditoría en infraestructura crítica y ampliamente empleada, como OpenSSL Al día de hoy, tres esfuerzos independientes de auditoría al código (resultando en dos forks) Linux Foundation: Core Infrastructure Initiative OpenBSD: LibReSSL → Reporte de avance (Bob Beck) Google: BoringSSL Mucha gente buscando fallos de forma independiente en las implementaciones de criptografía Obviamente, muchos nuevos fallos van apareciendo
  • 50. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . ¾Google busca crear código aburrido? (. . . ) Fundamental security components like SSL/TLS should be very, very boring. They're not a place for innovation and experimentation, they're not a place for clever code that demonstrates the author's virtuosity (. . . ). They're not a place for exploration of how the C preprocessor can be used to automatically generate much of the codebase (which is something that OpenSSL has done). They're where you want very simple, straightforward, boring implementations of industry best practice algorithms and protocols. When it comes to security, boring is good. swillden; slashdot.org 21/06/2014
  • 51. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Lo rescatable. . . Estos fallos son únicamente los más publicitados recientemente Cosa de comenzar a rascarle. . . Los fallos no sólo llevan a revisión del código Van creando cambios culturales en el desarrollo de software En las culturas de desarrolladores de software públicamente auditable (→ libre, necesariamente) cada uno de estos casos llevan a discusiones y cambios muy positivos de prácticas p.ej. cambio del proceso de gestión de parches en Debian; Patch Tagging Guidelines
  • 52. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Lo rescatable. . . Cada vez hay más conciencia de la importancia del uso de mecanismos criptográcos para todo Se va convirtiendo en la norma, no la excepción p.ej. campaña+plugins HTTPS Everywhere Pero mucho camino por recorrer . . . Y ni hablamos de los problemas derivados de certicados x.509 (SSL) comprometidos → EFF SSL Observatory Ni de esquemas alternos (y muy probados) de vericación de identidad, como los anillos de conanza de PGP, en contraposición de la PKI de las Autoridades Certicadoras. . .
  • 53. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . A n de cuentas. . . Figura: http://xkcd.com/538/
  • 54. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Recursos útiles Buena parte del material aquí presentado proviene directa o indirectamente de: Crypto won't save you either (Peter Gutmann) LibreSSL An OpenSSL replacement. The rst 30 days, and where we go from here. (Bob Beck)
  • 55. Desarrollo de software y criptografía Gunnar Wolf El qué y el por qué El cómo y con qué Cuando las cosas salen mal. . . Fin Aquí se termina mi material preparado... Por mi parte, Gracias. Gunnar Wolf gwolf@gwolf.org http://gwolf.org/desarrollo_y_criptograa