|
CRYPT-X TESTS
Crypt-X tests are applied based on the type of algorithm being tested.
Crypt-X supports stream ciphers, block ciphers and keystream generators.
The tests supported by Crypt-X for each of these algorithm types are
listed below.
Stream Cipher Tests
These tests are applied to the binary bit stream (prior to mixing with plaintext).
- Frequency
- Tests for an equal number of ones and zeros in the bit stream.
- Binary Derivative
- Tests that the
binary source is 1-bit memoryless, such that 50% of the bits differ
from the previous bit value.
- Change Point
- Tests for the uniformity
of non-overlapping sub-blocks of a chosen length.
- Runs
- Tests the distribution of
run lengths, based on the frequency test.
- Sequence Complexity
- Tests that
there is a sufficient number of new patterns encountered throughout
the stream.
- Linear Complexity
- Tests that the
number of bits required to reconstruct the stream is as long as the stream
itself.
Key Generator Tests
These tests are applied to the key generator blocks.
- Frequency
- Tests the distribution
of the the number of ones in the block, based on an equal proportion of
ones and zeros.
- Binary Derivative
- Tests the distribution
of the number of bit changes in each block, based on a 1-bit memoryless
source.
- Sub-blocks
- Tests the uniformity
of all 1-bit positions and pairwise independence of all 2-bit positions
in the block. Tests the uniformity of sub-blocks for a chosen number
of bit positions in the block.
- Entropy
- An estimate of the block
entropy (number of independent bits in the block) is obtained on
the whole block or by dividing the block into smaller sub-blocks.
Block Cipher Tests
These tests are applied to output blocks from:
- highly-patterned data, or
- the bitwise addition of plaintext and ciphertext blocks, or
- the user's own block data.
- Frequency
- Tests the distribution
of the number of ones in the block, based on an equal proportion of ones
and zeros.
- Binary Derivative
- Tests the distribution
of the number of bit changes in each block, based on a 1-bit memoryless
source.
- Sub-blocks
- Tests the uniformity
of sub-blocks for a chosen number of bit positions in the block.
This includes estimating the block entropy (the number of independent bits
in the block).
- Avalanche Criteria
- Tests that
half the output bits change for a 1-bit change in input (plaintext of key).
The avalanche matrix displays the test results of changes in output
bit positions for a change in each input bit position. The frequency
test is applied to test the number of changes in output for each input
position change.
- Avalanche Variable
- Avalanche vectors
are formed by the bitwise modulo-two addition of the input and output blocks,
and represent changes in bit positions. Each pair of avalanche variable
positions is compared for independence.
Block Cipher Properties
- Affine
- Checks whether the ciphertext
block may be expressed as a linear function of the plaintext and key blocks.
- Complementation
- Checks if ciphertext
C* = C' (the bitwise complement of ciphertext C) for any plaintext-key
combination, where C* is the encryption of the complements of the plaintext
and key used in obtaining C.
- Linear Relationship
- Determines
the existence of any linear combinations of ciphertext bits expressed as
linear combinations of plaintext or key bits.
|