Skip to content

0rtis/jsafebox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub license Build Status codecov Follow @Ortis95

     _.---.._    
 .-"'        `;"--,
 J""--..__    | .'J
 |:`' - ..`""-.'  |	         _  _____        __     _               
 |.        `":J   S	        | |/ ____|      / _|   | |              		
 J:   ,-.    .|  J 	        | | (___   __ _| |_ ___| |__   _____  __		
 S   (JSB)   ;S  | 	    _   | |\___ \ / _` |  _/ _ \ '_ \ / _ \ \/ /		
 J.   `-'  .J   S '	   | |__| |____) | (_| | ||  __/ |_) | (_) >  < 		
  S:        :|  J/ 	    \____/|_____/ \__,_|_| \___|_.__/ \___/_/\_\		
  |'._      :| /   		
   `c-.__'- .;S/ 
     

JSafebox - A lightweight, portable and cross-platform vault

JSafebox encrypt your files using AES encryption. It can be used as command line tool or with a file explorer like interface.

Decrypted data is never written on the drive (except during file extraction requested by user).

JSafebox GUI demo

JSafebox CLI demo

Why JSafebox ?

With the rise of online banking, cryptocurrencies and other digital transformation, it has become mandatory to backup sensitive files. Those file need to be easily accessible, securely stored and encrypted. But lightweight, portable, cross platform vault software are surprisingly hard to come by. Password protected archive works fine but they let room for file leakage since there is no convenient way of exploring the vault without extracting the whole content. Jsafebox was made to cover these shortfalls.

JSafebox Protocol

JSafebox is using a very simple protocol so encrypted files can be easily read by another program, as long as you have the password. The encryption key is derived from the password using PBKDF2 hashing.

A JSafebox file contains a SHA256 integrity hash followed by blocks:

integrity hash | block 0 | block 1 | ... | block N

Each block is stored as followed:

IV | metadata length | metadata | data length | data

where IV is the Initialization_vector of the encryption (16 bytes), metadata is a JSON string and length are 64 bits (8 bytes) integer (long in Java).

The first block block 0 is the header and is the only block not encrypted and therefore, the only block without IV. The header only have metadata (data length is 0) and contains text entries specified by the user and various additional entries including a protocol explanation, the type of encoding and the parameters of the encryption. The header's metadata is stored as JSON string and can be seen by opening the safe file with a basic text editor.

The second block block 1 is the properties. It is similar to the header except that it is encrypted and have an IV. The properties contains text entries specified by the user and stored in JSON.

The following blocks (from 2 to N) are the encrypted files.

TODO

  • Command line (with the mighty tiny picocli project)
  • Wildcard path support
  • File explorer
  • Import with Drag & Drop
  • Export with Drag & Drop (Risk of unintentional drag resulting in data leak)
  • Text viewer
  • Image viewer (zoom and drag)
  • Integrity check
  • Interactive shell

Download

This project is still under development and file loss may occur. Make sure to have a backup of your files !

You can download the latest version of JSafebox here

Install

JSafebox is a portable application. No installation is required. A simple double click will work on most platform. If not, open a Command Line Interpreter (CMD on Windows, Terminal on Linux and MacOS) and start the application with java -jar jsafebox.jar.

Donation

Like the project ? Consider making a donation

ETH & ERC-20: 0xaE247d13763395aD0B2BE574802B2E8B97074946

BTC: 18tJbEM2puwPBhTmbBkqKFzRdpwoq4Ja2a

BCH: 16b8T1LB3ViBUfePCMuRfZhUiZaV7tUxGn

LTC: Lgi89D1AmniNS8cxyQmXJhKm9SCXt8fQWC

MCM: 010000000000003072746973