October 2014
S M T W T F S
« Sep    
 1234
567891011
12131415161718
19202122232425
262728293031  

Recent Posts

DiceLock-x 8.0.0.1 for Linux – DiceLockDigested cipher architecture configuration selecting ARC4_Discarding (Alleged RC4 discarding initial bytes) stream cipher, Sha 512 hash digest algorithm and Random Test Suite with Frequency, Block Frequency, Cumulative Sum Forward, Longest Run Of Ones and Runs random number tests, using IncreaseKeyModifier_6_0_0_1 key modifier, PhysicalCryptoRandomStream bit data stream

DiceLockDigestedCheck is a Linux C++ program to verify that DiceLockDigested class implementing one of DiceLock different architectures is working as expected.

DiceLockDigested class is the class that implements DiceLock architecture with the following characteristics:
– base encryption cipher/decipher is any symmetric cipher (stream cipher or block cipher operation mode) working with just symmetric key, no initialization vector (IV) is used,
– any hash digest algorithm is used to generate message hash digest from plaintext to be encrypted,
ciphertext plus ciphered hash digest of plaintext is checked for random number test properties,
– any function that is able to change original symmetric key with new values,
bit random number tests that can verify that encrypted ciphertext is at random.

Current algorithm classes that can be used with DiceLockDigested architecture are:

– stream cipher: ARC4 and ARC4_Discarding (discarding initial bits),
– hash digest algorithms: Sha 1, Sha 224, Sha 256, Sha 384, Sha 512, Ripemd 128, Ripemd 160, Ripemd 256, Ripemd 320, Md 2, Md 4 and Md5,
– symmetric key changers: IncreaseKeyModifier_6_0_0_1 and DecreaseKeyModifier_6_0_0_1,
- random number tests: Frequency, Block Frequency, Cumulative Sum Forward, Cumulative Sum Reverse, Runs, Longest Run Of Ones, Rank, Universal, Approximate Entropy, Serial, Discrete Fourier Transform tests and random number test Suite with any or all previous enumerated random number tests.

In this test we have selected this DiceLock configuration:

DiceLock class: DiceLockDigested
Encryption stream cipher: ARC4_Discarding (Alleged RC4 discarding initial bytes) stream cipher
Hash algorithm: Sha 512 hash digest algorithm
Random number test: Frequency
Random number test: Block Frequency
Random number test: Cumulative Sum Forward
Random number test: Longest Run of Ones
Random number test: Runs
All random number test significance level: Alpha = 0.001 (confidence level of 99.9 %)
Symmetric key modifier class: IncreaseKeyModifier_6_0_0_1 key modifier
Bit stream class: PhysicalCryptoRandomStream bit data stream

PhysicalCryptoRandomStream class makes use of mlock that uses physical nonpaged memory, so memory is not swapped to hard disk.
In order to use PhysicalCryptoRandomStream class the process must be privileged (CAP_IPC_LOCK) in order to lock memory, and since Linux 2.6.9, no limits are placed on the amount of memory that a privileged process can lock and the RLIMIT_MEMLOCK soft resource defines the limit on how much memory an unprivileged process may lock.

At post bottom there are C++ Source Code links to all DiceLock cipher files being used to perform this configuration test.

Execution call has been:

sh ./DiceLockDigestedCheck.sh 1401 DiceLock-x-8-0-0-1-DiceLockDigested-ARC4_Discarding-Sha-512-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Key-Physical-memory.log

In the following post you can find DiceLockDigestedCheck C++ source code that has been executed where you can see how DiceLockDigested class can work with all different options:

DiceLockDigestedCheck C++ Source Code program

And the result we’ve gotten is:

Verified:
---------
DiceLock-x-8-0-0-1-DiceLockDigested-ARC4_Discarding-Sha-512-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Key-Physical-memory.log

Number of streams tested: 62500

From length of shorter stream tested in bits: 8
Up to length of larger stream tested in bits: 500000


Number of correct streams deciphered: 62500
Number of incorrect streams deciphered: 0
Incorrect deciphered streams = 0 ==> ---OK---

Total encrypted streams reciphered at least once: 259
Maximum number of reciphers performed over one stream being reciphered: 1

File with reciphered stream data:
DiceLock-x-8-0-0-1-DiceLockDigested-ARC4_Discarding-Sha-512-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Key-Physical-memory.log.reciphered

Original output log file from DiceLockDigestedCheck execution:


DiceLock-x-8-0-0-1-DiceLockDigested-ARC4_Discarding-Sha-512-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Key-Physical-memory.log

From log file we can see that all randomized-encrypted text sequences have been correctly deciphered.

While DiceLockDigestedCheck was executed a log file of reciphered (plaintext sequences being ciphered more than one time in order to get sequences at random) text sequences has been stored.
DiceLockDigestedCheck reciphers log file is composed of rows, and each row shows hexadecimal value for each byte of symmetric key and plaintext, plaintext length in bits and number of reciphers executed with such plaintext and symmetric key.

Reciphers log file:


DiceLock-x-8-0-0-1-DiceLockDigested-ARC4_Discarding-Sha-512-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Key-Physical-memory.log.reciphered

This output file will allow us to extract statistical information and to verify DiceLock cipher architecture execution between different operating system environments.


List of C++ source code file links upon which DiceLockDigested class with this selection relies on:

DiceLock-x 8.0.0.1 for Linux

DiceLockCipher.h
cryptoRandomStreams.h
baseCryptoRandomStream.h
baseCryptoRandomStream.cpp
physicalCryptoRandomStream.h
physicalCryptoRandomStream.cpp
diceLocks.h
DiceLock.h
DiceLock.cpp
DiceLockDigested.h
DiceLockDigested.cpp
symmetricCiphers.h
baseSymmetricCipher.h
baseSymmetricCipher.cpp
symmetricStreamers.h
symmetricStreamerSpecialTypes.h
baseSymmetricStreamer.h
baseSymmetricStreamer.cpp
streamCiphers.h
baseStreamCipher.h
baseStreamCipher.cpp
ARC4.h
ARC4.cpp
ARC4_Discarding.h
ARC4_Discarding.cpp
hashes.h
baseHash.h
baseHash.cpp
sha512.h
sha512.cpp
baseKeyModifier.h
baseKeyModifier.cpp
increaseKeyModifier_6_0_0_1.h
increaseKeyModifier_6_0_0_1.cpp
randomTests.h
randomTestErrors.h
baseRandomTest.h
baseRandomTest.cpp
mathematicalErrors.h
mathematicalFunctions.h
mathematicalFunctions.cpp
frequencyTest.h
frequencyTest.cpp
blockFrequencyTest.h
blockFrequencyTest.cpp
cumulativeSumForwardTest.h
cumulativeSumForwardTest.cpp
longestRunOfOnesTest.h
longestRunOfOnesTest.cpp
runsTest.h
runsTest.cpp
randomTestSuite.h
randomTestSuite.cpp



So, DiceLock cipher test and analysis can go on …

DiceLock is a trademark or registered trademark of his owner where applies. DiceLock research is the research to implement Self-corrector randomisation-encryption and method, european patent EP1182777 granted 08/21/2003 and US patent US7508945 granted 03/24/2009.

Leave a Reply