July 2014
S M T W T F S
« Jun    
 12345
6789101112
13141516171819
20212223242526
2728293031  

Recent Posts

XDiceLock 8.0.0.1 for Apple Mac OS X, Salsa20_20_256 class (Salsa20/20 256 stream cipher algorithm) verified with test Set 4 and DefaultCryptoRandomStream class (default virtual memory management)

XDiceLock 8.0.0.1 for Apple Mac OS X 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 XDiceLock 7.0.0.1 for Apple Mac OS X 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 XDiceLock 8.0.0.1 for Apple Mac OS X 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 XDiceLock 8.0.0.1 for Apple Mac OS X is developed, all individual components must be tested and verified, and in this article we verify Salsa20/20 256 class (computing Salsa20/20 256 stream cipher algorithm).

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


Verified XDiceLock 8.0.0.1 for Apple Mac OS X

Verification components:

– Stream encryption cipher algorithm: Salsa20_20_256 class
– Test set number: 4
– 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 4, vector# 0

Input plaintext: 131072 zero bytes
Key: 0053a6f94c9ff24598eb3e91e4378add3083d6297ccf2275c81b6ec11467ba0d
Initial vector: 0000000000000000
From byte 0 to byte 63
Expected f9d2dc274bb55aefc2a0d9f8a982830f6916122bc0a6870f991c6ed8d00d2f8594e3151de4c5a19a9a06fbc191c87bf039adf971314baf6d02337080f2dae5ce
Computed f9d2dc274bb55aefc2a0d9f8a982830f6916122bc0a6870f991c6ed8d00d2f8594e3151de4c5a19a9a06fbc191c87bf039adf971314baf6d02337080f2dae5ce
Result: OK
From byte 65472 to byte 65535
Expected 05bda8ee240ba6dc53a42c14c17f620f6fa799a6bc88775e04eef427b4b9de5a5349327fcada077f385ba321db4b3939c0f49ea99801790b0fd32986afc41b85
Computed 05bda8ee240ba6dc53a42c14c17f620f6fa799a6bc88775e04eef427b4b9de5a5349327fcada077f385ba321db4b3939c0f49ea99801790b0fd32986afc41b85
Result: OK
From byte 65536 to byte 65599
Expected fed5279620fbcbdd3c3980b11fce4787e6f9f97772beaad0ef215fdcd0b3a16fbb56d72afd5fd52e6a584bf840914168d04a594ffdda959a63eb4cf42694f03f
Computed fed5279620fbcbdd3c3980b11fce4787e6f9f97772beaad0ef215fdcd0b3a16fbb56d72afd5fd52e6a584bf840914168d04a594ffdda959a63eb4cf42694f03f
Result: OK
From byte 131008 to byte 131071
Expected f161dce8fa4cf80f8143ddb21fa1bfa31ca4dc0a412233ede80ef72daa1b80394bce3875ca1e1e195d58bc3197f803a89c433a59a0718c1a009bcb4da2ac1778
Computed f161dce8fa4cf80f8143ddb21fa1bfa31ca4dc0a412233ede80ef72daa1b80394bce3875ca1e1e195d58bc3197f803a89c433a59a0718c1a009bcb4da2ac1778
Result: OK
xor-digest
Expected 2052f9a2853e989133d10938222ac76db8b4cba135acb59970ddf9c074c6271a5c4e2a7a00d2d697edfc9b1ff9b365c87347b23020663a30711a71e3a02ab00c
Computed 2052f9a2853e989133d10938222ac76db8b4cba135acb59970ddf9c074c6271a5c4e2a7a00d2d697edfc9b1ff9b365c87347b23020663a30711a71e3a02ab00c
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

Set 4, vector# 1

Input plaintext: 131072 zero bytes
Key: 0558abfe51a4f74a9df04396e93c8fe23588db2e81d4277acd2073c6196cbf12
Initial vector: 0000000000000000
From byte 0 to byte 63
Expected 2f634849a4edc206ce3e3f89949df4e6ea9a0e3ee87f0ab108c4d3b789ace67307ac8c54f07f30bad9640b7f6edeec9db15e51599eb15e1ca94739fea5f1e3d7
Computed 2f634849a4edc206ce3e3f89949df4e6ea9a0e3ee87f0ab108c4d3b789ace67307ac8c54f07f30bad9640b7f6edeec9db15e51599eb15e1ca94739fea5f1e3d7
Result: OK
From byte 65472 to byte 65535
Expected eb2b0fd63c7eeeaa5a4d712eeefc0a7e214beb04d3fda19c32250949868216d3a659b312e13ec66c5832e970f9c91ff94f7463439a9827ecca52248d3cc604cd
Computed eb2b0fd63c7eeeaa5a4d712eeefc0a7e214beb04d3fda19c32250949868216d3a659b312e13ec66c5832e970f9c91ff94f7463439a9827ecca52248d3cc604cd
Result: OK
From byte 65536 to byte 65599
Expected 425e0df93a3de6b22e0871eb4e435691d77b5c471228de302a79001f89f7e77d837c5ca0177b2206568edc2eb0f169d56b414b9dccdc928659b4be1e0dedff73
Computed 425e0df93a3de6b22e0871eb4e435691d77b5c471228de302a79001f89f7e77d837c5ca0177b2206568edc2eb0f169d56b414b9dccdc928659b4be1e0dedff73
Result: OK
From byte 131008 to byte 131071
Expected 6aa3d6938b6b54b4cb8d2885274a991b4a0d5ccf35d981953ec64452facc8640b5acfa39a372e38be4e10ee68e7f1b505a5660cdfbae8dcbfcc9a3847bbb6ba4
Computed 6aa3d6938b6b54b4cb8d2885274a991b4a0d5ccf35d981953ec64452facc8640b5acfa39a372e38be4e10ee68e7f1b505a5660cdfbae8dcbfcc9a3847bbb6ba4
Result: OK
xor-digest
Expected 61f90a34a70bee706d298b31b281bfc72cf9e82394f6ad7277aafe176cdb6d628e723ac403d892a85ac907d48dd2c3cbcb6c622297670ad2590be9a774b07d65
Computed 61f90a34a70bee706d298b31b281bfc72cf9e82394f6ad7277aafe176cdb6d628e723ac403d892a85ac907d48dd2c3cbcb6c622297670ad2590be9a774b07d65
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

Set 4, vector# 2

Input plaintext: 131072 zero bytes
Key: 0a5db00356a9fc4fa2f5489bee4194e73a8de03386d92c7fd22578cb1e71c417
Initial vector: 0000000000000000
From byte 0 to byte 63
Expected 0a8bbd088abadc4d57d3389e32175878125bd89de7e9d05dbf29b753f5f0c2cbf0eef9333526e9308a114e06eb9564eb35c28ea93c17bef0466748079a355b9c
Computed 0a8bbd088abadc4d57d3389e32175878125bd89de7e9d05dbf29b753f5f0c2cbf0eef9333526e9308a114e06eb9564eb35c28ea93c17bef0466748079a355b9c
Result: OK
From byte 65472 to byte 65535
Expected f47fdff047f0303f6cce2510fa2475f07784d5f0fbd63d1746bd8ce4bb02802c3052a375d7de75d439174e7b19ceba3b9546db027f14ffdb9ef542d5768ce5a7
Computed f47fdff047f0303f6cce2510fa2475f07784d5f0fbd63d1746bd8ce4bb02802c3052a375d7de75d439174e7b19ceba3b9546db027f14ffdb9ef542d5768ce5a7
Result: OK
From byte 65536 to byte 65599
Expected 40fec0ee1697d63cb04299a17c446de06b3407d10c6dd2143dfa24eb7362d09a6857c6aa83a191d65b05ebbbc8133d122bde75900c86fcd8785eece48659c3b0
Computed 40fec0ee1697d63cb04299a17c446de06b3407d10c6dd2143dfa24eb7362d09a6857c6aa83a191d65b05ebbbc8133d122bde75900c86fcd8785eece48659c3b0
Result: OK
From byte 131008 to byte 131071
Expected 7820087794d46993e984536e7b74c61567ab34c6c0a90090db080e6eb79532fb414cd1145a781a2c55519a3e3ad19fa6d78790313ebe19a86f61068e4c8e508d
Computed 7820087794d46993e984536e7b74c61567ab34c6c0a90090db080e6eb79532fb414cd1145a781a2c55519a3e3ad19fa6d78790313ebe19a86f61068e4c8e508d
Result: OK
xor-digest
Expected 67125ced828ba1ac0e22b29e75886255ed129f94f30b83e81e9dacfc4d2bd1dd782bcc1929b62d754d1cc0ab120a24a48fb8190cef0519f73b404c97a83e3925
Computed 67125ced828ba1ac0e22b29e75886255ed129f94f30b83e81e9dacfc4d2bd1dd782bcc1929b62d754d1cc0ab120a24a48fb8190cef0519f73b404c97a83e3925
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

Set 4, vector# 3

Input plaintext: 131072 zero bytes
Key: 0f62b5085bae0154a7fa4da0f34699ec3f92e5388bde3184d72a7dd02376c91c
Initial vector: 0000000000000000
From byte 0 to byte 63
Expected 4a671a2ae75db7555bea5995dc53af8dc1e8776af917a3ab2ca9827bced53da700b779820f17294751a2c37ef5cccfe97bf7481e85afc9ecae431b7cf05f6153
Computed 4a671a2ae75db7555bea5995dc53af8dc1e8776af917a3ab2ca9827bced53da700b779820f17294751a2c37ef5cccfe97bf7481e85afc9ecae431b7cf05f6153
Result: OK
From byte 65472 to byte 65535
Expected 15c415be73c12230ac9505b92b2b12737f6fb2faaf9c51f22eccb8cbed36a27a1e0738e1252d26e8e5e5651fe8aa02cc9887d141a7cbae80f01be09b314005bb
Computed 15c415be73c12230ac9505b92b2b12737f6fb2faaf9c51f22eccb8cbed36a27a1e0738e1252d26e8e5e5651fe8aa02cc9887d141a7cbae80f01be09b314005bb
Result: OK
From byte 65536 to byte 65599
Expected 1c48158413f5ec5e64d2fa4786d91d2727df6becd614f6ae745cf2b6f35cd8243e5f1c440bede01e6c8a1145f2ab77fa24d634de88f955d4f830d4a548a926d0
Computed 1c48158413f5ec5e64d2fa4786d91d2727df6becd614f6ae745cf2b6f35cd8243e5f1c440bede01e6c8a1145f2ab77fa24d634de88f955d4f830d4a548a926d0
Result: OK
From byte 131008 to byte 131071
Expected a9be2fb00c8bd01054153f77ec0c633ce8df7f78e994907b9f387ff090cb3b954271feadf50c9084106f4285ff4f534daec130aae287d47033179bbaeeb36ce6
Computed a9be2fb00c8bd01054153f77ec0c633ce8df7f78e994907b9f387ff090cb3b954271feadf50c9084106f4285ff4f534daec130aae287d47033179bbaeeb36ce6
Result: OK
xor-digest
Expected fe8e842cb0f33d020632a0a682af9ef0ad3715e3dbaf4cd3591d46b1ce47fceb6d3a04ae59af466e22ee507fb8bd58f74c643e138029521638a3b066305f60df
Computed fe8e842cb0f33d020632a0a682af9ef0ad3715e3dbaf4cd3591d46b1ce47fceb6d3a04ae59af466e22ee507fb8bd58f74c643e138029521638a3b066305f60df
Result: OK
DECIPHERING Checking deciphered text with input plaintext: OK

 

XDiceLock 8.0.0.1 for Apple Mac OS X C++ source code used in this test:

XDiceLock 8.0.0.1 for Apple Mac OS X

XDiceLockCipher.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
baseSalsa20_20.h
baseSalsa20_20.cpp
salsa20_20_256.h
salsa20_20_256.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