El objetivo de este proyecto es realizar la transferencia de archivos entre un cliente y un servidor a trav茅s de TCP. El cliente puede enviar archivos encriptados o no encriptados, y el servidor puede desencriptar los archivos encriptados. Para la encriptaci贸n de los archivos se utiliza la librer铆a libsodium.
Los requisitos para poder ejecutar el proyecto son los siguientes:
- CMake 3.10
- Make
- C++ 11
- Libsodium
En sistemas tipo Debian, es posible instalar libsodium con el siguiente comando:
$ sudo apt-get install libsodium-devPor otra parte en basados en Arch, es posible instalar libsodium con el siguiente comando:
$ sudo pacman -S libsodiumPara otros sistemas operativos, consultar la documentaci贸n.
Para instalar y compilar el proyecto es necesario ejecutar los siguientes comandos:
$ mkdir build
$ cd build
$ cmake ..
$ makePara iniciar el servidor es necesario especificar el puerto en el que se va a escuchar. El servidor se ejecuta de la siguiente manera:
$ ./server -p <puerto>Para temas pr谩cticos se trabaja en la misma red local, sin embargo, es posible realizar la transferencia de archivos a trav茅s de internet, siempre y cuando se conozca la direcci贸n IP del servidor y se realicen las modificaciones pertinentes
El cliente puede realizar el env铆o de archivos al servidor de una manera encriptada o no encriptada. Dependiendo de los par谩metros que se le pasen al cliente, se ejecuta de la siguiente manera:
$ ./client -p <puerto> -f <archivo> [-e]donde -e corresponde a un par谩metro opcional y especifica que el archivo se enviar谩 encriptado.
Se espera que el cliente y el servidor se ejecuten en directorios distintos para evitar conflictos con los archivos generados.
La generaci贸n de clave es autom谩tica y 煤nica para cada solicitud de env铆o de archivo y almacenada en el mismo directorio de ejecuci贸n del cliente, siguiendo el formato <archivo>.key. Es necesario compartir esta clave con el servidor para que este pueda desencriptar el archivo.
Es posible realizar la desencriptaci贸n de un archivo encriptado con el siguiente comando:
$ ./decrypt -f <archivo> -k <clave>Se almacenar谩 el archivo desencriptado con el mismo nombre que el archivo encriptado.
Tener en cuenta que la encriptaci贸n y desencriptaci贸n es m谩s lenta seg煤n el tama帽o del archivo.
Proyecto realizado por:
- Francisco Cea
- Oscar Castillo
- Mat铆as Gayoso