From: Mok-Kong Shen on

The scheme to be described processes the plaintext P[*] (in units of
computer words) in a user-chosen number of rounds. Each round consists
of two passes, one going in the forward and the other in the backward
direction, increasing the length of the result by one word in each pass.
We assume the availability of a PRNG, whose "current" outputs are
denoted by R below, i.e. different occurences of R are not of identical
values. (For a proposed PRNG of mine, see the thread "Update of my old
idea on random number generation" of 20.03.2010). We explain only the
encryption of a forward pass of a round (input="plaintext",
output="ciphertext"), for the backward pass is quite similar. The
function NLC(x,y) denotes a nonlinear combination of x and y. (For a
proposed NLC of mine, see the thread "Nonlinear combination of streams"
of 13.03.2010, for it's result plausibly contains more "entropy" than
either x or y.)

h = R;

for (i=0; i<plaintextlength; i++)
{
C[i] = P[i] ^ h ^ R;
h = NLC(h, C[i]);
}

C[plaintextlength] = h ^ R;

C[plaintextlength], the additional element created, can serve the
purpose of authentication. A viable variant is using h = NLC(h, P[i]);
Of course, one could choose, if one likes, to employ only one single
(forward) pass and do nothing no more.

Note that there is unfortunately a little inconvenience in decryption.
For all the R's that will be needed have to be computed and stored
before the decryption process begins (an exception is the case with one
single pass only, mentioned above).

Thanks,

M. K. Shen
------------------------------------------------------------------------------------

PS: I personally consider classification of ciphers to be no more than
of secondary importance. Please don't blame me, if you deem the scheme
should properly belong to block, instead of stream, algorithms.
From: Mok-Kong Shen on
Mok-Kong Shen wrote:

> h = R;
>
> for (i=0; i<plaintextlength; i++)
> {
> C[i] = P[i] ^ h ^ R;
> h = NLC(h, C[i]);
> }
>
> C[plaintextlength] = h ^ R;

The following is more favourable in my view:

h = R;

for (i=0; i<plaintextlength; i++)
{
C[i] = P[i] ^ h;
h = NLC(h, C[i]^R);
}

C[plaintextlength] = h ^ R;

M. K. Shen

From: Mok-Kong Shen on
Mok-Kong Shen wrote:
>[snip]
> Note that there is unfortunately a little inconvenience in decryption.
> For all the R's that will be needed have to be computed and stored
> before the decryption process begins (an exception is the case with one
> single pass only, mentioned above).

We have assumed the availability of a single PRNG (e.g. the compound
PRNG) only. If one uses a separate PRNG for the different passes, e.g.
associating each pass to a PRNG in the pool of the compound PRNG,
then this problem does not arise.

M. K. Shen
From: Greg Rose on
In article <ho7oca$3i7$03$1(a)news.t-online.com>,
Mok-Kong Shen <mok-kong.shen(a)t-online.de> wrote:
>Mok-Kong Shen wrote:
>>[snip]
>> Note that there is unfortunately a little inconvenience in decryption.
>> For all the R's that will be needed have to be computed and stored
>> before the decryption process begins (an exception is the case with one
>> single pass only, mentioned above).
>
>We have assumed the availability of a single PRNG (e.g. the compound
>PRNG) only. If one uses a separate PRNG for the different passes, e.g.
>associating each pass to a PRNG in the pool of the compound PRNG,
>then this problem does not arise.

Mok-Kong is talking to himself again. The end is
soon...

Greg.


--
From: Tom St Denis on
On Mar 22, 5:23 pm, g...(a)nope.ucsd.edu (Greg Rose) wrote:
> In article <ho7oca$3i7$0...(a)news.t-online.com>,
> Mok-Kong Shen  <mok-kong.s...(a)t-online.de> wrote:
>
> >Mok-Kong Shen wrote:
> >>[snip]
> >> Note that there is unfortunately a little inconvenience in decryption.
> >> For all the R's that will be needed have to be computed and stored
> >> before the decryption process begins (an exception is the case with one
> >> single pass only, mentioned above).
>
> >We have assumed the availability of a single PRNG (e.g. the compound
> >PRNG) only. If one uses a separate PRNG for the different passes, e.g.
> >associating each pass to a PRNG in the pool of the compound PRNG,
> >then this problem does not arise.
>
> Mok-Kong is talking to himself again. The end is
> soon...

MKS isn't that good of a listener, I doubt he even listens to himself.

Tom