|
|
 |
Definitions
- MID - Machine Identification.
- PID - Program Identification
- KEY - Encrypted data that holds usage restrictions
- knapsack - NP complete math problem that is used as a basis for
part of the encryption. Each bit is assigned a value and the encryption
is the sum of all bit values. As long as the knapsack values are not
superincreasing the problem can not be solved without significant
analysis an a large block of data. Our use of this algorithm is limited
to encrypting 6 bits.
- superincreasing - a knapsack that is made of values that are each
greater than the sum of all preceding parts.
- Merkle-Hellman - a scheme that converts a superincreasing knapsack
into a non-superincreasing knapsack by multiplying each value by some
number N and then taking the modulus M. To reverse this process the
knapsack result is multiplied by N to the minus 1 modulus M. This will
return the sum of the original superincreasing knapsack sequence.
- Merkle-Hellman-Tackett - a variation on the Merkle-Hellman scheme
that uses a 256 round one-way function seeded with a random value to
create an additional multiplier and inverse. The security is increased
because the one-way function produces a pseudo-random value that further
randomized the result.
- SHA1 - XEROX algorithm that produces 160 bits of one-way hash value
that has no known attacks to produce a known value by manipulating the input.
Notes
Superincreasing knapsack is created using a random number generator
This is converted to a normal knapsack by the following algorithm
R = ((V*N mod M) * F(B) + A) mod M
N, B and A are chosen at random with the only requirement that N
be odd. This process is reversed to retrieve V. Part of the randomness
is obtained by using the 20 millisecond counter of time from last boot.
This is used as part of a seed for a random number generator that
creates the superincreasing knapsack. There are currently no known
attacks to this process. Additional encryption is done by XORing the
data with a sequence of psudo-random numbers. The result is a
sequence of bits that is close to an even distribution and is thus
not easily analyzed. This is used as the public PID The KEY is
encrypted using Merkle-Hellman-Tackett for some parts and Bitstream
XOR for others. The KEY has built-in checks for validity reducing
the number of possible keys in the 128 bit value. KEYS may or may
not require a MID match to decode. The result is that the creation
of a valid key requires the solving of the knapsack problem and the
checking system used to validate the decrypted KEY value. The
problem of creating a generalized program to create KEY values for
specific PID is one that should be hard enough to prevent analysis.
In addition the license files are also double encrypted.
|