Giter Club home page Giter Club logo

truss's Introduction

Truss


Purpose & Summary

Truss is a lightweight secure middleware for distributed computing. The goal of Truss is to provide a simple framework for securely routing jobs, and collecting the produced output, over a heterogeneous network of computers. This means that clients and servers running Truss do not have to be on the same operating system, hardware, or asserted trust level.


A high level architecture overview
![alt tag](https://raw.github.com/MrColeC/Truss/master/Images/TrussArchitecture.png)
Truss accomplishes this by:
  • Having a single lightweight code base that is used to implement both clients as well as servers
  • Providing a simple and extensible means of authenticating the client (from using a local configuration file within the code, to LDAP integration or other forms of single sign on)
  • Encrypting all network traffic with AES128, providing both a reasonable degree of security as well as minimal overhead when compared with plain text transmissions
  • Using pre-shared keys to provide a password-authenticated Diffie-Hellman key agreement in order to prevent man-in-the-middle attacks
  • Re-negotiating the established Diffie-Hellman agreements periodically in order to prevent an attackers ability to break the encryption and read all previous or future network traffic


How to compile the code from source

This project uses 100% Mavenized Java code. This means you will need the following in order to compile the code from source:

  1. A copy of code (available via Git)
  2. A Java JDK
  3. Maven installed on your system

Once these prerequisites are made, all you need to do is go to the root of the checkout (this will contain the pom.xml for this project) and then run: mvn clean compile assembly:single. This will download all required dependencies and then compile the project into a single portable jar file.



Runtime (JVM) variables:
DescriptionParamaterOptions and Default ValueApplies To
To set the log verbositylogleveloff,info,warn,error,fatal (defaults to fatal)All
To provide the usernameuser(default is to prompt the user)All
To provide the users passwordpass(default is to prompt the user)All
To provide the pre shared keykey(default is to prompt the user)All
Servers IP addresssip(default is 127.0.0.1)Client
The servers portsport(default is 8080)Client
The drop off points IPdip(default is 127.0.0.1)Client
The drop off points portdport(default is 8080)Client
Interactive modeic(default is an automatic client, no GUI provided)Client
The port to listen onbind(default is 8080)Server/Drop Off

Examples of how to launch the code:
Note: The default password for all accounts is "pw". This can be changed in the Shiro.ini file inside the source code. Also, in that same file, Shiro can be integrated with other authentication systems.
Note: The pre-shared key can be anything you want. Longer keys do provide additional security, but keep in mind that the pre-shared key is only used to facilitate the secure negotiation of a new completely random key and will have no lasting impact on the security of the infrastructure.
Note: The ports that the server and drop off server bind to can be anything. However, using ports above 1024 is recommended so in order to not require root or escalated privileges (on some systems).
This would launch a server
java -Duser=server -Dpass=password -Dkey=pre_shared_key -Dloglevel=info -Dbind=server_port -jar Truss*.jar
This would launch a drop off server
java -Duser=dropoff -Dpass=password -Dkey=pre_shared_key -Dloglevel=info -Dbind=server_port -jar Truss*.jar
This would launch an interactive secure client
java -Duser=secure -Dpass=password -Dkey=pre_shared_key -Dloglevel=info -Dsip=server_ip -Dsport=server_port -Ddip=drop_off_server_ip -Ddport=drop_off_server_port -Dic -jar Truss*.jar
This would launch an interactive secure client
java -Duser=insecure -Dpass=password -Dkey=pre_shared_key -Dloglevel=info -Dsip=server_ip -Dsport=server_port -Ddip=drop_off_server_ip -Ddport=drop_off_server_port -Dic -jar Truss*.jar

truss's People

Contributors

mrcolec avatar

Stargazers

 avatar  avatar

Watchers

 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.