I have been thinking lately about a block cipher which takes a block of bits and arranges them in a square matrix. Then defining transforms on sub matricessubmatrices of the square matrix to scramble the bits. The key would be a sequence of bits, which identify specific transformations to apply to the sub matricessubmatrices. To unscramble the block simply reverse the order in which you execute the inverse of the transformations. Has anyone else done any research along these lines?
For example: Given a matrix of 100 x 100 bits. Divide the matrix into overlapping sub matricessubmatrices.
Define the following operation codes:
00 - rotate each sub matrix clockwise by 90 degrees. 01 - flip each sub matrix about it's left to right downward sloping diagonal. 10 - flip each sub matrix about it's let to right upward sloping diagonal. 11 - rotate each sub matrix counter clockwise by 90 degrees.
- 00 - rotate each sub-matrix clockwise by 90 degrees.
- 01 - flip each sub-matrix about it's left to right downward sloping diagonal.
- 10 - flip each sub-matrix about it's let to right upward sloping diagonal.
- 11 - rotate each sub-matrix counterclockwise by 90 degrees.
Thus a 1024 bit random number would be a mini program for executing these transformations. Each transformation is invertible and the sequence could be processed in reverse order.
In many ways, it is like scrambling a Rubic's cube. And I know that there are algorithmic solutions for solving Rubic's cubes. But if you don't know the colors of each square I wonder if such algorithms would be much help.
I know that such an algorithm might be more memory intensive and possibly much slower than existing encryption algorithms, but if high throughput were not a primary consideration could such a cipher be deemed secure?