Skip to content
This repository has been archived by the owner on Mar 12, 2020. It is now read-only.

MrColeC/Truss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Secure middleware for distributed computing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages