Hello world!

¡Hola a todos! Acabamos de crear el blog para comenzar el desarrollo de la aplicación i2Auth para el CUSL 2019.

¿Quiénes somos?

Nuestros nombres son Federico Barcelona y Vlad Teletin. Somos dos estudiantes de Ingeniería Informática en la Universidad de Zaragoza con mucho amor por el software libre, tanto es asi que somos miembros de la Asociación de Software Libre de la UZ. Además de esto, la programación es uno de nuestros principales hobbies y por ello nos presentamos este año de nuevo.

¿En qué se basa nuestro proyecto?

Hemos pensado que sudo está muy bien, pero tal vez para algunos casos de uso donde la seguridad es muy importante, se puede llegar a quedar corto. Esta aplicación implementará autenticación de doble factor cuando el usuario necesite privilegios elevados.

Por ahora no tenemos mucha idea de como podríamos implementar esta capa de seguridad, ¡pero eso es lo divertido!

Brainstorming inicial

Hoy ha sido el primer día que hemos quedado para desarrollar después de inscribirnos. El día se ha desarrollado tres fases básicamente.

Retoques al diseño

Primero, temprano por la mañana hemos decidido darle un poco más de forma al proyecto que teníamos en mente. Para ello hemos hecho un par de diagramas de secuencia para definir el protocolo de enlazamiento del bot de Telegram con el cliente instalado en la máquina. Adémas de esto hemos barajado la posibilidad de que el sistema tenga dos modos de funcionamiento.

Por un lado, que cuando el usuario necesite autenticar una acción en el equipo, que sea éste el que solicite un código que caduque (TOTP) al bot e introducirlo como si fuera una contraseña.

La otra opción es que cuando el usuario quiera autenticar, solamente tenga que pulsar un botón en la interfaz del chat con el bot y que automáticamente se autentifique. Esto conlleva tener un servidor web en marcha y que el cliente tenga que realizar un long-polling comprobando si se tiene acceso o no.

La opción más cómoda para el usuario hemos decicido que será la segunda así que hemos empezado a implementar esta, aunque probablemente sea necesario implementar la otra también para utilizarla en caso de que la máquina del cliente no tenga conexión de red.

Desarrollo

Tras todo el tiempo invertido en el diseño y en plantear muy bien como se va a realizar la implementación nos hemos puesto a programar. Realmente tampoco tiene mucho misterio ya que todo el proyecto se separa en dos partes.

El servidor web y el bot de telegram serán un único programa y estará programado el Python. Se utilizará la biblioteca de python-telegram-bot para el bot, flask para el servidor web y pyotp para la generacíon de los códigos con caducidad.

El cliente estará programado en Go utilizando la biblioteca pquerna/otp para la generacíon de los codigos TOTP.

Más diseño

Al final del día hemos conseguido implementar en enlazamiento del cliente con el bot de telegram y la generación de las claves, lo cual no está mal, pero nos faltaba saber cómo hacer para hacer que nuestra aplicación fuera la que autenticara al usuario en el sistema. Para ello hemos pensado en implementar un modulo PAM.

Crear un modulo PAM es algo nuevo para nosotros. Si, hemos usado PAM alguna vez para habilitar el login utilizando el lector de huellas del portatil y demás, pero crear uno de cero es algo nuevo y será un reto al que enfrentarse ya que será una parte principal para la integración de nuestra aplicación con el OS.

Ha sido un día realmente largo, de hecho hemos estado alrededor de 11 horas seguidas hablando, diseñando y programando, pero está tomando ya forma el proyecto y la verdad es que estamos muy contentos con el resultado.