|
National Institute of Standards and Technology (NIST) published Special Publication 800-22 rev1a, “A statistical test suite for random and pseudorandom number generators for cryptographic applications”.
This suite has been estabished as a standard of random number testing.
As is stated in page 2-1 (page 23 of PDF document):
"The order of the application of the tests in the test suite is arbitrary. However, it is recommended that the Frequency test be run first, since this supplies the most basic evidence for the existence of non-randomness in a sequence, specifically, non-uniformity. If this test fails, the likelihood of other tests failing is high."
So, in order to check if different streamers can produce randomized-encrypted sequences our first approach is to check possible configurations just with Frequency test. This is what we call the First steps research.
|
|
|
Summary
100.000 randomized-encrypted text sequences checked for each cipher:
| Ciphers checked |
Random streams |
Non random streams |
Random streams (%) |
Non random streams (%) |
| AES 128 - CBC mode |
99.928 |
72 |
99,928 % |
0,072 % |
| AES 192 - CBC mode |
99.953 |
47 |
99,953 % |
0,047 % |
| AES 256 - CBC mode |
99.930 |
70 |
99,930 % |
0,070 % |
| AES 128 - CFB mode |
99.926 |
74 |
99,926 % |
0,074 % |
| AES 192 - CFB mode |
99.951 |
49 |
99,951 % |
0,049 % |
| AES 256 - CFB mode |
99.936 |
64 |
99,936 % |
0,064 % |
| AES 128 - OFB mode |
99.926 |
74 |
99,926 % |
0,074 % |
| AES 192 - OFB mode |
99.951 |
49 |
99,951 % |
0,049 % |
| AES 256 - OFB mode |
99.936 |
64 |
99,936 % |
0,064 % |
| HC 128 |
99.935 |
65 |
99,935 % |
0,065 % |
| HC 256 |
99.907 |
93 |
99,907 % |
0,093 % |
We can see that the worst number of non random encrypted seqeunces with frequency random number test is 93 non random of 100.000 encrypted sequences tested. This is accomplished with HC 256 stream cipher.
That is, all streamer ciphers (all AES with all operation modes and HC 128 and HC 256 stream cipher) generate randomized encrypted sequences checked with frequency test with a probability greater than 99,907%.
So, we can continue with DiceLock product research cause it shows that the targets can be achieved.
Tests performed and results are shown in the following way:
Encryption algorithm and operation mode if proceeds
Inputs:
| Number of plaintext sequences tested |
|
The number of sequences tested |
| Plaintext sequence lengths |
|
Lengths of the sequences been tested |
| Plaintext sequence content |
|
Plaintext values being tested
|
| Encryption key length |
|
Encryption key length in bytes
|
| Encryption key values |
|
Encryption key values per byte |
| Initialization vector length |
|
Initialization vector length in bytes |
| Initialization vector values |
|
Initialization vector values per byte |
| Frequency confidence |
|
Random confidence level in frequency test
|
| Frequency p-value |
|
Assigned p-value in accordance to confidence level setted
|
|
Results:
| Random ciphertext sequences |
|
The number of ciphertext sequences thar are random based on frequency test
|
| Non random ciphertext sequences |
|
The number of ciphertext sequences thar are NOT random based on frequency test |
| Random ciphertext sequences (percentage) |
|
Percentage of ciphertext sequences thar are random based on frequency test |
| Non random ciphertext sequences (percentage) |
|
Percentage of ciphertext sequences thar are NOT random based on frequency test |
Correct deciphered texts
|
|
Number of correct deciphered sequences (to see that encryption algorithms are woking properly) |
| Incorrect deciphered texts |
|
Number of incorrect deciphered sequences (to see that encryption algorithms are woking properly) |
Checked Frequency test with data.e file
|
|
Checked Frequency random number test with NIST data.e test file
|
|
Blog: [link to post showing result screenshot]
AES 128 with CBC mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
128 bits (16 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.928 |
| Non random ciphertext sequences |
|
72 |
| Random ciphertext sequences (percentage) |
|
99,928 %
|
| Non random ciphertext sequences (percentage) |
|
0,072 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 128 (Advanced Encryption Standard) in CBC mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 192 with CBC mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
192 bits (24 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.953 |
| Non random ciphertext sequences |
|
47 |
| Random ciphertext sequences (percentage) |
|
99,953 %
|
| Non random ciphertext sequences (percentage) |
|
0,047 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 192 (Advanced Encryption Standard) in CBC mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 256 with CBC mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
256 bits (32 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.930 |
| Non random ciphertext sequences |
|
70 |
| Random ciphertext sequences (percentage) |
|
99,930 %
|
| Non random ciphertext sequences (percentage) |
|
0,070 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 256 (Advanced Encryption Standard) in CBC mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 128 with CFB mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
128 bits (16 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.926 |
| Non random ciphertext sequences |
|
74 |
| Random ciphertext sequences (percentage) |
|
99,926 %
|
| Non random ciphertext sequences (percentage) |
|
0,074 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 128 (Advanced Encryption Standard) in CFB mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 192 with CFB mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
192 bits (24 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.951 |
| Non random ciphertext sequences |
|
49 |
| Random ciphertext sequences (percentage) |
|
99,951 %
|
| Non random ciphertext sequences (percentage) |
|
0,049 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 192 (Advanced Encryption Standard) in CFB mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 256 with CFB mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
256 bits (32 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.936 |
| Non random ciphertext sequences |
|
64 |
| Random ciphertext sequences (percentage) |
|
99,936 %
|
| Non random ciphertext sequences (percentage) |
|
0,064 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 256 (Advanced Encryption Standard) in CFB mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 128 with OFB mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
128 bits (16 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.926 |
| Non random ciphertext sequences |
|
74 |
| Random ciphertext sequences (percentage) |
|
99,926 %
|
| Non random ciphertext sequences (percentage) |
|
0,074 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 128 (Advanced Encryption Standard) in OFB mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 192 with OFB mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
192 bits (24 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.951 |
| Non random ciphertext sequences |
|
49 |
| Random ciphertext sequences (percentage) |
|
99,951 %
|
| Non random ciphertext sequences (percentage) |
|
0,049 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 192 (Advanced Encryption Standard) in OFB mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
AES 256 with OFB mode
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
256 bits (32 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.936 |
| Non random ciphertext sequences |
|
64 |
| Random ciphertext sequences (percentage) |
|
99,936 %
|
| Non random ciphertext sequences (percentage) |
|
0,064 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: AES 256 (Advanced Encryption Standard) in OFB mode generates randomized encrypted text checked with frequency test at 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
HC 128
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
128 bits (16 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
128 bits (16 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.935 |
| Non random ciphertext sequences |
|
65 |
| Random ciphertext sequences (percentage) |
|
99,935 %
|
| Non random ciphertext sequences (percentage) |
|
0,065 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: HC 128 cipher stream (eSTREAM candidate) generates randomized encrypted text with frequency test with 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
HC 256
Inputs:
| Number of plaintext sequences tested |
|
100.000 sequences
|
| Plaintext sequence lengths |
|
from 1.000 bits to 801.000 bits (from 125 to 100.125 bytes, length incremented 1 byte each test) |
| Plaintext sequence content |
|
All bytes to value 0 (0x00)
|
| Encryption key length |
|
256 bits (32 bytes)
|
| Encryption key values |
|
each key tested has the same byte value for all bytes, values go from 0×00 to 0xff |
| Initialization vector length |
|
256 bits (32 bytes) |
| Initialization vector values |
|
each initialization vector tested has the same byte value for all bytes, values go from 0×00 to 0xff. |
| Frequency confidence |
|
99,9% |
| Frequency p-value |
|
0.001 |
|
Results:
| Random ciphertext sequences |
|
99.907 |
| Non random ciphertext sequences |
|
93 |
| Random ciphertext sequences (percentage) |
|
99,907 %
|
| Non random ciphertext sequences (percentage) |
|
0,093 % |
Correct deciphered texts
|
|
100.000 |
| Incorrect deciphered texts |
|
0 |
Checked Frequency test with data.e file
|
|
YES |
|
Blog: HC 256 cipher stream (eSTREAM candidate) generates randomized encrypted text with frequency test with 99,9 per cent confidence
File output with index showing non randomized sequence with unsigned character key and initialziation vector.
|