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
Contenidos
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. . .
1 El qué y el por qué
2 El cómo y con qué
3 Cuando las cosas salen mal. . .
Acerca de mí
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. . .
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.
Acerca de la ponencia
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. . .
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
La criptografía y el mundo real
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. . .
¾Para qué desarrollamos sistemas?
¾Qué sabemos de nuestra información?
¾Cómo podemos proteger nuestra información?
¾Y en qué nos podemos equivocar?
La criptografía y el mundo real
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. . .
¾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?
La criptografía y el mundo real
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. . .
¾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!
Propiedades a defender en un mensaje
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. . .
¾Qué podemos asegurar empleando técnicas
criptográcas?
Condencialidad
Integridad
Autenticación
Y varias otras propiedades que derivan de estas.
Un par de 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. . .
Veamos brevemente un ejemplo de cada uno.
Importante: Son ejemplos basados en nuestra realidad,
aunque no absolutamente literales
Condencialidad
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. . .
Figura: Ejemplo clásico de condencialidad: Transmisión de
datos para el comercio electrónico
Autenticació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. . .
¾Qué hacen para vericar usuario/contraseña en sus
sistemas? ¾Y qué graban en la base de datos?
user = User.find_by_login(params[:login])
return false if user.blank?
passwd_hash = Digest::MD5.hexdigest(user.pw_salt +
params[:passwd])
return (user.passwd != passwd_hash) ? false : true
sistema=> select login, passwd, pw_salt from users
where login=’gwolf’;
login |
passwd
| pw_salt
-------+----------------------------------+----------
gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL?
(1 row)
1
2
3
4
1
2
3
4
5
Nunca se guarda la contraseña, sino una prueba
criptográca de su posesión.
Autenticació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. . .
¾Qué hacen para vericar usuario/contraseña en sus
sistemas? ¾Y qué graban en la base de datos?
user = User.find_by_login(params[:login])
return false if user.blank?
passwd_hash = Digest::MD5.hexdigest(user.pw_salt +
params[:passwd])
return (user.passwd != passwd_hash) ? false : true
sistema=> select login, passwd, pw_salt from users
where login=’gwolf’;
login |
passwd
| pw_salt
-------+----------------------------------+----------
gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL?
(1 row)
1
2
3
4
1
2
3
4
5
Nunca se guarda la contraseña, sino una prueba
criptográca de su posesión.
Autenticació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. . .
¾Qué hacen para vericar usuario/contraseña en sus
sistemas? ¾Y qué graban en la base de datos?
user = User.find_by_login(params[:login])
return false if user.blank?
passwd_hash = Digest::MD5.hexdigest(user.pw_salt +
params[:passwd])
return (user.passwd != passwd_hash) ? false : true
sistema=> select login, passwd, pw_salt from users
where login=’gwolf’;
login |
passwd
| pw_salt
-------+----------------------------------+----------
gwolf | ce0f7176bd13fd657770cefb55923b7f | {BwHnnL?
(1 row)
1
2
3
4
1
2
3
4
5
Nunca se guarda la contraseña, sino una prueba
criptográca de su posesión.
Integridad
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. . .
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
$ apt-cache show linux-image-3.14-1-amd64
Package: linux-image-3.14-1-amd64
(...)
Size: 30780396
MD5sum: 251351c12ed891abf3659514f62d05c6
SHA1: 8bbf040135253e96b4624ad0e141672015b0394a
SHA256:
1
2
3
4
5
6
7
072815c82ebd18f7998fffb441faea571518a6e1502652687d336dd071d4918f
Importante: ¾Estos datos se transmitieron por un
canal conable?
Integridad
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. . .
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
$ apt-cache show linux-image-3.14-1-amd64
Package: linux-image-3.14-1-amd64
(...)
Size: 30780396
MD5sum: 251351c12ed891abf3659514f62d05c6
SHA1: 8bbf040135253e96b4624ad0e141672015b0394a
SHA256:
1
2
3
4
5
6
7
072815c82ebd18f7998fffb441faea571518a6e1502652687d336dd071d4918f
Importante: ¾Estos datos se transmitieron por un
canal conable?
Algunas otras propiedades derivadas
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. . .
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).
Y con esto, ¾a qué quiero llamar la
atenció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. . .
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?
Contenidos
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. . .
1 El qué y el por qué
2 El cómo y con qué
3 Cuando las cosas salen mal. . .
¾Cómo voy a implementar mi 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. . .
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?
¾Cómo voy a implementar mi 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. . .
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?
¾Cómo voy a implementar mi 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. . .
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!
Regla de oro de la 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. . .
No haces tu propia
criptografía
Regla de oro de la criptografía
Desarrollo de
software y
criptografía
Gun
Comentarios de: Desarrollo de software y criptografía - ¿cómo proteger los datos en nuestras aplicaciones? (0)
No hay comentarios