Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+6 невидимых)

 eXeL@B —› Вопросы новичков —› AES aes_key_st 244 байт
Посл.ответ Сообщение

Ранг: 1.9 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 сентября 2016 10:28 · Поправил: olia64
· Личное сообщение · #1

В алгоритме шифрования AES есть структура aes_key_st
Нагуглил
#define AES_MAXNR 14
#define AES_BLOCK_SIZE 16
#define AES_KEY_SIZE 16

struct aes_key_st {
uint32_t rd_key[4 * (AES_MAXNR + 1)];
int rounds;
};

И действительно, в моём EXE ровно 244 байта грузятся из файла.
Проблема в том, что файла размером 244 байта у меня нет и его надо сгенерировать самому.

Моя логика. По названию структуры можно догадаться что речь идет о ключах.
Но ведь ключи в AES бывают 128 192 256 бит, 244 байтами не пахнет.
По слову int rounds; можно догадатся что речь идет о количестве раундов шифрования.
Получается это таблица-шифрования, через которую мы rounds раз зашифруем сообщение.

Вопрос. Если мы сами должны сгенерировать эту таблицу случайным образом. Как получить обратную к ней таблицу? Все ли я правильно понимаю?
Сори за многобуков



Ранг: 42.2 (посетитель), 42thx
Активность: 0.040
Статус: Участник

Создано: 19 сентября 2016 11:07
· Личное сообщение · #2

Если вы имеете ввиду таблицу замен (S-Box) - то она как правило стандартна . В вики найдете и саму табличку и инверсию .

Если имеются ввиду раундовые ключи - то они разворачиваются из ключа шифрования , описание алго найдете на той же вики.



Ранг: 1.9 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 сентября 2016 14:25 · Поправил: olia64
· Личное сообщение · #3

Таблица замен может быть размером 244 байта?

В википедии ближайший аналог 244 байтам это
Массив w[] — содержит key schedule.
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])

это раундовый ключ?

Чисто интуитивно, получается , что это массив ключей, которые применяются на каждом раунде ?



https://ru.wikipedia.org/wiki/Advanced_Encryption_Standard




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 15:30 · Поправил: -=AkaBOSS=-
· Личное сообщение · #4

olia64 пишет:
И действительно, в моём EXE ровно 244 байта грузятся из файла.

довольно странный подход к делу.
Вы пытаетесь судить о предназначении данных чисто по их размеру?
Может, стоит всё-таки разобраться, как они используются после загрузки из файла7

Глянул на реализацию алго в OpenSSL.
структура AES_KEY это собственно внутренний ключ шифрования.
в зависимости от выбранного количества бит, она заполняется соответствующим кол-вом данных из указанного пользователем ключа.

Code:
  1. // private_AES_set_encrypt_key
  2.   rk = key->rd_key;
  3.  
  4.   if (bits==128)
  5.     key->rounds = 10;
  6.   else if (bits==192)
  7.     key->rounds = 12;
  8.   else
  9.     key->rounds = 14;
  10. //...
  11.   rk[0] = GETU32(userKey     );
  12.   rk[1] = GETU32(userKey +  4);
  13.   rk[2] = GETU32(userKey +  8);
  14.   rk[3] = GETU32(userKey + 12);
  15.   if (bits == 128) {
  16. //...
  17.   rk[4] = GETU32(userKey + 16);
  18.   rk[5] = GETU32(userKey + 20);
  19.   if (bits == 192) {
  20. //...
  21.   rk[6] = GETU32(userKey + 24);
  22.   rk[7] = GETU32(userKey + 28);
  23.   if (bits == 256) {
  24. //...




Ранг: 1.9 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 сентября 2016 16:05
· Личное сообщение · #5

Я сужу не по размеру, а утверждаю что это

#define AES_MAXNR 14
#define AES_BLOCK_SIZE 16
#define AES_KEY_SIZE 16

struct aes_key_st {
uint32_t rd_key[4 * (AES_MAXNR + 1)];
int rounds;
};

Размером в 244 байта

rd_key = раундовый ключ - это единственное предположение.

Это нормально что он грузится из файла?




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 16:20
· Личное сообщение · #6

ну значит так захотелось автору программы..
нормально-не номально - это не имеет значения
ключа, по сути, нету, а стало быть, расшифровать фиг что получится
вон неподалёку висит темка про брутфорс AES
или ищите того у кого нужный файл имеется

Добавлено спустя 15 минут
olia64 пишет:
Получается это таблица-шифрования, через которую мы rounds раз зашифруем сообщение.

да, на каждом раунде используются следующие 4 дворда из этой "таблицы"

olia64 пишет:
Вопрос. Если мы сами должны сгенерировать эту таблицу случайным образом.

если генерировать "случайным образом", то и результат расшифровки тоже будет случайным

olia64 пишет:
Как получить обратную к ней таблицу?

в каком смысле - обратную? развернуть внутренний ключ обратно до пользовательского?
или из ключа шифрования сделать ключ расшифровки? или наоборот?



Ранг: 2.8 (гость), 3thx
Активность: 0=0
Статус: Участник

Создано: 19 сентября 2016 16:43
· Личное сообщение · #7

olia64 пишет:
Проблема в том, что файла размером 244 байта у меня нет и его надо сгенерировать самому.

olia64 пишет:
Моя логика

olia64 пишет:
можно догадаться

Как говорит SReg тут надо "брать и дебажить", как-то много предположений, основанных хер знает на чем.

Ты отладчик вообще открывал ? Функцию считывания файла нашел ? Далее со считанным буфером должны преобразования идти, в общем отладчик в руки и вперед...



Ранг: 1.9 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 сентября 2016 16:49
· Личное сообщение · #8

Это клиент серверное приложение.
Клиент и сервер сами должны создавать эти ключи для обмена сообщениями.
Всё что нужно должно уже быть вшито в клиент и сервер.
брутфорс AES не понадобится.

На сервере есть два файла
клиент декрипшен
сервер энкрипшен
каждый с раундовым файлом




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 17:20
· Личное сообщение · #9

olia64 пишет:
Клиент и сервер сами должны создавать эти ключи для обмена сообщениями.

в чём тогда вопрос?
клиент свой пишете?



Ранг: 1.9 (гость)
Активность: 0.020
Статус: Участник

Создано: 24 сентября 2016 15:05 · Поправил: olia64
· Личное сообщение · #10

Это был раундовый ключ, первая строчка в таблице соответствует самому ключу
а за ним уже идут 10 раундов и 10 (раундовых ключей ). Странно что тут никто этого не знает.
S-таблица всегда 256 байт

Here are some test vectors:

For the key 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00, the expanded key is:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
62 63 63 63 62 63 63 63 62 63 63 63 62 63 63 63
9b 98 98 c9 f9 fb fb aa 9b 98 98 c9 f9 fb fb aa
90 97 34 50 69 6c cf fa f2 f4 57 33 0b 0f ac 99
ee 06 da 7b 87 6a 15 81 75 9e 42 b2 7e 91 ee 2b
7f 2e 2b 88 f8 44 3e 09 8d da 7c bb f3 4b 92 90
ec 61 4b 85 14 25 75 8c 99 ff 09 37 6a b4 9b a7
21 75 17 87 35 50 62 0b ac af 6b 3c c6 1b f0 9b
0e f9 03 33 3b a9 61 38 97 06 0a 04 51 1d fa 9f
b1 d4 d8 e2 8a 7d b9 da 1d 7b b3 de 4c 66 49 41
b4 ef 5b cb 3e 92 e2 11 23 e9 51 cf 6f 8f 18 8e

For the key ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff, the expanded key is:

ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
e8 e9 e9 e9 17 16 16 16 e8 e9 e9 e9 17 16 16 16
ad ae ae 19 ba b8 b8 0f 52 51 51 e6 45 47 47 f0
09 0e 22 77 b3 b6 9a 78 e1 e7 cb 9e a4 a0 8c 6e
e1 6a bd 3e 52 dc 27 46 b3 3b ec d8 17 9b 60 b6
e5 ba f3 ce b7 66 d4 88 04 5d 38 50 13 c6 58 e6
71 d0 7d b3 c6 b6 a9 3b c2 eb 91 6b d1 2d c9 8d
e9 0d 20 8d 2f bb 89 b6 ed 50 18 dd 3c 7d d1 50
96 33 73 66 b9 88 fa d0 54 d8 e2 0d 68 a5 33 5d
8b f0 3f 23 32 78 c5 f3 66 a0 27 fe 0e 05 14 a3
d6 0a 35 88 e4 72 f0 7b 82 d2 d7 85 8c d7 c3 26

Получается что сам ключ уже вшит в "нулевый раунд" таблицы


 eXeL@B —› Вопросы новичков —› AES aes_key_st 244 байт
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати