From: Bryan on
Mok-Kong Shen wrote:
> I like also take this opportunity to say that the present theme occured
> to me during discussions in a thread on Hillcipher, where one
> participant seemed to be extremely "sensitive" to linearity from
> matrices, which led me to look for possibility of exploiting the
> convenience of matrix formalism also in non-linear computational
> matters

Yeah -- we're a bit "sensitive" to weak ciphers, wrong results, and
false claims. Sci.crypt has seen a lot of novice cryptographers post
ciphers that immediately fall to purely linear solutions. Truth be
told: had Usenet been around when I was twelve years old, I probably
would have been among them. I have some empathy for crypto novices.

So I have empathy for crypto novices. Clueless newbies are not the
problem -- heck we're all mostly-clueless on most fields. On
sci.crypt, Mok-Kong Shen stands alone, in that he keeps proposing
trivially-breakable linear ciphers, over and over, year after year, in
face of break after break.

From: Mok-Kong Shen on
Mok-Kong Shen wrote:

>>> If f11(x) etc. are functions of x, one can namely e.g. use
>>>
>>> | f11 f12 | | x1 |
>>> | | * | |
>>> | f21 f22 | | x2 |
>>>
>>> to express the vector
>>>
>>> | f11(x1) + f12(x2) |
>>> | |
>>> | f21(x1) + f22(x2) |
>>
>> [Addendum] One could evidently, if desired, also adopt the convention
>> that in the vector above + be substituted by xor, while leaving the
>> functions unchanged. On the symbolic level, one could write/discuss
>> M1*M2, M^(-1), C = M * P, etc., as is familiar in linear algebra.
>
> I like also to mention, though trivial, that one would for practical
> computatonal reasons in the present context preferably consider a
> matrix to be an operator acting on a vector, so that M1*M2*V is always
> computed as M1*(M2*V), rather than one first computes a matrix M3=M1*M2
> and evaluate M3*V. To obtain a pseudo-random non-singular matrix, which
> e.g. could be useful for encryption purposes, one would preferably
> generate it as a product L*U.

In this L*U form there are in our case m^2 arbitrary user-specified
non-linear functions for matrix dimension m. On decryption, one needs
the inverse of the diagonal elements of U. While this can be fairly
efficiently done computationally, if the functions are e.g., as we
recommended, full-cycle permutation polynomials mod 2^n, the computation
process can be somewhat simplified, if the diagonal elements of both
L and U are all 1. This reduction from m^2 "varaibles" to m^2-m
evidently wouldn't be a problem in general, since we have (arbitrarily
specifiable) non-linearity at our disposal anyway. It may be noted that
one could, for example, use a PRNG (e.g. also of type permutation
polynomial) based on a (distinct) message-key to dynamically generate
L*U and use each L*U to encrypt, if desired, only m/2 vectors of
dimension m, which would even render any attempts of determining the
contents of L*U from the corresponding plaintext and ciphertext vectors
principally impossible owing to "indeterminacy" (we assume here m >= 4,
to be exact).

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

[OT] In an attempt to reduce annoyance to the general readers, I am
unfortunately forced to forgo any opportunities of discussion with
those, who have the unnice impulse (urge, "Drang" in German) to
overload their posts with bandwidth-wasting personal stuffs and/or
bad words, by placing them into my kill-file. Those who dislike my
posts for whatever reasons are requested to kindly put me into their
kill-files as well.