GithubHelp home page GithubHelp logo

vicente-santacoloma / usb-access-control Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 3.0 51 KB

Simón Bolívar University - CI6352 - Cryptography and Data Security - Access Control

C 94.73% Makefile 5.27%
universidad-simon-bolivar ci6352 cryptography-and-data-security access-control criptography data-security openssl c

usb-access-control's Introduction

usb-access-control

Simón Bolívar University - CI6352 - Cryptography and Data Security - Access Control

Descripción

El ejercicio se basa en programar una versión segura y una insegura de una aplicación cliente-servidor que solicita datos privados por la red, y verificar el funcionamiento de cada una con un analizador de tráfico. Los programas se desarrollarán en C.

Cuando un cliente se conecta al servidor, éste retorna un mensaje solicitando 'nombre de usuario', espera la respuesta, y luego envía 'clave'. El servidor debe tener un archivo con los usuarios y sus claves para poder verificarlo.

Si el usuario existe en el sistema y la clave es correcta, el servidor responde con un mensaje 'Usuario autorizado'; en caso contrario debe responder 'Acceso denegado'.

Las claves de los usuarios deben guardarse utilizando algoritmos criptográficos con el fin de disminuir las posibilidades de violación de seguridad.

Estructura

Archivo Descripción
add_users.c Ejecutable para añadir nuevos usuarios a la base de datos
certificate.crt Certificado auto-firmado del servidor
client.h Header del archivo client.c
client.c Funciones comunes de ambas versiones del cliente
common.h Header del archivo common.c
common.c Funciones comunes para todos los archivos
insecure_client.c Versión insegura del cliente, utilizando la librería sockets con TCP
insecure_server.c Versión insegura del servidor, utilizando la librería sockets con TCP
Makefile Makefile de la aplicación
privateKey.key Clave privada del servidor
secure_client.c Versión segura del cliente, utilizando la librería OpenSSL con TLS
secure_server.c Versión segura del servidor, utilizando la librería OpenSSL con TLS
server.h Header del archivo server.c
server.c Funciones comunes de ambas versiones del servidor
users_db Base de datos de usuarios con sus respectivas contraseñas
user_management.h Header del archivo user_management.c
user_management.c Funciones para la gestión de usuarios

Instrucciones de Instalación

Para instalar el software primero debemos descomprimir el archivo en formato .tar.gz mediante:

tar -xvf ProyectoOpenSSL.tar.gz

Para compilar el código en OS basado en linux, deberemos posicionarnos en la carpeta ProyectoOpenSSl y luego ejecutar el comando:

make

Luego se producirán cuatro ejecutables correspondientes a las versiones seguras e inseguras tanto del cliente como del servidor:

  • insecure_client
  • secure_client
  • insecure_server
  • secure_server

El comando utilizado para generar el certificado autofirmado es:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

Donde:

  • -x509: Tipo de certificado solicitado.
  • -nodes: La clave privada generada para este certificado no se guardara cifrada.
  • -days: Número de días de validez del certificado.
  • -newkey: Algoritmo de clave pública utilizado, así como la longitud de la clave generada.
  • -keyout: Especifica el nombre del archivo donde se guardara la clave.
  • -out: Especifica el nombre del archivo donde se guardara el certificado.

Instrucciones de Ejecución

Los comandos para ejecutar cliente y servidor, son:

Cliente

Versión Segura con OpenSSL
acceso-rem-seg -s [ip-servidor] -p [puerto-servidor]
Versión Insegura
acceso-rem -s [ip-servidor] -p [puerto-servidor]

Donde ip-servidor es el IP de la máquina y puerto-servidor el puerto donde está conectacdo el servidor.

Servidor

Versión Segura con OpenSSL
serv-acceso-seg -p [puerto]
Versión Insegura
serv_acceso -p [puerto]

Donde puerto es el número del puerto por el que atiende peticiones el servidor.

Detalles Adicionales:

  • La elaboración del código se nutrió de la información presentada en los siguientes enlaces:
  • Si la opción está habilitada, en la base de datos de los usuarios, se almacena el resumen criptografico de sus respectivas contraseñas en vez de lo contraseña per se. Así, cuando se desea autenticar a un usuario, se calcula el resumen criptográfico de la contraseña recien introducida con aquel almacenado en la base de datos. Si coincide, entonces, se concede acceso. Si no, se deniega el acceso. La función utilizada para calcular tales resúmenes es SHA512.

usb-access-control's People

Contributors

jxx706 avatar vicente-santacoloma avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.