FractalCrypt - Free cryptoarchiver permitting any number of hidden volumes for deniable encryption

Overview


Markdownify
FractalCrypt

Free cryptoarchiver permitting any number of hidden volumes for deniable encryption



What is deniable encryption, and what is it used for?

Deniable cryptography describes encryption methods, enabling to use plausible denial of existing encrypted messages, which means there is no way to prove the existence of data in the plain text.

In many countries worldwide (for example, in the UK or the US) you may be jailed or face legal issues for refusing to provide your password as required by law enforcement agencies, even if you are not suspected of any law violations.

Moreover, if a powerful group of people (government, a gang of bandits) have a suspicion that you store the necessary information on your laptop (confidential papers, bitcoin wallet), come to you for a search or robbery and find an encrypted file, they most likely will not analyze it for potential vulnerabilities, but will simply torture you until you tell them the password.

FractalCrypt permits an encrypted file with an arbitrary number of keys. If any set of men ask you for a password, and you say that there is no information in the encrypted container or you have forgotten the password, it is far more likely that they will not believe you. Whereas, using FractalCrypt you can safely give away the keys to unclassified volumes, and there is no way to prove that there are actually more volumes than you have disclosed.

In addition, a file encrypted in such a way, unlike, let us say, a cryptocontainer on an unallocated drive space, can be transferred over the Internet, copied to a USB stick, etc.

How does FractalCrypt work?

First, it creates a cryptocontainer of a user-specified size, filled with random characters. To create the first volume, the program archives the user-specified files to the beginning of the cryptocontainer and encrypts it using the first key. Thus, knowing the first key, you can access the first-layer files and the rest of the cryptocontainer.

To create the second volume, the program will archive the files in the rest of the cryptocontainer and encrypt it with the second key; So, the first key is also needed to create or access data from the second volume.

The capability of plausible deniability is that the encrypted file is indistinguishable from noise; There is no way you can find out the amount of data stored in the cryptocontainer.

How to use FractalCrypt?

In order to get N-layer files, the user must enter N passwords.

To add a new layer (also referred to as a volume) without risk (i.e., overwriting the noise), you should enter all the keys; otherwise, if you enter only a part of the keys, the new layer will be written over the encrypted data.

The user can also delete a layer, in this case it is overwritten with noise; All layers over it are removed as well, so only the top layer can be safely removed.

Screenshots

Show

Startup window


Creating new container


Main window. Two passwords are entered, so it is possible to get the files of the second volume or create a third one


Archive creation window


Technical details

AES-256 is used for encryption in CBC mode. SHA256 hash sum of password in utf8 is used as a key, md5 hash sum is used as an initialization vector (this may be insecure if the same password is used for several volumes).

Each layer, when decrypted, has the following header:

8 bytes - "fractal" c-string signature (null-terminated)

8 bytes - the length of the subsequent zip archive in big endian, aligned to 16 bytes

Contributing

PR and contributions are welcomed. If you have a contribution in mind, please check out the Contribution Guide for information on how to do so.

Building

FractalCrypt uses the Qt framework(downloading from the official site requires registration), the OpenSSL library for encryption, and the QuaZip library for Zip archives creation.

QuaZip is a wrapper over the Gilles Vollant's Minizip package (according to the license terms, we inform that the files of these libraries have been changed in our project) which uses the zlib library.

Windows

For Windows, zlib comes with Qt.

You should individually download and install only OpenSSL, for instance, by following the link.

OpenSSL is supposed to be available at C:\OpenSSL-Win64, you can change this in your file FractalCrypt.pro.

By default, Qt will try to link OpenSSL dynamically, in this case you may need the file C:\OpenSSL-Win64\bin\libcrypto-1_1-x64.dll in the directory with executable file.

Linux

You should individually install the zlib and openssl libraries if they are not included in your distro.

On apt-based systems, this can be done with the following commands:

sudo apt-get install zlib1g-dev libssl-dev

How to build FractalCrypt without Qt Creator:

  1. Install Qt libs
sudo apt-get install qt5-default qt5-qmake qtbase5-dev-tools qtchooser libqt5core5a qtbase-abi-5-12-8
  1. Clone this repo
git clone https://github.com/zorggish/FractalCryptGUI.git
cd FractalCrypt
  1. Build and run project
qmake -project
qmake FractalCrypt.pro
make
./FractalCrypt
Issues
  • Threat model issue: warning against non-soft adversaries

    Threat model issue: warning against non-soft adversaries

    Please look and consider the old but relevant: https://defuse.ca/truecrypt-plausible-deniability-useless-by-game-theory.htm

    The same reasoning would be valid for your tool as well.

    If your adversary is a soft and lawful adversary, plausible deniability is a reasonable measure.

    If your adversary on the contrary is a hard adversary resorting to rubber-hose cryptanalysis (xkcd 5$ wrench, enhanced interrogation, or just plain torture), then this tool might worsen the situation considerably.

    opened by AnonyPla 4
  • Noise generator could be more efficient

    Noise generator could be more efficient

    The noise generator is calling QRandomGenerator::generate() in a loop. https://github.com/zorggish/FractalCryptGUI/blob/36b926c7cc68ef688e46348d3d41b1dd3d82816e/core/noizecreator.hpp#L36-L37

    It should probably use QRandomGenerator::fillRange().

    opened by akx 3
  • Noise generation does not use randomness for majority of file

    Noise generation does not use randomness for majority of file

    The noise generator is broken in fe87ec883066f5c2b341d4271b8cef175a6a80d4.

    The random generator is only used for the last non-4096 byte remainder; the majority of the file is filled with repetitions of the uninitialized buffer buffer.

    opened by akx 1
Releases(v2.0)
Owner
Ivan Serov
20 years old programmer from Russia
Ivan Serov
Intel:registered: Homomorphic Encryption Acceleration Library accelerates modular arithmetic operations used in homomorphic encryption

Intel Homomorphic Encryption Acceleration Library (HEXL) Intel ®️ HEXL is an open-source library which provides efficient implementations of integer a

Intel Corporation 151 Aug 8, 2022
Rubicon - a New Custom Encryption Algorithm/Tool

Rubicon - a New Custom Encryption Algorithm/Tool Disclaimer DO NOT use this project for purposes other than legitimate red teaming/pentesting jobs

null 25 Mar 12, 2022
Libraries and tools to perform fully homomorphic encryption operations on an encrypted data set.

Fully Homomorphic Encryption (FHE) This repository contains open-source libraries and tools to perform fully homomorphic encryption (FHE) operations o

Google 2.7k Aug 4, 2022
In cryptography, a cipher is an algorithm for performing encryption or decryption.

Cipher 1.0 In cryptography, a cipher is an algorithm for performing encryption or decryption. What can be done using this program? This program can us

null 1 Apr 21, 2022
Homomorphic Encryption PIR Postgres C/C++ Agregate Extension.

MuchPIR Demo Contact The MuchPIR Team: [email protected] What is PIR? Private Information Retrieval refers to the ability to query a database without disc

Escanor Liones 12 Jul 1, 2022
Oceantoo is an XOR/LFSR based encryption algorithm

Oceantoo Oceantoo is an XOR/LFSR based encryption algorithm What is an LFSR? A linear-feedback shift register (LFSR) is a method of manipulating a num

Gary Explains 7 Aug 2, 2022
a new encryption algorithm that uses increments instead of XOR

incrypt a new encryption algorithm that uses increments instead of XOR. how to compile for linux: gcc incrypt.c -o incrypt gcc dicrypt.c -o dicrypt ho

man_s_our 1 Nov 24, 2021
inetd-style TLS encryption wrapper

Description The tlswrapper is an TLS encryption wrapper between remote client and local program prog. Is executed from systemd.socket/inetd/tcpserver/

Jan Mojžíš 2 Feb 23, 2022
Transparent file encryption in git

git-crypt - transparent file encryption in git git-crypt enables transparent encryption and decryption of files in a git repository. Files which you c

Andrew Ayer 6.7k Aug 6, 2022
Intel Homomorphic Encryption Acceleration Library for FPGAs

main: development: Intel Homomorphic Encryption Acceleration Library for FPGAs (Intel HEXL for FPGA) Intel ®️ HEXL for FPGA is an open-source library

Intel Corporation 49 Jul 26, 2022
Collection of common encryption.

EasyCipher 概述 EasyCipher收集了几种常见的加密方法的C语言实现,并基于Android平台封装了jni接口。 提供的加密方法包括 AES加密核心部分,不涉及模式和padding,支持128bits和256bits AES/CBC/PKCS5Padding SHA256 HAMC-

Billy Wei 6 Jun 9, 2022
An implementation of Advanced Encryption Standard with calculative optimization

An implementation of Advanced Encryption Standard with calculative optimization. Complete round operations in a single function.

Echo Heath 1 Jan 24, 2022
A giant list of any useful signatures for developing CSGO cheats.

csgo-signatures A giant list of any useful signatures for developing CSGO cheats. If one of them doesn't work or is incorrect, please let me know and

KittenPopo 67 Mar 16, 2022
BlackDex is an Android unpack(dexdump) tool, it supports Android 5.0~12 and need not rely to any environment.

BlackDex is an Android unpack(dexdump) tool, it supports Android 5.0~12 and need not rely to any environment. BlackDex can run on any Android mobile phones or emulators, you can unpack APK File in several seconds.

null 3.8k Aug 5, 2022
CS 244B project to use a public blockchain as a two-phase commit coordinator to securely commit an atomic transaction across any two systems of a database.

blockchain-2pc CS 244B project to use a public blockchain as a two-phase commit coordinator to securely commit an atomic transaction across any two sy

null 4 Jun 13, 2022
free C++ class library of cryptographic schemes

Crypto++: free C++ Class Library of Cryptographic Schemes Version 8.4 - TBD Crypto++ Library is a free C++ class library of cryptographic schemes. Cu

null 3.5k Aug 6, 2022
A Powerful, Easy-to-Use, Compact, Cross-Platform and Installation-Free Crypto Tool. 一个强大,易用,小巧,跨平台且免安装的加密解密签名工具。

GpgFrontend GpgFrontend is a Powerful, Easy-to-Use, Compact, Cross-Platform, and Installation-Free OpenPGP Crypto Tool. By using GpgFrontend, you can

Saturn&Eric 151 Aug 4, 2022
obfuscated any constant encryption in compile time on any platform

oxorany 带有混淆的编译时任意常量加密 English 介绍 我们综合了开源项目ollvm、xorstr一些实现思路,以及c++14标准中新加入的constexpr关键字和一些模板的知识,完成了编译时的任意常量的混淆(可选)和加密功能。

Chase 91 Aug 2, 2022
Intel:registered: Homomorphic Encryption Acceleration Library accelerates modular arithmetic operations used in homomorphic encryption

Intel Homomorphic Encryption Acceleration Library (HEXL) Intel ®️ HEXL is an open-source library which provides efficient implementations of integer a

Intel Corporation 151 Aug 8, 2022
Using Visual Studio C++ to read IP addresses and comport number (Serial number) on Windows platform

Using Visual Studio C++ to read IP addresses on Windows platform

zhuhuijin 0 Feb 2, 2022
Kaprekar constant, number 6174, number 495.

Kaprekar Constant Demos Kaprekar constant, number 6174, number 495. This repository contains 1 Visual Studio solution, which managing 2 Visual Studio

MatrixLife 1 Dec 25, 2021
DICOM images and volumes viewer with advanced processing infrastructure (WPF, ITK, VTK)

DicomViewer DICOM images and volumes viewer with advanced processing infrastructure Stack: WPF (C#) ITK (C++) VTK (C++) Structure: DicomViewer - WPF a

Paweł Piorun 0 Jul 1, 2022
Background Music, a macOS audio utility: automatically pause your music, set individual apps' volumes and record system audio.

Background Music macOS audio utility Overview Auto-pause music Application volume Recording system audio Download Build and Install Uninstall Troubles

Kyle Neideck 11.8k Aug 6, 2022
MFAT is a minimal I/O library for FAT (File Allocation Table) volumes.

MFAT MFAT is a minimal I/O library for FAT (File Allocation Table) volumes. The library has been designed for embedded systems, and its small code and

null 5 Jul 14, 2022
Trident provides an easy way to pass the output of one command to any number of targets.

Trident: The multiple-pipe system Trident provides an easy way to pipe the output of one command to not just one but many targets. These targets can b

Matthias Gessinger 36 Nov 23, 2021
Run commands with hidden console.

Minimal run This is a tiny C program for running Windows commands with a hidden console. It's suitable for use in Windows shortcuts, i.e. lnk files. I

Tavis Ormandy 21 May 30, 2022
A Hidden and Undetectable Remote Access Tool written in C++ and Server in Python3

Spyware-RAT A Hidden and Undetectable Remote Access Tool written in C++ and Server in Python3 This program utilizes the standard winsock library for s

null 35 Aug 5, 2022
This is a library that can bypass the hidden api restriction on Android 9-12.

BypassHiddenApiRestriction This is a library that can bypass the restrictions on non-SDK interfaces on Android 9-12.

Wind 48 Jul 31, 2022