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 Generator
s --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 Generator
s 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