All Packages Class Hierarchy This Package Previous Next Index
java.lang.Object
|
+----cryptix.provider.rpk.MixerGenerator
|
+----cryptix.provider.rpk.RPKKey
The secure exchange of the value K; ie. the starting state of the keystream automaton, relies on the mathematics of polynomials in the field F 2L = Z 2/f(x), f(x) a primitive polynomial of degree L . In this field, the following formula, which embodies the RPK system, is true:
(x D) R = (x R) D = K (mod f(x))Written differently, the same equality can be stated as follows:
E R = Q D = K (mod f(x))In this syntax, E and Q are called states of the keystream generator, while D and R are referred to as distances or exponents, both being represented by this class.
If E is the public key of the recipient, and D is his private one, then transimitting the crucial value of the state K is equivalent to the originator A generating another functionally similar pair (Q, R), and sending only the Q portion to B. In turn, for B to synchronize the keystream generator, he needs to compute Q D , from the state Q and his private key D.
Keys in the RPK scheme are triplets of either states or
exponents for RPK Generators --in this case
referred to as sub-keys-- combined in one
MixerGenerator object. In addition a granularity
property (with values from 1 to 8) defines how many bits
from the key's Generators output sequence are
to be combined with the input stream. The lower the granularity
value is, the less secure the output becomes.
To generate new RPK keys, use the getInstance() factory
method from java.security.KeyGenerator with "RPK" as the
algorithm name, or RPKKeyGenerator() constructor.
FUTURE: change this to be an immutable class.
References:
Copyright © 1997
Systemics Ltd on behalf of the
Cryptix Development Team.
All rights reserved.
$Revision: 1.5 $
bKey
raised to the power given by the state of the corresponding
subkey/generator in eKey.
this object.
granularity value set for this
key.
CRC32 on the key Raw-encoded material,
and then add each successive 4-bit chunck of the CRC 32-bit value to
the character 'A' in order to obtain a printable 8-character string
that identifies this key.
String representation of the binary
contents of this.
protected RPKKey(int specs[][],
int granularity)
protected RPKKey(int specs[][])
public Object clone()
public String getAlgorithm()
public String getFormat()
public byte[] getEncoded()
this object. The
semantics of the byte sequence is as follows:
Byte Length
offset (bytes) Meaning
0 1 The key's granularity;
1 2 The raw-encoded byte representation of the
underlying Mixer Generator.
public boolean isValid()
public boolean isSameValue(RPKKey x)
NOTE: the equals method is not used, because this is
a mutable object (see the requirements for equals in the Java Language
Spec).
public String getKeyId()
CRC32 on the key Raw-encoded material,
and then add each successive 4-bit chunck of the CRC 32-bit value to
the character 'A' in order to obtain a printable 8-character string
that identifies this key.
this key.
public int getGranularity()
granularity value set for this
key.
granularity value set for this
key.
public static RPKKey exponentiate(RPKKey bKey,
RPKKey eKey)
bKey
raised to the power given by the state of the corresponding
subkey/generator in eKey.
public String toString()
String representation of the binary
contents of this.
this.
All Packages Class Hierarchy This Package Previous Next Index