# Difference between revisions of "ESC 2015 Challenge"

Jump to: navigation, search

See the talk were this was first mentionned here.

Below are two S-Boxes.

• S_a is a 4-rounds Feistel Network where the output of the Feistel function is combined using a modular addition instead of a XOR.
• S_b is a 5-rounds Feistel Network where the output of the Feistel function is combined using a modular addition instead of a XOR.
• S_c has a SASASAS structure where all linear layers are identical.
• S_d is a 6-rounds Feistel Network where the output of the Feistel function is combined using a modular addition instead of a XOR and where the rounds are not independent (i.e. some Feistel functions are identical).
• S_e is a 6-rounds Feistel Network where the output of the Feistel function is combined using a modular addition instead of a XOR.

If you manage to decompose the most number of those, i.e. identify the smaller S-Boxes used to generate them, you win a bottle of wine Vin de Glace Luxembourgeoise 2004.

Good luck!

Update This challenge is over, it was won by Gaetan Leurent on 16.01.2015 who found the structure of S_a and S_b in under 1 second on a PC. But you can still try it as an exercise. We plan to announce more sophisticated challenges soon.

```unsigned char S_a[256] = {
0x8f,0x01,0xfc,0xef,0xc4,0x5e,0x74,0x2c,0x3c,0x6b,0x24,0xa9,0x7e,0xd1,0x0a,0xd6,
0xa5,0xe8,0x37,0x32,0x91,0xe0,0x9b,0xe7,0x33,0x61,0xd3,0x48,0x59,0xb9,0x9f,0xce,
0x3d,0x93,0xe5,0xba,0x80,0x66,0x36,0xc2,0x00,0x6d,0xbe,0x7b,0x50,0x88,0xbb,0x86,
0x1d,0xd2,0xb2,0xd5,0x06,0x38,0xf5,0x92,0x4d,0x0c,0xeb,0x4c,0xe9,0x87,0xe4,0x52,
0x46,0x0f,0x7d,0x3b,0x4f,0x29,0xee,0x89,0xde,0xb1,0x1e,0x62,0xd9,0xc9,0x11,0xc0,
0xa8,0x40,0x5c,0xac,0x03,0x71,0x94,0xc1,0x02,0x73,0x6a,0x56,0x2d,0x81,0x9d,0xcc,
0x8e,0x9a,0x79,0xaa,0xbd,0xfa,0xb8,0x4e,0x34,0x51,0x69,0x45,0x82,0x25,0x20,0x2f,
0x2e,0xc3,0xe1,0x4b,0x85,0x22,0xa7,0x6c,0xf4,0x19,0x67,0xf6,0x16,0x8d,0x55,0x10,
0xf8,0xad,0x57,0x08,0xb7,0x7a,0x60,0x8c,0xea,0x3f,0xf1,0x7f,0x72,0xf0,0xa1,0xcd,
0xd0,0xdd,0xd7,0xa3,0x35,0x1a,0xff,0xca,0x90,0x5a,0x13,0x44,0xf2,0x76,0xfb,0x99,
0x78,0x07,0x8b,0x0e,0x3e,0xbf,0xcf,0x65,0xe6,0x30,0xd4,0x7c,0xab,0x5f,0x42,0x31,
0x1c,0x3a,0x09,0xec,0x2b,0x17,0x83,0x43,0x77,0xed,0x96,0xf9,0x05,0xdc,0x21,0xc6,
0xb6,0x5d,0x28,0x70,0xb5,0x68,0x54,0xda,0xb3,0xaf,0x12,0x39,0xa0,0x53,0xbc,0x15,
0x04,0x84,0x8a,0xdb,0x1b,0x47,0xcb,0x23,0x27,0xe3,0x18,0x64,0x5b,0xd8,0x0b,0xc7,
0xa2,0xf3,0x75,0xae,0xc8,0x14,0x9c,0x63,0x58,0x6f,0x4a,0x49,0xa6,0x26,0xfe,0xc5,
0x97,0xdf,0x95,0x6e,0x1f,0xb4,0xf7,0xa4,0x98,0xfd,0x9e,0xb0,0x0d,0xe2,0x41,0x2a
};

unsigned char S_b[256] = {
0x58,0x50,0xa2,0x2c,0x84,0x87,0xc3,0x26,0xd1,0xd4,0xa6,0xef,0x0e,0x52,0xf9,0x8f,
0x8a,0x94,0x49,0x63,0x40,0xdd,0xba,0x4a,0x5f,0x67,0x3b,0xbc,0x1e,0x92,0x27,0xd5,
0x31,0x3a,0x24,0x68,0xe4,0xac,0xdf,0x21,0xf5,0xc9,0x18,0x8b,0x23,0xf6,0x5d,0x62,
0xe2,0x1c,0x48,0xcb,0x7b,0x4e,0x1b,0x59,0x61,0x6a,0xbb,0x98,0x20,0x70,0xe8,0x9e,
0xee,0x1f,0x25,0x33,0x5a,0x0a,0x37,0x55,0xff,0xda,0xfc,0x7d,0x07,0x73,0xb5,0x7f,
0xc7,0xaa,0x0d,0x38,0xbd,0xe5,0x5e,0xe0,0xe3,0x79,0x4f,0x35,0xdc,0x99,0x88,0x03,
0xcf,0x65,0x7e,0x51,0x64,0x46,0xaf,0xab,0x6b,0xfe,0x05,0x90,0x9b,0x60,0xdb,0xeb,
0x11,0xc6,0xf7,0xca,0x04,0x0b,0xc0,0x13,0xb1,0x86,0xcd,0x74,0xf3,0xb7,0x06,0x4d,
0x1a,0xd6,0x4b,0xb9,0xbf,0xfb,0x97,0xf2,0x28,0x17,0xe6,0xd7,0x91,0xd8,0xae,0x01,
0xa4,0x2a,0x6f,0xed,0x08,0x6d,0x9c,0xc1,0x72,0x8d,0xa0,0x3f,0x14,0xa7,0x32,0x45,
0xc2,0x39,0xd2,0x77,0x93,0xe7,0xf4,0x2f,0x2b,0x80,0xc8,0x22,0x2e,0x6e,0x75,0x8e,
0x00,0x4c,0x9f,0xa8,0x76,0x69,0x43,0xea,0x85,0x96,0x3e,0x8c,0x66,0xa1,0x53,0x54,
0xb6,0x57,0x09,0x83,0x19,0x9a,0x82,0x5b,0x0f,0x44,0xde,0x16,0xb4,0xec,0xf8,0x15,
0xce,0xb3,0xa5,0xad,0xd9,0x9d,0xa9,0xfd,0x42,0x89,0x02,0x7c,0x81,0xb0,0x34,0x95,
0x12,0x0c,0xfa,0x41,0xf1,0xbe,0x1d,0xd3,0x2d,0xb2,0x3c,0x7a,0x29,0x71,0x5c,0xf0,
0x3d,0xc4,0x30,0xb8,0x6c,0xe9,0xc5,0x47,0xe1,0x10,0x56,0xa3,0x78,0xcc,0xd0,0x36
};

unsigned char S_c[256] = {
0xb7,0x15,0xca,0x45,0xbd,0x88,0xb1,0x7a,0x61,0x06,0xb3,0x2e,0x16,0xe8,0x93,0x84,
0x2b,0x25,0x2d,0xe5,0x9d,0xff,0x20,0xe1,0xd0,0x23,0xfe,0x21,0x26,0xb5,0x96,0x8a,
0x17,0xb4,0x64,0x4b,0x46,0x43,0x29,0xb2,0xc2,0x08,0x7b,0xe6,0x57,0xc8,0x28,0x33,
0xc7,0x89,0x66,0xab,0x71,0x7e,0x40,0x80,0xe2,0xd8,0x3b,0xa6,0x07,0x98,0x4f,0x02,
0xcd,0xf0,0xe4,0xcc,0xd2,0x79,0xaf,0x34,0x62,0x18,0x0c,0x36,0x0d,0x19,0x3f,0xa3,
0xfa,0x47,0x1b,0x9e,0xcb,0x78,0xd1,0xc0,0x39,0x85,0x65,0x49,0xfb,0xfc,0x2f,0x5f,
0x1d,0x22,0xb6,0x97,0x81,0x44,0x1e,0x50,0xa4,0xf7,0xd7,0x92,0x5d,0x27,0x1c,0x12,
0x91,0xa7,0x4e,0xf6,0xa8,0xa9,0x83,0x74,0x82,0xb8,0xdf,0xef,0xdb,0x01,0x3a,0x3e,
0x37,0x5e,0xc4,0x38,0x03,0xd5,0x6f,0xda,0x6c,0x09,0x53,0x32,0xce,0x4c,0x72,0x1a,
0x9b,0x95,0x11,0x9f,0x9a,0x90,0xaa,0xf2,0x76,0xc6,0xd6,0xec,0xf1,0xb9,0x63,0x69,
0x77,0x13,0x24,0x0b,0xf9,0xf5,0x48,0xdd,0x2a,0xf8,0x99,0xc3,0x5c,0x5b,0x0e,0xfd,
0x5a,0x4d,0xac,0x8c,0xbb,0x7c,0xde,0x8f,0x00,0x68,0x75,0x10,0x87,0x56,0xba,0x73,
0x3d,0x59,0xd4,0x6b,0x70,0x05,0xbf,0x6d,0xbc,0xf4,0xa0,0xa2,0xc9,0x0f,0x30,0xdc,
0xc1,0xad,0xcf,0xee,0xeb,0xae,0x6e,0xe0,0x60,0x6a,0x35,0xb0,0x67,0xf3,0x4a,0x52,
0xe7,0xc5,0x9c,0xa5,0xed,0xe9,0x41,0xa1,0x31,0xd3,0x8e,0xbe,0x51,0xea,0xe3,0x86,
0x7d,0x14,0x04,0x8b,0x42,0x55,0x1f,0x8d,0x2c,0x54,0x7f,0x94,0x58,0x3c,0xd9,0x0a
};

unsigned char S_d[256] = {
0x97,0x94,0x3a,0x91,0x9a,0xdc,0x8a,0xe4,0x80,0x25,0xac,0x0b,0xb7,0xee,0xd3,0xda,
0x6b,0x23,0x1c,0xf0,0xcf,0xe6,0x3c,0x0f,0xc4,0x48,0xcb,0x99,0x7e,0x63,0x2c,0x73,
0xb4,0x47,0x05,0x06,0xc3,0x08,0xa6,0x66,0x1a,0x36,0x79,0x61,0x3e,0xc7,0x2a,0x78,
0xcc,0x26,0xfa,0x7d,0xc5,0x49,0xb8,0xa8,0x01,0xca,0x65,0x7b,0x52,0xb5,0x5c,0xa9,
0xd0,0xdb,0x62,0x31,0x72,0x0d,0x70,0xf9,0x4a,0x1e,0x8e,0x84,0x88,0x41,0x58,0x75,
0xb9,0xd5,0xa7,0xfb,0xe1,0x55,0x3d,0xf8,0x21,0xc1,0x19,0x3b,0x50,0x95,0xf1,0x9d,
0xf4,0xa1,0xb3,0x7a,0x04,0x17,0xa2,0x46,0x22,0x32,0x03,0x8c,0x5a,0xe2,0xb2,0x59,
0x2d,0xf7,0x98,0xc6,0x51,0x9f,0x16,0x5f,0xaa,0xbf,0x60,0x76,0x77,0xab,0x96,0xaf,
0xf2,0x4f,0x42,0x67,0xc9,0x64,0xdf,0xb6,0xfd,0x43,0xb0,0x10,0x7c,0x07,0x4d,0xe9,
0xe8,0xbc,0x24,0x82,0x28,0x12,0x44,0x68,0x30,0x9b,0xfe,0x6e,0xd6,0x35,0x87,0x8f,
0x2b,0x5e,0x18,0x85,0x1d,0xcd,0x5b,0xff,0x6a,0xbb,0xce,0x29,0xc0,0xc2,0x8b,0x57,
0x34,0xba,0xde,0x45,0xbe,0x89,0x02,0x39,0xec,0x0e,0x93,0x56,0xd9,0x14,0x40,0xd7,
0x1b,0x6c,0xae,0x2e,0x0c,0x7f,0x8d,0xad,0x00,0x4e,0xe3,0x1f,0xb1,0xed,0x15,0x86,
0x38,0x37,0xf5,0x13,0xf3,0x81,0x4c,0xea,0xd8,0x3f,0x20,0xa5,0xdd,0x6d,0x9e,0xd4,
0xc8,0x74,0xfc,0x6f,0xbd,0x5d,0xa0,0x69,0xe0,0x53,0x2f,0x33,0x4b,0xd1,0xf6,0xeb,
0xe7,0x92,0x0a,0xa4,0xe5,0xa3,0x83,0x9c,0x71,0x11,0xef,0xd2,0x09,0x27,0x54,0x90,
};

unsigned char S_e[256] = {
0x17,0xdd,0x46,0xc2,0xe6,0x69,0x87,0x86,0xf0,0x33,0x07,0x28,0xc3,0xb2,0xaf,0x1b,
0x8d,0xf6,0xd6,0xb3,0x99,0x3a,0x20,0x35,0x02,0x9d,0xbc,0x6a,0x55,0x25,0xe5,0x6e,
0x13,0x3d,0x1f,0x7c,0x98,0x06,0xbf,0xe1,0xec,0xa5,0x41,0x90,0x5f,0x58,0x85,0xc0,
0x4a,0xb8,0xc5,0x2a,0xd9,0xc7,0xf8,0x8a,0xa3,0x4b,0x7a,0xd5,0xe3,0x16,0xea,0x2d,
0x45,0x27,0xc4,0x79,0x03,0xdc,0xaa,0xcf,0x62,0x5d,0x0b,0x6b,0x09,0x7d,0x44,0xac,
0x83,0x7f,0xa2,0x21,0xbe,0xa0,0x53,0x18,0xa9,0xb0,0xcb,0xeb,0x61,0x37,0x0a,0x67,
0x31,0x74,0x4c,0xde,0x89,0xee,0x95,0x6c,0x24,0xb7,0x01,0xd7,0x5b,0xe0,0xcc,0x47,
0xae,0xfb,0xf2,0x59,0x54,0xa8,0x11,0xf3,0xa1,0x94,0xd3,0xb1,0x52,0x04,0x1a,0x72,
0x40,0x6f,0x38,0x7e,0x9e,0x9b,0x05,0x70,0x50,0x22,0xfa,0x0e,0xba,0xc8,0x9c,0xe8,
0xd8,0x75,0xf5,0x78,0x29,0x2c,0x36,0x84,0x08,0xd4,0x92,0x4e,0x8c,0x64,0x93,0x57,
0xb5,0x9f,0x12,0x3e,0xb9,0x1d,0x76,0x8f,0x34,0x66,0xd1,0xe4,0x60,0x8e,0xa7,0x39,
0xbd,0x48,0x23,0x10,0x5e,0xab,0xfd,0xef,0x7b,0xed,0xf4,0xb4,0x2e,0xca,0xe9,0xd2,
0x3f,0x6d,0x15,0x1c,0x9a,0xad,0xf9,0x0d,0xe2,0x2b,0x2f,0xcd,0x32,0x65,0x42,0x88,
0x68,0x51,0xc1,0xf1,0x96,0x0f,0xa4,0x91,0x3b,0x5a,0xdb,0xda,0x4d,0x73,0xc6,0x49,
0x0c,0x00,0x8b,0x71,0xff,0x80,0x56,0x77,0xce,0x30,0x14,0xe7,0xbb,0x63,0x19,0xc9,
0xa6,0xd0,0xdf,0x3c,0x4f,0xf7,0xfc,0x82,0x1e,0x5c,0xfe,0xb6,0x97,0x43,0x81,0x26,
};
```