Joomla! Joomla!
DiceLock for Linux

DiceLock-x is the shared object library for Linux that implements DiceLock cipher architecture.

DiceLock concept is:

(a) correctively randomising-encrypting plaintext sequence (X) with encryption key (K) and generating candidate randomised-encrypted text sequence (AP),
(b) verifying randomness of said candidate randomised-encrypted text sequence (AP) based on a predetermined randomness test and repeating said step (a) as many times as necessary until said candidate randomised-encrypted text sequence (AP) is at random, being supplied said candidate randomised-encrypted text sequence (AP) as randomised-encrypted text sequence (A) when said randomness test indicates that said candidate randomised-encrypted text sequence (AP) is random,

This key concept, which allows a lot of different optional constructions, has been implemented in DiceLock-x .so shared object library on six defined variants:

  • DiceLockIndexed,
  • DiceLockDigested,
  • DiceLockIVIndexed,
  • DiceLockIVDigested,
  • DiceLockXTSIndexed, and
  • DiceLockXTSDigested.

These DiceLock architectures allow to use DiceLock concept to generate encrypted text sequences which are at the same time at random.

DiceLock architecture encrypts plaintexts with encryption symmetric key generating such encrypted-randomized text sequences. Obviously, in order to recover the original plaintext from generated encrypted-randomized text sequences the same encryption symmetric key is used.

DiceLock implementations work with underlying known symmetric key encryption and security algorithms. Depending on such base encryption algorithms and the target of such encryption process, above six (#6#) individual architectures have been designed.

DiceLock-x .so currently implements the following encryption and security algorithms that can be used to implement DiceLock concept:

Block cipher operation modes CBC (cipher-block chaining), CFB (cipher feedback), OFB (output feedback) and XTS (XEX-based tweaked-codebook mode with ciphertext stealing XTS block cipher operation mode algorithm)
Encryption block ciphers Advanced Encryption System (128, 192, 256), Camellia (128, 192, 256), Serpent (128, 192, 256), Twofish (128, 192, 256) and TDEA (192)
Encryption strema ciphers ARC 4, HC 128, HC 256, Rabbit, Salsa 20/20 128, Salsa 20/20 256, Sosemanuk 128 and Sosemanuk 256
Random number tests Frequency, Block Frequency, Cumulative Sum Forward, Cumulative Sum Reverse, Runs, Longest Run Of Ones, Rank, Universal, Approximate Entropy, Serial and Discrete Fourier Transform
Hash digest algorithms Sha 1, Sha 224, Sha 256, Sha 384, Sha 512, Sha 512/224, Sha 512/256, Ripemd 128, Ripemd 160, Ripemd 256, Ripemd 320, Md 2, Md 4 and Md 5

The relationship between DiceLock architectures and mentioned encryption and security algorithms can be found in DiceLock-x download page. All above shown encryption and security algorithms can be used within the different and appropiate DiceLock architectures and they can be used also as single and individual workable algorithms.

As it has been previously mentioned, DiceLock concept is to generate encrypted-randomized text sequences. One of the possible methods to produce such encrypted-randomized text sequences is to change the base symmetric encryption key until the goal is achieved (to perform decryption, appropriate reverse process is applied). So, encryption symmetric key modification has been implemented to achieve randomness .To perform such modifications, the following algorithms have been developed within DiceLock-x until now (new and individualized algorithms can be developed):

cipher architecture
By index encryption symmetric key modifiers
- IncreaseBase0IndexModifier_6_0_0_1
- DecreaseBase0IndexModifier_6_0_0_1
Direct encryption symmetric key modifiers
- IncreaseKeyModifier_6_0_0_1
- DecreaseKeyModifier_6_0_0_1

Export control

As DiceLock-x cipher download package contains strong cryptographic algorithms in executable and full C++ source code forms and due to current Export Policy applied in the European Community this package is only available to systems located within it for now.


DiceLock-x download package contains shared object library and all precise files to use it. It can be used with any other program or library.

Any developed software must be assured that it works as expected. For this reason, quality assurance software must be developed to verify that all possible implementations are correct. DiceLock Security has developed the following programs to perform such verifications (base encryption and security software and DiceLock architectures):

Encryption and security algorithms CheckDiceLockBaseAlgorithms-x
Encryption key modifiers CheckDiceLockKeyModifiers-x
DiceLockIndexed CheckDiceLockIndexed-x
DiceLockDigested CheckDiceLockDigested-x

All previous quality assurance software downloads contain library (with source code) to perform such verifications.

All quality programs work with pre-established input data and an expected output that must be produced. For base encryption and security algorithms, as well as for symmetric encryption key modifers, such input and output data has been harcoded in C++ source code. Due to the big amount of combinations that can be selected to instantiate one single DiceLock instance, for DiceLock cipher architectures the approach that has been selected is to generate known test vector files, containing the input and expected output data, which are input files for those quality programs.

With such known test vector files, these quality programs generate output files that allows to verify easily that all executed tests have been done correctly.

These known test vector files input response test vector files can be downloaded from different sources depending on verification subject:
DiceLock class Response test vector files
DiceLockIndexed DiceLockIndexed test vectors
DiceLockDigested DiceLockDigested test vectors
DiceLockIVIndexed DiceLockIVIndexed test vectors
DiceLockIVDigested DiceLockIVDigested test vectors
DiceLockXTSIndexed DiceLockXTSIndexed test vectors
DiceLockXTSDigested DiceLockXTSDigested test vectors

Above links leads you to known test vector files pages with a description of test targets, execution options, test vector files naming conventions and explanations about how to perform quick output verification. If you prefer to download directly all known test vector files get to Known test vectors where they are shown as raw list.

All Linux software packages contain executable, C++ source code and instructions to generate Release and Debug versions.

A special feature of DiceLock-x is the ability to work with DefaultCryptoRandomStream and PhysicalCryptoRandomStream memory handler objects at user will. DefaultCryptoRandomStream objects handle memory data in the usual way, they can be swapped to storage file. While PhysicalCryptoRandomStream objects handle memory data that it's stored on memory pages locked in RAM. To use PhysicalCryptoRandomStream objects Linux operating system must be properly configured and programs executed as it's pointed out in using physical memory in Linux.

If before downloading it you prefer to take a look to DiceLock cipher C++ library source code, you can access base used C++ source code section where all relevant header and object C++ source code files are shown.