[en] The primary objectives of this project are the development of a kernel module which would be acting as a block driver for USB removable storage devices, and a program with a small graphical interface for user's authentication of the system. This will use the credentials, like the signature of the owner's PenDrive, storing them in a memory space reserved for it to be transported and contrasted by another instance of the driver on another system. The design module provides complete independence from other existing USB drivers. This allows it to be an added complement, or eliminating other drivers, being the only one able to handle these devices. This makes difficult its development, but it gives the project the core functionality to be developed, which is both to protect information that is stored on the device, and prevent unwanted media which may content malware or other unwanted purposes. The distinctive feature of this module is that storage is bound by the user's credentials in the system to the computer where the module is situated, and the appropriate credentials so that it can't be used on any computer that does not share both things, and therefore the stored data is safe. The module offers other advantages as it is developed at kernel level. The first is that it can only be configured by users with administrator privileges within the system. The second allows to identify the physical model to be able to discriminate it from other similar devices which are used. In addition being a Linux module, it is possible to recompile the kernel from the beginning by incorporating this module to the core operating system, preventing it from being eliminated or reconfigured. As a complement, the communication between the protected device and the host is encrypted to make it difficult to read information using USB sniffers. Only the communication which contains blocks of useful information is encrypted. The program of user's authentication provides through a file, the data of the user's name and password, so they can be contrasted by the module when mounting the device. In case that this authentication should not be correct, the program will leave an error message in the output file and the module will finish its function, leaving completely inaccessible the content of external memory. Therefore, the system consists of a kernel module from Linux for device control, a program for the user's authentication, and some rules regarding its management of the devices for the automatic execution of the authentication software when inserted the protected device. Finally, tests have been made at the same time as the project's development to verify at all times that the implementation was correct. To conclude, tests of the system have been conducted and the results have demonstrated its effectiveness and great potential in the future.

[es] Los objetivos fundamentales de este trabajo son el desarrollo de un módulo de kernel que actúe como driver de bloques para dispositivos de almacenamiento extraíbles USB (Universal Serial Bus.), y un programa con una pequeña interfaz gráfica para la autenticación de usuarios del sistema. Éste usará las credenciales como firma del propietario del PenDrive almacenándolas en un espacio reservado de su memoria para que pueda ser transportado y contrastado por otra instancia del driver en otro sistema. El diseño del módulo proporciona completa independencia de los otros drivers USB existentes. Esto le permite ser un complemento más, o eliminando los demás drivers, ser el único capaz de manejar estos dispositivos. Esto dificulta el desarrollo, pero le da al proyecto la funcionalidad principal a desarrollar, que es tanto proteger la información que queda almacenada en el dispositivo, como evitar que se conecten medios no deseados que puedan contener malware u otros fines indeseados. La característica distintiva de este módulo es que el almacenamiento queda vinculado, mediante las credenciales del usuario en el sistema, al ordenador donde esté presente el módulo y las credenciales adecuadas para que no pueda ser utilizado en ningún otro ordenador que no comparta ambas cosas y, por tanto, los datos almacenados sean seguros. El módulo ofrece otras ventajas al estar desarrollado a nivel de kernel. La primera es que sólo puede ser configurado por usuarios con privilegios de administrador dentro del sistema. La segunda permite identificar el modelo del medio físico para poder discriminarlo del resto de dispositivos similares que se utilicen. Por otro lado al ser un módulo de Linux, existe la posibilidad de recompilar el kernel desde cero incorporando este módulo al núcleo del sistema operativo, evitando que pueda ser eliminado o reconfigurado. Como complemento, la comunicación entre el dispositivo protegido y el host está cifrada para dificultar la lectura de información utilizando sniffers de USB. Sólo se cifra la comunicación que contenga bloques de información útil. El programa de autenticación de usuarios proporciona, a través de un fichero, los datos de nombre de usuario y contraseña, para que puedan ser contrastados por el módulo en el momento del montaje del dispositivo. En caso de que esta autenticación no sea correcta el programa dejará un mensaje de error en el fichero de salida y el módulo finalizará su función, dejando completamente inaccesible el contenido de la memoria externa. Por tanto, el sistema está compuesto por un módulo del kernel de Linux para el control del dispositivo, un programa para la autenticación de usuarios, y unas reglas de manejo de dispositivos para la ejecución automática del software de autenticación al insertarse el medio protegido. Finalmente, las pruebas se han ido realizando en paralelo al desarrollo para verificar en todo momento que la implementación era correcta. Para concluir se han llevado a cabo pruebas del sistema cuyos resultados han demostrado su efectividad y su gran potencial en un futuro.