Рейтинг:2

Что означает счетчик в режиме счетчика (CTR)? Это то же самое, что и nonce?

флаг cn

Как было сказано выше, что именно означает «счетчик»? Это то же самое, что и nonce?

Кроме того, в книге «Основы сетевой безопасности» (6-е изд.) Уильяма Столлингса говорится: «Обычно счетчик инициализируется некоторым значением, а затем увеличивается на 1 для каждого последующего блока (по модулю $2^б$, куда $b$ размер блока)». Что именно означает это утверждение?

Рейтинг:2
флаг in

что именно означает "счетчик"?

Счетчик согласно определению в Википедии;

В цифровой логике и вычислениях счетчик — это устройство, которое хранит (а иногда и отображает) количество раз, когда произошло определенное событие или процесс.

В контексте CTR; он используется для создания различных входных данных для шифрования, затем выходные данные сравниваются с открытым текстом для получения зашифрованного текста. Обычно это выполняется путем увеличения, хотя можно использовать и LFSR.

введите описание изображения здесь

Это то же самое, что и nonce

Нет, это не то же самое, что nonce (число, используемое один раз)

Режим CTR объединяет одноразовый номер и счетчик в качестве входных данных для шифра. Вход складывается из двух частей;

  • одноразовая часть; обычно генерируется случайным образом для сеанса шифрования или с использованием счетчик/LFSR.
  • ответная часть; изначально установлен ноль, затем увеличивается для каждого блока шифрования

С их помощью мы можем иметь рандомизированное шифрование, и каждый блок может производить разные выходные данные с одним и тем же ключом, если мы используем PRP, такой как AES (часть PRF более сложна, и фактически CTR определяется для PRF, поскольку нет необходимости в обратном)

«Обычно счетчик инициализируется некоторым значением, а затем увеличивается на 1 для каждого последующего блока (по модулю $2^б$, куда $b$ размер блока)». Что именно означает это утверждение?

Учтите, что у нас есть 64-битный одноразовый номер и 64-битный счетчик;

 одноразовый счетчик
9237AF71A232BC82E4 0000000000000000

Первый блок использует 9237AF71A232BC82E400000000000000000 в качестве входных данных, то следующий блок использует в качестве

 одноразовый счетчик
9237AF71A232BC82E4 0000000000000001
9237AF71A232BC82E4 0000000000000002
9237AF71A232BC82E4 0000000000000003
9237AF71A232BC82E4 0000000000000004
 ... ...
9237AF71A232BC82E4 ЭФФФФФФФФФФФФФ
9237AF71A232BC82E4 FFFFFFFFFFFFFFFFFF
 ... ...
9237AF71A232BC82E5 0000000000000000 ???

Если вы можете зашифровать $2^{64}$ блоков вы дойдете до конца счетчика, в зависимости от случая это может быть опасно.

  • Если продолжить с 0 счетчика 9237AF71A232BC82E400000000000000000 тогда у вас будет проблема с одноразовым повторным использованием (двойной блокнот) в режиме CTR; конфиденциальность теряется. Наблюдатель может выполнять ручное перетаскивание кроватки даже автоматизированное.

  • Если вы продолжите приращение, чем 9237AF71A232BC82E500000000000000000 вы можете нажать другой ввод, который также может превратиться в двукратный блокнот.

Останавливаться на достигнутом; на самом деле, остановись задолго до этого если вы используете PRP вместо PRF.


Примечания о различных употреблениях термина nonce IV;

  • Определение NIST использует счетчик в качестве всего ввода для шифрования.

  • Википедия делает различие. Я предпочитаю определение из Википедии. В случае GCM NIST использует IV и счетчик отдельно.

  • Линделл и Кац в своей книге используют IV в качестве 3$/4$ часть размера блока и $1/4$ что касается счетчика. Шифрование определяется как $y_i := F_k (IV || \langle i \rangle)$ Они показывают, что если IV выбран единообразно, то повторное использование IV является незначительным событием. Поэтому режим CTR безопасен для CPA.

Titanlord avatar
флаг tl
Я знаю, что CTR защищен от CPA без повторного использования IV. Является ли он по-прежнему CPA-безопасным, если рассматривать повторное использование IV? Я бы сказал нет, но я не уверен на 100%.
kelalaka avatar
флаг in
@Titanlord У него все еще есть некоторые предположения. Линделл и Кац рассматривают это в своей книге, предполагая, что IV выбирается равномерно случайным образом, тогда событием можно пренебречь, если размер IV равен $3n/4$.
Maarten Bodewes avatar
флаг in
Насколько я знаю, "IV" не определен для режима CTR. Если он есть, то реализации обычно означают начальное значение для одноразового номера и счетчика, то есть полный блок, используемый в качестве начального ввода для блочного шифра. В этом случае он *не* эквивалентен одноразовому номеру.
kelalaka avatar
флаг in
@MaartenBodewes Lindell&Katz называют это IV как размер $3n/4$ размера блока $n$ с $y_i := F_k (IV || )$. Да, я хорошо знаю, что исходный NIST не называет это IV, а просто называет весь ввод счетчиком. Я готов быть более последовательным. Дай мне попробовать. Я предполагаю, что они делают это, чтобы показать, что столкновение IV незначительно, выбирая равномерный случайный.
Maarten Bodewes avatar
флаг in
Книга Линделла и Каца, на мой взгляд, не является авторитетным справочником по терминам и определениям. В конце концов, в книге также путаются секретные и закрытые ключи; *Вы не можете поделиться приватным *.Конечно, вы можете определить "IV" 3n/4 от размера блока, однако *никто другой не использует этот термин* - во всяком случае, насколько мне известно.
kelalaka avatar
флаг in
@MaartenBodewes Paar использует тот же способ. Амуссен в серьезной криптографии, Брюс и др. в области разработки криптографии, как и Википедия. Некоторые другие используют то же, что и [оригинальная статья Диффи-Хеллмана] (https://ee.stanford.edu/~hellman/publications/32.pdf), все противоречит NIST.
Maarten Bodewes avatar
флаг in
Ну, я не могу возразить против этого. Просто обратите внимание, что большинство Crypto API используют IV в качестве полного входа в API. И поскольку они обычно используют обратный порядок байтов по модулю $2^n$ для счетчика, IV имеет размер ровно одного блока $n$; он не отделен от счетчика или одноразового номера. Таким образом, они совместимы с большинством определений режима счетчика (кроме WinZip, как упоминалось в моем ответе, поскольку он использует обратный порядок байтов).
kelalaka avatar
флаг in
Ну, я вижу, что это вовсе не соглашение. Я знаю, что вы гораздо лучше меня разбираетесь в API. API почти соответствуют оригинальной статье и NIST (счетчик превращается в IV), в этом нет ничего странного. Действительно, мы всегда говорим о повторном использовании IV, в этом случае использование части IV вместо одноразового номера по-прежнему имеет большой смысл (позже я объясню это). На самом деле я собирался удалить это, однако, когда вы это заметили, я снова посмотрел на источник. Там Оно осталось.
Рейтинг:1
флаг in

Нет, одноразовый номер и счетчик, безусловно, разные термины.

  • Nonce — это уникальное значение для каждого сообщения.
  • Счетчик представляет собой уникальное и последовательное значение для нескольких блоков одного и того же сообщения.

Одноразовый номер можно вычислить любым способом, если он уникален. Обычно он либо полностью рандомизирован, либо последователен, начиная с нуля или единицы.


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

Это отражено в той части книги, которую вы цитируете:

Кроме того, в книге «Основы сетевой безопасности» (6-е изд.) Уильяма Столлингса говорится:

«Обычно счетчик инициализируется некоторым значением, а затем увеличивается на 1 для каждого последующего блока (по модулю $2^б$, куда $b$ размер блока)".

Что конкретно означает это утверждение?

Предположим, что используется 128-битный блочный шифр, такой как AES. Тогда допустим, что каждый байт отображается буквой, тогда у вас есть:

 CCCCCCCC_CCCCCCCC = NNNNNNNN_00000000

где каждый C — это байт в начальном счетчике, а N — это байт внутри одноразового номера. Стартовый счетчик часто рассматривается как «IV». Теперь реализации увеличат этот модуль начального значения. $2^{128}$: т.е. когда он попадает $2^{128} - 1$ следующее значение будет нулевым.

Однако это означает, что после $2^{64}$ увеличивается, ваш счетчик будет увеличивать крайний правый одноразовый байт, что может привести к дублированию значения счетчика. Это означает, что само приложение должно вести подсчет количества зашифрованных блоков. Причина этого в том, что одноразовый номер может состоять из любое количество байт, поэтому он не знает, когда затрагивается одноразовый номер. Другими словами, реализации не знают, когда происходит переполнение одноразового номера или когда счетчики сталкиваются.


Примечания:

  • В принципе, для CTR действительна любая схема, пока счетчик не повторяется для одного и того же ключа. Получение нового ключа для каждого сообщения дает вам почти бесконечное количество блоков ($2^{128}$ 16-байтовые блоки для AES).
  • Хотя счетчик не определен ни как прямой, ни как с прямым порядком байтов, кажется, что преобладают счетчики с обратным порядком байтов. Я столкнулся с одним протоколом, который использовал счетчик с прямым порядком байтов — WinZip, если мне не изменяет память.
  • Одноразовый номер может быть не единственным элементом, который делает (начальный) счетчик уникальным, другие элементы данных могут быть включены в (начальное) значение счетчика. Иногда включается идентификатор для разделения домена, например идентификатор получателя.
  • NIST подробно описывает, как создавать блоки шифров, в NIST SP 800-38a, приложение B, отмечая в конце, что счетчики в основном зависят от протокола и что требование уникальности должно проверяться отдельно.
Рейтинг:0
флаг tl

Nonce — это (случайное/псевдослучайное) число, используемое только один раз. И это единственное ограничение, которому он подлежит. Таким образом, одноразовый номер является просто общим термином.

В режиме CTR каждое значение отличается друг от друга и (как правило) используется только один раз. Поэтому вектор инициализации и результирующие числа можно рассматривать как одноразовые номера.

(Примечание. В некоторых случаях авторы могут явно проводить различие между значениями CTR и одноразовыми номерами. В этом случае у них может быть другое определение или дополнительные ограничения для рассмотрения)

флаг vn
Nonces не обязательно должны быть «случайными/псевдослучайными», просто уникальными (в рамках одного ключа). На самом деле в качестве одноразового номера обычно используется счетчик сообщений (счетчик блоков).

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

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