Primero, un artículo periodístico-‘literario’ donde se intenta justificar las malas contraseñas y por qué la gente hace eso.
The Secret Life of Passwords
A continuación tres artículos que tienen bastantes puntos en común; discuten sobre algunas justificaciones que se dan de vez en cuando para imponer ciertas normas de seguridad sobre las claves.
Esencialmente se discuten algunas reglas habituales en la gestión de contraseñas que, según los autores, podrían no ser tan interesantes/útiles en muchos casos.
It Gets Worse: The Newest Sony Data Breach Exposes Thousands Of Passwords
Donde podemos leer:
Included in the newest data dump is a file directory titled “Password,” which includes 139 Word documents, Excel spreadsheets, zip files, and PDFs containing thousands of passwords to Sony Pictures’ internal computers, social media accounts, and web services accounts. Most of the files are plainly labeled with titles like “password list.xls” or “YouTube login passwords.xlsx.”
No creo que el RSS esté muerto. Pero vemos que mucha gente prefiere recibir información a través de los sitios de redes sociales. Hasta publicaba lo que aparece en mis blogs utilizando servicios como IFTT y dlvr.it.
Son bastante cómodos y funcionan muy bien. Sin embargo, uno siempre se pregunta si podría hacerse unos programas a medida que nos permitan gestionar esa parte de la publicación y aprender un poco de paso.
Empecé con la publicación en páginas de Facebook pero todavía no estoy satisfecho del resultado así que hablaremos primero de Twitter: al fin y al cabo sólo tenemos que publicar el título de la entrada y el enlace (y, tal vez, algún texto introductorio).
Encontré el proyecto twitter que ya tiene una parte importante del trabajo realizada. Podemos instalarla con pip:
Para su correcto funcionamiento necesita BeautifulSoup y tal vez algunos módulos más. Si no están instalados en nuestro sistema, recibiremos las ‘quejas’ correspondientes.
Después podemos ejecutarlo.
Nos vendrá bien porque necesitamos autentificarnos en Twitter y el programita que he preparado no se ocupa de esta parte. Hace no tanto se podía leer y escribir tuits simplente con el usuario y la contraseña pero Twitter decidió pasarse a un sistema de autentificación más sofisticado basado en OAuth.
Cuando hacemos esto se lanza el navegador para que nos autentifiquemos y demos permiso a la aplicación para actuar en nuestro nombre. Esto genera los tokens adecuados de identificación/autenticación, que se almacenan en ~/.twitter_oauth (en un sistema de tipo Unix, se agradecerán comentarios sobre otros sistemas) que podremos reutilizar en nuestro programita.
El programa es muy sencillo, se puede descargar en rssToTwitter.py V.2014-12-07 (enlazo a la versión actual por si en el futuro hago algún cambio).
Empezamos leyendo la configuración:
Esta configuración debe contener una sección por blog (este programa sólo utiliza la configuración del primero) y para cada uno de ellos contendrá la fuente RSS, el nombre de la cuenta de Twitter y el nombre de la cuenta de Facebook. Para este sitio tendría el siguiente aspecto:
Este programa no utiliza la página de Facebook, claro.
Por otro lado, también hay que leer la configuración para Twitter:
Allí aparecen los datos de la aplicación (los podemos copiar directamente de la que nos hemos instalado; en mi sistema están en /usr/local/lib/python2.7/dist-packages/twitter/cmdline.py y los tokens estarán en el fichero ~/.twitter_oauth
El fichero de configuración tiene este aspecto en este caso:
Podría haber más cuentas de Twitter, si se desea. Nótese que el nombre de la segunda sección corresponde con el que se ha utilizado en el fichero de configuración anterior.
A continuación leemos la fuente RSS para extraer los datos que nos interesan:
Lo primero de todo, utilizamos feedparser para decargar la fuente RSS y procesarla.
Elegimos la entrada que ocupa la primera posición (la 0), que será la última publicada. Para Twitter seleccionamos el título y el enlace.
El título lo procesamos con BeautifulSoup para evitar las posibles etiquetas que pueda contener (de estilo, entidades HTML, …)
Solemos olvidar (y muchos ni se imaginan) la complejidad que hay detrás de la ejecución de una simple línea de código. En [PDF] A study of code abstraction hacen un recorrido desde una sencilla línea de código en Perl hasta la invocación de los módulos del kernel implicados en la ejecución del trabajo.
Un poco denso en algunos momentos pero vale la pena echarle un vistazo.
En esa línea viene la lista, que ha desarrollado junto con otros autores:
Gánala o concédela, pero nunca supongas la confianza.
Utiliza mencanismos de autentificación que no puedan ser modificados ni evitados.
Autorizar después de autentificar.
Separar de manera estricta los datos del control. Nunca procesar instrucciones de control recibidas de fuentes no confiables.
Definir una aproximación que asegure que todos los datos se validarán de manera explícita
Utilizar correctamente la criptografía.
Identificar los datos sensibles y cómo deberían manejarse.
Siempre tener en cuenta a los usuarios.
Comprender la forma en que cambia nuestra superficie de ataque la integración de componentes externas.
Ser flexible cuando se consideren los cambios futuros de objetos y actores.
Algunas frases que señalé:
various binary protection mechanisms can delay the leaking of sensitive material.
Sobre autorización:
Authorization should be conducted as an explicit check, and as necessary even after an initial authentication has been completed. Authorization depends not only on the privileges associated with an authenticated user, but also on the context of the request.
Validación de datos:
Liberal use of precondition checks in the entry points of software modules and components is highly recommended.
Tengo una mala costumbre cuando estoy instalando/actualizando/configurando cosas: empiezo a abrir pestañas en el navegador que se van acumulando sin mucho orden y que luego nunca termino de eliminar.
Ahora que esta bitácora está medio funcionando, voy a poner aquí esos enlaces con dos objetivos: cerrar esas pestañas, y tener recopilada la información para el futuro, o por si le sirve a alguien más.