**CODING - Stream Cipher Methods by Varying Components during Ciphering Data**

*Jürgen Müller*

**Abstract: **Kernel of the symmetric block ciphering methods presented here is the coupling of XOR operations and of invertible substitution tables S with all possible 256**t byte groups (with t=1, 2, 3, ... bytes, fixed at the beginning) being derived from keys:
K(block) := S(S(block) $\otimes$ E$_{o}$) $\otimes$ E$_{u}$ with
- E$_{o}$ upper and E$_{u}$ lower triangular (byte-group-)matrix with (byte-block-length/t)**2 values, value 1 at all non-zero positions,
- $\oplus$ the byte-group-wise addition without carry ('xor'; 'not xor' is possible too),
- $\otimes$ the (vector) multiplication which belongs to $\oplus$.
Variable block lengths (v*t or (mod t)>0) are possible. This kernel can be applied n-times:
K$_{n}$(block) := K(...K(block)...) with n K-operations, in which n can be variable.
Because XOR operations and S-tables only operate in a useful manner if 'block' is not to "homogeneous" and for safety, two further components are determined from keys
- parameters of 2 pseudo random processes, - operation key
used at beginning and at end to get a ciphered block:
cblock := S(ZZ$_{2}$ $\oplus$ S(Op$_{E}$ $\oplus$ S(K$_{n}$(Op$_{A}$ $\oplus$ S(ZZ$_{1}$ $\oplus$ S(block)))))) with
- ZZ$_{1}$ and ZZ$_{2}$ are the bytes of the 1. and 2. pseudo random number process in block length,
- Op$_{A}$ and Op$_{E}$ is the (1./front and 2./back part of the or multiple of the) operation key.

An initial key is first expanded to t*256**t bytes (all further keys have this size too) and can be modified so the result key does not statistically differ from a random key.

Using an invertible S-table, the value (modulo n) of only as much consecutive bits of a key as to represent the number n-1 is determined to shift the last n S-table elements cyclically in accordance with this value, n=2 to 256**t. So all such 256**t! tables can be generated by the top bits of all possible keys and have length of t*256**t bytes.

The byte-group-value +1 at a position of a S-table determines the byte-group in the key from which up 2*7 bytes are used to initialize two floating point numbers (IEEE 754) for a pseudo random process. Floating point numbers are initialized again if a process will be cyclic.

Idea is, to modify (operation) keys similar to data blocks to generate and use more or less continual new S-tables, new pseudo random processes, and new operation keys during ciphering data.

Inspections show that in spite of knowledge of 2 of the 3 components S-table, pseudo random parameters, and operation key as well as the knowledge of original and ciphered data it can not infer the missing 3. component if component modifications are carried out "some time".

As well it is shown that by knowledge of the 3 components generated by a key the key itself can not be inferred (because of usage of interim operation keys). That is compromising of data and with that of components does not concern data ciphered before component-changing to the compromised components. By add-on usage of separate components only for the modifications of keys, it will be guaranteed that data sections ciphered after a component-changing started from compromised components are not compromised automatically.

Because of that a safety stream ciphering should be possible as already constructed for t=1,2,3.

**Category / Keywords: **block ciphers, pseudo-randomness, stream ciphers

**Date: **received 12 Nov 2013, last revised 5 Dec 2013

**Contact author: **sysjm at t-online de

**Available format(s): **PDF | BibTeX Citation

**Version: **20131205:163350 (All versions of this report)

**Discussion forum: **Show discussion | Start new discussion

[ Cryptology ePrint archive ]