Рейтинг:0

Как использовать одноразовый номер, счетчик и IV в AES-256-CTR?

флаг id

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

как мне построить действительный IV, учитывая одноразовый номер? Какое это имеет отношение к счетчику?

Я выполняю двустороннюю связь с модулем Bluetooth (это сервер для клиента моего телефона), и его данные зашифрованы с использованием AES-256-CTR с ключом 32B и 128-битным (16B) счетчиком. после успешного входа в систему мне дается 32-битный ключ и 96-битный (12-битный) одноразовый номер.

библиотека, которую я использую для расшифровки, требует IV. я не совсем понимаю, что это такое, но я попытался объединить одноразовый номер 12B с «00 00 00 01» (шестнадцатеричный), чтобы сделать счетчик, и использовать его как IV. нет кости.

как я тестирую, я прохожу через API модуля, чтобы передать «привет, мир» через Bluetooth с сервера. клиент получает зашифрованную строку, как и ожидалось, но один и тот же «hello world» каждый раз шифруется во что-то другое.

более подробная информация доступна при необходимости!

forest avatar
флаг vn
IV — это просто другое слово для одноразового номера в CTR.
Maarten Bodewes avatar
флаг in
@forest Обычно одноразовый номер меньше IV; он состоит только из битов более высокого порядка. Наличие случайного одноразового номера размером с полный счетчик не имеет смысла, потому что вам может потребоваться зашифровать меньше битов, чтобы столкнуться с коллизией. Если последняя часть состоит из нулевых битов, то, по крайней мере, вы знаете количество места между двумя последующими одноразовыми номерами.
forest avatar
флаг vn
@MaartenBodewes Я всегда слышал, что они взаимозаменяемы, если только вы не говорите о фактическом вводе самого блочного шифра, а не о параметрах блочного шифра в режиме CTR?
kelalaka avatar
флаг in
На самом деле @forest NIST называет их только противоблокирующими [страница 16, а также см. 19] (https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf) и
Рейтинг:2
флаг in

как мне построить действительный IV, учитывая одноразовый номер? Какое это имеет отношение к счетчику?

Вы можете этого не ожидать, но это зависит; несколько схем одинаково безопасны (например, с прямым порядком байтов и прямым порядком байтов). Обычно значение счетчика представляет собой 128-битное целое число без знака с обратным порядком байтов. Nonce — это самая значащая (самая левая) часть этого целого числа.

Кроме того, начальная нижняя часть счетчика будет начинаться с (всего) нуля - Не один как в вашем примере.

Итак, у вас будет:

NNNNNNNN NNNNNNNN NNNNNNNN 00000000

в качестве начального значения (в виде шестнадцатеричных чисел, где N представляет некоторую шестнадцатеричную цифру одноразового номера), где левая часть является наиболее значимой частью. Конечно, это относится к 96-битному одноразовому номеру и 32-битному счетчику. Это начальное значение обычно называют IV.

Поскольку размер одноразового номера может варьироваться во многих библиотеках, обычно увеличение счетчика производится по модулю. $2^{128}$, с тем недостатком, что переполнение в самых младших 32 битах повлияет на одноразовый номер. Обычно пользователь библиотеки AES должен проверить это (но вам понадобится $2^{32} * 16 = 64 \text{ГиБ}$ или почти $69 \текст{ГБ}$ попасть туда).

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

Да, так что, скорее всего, одноразовый номер меняется каждый раз. Либо так, либо меняется ключ, либо даже и ключ, и одноразовый номер.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.