{"id":18319575,"url":"https://github.com/brnd08/kerberos_cdc","last_synced_at":"2025-07-18T05:34:09.698Z","repository":{"id":149582614,"uuid":"566212128","full_name":"Brnd08/Kerberos_CDC","owner":"Brnd08","description":"Kerberos java implementation","archived":false,"fork":false,"pushed_at":"2023-09-12T04:39:12.000Z","size":31,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T14:21:31.374Z","etag":null,"topics":["java-11","java-cryptography","java-sockets","kerberos","kerberos-server"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Brnd08.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-15T07:41:40.000Z","updated_at":"2023-09-12T03:27:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"23aa4ef3-6ce9-4ca3-aea1-526139be2657","html_url":"https://github.com/Brnd08/Kerberos_CDC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Brnd08/Kerberos_CDC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brnd08%2FKerberos_CDC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brnd08%2FKerberos_CDC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brnd08%2FKerberos_CDC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brnd08%2FKerberos_CDC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Brnd08","download_url":"https://codeload.github.com/Brnd08/Kerberos_CDC/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brnd08%2FKerberos_CDC/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265705436,"owners_count":23814455,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java-11","java-cryptography","java-sockets","kerberos","kerberos-server"],"created_at":"2024-11-05T18:13:41.352Z","updated_at":"2025-07-18T05:34:09.651Z","avatar_url":"https://github.com/Brnd08.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kerberos_CDC\nKerberos CDC es una implementación usando solo librerias nativas de java del protocolo de distribuición de claves Kerberos. \n     \n# Diseño del sistema \nEste proyecto fue basado en la descripción del protocolo Kerberos descrito en la segunda version del libro \"Fundamentos de seguridad en Redes\" escrito por Wiliam Staling.\n\n![image](https://github.com/Brnd08/Kerberos_CDC/assets/93061195/31d3c7b0-2b66-4aa2-bd83-58904cc18144)\n\nLa implementación completa de este sistema sigue el siguiente proceso: \n\n\n### I. INTERCAMBIO DE SERVICIO DE AUTENTIFICACION PARA OBTENER UN TGT (Ticket Granting Ticket)\n![image](https://github.com/Brnd08/Kerberos_CDC/assets/93061195/e8d13aec-0354-4640-a21a-1214652d5194)\n  1. El Cliente(C)  envia mensaje al Authentication Server (AS), solicitando acceso al Ticket Granting Server (TGS), el mensaje incluye una concatenacion de los siguientes datos: Id del Cliente (IDc), Id del Ticket Granting Server (IDtgs) , y una marca de tiempo (TS1) de el momento en que se creó la solicitud  \n  2. El Authentication Server (AS), crea un ticket(Ticket tgs) que contiene los siguientes datos concatenados:  una clave entre el Cliente y el Ticket Granting Server (K c-tgs),  el Id del cliente (IDc), el adress o ip de la maquina Cliente (ADc), el Id del Ticket Granting Server (ID tgs), una marca de tiempo (TS2) refiriendose a la creacion de este ticket tgs , y finalmente el tiempo de vida del Ticket (Tiempo de vida 2). ESTE TICKET ESTA CIFRADO CON LA CONTRASEÑA/CLAVE DEL Ticket Granting Server (K tgs)\n  3. El Autentication Server (AS) obtiene  la contraseña del cliente desde la base de datos, usando el (IDc), y cifra con ella un mensaje que envia de vuelta al Cliente  (C), el cual contiene los siguientes datos concatenados: la clave entre el Cliente y el Ticket Granting Server (K c-tgs) anteriormente mencionada, el Id del Ticket Granting Server (IDtgs),  la marca de tiempo de creacion del Ticket tgs (TS2), el tiempo del vida del Ticket tgs (Tiempo de vida 2)y el ticket tgs previamente creado (Ticket tgs)\n\n### II. INTERCAMBIO DE TGT (Ticket Granting Ticket)\n![image](https://github.com/Brnd08/Kerberos_CDC/assets/93061195/03947a5e-aeb3-4897-b25c-238fa27e5924)\n  1. El Cliente (C), solicita el usuario su contraseña, para poder descifrar el mensaje recibido desde el Autentication Server (AS) , y crea un Autenticador propio (Autenticador c), el cual esta cifrado con la clave entre el Cliente y el Ticket Granting Server (K c-tgs), indicando la siguiente informacion,:  Id del Cliente (IDc), la ip de la maquina Cliente (ADc), y una nueva marca de tiempo de este Autenticador (TS3)\n  2. El cliente  envia un mensaje concatenado hacia el Ticket Granting Server (TGS), el cual contiene: Id del Servidor el cual contiene el servicio que necesita (IDv) , el ticket que recibio del AS (Ticket tgs), y el Autentificador propio del Cliente anteriormente creado (Autentificador c)\n  3. El ticket Granting Server (TGS) descifra el mensaje recibido y comprueba que coincidan el id (ID c) y la Ip del cliente (ADc)  con el id(IDc) y la ip (ADc) especificada en el Autenticador del Cliente (Autenticador c). Si todo esta correcto crea y cifra con la clave del Servidor(K v), un ticket reutilizable para el mismo servidor (Ticket v) , el cual contiene lo siguiente : una clave entre el Cliente y el Servidor (K c-v), el Id del cliente (IDc), la Ip del cliente(ADc), el Id del servidor (IDv), una nueva marca de tiempo para este ticket (TS4) junto con su tiempo de vida (Tiempo de vida 4)\n  4. El Ticket Granting Server (TGS) responde al Cliente con un mensaje cifrado con la clave entre el Cliente y el Ticket Granting Server (K c-tgs) el cual contiene: una Clave entre el cliente(c) y el servidor que concede el servicio (V)  (K c-v), el id del servidor que concede el Servicio (IDv), la marca de tiempo del ticket del servidor (Ticket v) y el Ticket para el servidor que brinda el servicio (Ticket v)\n### III. INTERCAMBIO DE AUTENTIFICACIÓN CLIENTE/SERVIDOR: PARA OBTENER UN SERVICIO\n![image](https://github.com/Brnd08/Kerberos_CDC/assets/93061195/c05d7430-7e1f-4de8-9e4d-7e1d792fc0d6)\n  1. El Cliente(C) descifra  el mensaje recibido desde el TGS con la clave entre el Cliente y el TGS(K c-tgs),obtiene la clave que usara para comunicarse con el servidor(K c-s), y crea un nuevo Autentificador de cliente(Autentificador C2), que contiene:   Id del Cliente (IDc), la ip de la maquina Cliente (ADc), y una nueva marca de tiempo para este Autenticador (TS5)\n  2. El cliente (C) envía  un mensaje cifrado con la clave que recibió entre el Cliente y El servidor (K c-v) el cual contiene: el Ticket para el servidor que se recibió (Ticket v) y el nuevo Autentificador  del cliente recién creado (Autentificador c2)\n  3. El Servidor descifra el Mensaje recibido con la clave entre el Cliente y el Servidor (K c-v) comprueba que el Id del Cliente , Ip del Cliente indicados en el Ticket se servidor que recbió (Ticket v ) coincidan con las que se especifican en el Autentificador del Cliente (Autentificador c), si es así el servidor concede acceso al servicio, y  devuelve al cliente (C), una nueva marca de tiempo incrementada(TS5 +1), la cual esta cifrada con la Clave entre el servidor  y el cliente (K c-v)\n\n### Diagrama de Clases\n![Kerberos diagrama](https://github.com/Brnd08/Kerberos_CDC/assets/93061195/f15d131f-5c71-40e3-84d9-a9ef1d562203)\n\n# Ejecución\nPara ejecutar este proyecto de forma local clona este repositorio. ``` git clone https://github.com/Brnd08/Kerberos_CDC ```\n\nCrea cuatro instancias de la consola en la carpeta `src`, y ejecuta en orden lo siguiente (cada consola ejecutará un servidor distinto).\n```\njavac KerberosEntities/AutenticationServer.java\njava KerberosEntities.AutenticationServer\n```\n```\njavac KerberosEntities/TicketGrantingServer.java\njava KerberosEntities.Client\n```\n```\njavac KerberosEntities/ServiceServer.java\njava KerberosEntities.Client\n```\n```\njavac KerberosEntities/Client.java\njava KerberosEntities.Client\n```\nNOTA: El programa admite distintas Ips para cada servidor, si lo quieres correr en local solo usa el localhost (127.0.0.1) pero cada servidor debera estar funcionando en puertos distinto\n\nDespues deberías poder ver algo como esto: ![image](https://github.com/Brnd08/Kerberos_CDC/assets/93061195/c47b480e-9120-4023-bd99-60e76c16ff74)\n\nDespues de seguir los pasos que indica el programa del cliente ejecutará todo el proceso y verás como recibes el servicio (El servicio es un ASCCI art).![image](https://github.com/Brnd08/Kerberos_CDC/assets/93061195/6cd20773-752c-4da1-a35e-5c7e4b3ce6f7)\n\n## Tutorial \n\nTutorial sobre la ejecución y funcionamiento del sistema.\n\nhttps://github.com/Brnd08/Kerberos_CDC/assets/93061195/cb52c3c9-9a97-4a64-9cfb-fc7b02026ce7\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrnd08%2Fkerberos_cdc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrnd08%2Fkerberos_cdc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrnd08%2Fkerberos_cdc/lists"}