Cellular automata (CA) is a mathematical model for simulating complex systems, typically represented as a grid of cells that can be in one of a finite number of states. The cells change state based on a set of rules that determine how their state is influenced by the state of surrounding cells. This creates patterns and structures that evolve over time, often giving rise to complex and seemingly intelligent behavior. CA is used in a variety of fields, including physics, biology, and computer science, to study phenomena ranging from pattern formation to self-organization and emergent behavior.
Conway's Game of Life is a cellular automaton that was first proposed by mathematician John Horton Conway in 1970. It is a simulation of simple rules that can generate complex and interesting patterns.
The simulation takes place on a two-dimensional grid of cells, where each cell is either "alive" or "dead". At each step, the state of each cell is updated based on the state of its eight neighboring cells according to the following rules:
If a cell is alive and has two or three live neighbors, it remains alive. If a cell is dead and has exactly three live neighbors, it comes to life. In all other cases, a cell dies or remains dead. These simple rules can generate patterns ranging from simple oscillators to complex shapes that evolve over time. The Game of Life is often used as an example of cellular automata and is widely studied by mathematicians, computer scientists, and other researchers interested in complex systems and emergent behavior. Thus, for Connway's Game of Life, the state transition diagram would be as follows: Ruleset-
- Adjacent live cells <2, Cell death
(a)
- Adjacent live cells>3, Cell death
(b)
- Exactly 3 cells live in adjacent cells, dead cell comes back to life
(c)
Symbols={a,b,c}
States={Alive, Dead}
Initial State=Alive
Accepted State(s)={Alive}
Note
Given the nature of cellular automaton and the way it progresses through multiple finite states, it can be used for generating pseudorandom numbers/strings which may serve the purpose of secret encryption keys. Symmetric key generation refers to the process of generating a secret key that can be used to encrypt and decrypt data in a secure way. In this approach, the CA is initialized with a random initial state, and then the rules are applied iteratively to generate a sequence of states. The sequence of states is then converted into a sequence of numbers that can be used as a secret key. The advantage of using CA for symmetric key generation is that the resulting sequence of numbers is highly random and unpredictable, which makes it very difficult for an attacker to guess the key. Additionally, the CA can be easily configured to produce keys of different lengths, which makes it suitable for a wide range of cryptographic applications.
Here are the specefic implementation details for this experimental feature:
-
These encryption keys are generated using the current state of the Cellular Automaton :
- At the time of key generation, the current state/generation of the cellular automaton is converted into a binary string--> 1 for alive/0 for dead.
- This binary string is then divided into substrings of 12, and each substring is converted into it's decimal equivalent number.
- These numbers are then each encoded into a character. A string of jargon characters is thus generated. This string is then split into two halves which are used to generate the secret key, and initialization vector.
- Each of these two halves then undergo UTF-8 encoding and SHA-256 hashing.
- The first 16 bytes of the two halves are then converted into the key and IV respectively.
-
The algorithm used to test the symmetric key so-generated is AES(Advanced Encryption Standard). I used the encrypter package for implementing the AES algorithm, since my purpose was only to showcase key generation, not re-implement any encryption algorithm itself.
This app has also been deployed on Google Playstore, and you can download it on android devices from there by clicking here Hope you found my work interesting! 👍