November 2014
S M T W T F S
« Oct    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Recent Posts

DiceLock-x 8.0.0.1 for Linux, HC256 class (HC 256 stream cipher algorithm) verified with test Set 6 and DefaultCryptoRandomStream class (default virtual memory management)

DiceLock-x 8.0.0.1 for Linux is the cryptographic architecture that ensures that ciphertext it’s not just encrypted but also randomized.

DiceLock cipher architecture presents two main configurations:
Dicelock Digested, and
Dicelock Indexed.

DiceLock encryption architecture improves symmetric ciphers like block cipher as Advanced Encryption Standard, Camellia, Serpent, Twofish (128, 192 and 256 bit key lengths) with different block cipher operation modes (like CBC, CFB, OFB and XTS) and stream ciphers as HC 128, HC 256, Rabbit, Salsa 20/20, Sosemanuk and others.

DiceLock (both configurations) makes use of the following random number tests: Frequency Test, Block Frequency Test, Cumulative Sum Forward Test, Cumulative Sum Reverse Test, Runs Test, Longest Run Of Ones Test, Rank Test, Universal Test, Approximate Entropy Test, Serial Test and Discrete Fourier Transform Test.

Additionally DiceLock Digested configuration makes use currently of following hash digest algorithms: Sha 1, Sha 224, Sha 256, Sha 384, Sha 512, Ripemd 128, Ripemd 160, Ripemd 256, Ripemd 320, Md2, Md4 and Md5.

Previous version DiceLock-x 7.0.0.1 for Linux incorporated XTS-AES (XEX-based tweaked-codebook mode with ciphertext stealing XTS block cipher operation mode algorithm) for Advanced Encryption Algorithm (AES) for 128 and 256 bit symmetric keys.

New version DiceLock-x 8.0.0.1 for Linux has made significant improvements:
- added block encryption ciphers like Camellia, Serpent and Twofish with all accepted key lengths of 128, 192 and 256 bits,
- added stream ciphers like Rabbit, Salsa 20/20 with 128 and 256 bit key lengths, and general Sosemanuk, as well as Sosemanuk with 128 and 256 bit key lengths,
- added old hash algorithms like Message Digest 2, Message Digest 4 and Message Digest 5,
- modified DiceLockIndexed and DiceLockDigested classes to be used with encryption ciphers that does not make use of initialization vector (IV),
- created DiceLockIVDigested and DiceLockIVIndexed classes to be used with encryption ciphers that makes use of initialization vector (IV),
- extended DiceLockXTSDigested and DiceLockXTSIndexed classes to be use with newly added Camellia, Serpent and Twofish block ciphers and all three key lengths (128, 192 and 256 bit key lengths),
- added old encryption ciphers like DEA (Data Encryption Algorithm), TDEA (Triple Data Encryption Algorithm), and ARC4 (alleged RC4) for compatibillity reasons.

As the new version DiceLock-x 8.0.0.1 for Linux is developed, all individual components must be tested and verified, and in this article we verify HC 256 class (computing HC 256 stream cipher algorithm).

At the bottom of the post you can find C++ source code being used to perform this test.


Verified DiceLock-x 8.0.0.1 for Linux

Verification components:

– Stream encryption cipher algorithm: HC256 class
– Test set number: 6
– Bit stream memory management: DefaultCryptoRandomStream class (default virtual memory management)

Memory characteristic used in this test:

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).

 

Once computed we’ve got the following results:

Set 6, vector# 0

Input plaintext: 131072 zero bytes
Key: 0053a6f94c9ff24598eb3e91e4378add3083d6297ccf2275c81b6ec11467ba0d
Initial vector: 0d74db42a91077de45ac137ae148af167de44bb21980e74eb51c83ea51b81f86
From byte 0 to byte 63
Expected 23d9e70a45eb0127884d66d9f6f23c01d1f88afd629270127247256c1fff91e91a797bd98add23ae15bee6eea3cefdbfa3ed6d22d9c4f459db10c40cdf4f4dff
Computed 23d9e70a45eb0127884d66d9f6f23c01d1f88afd629270127247256c1fff91e91a797bd98add23ae15bee6eea3cefdbfa3ed6d22d9c4f459db10c40cdf4f4dff
Result: OK
From byte 65472 to byte 65535
Expected cff0058c45807c1f4300d118fdfc3b21370936b39391791c92a821e1c8e8f248bbbf378679468218ff5f6560b79a601582b81315dc19d8583263958b068bea48
Computed cff0058c45807c1f4300d118fdfc3b21370936b39391791c92a821e1c8e8f248bbbf378679468218ff5f6560b79a601582b81315dc19d8583263958b068bea48
Result: OK
From byte 65536 to byte 65599
Expected 871a09d393d8888ebea453f518bd300d8233e906a31631d29a4a1834e268c3e4f65f4f65b1b9e55606bdf28a571ca4e759bde4718e1e13731663f5caf1cb0f1e
Computed 871a09d393d8888ebea453f518bd300d8233e906a31631d29a4a1834e268c3e4f65f4f65b1b9e55606bdf28a571ca4e759bde4718e1e13731663f5caf1cb0f1e
Result: OK
From byte 131008 to byte 131071
Expected 15360407da7b389df28c08b2221f5e0d96b34839325795a70a3f65d9cbb3848d8c0793a53e8c4d71d8b53b2923a90b37fe412a4485f0cc741e65743c6f1ecb4a
Computed 15360407da7b389df28c08b2221f5e0d96b34839325795a70a3f65d9cbb3848d8c0793a53e8c4d71d8b53b2923a90b37fe412a4485f0cc741e65743c6f1ecb4a
Result: OK
xor-digest
Expected c08a2b344b4a486beb4568efa585a48164c90a34752fc3523c3a99d764ae33d6825915067fd64d90ee81175416a3b4ce780426a44a4530994a1a8a83a5e9e243
Computed c08a2b344b4a486beb4568efa585a48164c90a34752fc3523c3a99d764ae33d6825915067fd64d90ee81175416a3b4ce780426a44a4530994a1a8a83a5e9e243
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

Set 6, vector# 1

Input plaintext: 131072 zero bytes
Key: 0558abfe51a4f74a9df04396e93c8fe23588db2e81d4277acd2073c6196cbf12
Initial vector: 167de44bb21980e74eb51c83ea51b81f86ed54bb2289f057be258cf35ac1288f
From byte 0 to byte 63
Expected c44b5262f2ead9c018213127686db742a72d3f2d61d18f0f4e7de5b4f7adabe07e0c82033b139f02baacb4e2f2d0be30110c3a8a2b621523756692877c905dd0
Computed c44b5262f2ead9c018213127686db742a72d3f2d61d18f0f4e7de5b4f7adabe07e0c82033b139f02baacb4e2f2d0be30110c3a8a2b621523756692877c905dd0
Result: OK
From byte 65472 to byte 65535
Expected 5989c607133dbc6c0f2dd022d4812abf91111e266bbc8ef91f1759b3cfd73e12432c1334e3549ea54917bc0156672e13dbfde5f0ce6c504ef4ab69a9c311fc79
Computed 5989c607133dbc6c0f2dd022d4812abf91111e266bbc8ef91f1759b3cfd73e12432c1334e3549ea54917bc0156672e13dbfde5f0ce6c504ef4ab69a9c311fc79
Result: OK
From byte 65536 to byte 65599
Expected 0d22d9dd0aac594f812839c7c4d0b6907a19fe4985e1a0dcca5930e6f5a70055452978828569a28ac62c30274caad865f4f8bc7e3f058b50c454f3ca360264af
Computed 0d22d9dd0aac594f812839c7c4d0b6907a19fe4985e1a0dcca5930e6f5a70055452978828569a28ac62c30274caad865f4f8bc7e3f058b50c454f3ca360264af
Result: OK
From byte 131008 to byte 131071
Expected d17e6611f2754f60629b7cf29cf358883765a08c62167ac620c1cbcd1058f5274b2d4335591f7962a0a76d5f430332adc16b13e7eea80188974860d2ee3be81f
Computed d17e6611f2754f60629b7cf29cf358883765a08c62167ac620c1cbcd1058f5274b2d4335591f7962a0a76d5f430332adc16b13e7eea80188974860d2ee3be81f
Result: OK
xor-digest
Expected b7163fd0f8a41562dcb10212db9c97dfc25c6bebeb6331f072118f046e508887fb82c0a3ff8b0e0b5765131bd58f3181afb3803a2c1c8c70877ae29f74d433f4
Computed b7163fd0f8a41562dcb10212db9c97dfc25c6bebeb6331f072118f046e508887fb82c0a3ff8b0e0b5765131bd58f3181afb3803a2c1c8c70877ae29f74d433f4
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

Set 6, vector# 2

Input plaintext: 131072 zero bytes
Key: 0a5db00356a9fc4fa2f5489bee4194e73a8de03386d92c7fd22578cb1e71c417
Initial vector: 1f86ed54bb2289f057be258cf35ac1288ff65dc42b92f960c72e95fc63ca3198
From byte 0 to byte 63
Expected 9d13aa06122f4f03ae60d507701f1ed063d7530ff35ee76caedcbfb01d8a239efa4a44b272de9b4092e2ad56e87c3a6089f5a074d1f6e5b8fc6fabee0c936f06
Computed 9d13aa06122f4f03ae60d507701f1ed063d7530ff35ee76caedcbfb01d8a239efa4a44b272de9b4092e2ad56e87c3a6089f5a074d1f6e5b8fc6fabee0c936f06
Result: OK
From byte 65472 to byte 65535
Expected 85d7e59d15760e12c5e8d0d5cd9b46e700f8e821c91cac8c37a6200e61a71e8415932834c0a06dc7e5738e11a0f9a9c438ece66d8d5a654a754fc5858b28ee21
Computed 85d7e59d15760e12c5e8d0d5cd9b46e700f8e821c91cac8c37a6200e61a71e8415932834c0a06dc7e5738e11a0f9a9c438ece66d8d5a654a754fc5858b28ee21
Result: OK
From byte 65536 to byte 65599
Expected cec10b6d37543b35ce32b152be2928fdc8476e341f23afb3b404d40ec0657a8e95f5cf7297eb1948385a5fb2fbbfaf66e252f35aa1df199fed99da532e5858e3
Computed cec10b6d37543b35ce32b152be2928fdc8476e341f23afb3b404d40ec0657a8e95f5cf7297eb1948385a5fb2fbbfaf66e252f35aa1df199fed99da532e5858e3
Result: OK
From byte 131008 to byte 131071
Expected 9df7785eb3e69ed977e6dcc59eda18a741029bccc4590a46b8f9fab96b5c42682fe49ec0bf79fbb637e6deeacc068e4c93d215555cf876e17f37968576c5d5fc
Computed 9df7785eb3e69ed977e6dcc59eda18a741029bccc4590a46b8f9fab96b5c42682fe49ec0bf79fbb637e6deeacc068e4c93d215555cf876e17f37968576c5d5fc
Result: OK
xor-digest
Expected 0b36039a89999715a7f53207dd60203ab397397c718c7057e82e36c05e49506c911f9596f2a5818e0abe6be666086da79b18e89a43c64b9227bf9df65cd55c35
Computed 0b36039a89999715a7f53207dd60203ab397397c718c7057e82e36c05e49506c911f9596f2a5818e0abe6be666086da79b18e89a43c64b9227bf9df65cd55c35
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

Set 6, vector# 3

Input plaintext: 131072 zero bytes
Key: 0f62b5085bae0154a7fa4da0f34699ec3f92e5388bde3184d72a7dd02376c91c
Initial vector: 288ff65dc42b92f960c72e95fc63ca3198ff66cd349b0269d0379e056cd33aa1
From byte 0 to byte 63
Expected c8632038da61679c4685288b37d3e2327bc2d28c266b041fe0ca0d3cfeed8fd5753259bab757168f85ea96adabd823ca4684e918423e091565713fedde2ccfe0
Computed c8632038da61679c4685288b37d3e2327bc2d28c266b041fe0ca0d3cfeed8fd5753259bab757168f85ea96adabd823ca4684e918423e091565713fedde2ccfe0
Result: OK
From byte 65472 to byte 65535
Expected 340ca4a2b985ccb5c07964b36ab84409679ffbc616ecfcc672a0f61bbe94ad0fe6c065cfc069bca7d33ff35bb2967d0ffe84bc6006e46d7ca0c1aaee279e8c32
Computed 340ca4a2b985ccb5c07964b36ab84409679ffbc616ecfcc672a0f61bbe94ad0fe6c065cfc069bca7d33ff35bb2967d0ffe84bc6006e46d7ca0c1aaee279e8c32
Result: OK
From byte 65536 to byte 65599
Expected b5221331961267143af1a5ec7d1118cdc96a4b088404f5b6c5be7320c87c4e90f5333906ac759d7747ea06903525620bd05703033c5f1973809b9d674688461b
Computed b5221331961267143af1a5ec7d1118cdc96a4b088404f5b6c5be7320c87c4e90f5333906ac759d7747ea06903525620bd05703033c5f1973809b9d674688461b
Result: OK
From byte 131008 to byte 131071
Expected df8934d8386b59b681cc9146e6ef9a7d765366267b4bde3de8dd15b714a397d408432f2b975f6274132fecda89e0fb32379023acda101452d30657e6d5059828
Computed df8934d8386b59b681cc9146e6ef9a7d765366267b4bde3de8dd15b714a397d408432f2b975f6274132fecda89e0fb32379023acda101452d30657e6d5059828
Result: OK
xor-digest
Expected 36d3e252f992c30c76818b3364613be37f84fc4b848272404e7d9e689bcb945aa85cba790187a4faf9811cb0824f2f466db05d3f96a0af233486ad28a593ac24
Computed 36d3e252f992c30c76818b3364613be37f84fc4b848272404e7d9e689bcb945aa85cba790187a4faf9811cb0824f2f466db05d3f96a0af233486ad28a593ac24
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

DiceLock-x 8.0.0.1 for Linux C++ source code used in this test:

DiceLock-x 8.0.0.1 for Linux

DiceLockCipher.h
cryptoRandomStreams.h
baseCryptoRandomStream.h
baseCryptoRandomStream.cpp
defaultCryptoRandomStream.h
defaultCryptoRandomStream.cpp
symmetricCiphers.h
baseSymmetricCipher.h
baseSymmetricCipher.cpp
symmetricStreamers.h
symmetricStreamerSpecialTypes.h
baseSymmetricStreamer.h
baseSymmetricStreamer.cpp
baseSymmetricStreamer_with_IV.h
baseSymmetricStreamer_with_IV.cpp
streamCiphers.h
baseStreamCipher_with_IV.h
baseStreamCipher_with_IV.cpp
HC256.h
HC256.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