April 2014
S M T W T F S
« Oct    
 12345
6789101112
13141516171819
20212223242526
27282930  

Recent Posts

DiceLock 8.0.0.1 for Windows – DiceLockXTSIndexed full plaintext length cipher architecture configuration selecting Twofish 256 block cipher and Random Test Suite with Frequency, Block Frequency, Cumulative Sum Forward, Longest Run Of Ones and Runs random number tests, using IncreaseBase0IndexModifier_6_0_0_1 by index key modifier, DefaultCryptoRandomStream bit data stream

DiceLockXTSIndexedFullBasedCheck is a C++ program to verify that DiceLockXTSIndexed class implementing one of DiceLock different architectures is working as expected.

DiceLockXTSIndexed class is the cryptographic architecture aimed to storage devices based on XTS operation mode (XEX-based tweaked-codebook mode with ciphertext stealing encryption algorithm) and providing same intrinsic characteristics of DiceLock cipher architecture.

DiceLockXTSIndexed class is the class that implements DiceLock architecture with the following characteristics:
– base encryption cipher/decipher is a block cipher working with symmetric key,
ciphered index pointing symmetric key modification plus ciphertext is checked for random number test properties,
– any function that is able to change original symmetric key with new values generating index pointing out such modification,
bit random number tests that can verify that encrypted ciphertext is at random.

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

– as base encryption cipher/decipher:

  • any of following block ciphers:
      AES (Advanced Encryption Standard) with 128, 192 or 256 key bits,
      Camellia with 128, 192 or 256 key bits,
      Serpent with 128, 192 or 256 key bits,
      Twofish with 128, 192 or 256 key bits, or
  • – 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: IncreaseBase0IndexModifier_6_0_0_1 and DecreaseBase0IndexModifier_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.

    Because DiceLockXTSIndexed class can work on full length plaintext length or sector based length, there are different alternatives for encryption/decryption, we have split DiceLockXTSIndexed class tests in two main C++ program tests:
    DiceLockXTSIndexedSectorBasedCheck C++ Source Code program applying DiceLockXTSIndexed encryption/decryption on sector base,, and
    DiceLockXTSIndexedFullBasedCheck C++ Source Code program applying DiceLockXTSIndexed encryption/decryption on full plaintext length basis,.

    In this test we verify DiceLockXTSIndexedFullBasedCheck C++ Source Code program encryption/decryption on full plaintext length basis with the configuration shown below.

    While performing internal software quality assurance we have verified that DiceLockXTSIndexedFullBasedCheck in debug mode does not generate any memory leaks with any executed option.
    Debug mode was run with the corresponding debugger and the C Run-Time Libraries (CRT) debug heap functions as well as with dump memory leak information function that can be obtained executing “_CrtDumpMemoryLeaks” statement before program ends execution.

    In this test we have selected this DiceLock configuration:

    DiceLock class: DiceLockXTSIndexed
    Encryption block cipher: Twofish 256 block cipher
    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%)
    By index symmetric key modifier class: IncreaseBase0IndexModifier_6_0_0_1 by index key modifier
    Bit stream class: DefaultCryptoRandomStream bit data stream

    DefaultCryptoRandomStream class makes use of default virtual memory where the system can move pages of physical memory to and from a paging file on disk (manipulation of physical memory by the system is completely transparent to applications).

    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:

    DiceLockXTSIndexedFullBasedCheck B00 DiceLock-8-0-0-1-DiceLockXTSIndexed-Full-Twofish-256-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Base0-Index-Default-memory.log

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

    DiceLockXTSIndexedFullBasedCheck C++ Source Code program

    And the result we’ve gotten is:

    Verified:
    ---------
    DiceLock-8-0-0-1-DiceLockXTSIndexed-Full-Twofish-256-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Base0-Index-Default-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: 249
    Maximum number of reciphers performed over one stream being reciphered: 2
    
    File with reciphered stream data:
    DiceLock-8-0-0-1-DiceLockXTSIndexed-Full-Twofish-256-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Base0-Index-Default-memory.log.reciphered
    
    

    Original output log file from DiceLockXTSIndexedFullBasedCheck execution:


    DiceLock-8-0-0-1-DiceLockXTSIndexed-Full-Twofish-256-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Base0-Index-Default-memory.log

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

    While DiceLockXTSIndexedFullBasedCheck 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.
    DiceLockXTSIndexedFullBasedCheck 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, data unit value, start block value within data unit, and number of reciphers executed with such plaintext and symmetric key.

    Reciphers log file:


    DiceLock-8-0-0-1-DiceLockXTSIndexed-Full-Twofish-256-Frequency-Block-Frequency-CuSum-Forward-Longest-Run-Of-Ones-Runs-Incr-Base0-Index-Default-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 DiceLockXTSIndexed class with this selection relies on:

    DiceLock 8.0.0.1 for Windows

    DiceLockCipher.h
    cryptoRandomStreams.h
    baseCryptoRandomStream.h
    baseCryptoRandomStream.cpp
    defaultCryptoRandomStream.h
    defaultCryptoRandomStream.cpp
    diceLockXTSs.h
    DiceLockXTS.h
    DiceLockXTS.cpp
    DiceLockXTSIndexed.h
    DiceLockXTSIndexed.cpp
    symmetricCiphers.h
    baseSymmetricCipher.h
    baseSymmetricCipher.cpp
    blockCiphers.h
    baseBlockCipher.h
    baseBlockCipher.cpp
    baseTwofish.h
    baseTwofish.cpp
    twofish256.h
    twofish256.cpp
    baseIndexModifier.h
    baseIndexModifier.cpp
    arithmeticFunctions.h
    arithmeticFunctions.cpp
    increaseBase0IndexModifier_6_0_0_1.h
    increaseBase0IndexModifier_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