Рейтинг:1

Размер счетчика в режиме CTR

флаг us

Если я правильно понял, в режиме CTR я шифрую одноразовый номер или IV вместе со счетчиком как блок, который затем подвергается операции XOR с открытым текстом. Для следующего блока я увеличиваю счетчик. Существует ли фиксированный размер счетчика, чтобы иметь возможность перебирать все блоки, или в какой-то момент он снова начинается с 0?

Например, если алгоритм с размером блока 16 байт, я теоретически мог бы перебрать более 4,3 миллиарда блоков (68,8 ГБ), когда мой счетчик равен 4 байтам. Но что произойдет, если мои данные станут еще больше? Насколько велик тогда счетчик, чтобы IV все еще сохранялся и в первом блоке не так много байтов заполнялось только 0?

заранее спасибо

Luqus avatar
флаг us
Не совсем. Я бы предпочел знать, как это в основном обрабатывается стандартными алгоритмами, такими как Java Cipher в режиме CTR.
Maarten Bodewes avatar
флаг in
@kelalaka Это неверно, в Java всегда был счетчик (режим «CTR»), вы используете его, например. `"AES/CTR/без заполнения"`. Java 10 уже довольно старая, но [Java 6] (https://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#Cipher) определенно уже была.
Maarten Bodewes avatar
флаг in
Мой ответ на связанный вопрос: «Хотя счетчик часто указывается отдельно от одноразового номера в протоколах, реализации обычно имеют счетчик того же размера, что и размер блока. В этом случае одноразовый номер является частью наиболее значимых битов. стартового счетчика». Итак, это общий ответ: это зависит от библиотеки. Стандартный провайдер в Java использует 16-байтовый/128-битный счетчик с прямым порядком байтов. Если вы хотите, чтобы он не переполнялся одноразовым номером, вам придется ограничить количество зашифрованных блоков / байтов самостоятельно.
Maarten Bodewes avatar
флаг in
Если вы хотите, я могу перейти на [so], но тогда вопрос должен быть специфичным для Java. На общий случай уже был дан ответ, и я не могу найти простой обман на [so].
Maarten Bodewes avatar
флаг in
В заключение я добавил: «NIST подробно описывает, как создавать блоки шифров, в NIST SP 800-38a, приложение B, отмечая в конце, что счетчики в основном зависят от протокола, и что требование уникальности должно проверяться отдельно». на мой ответ в другой ссылке, я подумал, что это может вас заинтересовать.
Luqus avatar
флаг us
@MaartenBodewes спасибо за дополнительную информацию, которая должна ответить на мой вопрос.
Maarten Bodewes avatar
флаг in
@Luqus Ну, мы всегда можем дать еще больше информации: см. [здесь] (https://stackoverflow.com/a/70323458/589259) о размерах nonce внутри 128-битного IV/счетчика. Если вы посмотрите на [простые арпоксимации](https://en.wikipedia.org/wiki/Birthday_attack#Simple_ приблизительно) в Википедии для определения даты рождения, вы можете рассчитать, например, каков риск столкновения, если вам нужен определенный размер счетчика (при этом размер одноразового номера - это то, что осталось).
kelalaka avatar
флаг in
Помните, что NIST говорит о 64-разрядном и 64-разрядном счетчике, однако [вы должны остановиться намного дольше, чем это] (https://crypto.stackexchange.com/a/85572/18298), если вместо этого вы используете PRP в качестве AES. PRF как ChaCha.
kelalaka avatar
флаг in
@MaartenBodewes Да, ты прав. Я обычно проверяю еще раз. Я думаю, что просмотрел только [Javax] (https://docs.oracle.com/javase/10/docs/api/javax/crypto/Cipher.html)

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

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