I am researching how to obtain the master key of the ARIA cryptographic algorithm with the CPA.
ARIA-128's first round key and last round key;ek1 and ek13 I figured out them, but I couldn't write the code to get the master key from them.
ARIA Key Schedule| The ARIA key scheduling process is as follows, W0 to 3 are constants generated from the master key, and the master key is equal to W0 in ARIA-128. How to get MK The process of getting the master key from the two round keys is as follows, and I understand the process, but I'm having trouble how to write the code.
Any help will be thanked.
This is the code I've written so far.
unsigned char ek1[16] = { 0xcb, 0xf6, 0xd7, 0x4c, 0x0b, 0x78, 0xb9, 0x30, 0x22, 0xb4, 0x7e, 0xaa, 0x06, 0xe7, 0x01, 0x2a };
unsigned char ek13[16] = { 0x9f, 0x7b, 0xdd, 0x65, 0xdb, 0x73, 0x71, 0x3b, 0xf8, 0xcf, 0x67, 0x77, 0xd9, 0xd1, 0x95, 0x9f };
Byte cal[16] = {0,}; // 54 8d 0a 29 d0 0b c8 0b da 7b 19 dd df 36 94 b5
Byte W1[16] = { 0, };
for (int i = 0; i < 16; i++) cal[i] = ek1[i] ^ ek13[i]; // cal = ek1 ^ ek13
RotXOR(cal, 19, cal); //circular shift for ek1 ^ ek13
If you predict the key according to the round key combination formula, it can be solved very easily.
And I know it's a modern cryptography report from a university and it's a project that's important to everyone.
I want you to study it yourself and get to know it.