Giter Club home page Giter Club logo

kerbist's Introduction

KerbIST

Kerberos implemented at Instituto Superior Técnico, Universidade de Lisboa, Portugal

Mascot

KerbIST is a simplified version of the Kerberos network authentication protocol, designed to provide strong authentication for client/server applications by using secret-key cryptography. A free implementation of the protocol is available from the Massachusetts Institute of Technology.

This implementation, KerbIST, is available from Instituto Superior Técnico. It is used in the Distributed Systems course of the Degree in Computer Science and Engineering.

KerbIST is implemented in the Java programming language using the JAX-WS library (Java API for XML Web Services).

Getting Started

Kerberos is used to authenticate clients and server communicating over an untrusted network using secret key cryptography.

To allow the authentication, each client C and server S needs to share a secret key with the authentication server Saut. For each C, there is a secret key Kc, that is known only by the client and by Saut. For each S, there is a secret key Ks, that is known only by the server and by Saut.

After the correct protocol execution, a client and a server share a key, Kcs, known only by them and Saut. Using Kcs it is possible to derive other keys and use them for message-authentication codes and for message encryption.

Protocol summary

The following figure presents the simplified KerbIST protocol.

KerbIST protocol

The simplified version of the Kerberos has only the Saut component. The TGS (Ticket Granting Service) is not present, as in the full protocol.

The use of timestamps for freshness imply that there must be clock synchronization between all the participants in the system.

Modules

KerbIST is composed of 4 modules:

  • kerby-contract - interface description exported in WSDL format
  • kerby-ws - authentication and ticket issuing web service
  • kerby-ws-cli - authentication client
  • kerby-lib - application library to issue and use tickets and other data structures

Prerequisites

KerbIST requires Java Developer Kit 8 running on Linux, Windows or Mac. Maven 3 is also required.

To confirm that you have it installed, open a terminal and type:

javac -version

mvn -version

The UDDI Naming library is required and needs to be manually downloaded and installed:

git clone https://github.com/tecnico-distsys/naming
cd naming
cd uddi-naming
mvn clean install -DskipTests

Installing

To compile and install all modules:

mvn clean install -DskipTests

The tests are skipped because they require the server to be running.

To generate a combined javadoc:

mvn javadoc:aggregate -pl :kerby,:kerby-lib,:kerby-ws-cli

The javadoc aggregates classes from the mentioned modules.

To start the server:

cd kerby-ws
mvn exec:java

Deployment

To deploy a KerbIST server, the program should be started with a URL containing a public DNS name or IP address instead of the default 'localhost' used for development.

Built With

  • Maven - Build Tool and Dependency Management
  • JAX-WS - SOAP Web Services implementation for Java

Versioning

We use SemVer for versioning.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • All the Distributed Systems students for their feedback
  • Other members of the Distributed Systems teaching staff

kerbist's People

Contributors

miguelpardal avatar gilunga avatar miguel-amaral avatar

Watchers

James Cloos 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.