S-box facts for kids
In secret coding, an S-box (which stands for substitution-box) is a key part of secret codes that use the same key to lock and unlock messages. It performs a special kind of mixing called "substitution." In block codes, S-boxes are used to hide how the secret key changes the coded message. This helps make the code very confusing and hard to guess, a concept known as confusion. Think of it as a clever way to scramble information.
An S-box takes a certain number of input bits (let's say m bits) and changes them into a different number of output bits (let's say n bits). The number of input bits doesn't have to be the same as the number of output bits. An m×n S-box can be like a lookup table (a special chart) that has 2m entries, each with n bits. Sometimes these tables are fixed and always the same, like in the Data Encryption Standard (DES). But in other codes, like Blowfish and Twofish, the tables are created new each time using the secret key.
How an S-box Works
Imagine an S-box as a mini-puzzle solver. It takes a small piece of your secret message (a few bits) and changes it into a completely different set of bits. This change isn't simple; it's designed to be very mixed up, so someone trying to break the code can't easily figure out the original message or the secret key.
Example: DES S-box
A great example of a fixed S-box is the S-box from the old DES (Data Encryption Standard) code. Let's look at S5. This S-box takes 6 bits as input and gives you 4 bits as output.
S5 | Middle 4 bits of input | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
Outer bits | 00 | 0010 | 1100 | 0100 | 0001 | 0111 | 1010 | 1011 | 0110 | 1000 | 0101 | 0011 | 1111 | 1101 | 0000 | 1110 | 1001 |
01 | 1110 | 1011 | 0010 | 1100 | 0100 | 0111 | 1101 | 0001 | 0101 | 0000 | 1111 | 1010 | 0011 | 1001 | 1000 | 0110 | |
10 | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 | |
11 | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
To use this table, you take your 6-bit input. The first and last bits tell you which row to look at. The four bits in the middle tell you which column to pick.
For example, if your input is "011011":
- The outer bits are "01". This means you look at the second row (the one highlighted in light green).
- The inner bits are "1101". This means you look at the column highlighted in light orange.
- Where the "01" row and "1101" column meet, you find the output: "1001".
So, the S-box changes "011011" into "1001". This simple step helps make the entire code much more secure!
See also
In Spanish: S-Box para niños
- Boolean function
- Permutation box (P-box)
- Substitution cipher